Merge "Revert "Revert "Consolidate byte to/from hex methods to use HexEncoding."""
diff --git a/luni/src/main/java/libcore/util/HexEncoding.java b/luni/src/main/java/libcore/util/HexEncoding.java
index 4c7e7a2..5303bb4 100644
--- a/luni/src/main/java/libcore/util/HexEncoding.java
+++ b/luni/src/main/java/libcore/util/HexEncoding.java
@@ -49,6 +49,44 @@
     }
 
     /**
+     * Encodes the provided data as a sequence of hexadecimal characters.
+     */
+    public static String encodeToString(byte[] data) {
+        return new String(encode(data));
+    }
+
+    /**
+     * Decodes the provided hexadecimal string into a byte array.  Odd-length inputs
+     * are not allowed.
+     *
+     * Throws an {@code IllegalArgumentException} if the input is malformed.
+     */
+    public static byte[] decode(String encoded) throws IllegalArgumentException {
+        return decode(encoded.toCharArray());
+    }
+
+    /**
+     * Decodes the provided hexadecimal string into a byte array. If {@code allowSingleChar}
+     * is {@code true} odd-length inputs are allowed and the first character is interpreted
+     * as the lower bits of the first result byte.
+     *
+     * Throws an {@code IllegalArgumentException} if the input is malformed.
+     */
+    public static byte[] decode(String encoded, boolean allowSingleChar) throws IllegalArgumentException {
+        return decode(encoded.toCharArray(), allowSingleChar);
+    }
+
+    /**
+     * Decodes the provided hexadecimal string into a byte array.  Odd-length inputs
+     * are not allowed.
+     *
+     * Throws an {@code IllegalArgumentException} if the input is malformed.
+     */
+    public static byte[] decode(char[] encoded) throws IllegalArgumentException {
+        return decode(encoded, false);
+    }
+
+    /**
      * Decodes the provided hexadecimal string into a byte array. If {@code allowSingleChar}
      * is {@code true} odd-length inputs are allowed and the first character is interpreted
      * as the lower bits of the first result byte.
diff --git a/luni/src/test/java/libcore/java/io/DataOutputStreamTest.java b/luni/src/test/java/libcore/java/io/DataOutputStreamTest.java
index 666a44e..fa526ec 100644
--- a/luni/src/test/java/libcore/java/io/DataOutputStreamTest.java
+++ b/luni/src/test/java/libcore/java/io/DataOutputStreamTest.java
@@ -22,6 +22,8 @@
 import java.util.Arrays;
 import junit.framework.TestCase;
 
+import libcore.util.HexEncoding;
+
 public final class DataOutputStreamTest extends TestCase {
     private ByteArrayOutputStream bytes = new ByteArrayOutputStream();
     private DataOutputStream os = new DataOutputStream(bytes);
@@ -29,7 +31,7 @@
     public void test_writeBoolean() throws Exception {
         os.writeBoolean(true);
         os.writeBoolean(false);
-        assertEquals("[01, 00]", toHexString(bytes.toByteArray()));
+        assertEquals("0100", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeByte() throws Exception {
@@ -39,52 +41,52 @@
         os.writeByte(129);
         // writeByte takes only the bottom byte from its int parameter.
         os.writeByte(0x1234);
-        assertEquals("[ff, 00, 01, 81, 34]", toHexString(bytes.toByteArray()));
+        assertEquals("FF00018134", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeBytes() throws Exception {
         // writeBytes takes only the bottom byte from each character.
         os.writeBytes("0\u12341");
-        assertEquals("[30, 34, 31]", toHexString(bytes.toByteArray()));
+        assertEquals("303431", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeChar() throws Exception {
         // writeChar writes two-byte big-endian characters.
         os.writeChar('0');
         os.writeChar(0x1234);
-        assertEquals("[00, 30, 12, 34]", toHexString(bytes.toByteArray()));
+        assertEquals("00301234", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeChars() throws Exception {
         // writeChars writes two-byte big-endian characters.
         os.writeChars("0\u12341");
-        assertEquals("[00, 30, 12, 34, 00, 31]", toHexString(bytes.toByteArray()));
+        assertEquals("003012340031", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeDouble() throws Exception {
         os.writeDouble(Double.longBitsToDouble(0x0123456789abcdefL));
-        assertEquals("[01, 23, 45, 67, 89, ab, cd, ef]", toHexString(bytes.toByteArray()));
+        assertEquals("0123456789ABCDEF", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeFloat() throws Exception {
         os.writeFloat(Float.intBitsToFloat(0x01234567));
-        assertEquals("[01, 23, 45, 67]", toHexString(bytes.toByteArray()));
+        assertEquals("01234567", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeInt() throws Exception {
         os.writeInt(0x01234567);
-        assertEquals("[01, 23, 45, 67]", toHexString(bytes.toByteArray()));
+        assertEquals("01234567", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeLong() throws Exception {
         os.writeLong(0x0123456789abcdefL);
-        assertEquals("[01, 23, 45, 67, 89, ab, cd, ef]", toHexString(bytes.toByteArray()));
+        assertEquals("0123456789ABCDEF", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeShort() throws Exception {
         // writeShort only writes the bottommost 16 bits of its int parameter.
         os.writeShort(0x01234567);
-        assertEquals("[45, 67]", toHexString(bytes.toByteArray()));
+        assertEquals("4567", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeUTF() throws Exception {
@@ -112,7 +114,7 @@
     public void test_writeUTF_NUL() throws Exception {
         // This is a special case, represented with two non-zero bytes.
         os.writeUTF("\u0000");
-        assertEquals("[00, 02, c0, 80]", toHexString(bytes.toByteArray()));
+        assertEquals("0002C080", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 
     public void test_writeUTF_too_long() throws Exception {
@@ -122,29 +124,6 @@
             fail("should throw UTFDataFormatException");
         } catch (UTFDataFormatException expected) {
         }
-        assertEquals("[]", toHexString(bytes.toByteArray()));
-    }
-
-    /**
-     * Returns a string representation of a byte array that's more useful for debugging.
-     * TODO: move this somewhere where it's available to all tests.
-     */
-    public static String toHexString(byte[] array) {
-        if (array == null) {
-            return null;
-        }
-        if (array.length == 0) {
-            return "[]";
-        }
-        StringBuilder sb = new StringBuilder();
-        sb.append('[');
-        // TODO: don't use String.format if we put this in the library. Too expensive!
-        sb.append(String.format("%02x", array[0] & 0xff));
-        for (int i = 1; i < array.length; i++) {
-            sb.append(", ");
-            sb.append(String.format("%02x", array[i] & 0xff));
-        }
-        sb.append(']');
-        return sb.toString();
+        assertEquals("", HexEncoding.encodeToString(bytes.toByteArray()));
     }
 }
diff --git a/luni/src/test/java/libcore/java/nio/file/AccessDeniedExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/AccessDeniedExceptionTest.java
index baa1110..5f238aa 100644
--- a/luni/src/test/java/libcore/java/nio/file/AccessDeniedExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/AccessDeniedExceptionTest.java
@@ -42,40 +42,40 @@
     }
 
     public void test_serialization() throws IOException, ClassNotFoundException {
-        String hex = "aced0005737200236a6176612e6e696f2e66696c652e41636365737344656e6965644578"
-                + "63657074696f6e44993d6bf81c2721020000787200216a6176612e6e696f2e66696c652e46696c65"
-                + "53797374656d457863657074696f6ed598f27876d360fc0200024c000466696c657400124c6a6176"
-                + "612f6c616e672f537472696e673b4c00056f7468657271007e0002787200136a6176612e696f2e49"
-                + "4f457863657074696f6e6c8073646525f0ab020000787200136a6176612e6c616e672e4578636570"
-                + "74696f6ed0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c65d5c6"
-                + "35273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c65"
-                + "3b4c000d64657461696c4d65737361676571007e00025b000a737461636b547261636574001e5b4c"
-                + "6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c0014737570707265737365"
-                + "64457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b787071007e0009740006"
-                + "726561736f6e7572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b"
-                + "02462a3c3cfd22390200007870000000097372001b6a6176612e6c616e672e537461636b54726163"
-                + "65456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c61"
-                + "72696e67436c61737371007e00024c000866696c654e616d6571007e00024c000a6d6574686f644e"
-                + "616d6571007e000278700000002674002f6c6962636f72652e6a6176612e6e696f2e66696c652e41"
-                + "636365737344656e696564457863657074696f6e5465737474001e41636365737344656e69656445"
-                + "7863657074696f6e546573742e6a617661740025746573745f636f6e7374727563746f7224537472"
-                + "696e6724537472696e6724537472696e677371007e000dfffffffe7400186a6176612e6c616e672e"
-                + "7265666c6563742e4d6574686f6474000b4d6574686f642e6a617661740006696e766f6b65737100"
-                + "7e000d000000f9740028766f6761722e7461726765742e6a756e69742e4a756e69743324566f6761"
-                + "724a556e69745465737474000b4a756e6974332e6a61766174000372756e7371007e000d00000063"
-                + "740020766f6761722e7461726765742e6a756e69742e4a556e697452756e6e657224317400104a55"
-                + "6e697452756e6e65722e6a61766174000463616c6c7371007e000d0000005c740020766f6761722e"
-                + "7461726765742e6a756e69742e4a556e697452756e6e657224317400104a556e697452756e6e6572"
-                + "2e6a61766174000463616c6c7371007e000d000000ed74001f6a6176612e7574696c2e636f6e6375"
-                + "7272656e742e4675747572655461736b74000f4675747572655461736b2e6a61766174000372756e"
-                + "7371007e000d0000046d7400276a6176612e7574696c2e636f6e63757272656e742e546872656164"
-                + "506f6f6c4578656375746f72740017546872656164506f6f6c4578656375746f722e6a6176617400"
-                + "0972756e576f726b65727371007e000d0000025f74002e6a6176612e7574696c2e636f6e63757272"
-                + "656e742e546872656164506f6f6c4578656375746f7224576f726b6572740017546872656164506f"
-                + "6f6c4578656375746f722e6a61766174000372756e7371007e000d000002f97400106a6176612e6c"
-                + "616e672e54687265616474000b5468726561642e6a61766174000372756e7372001f6a6176612e75"
-                + "74696c2e436f6c6c656374696f6e7324456d7074794c6973747ab817b43ca79ede02000078707874"
-                + "000466696c657400096f7468657246696c65";
+        String hex = "ACED0005737200236A6176612E6E696F2E66696C652E41636365737344656E6965644578"
+                + "63657074696F6E44993D6BF81C2721020000787200216A6176612E6E696F2E66696C652E46696C65"
+                + "53797374656D457863657074696F6ED598F27876D360FC0200024C000466696C657400124C6A6176"
+                + "612F6C616E672F537472696E673B4C00056F7468657271007E0002787200136A6176612E696F2E49"
+                + "4F457863657074696F6E6C8073646525F0AB020000787200136A6176612E6C616E672E4578636570"
+                + "74696F6ED0FD1F3E1A3B1CC4020000787200136A6176612E6C616E672E5468726F7761626C65D5C6"
+                + "35273977B8CB0300044C000563617573657400154C6A6176612F6C616E672F5468726F7761626C65"
+                + "3B4C000D64657461696C4D65737361676571007E00025B000A737461636B547261636574001E5B4C"
+                + "6A6176612F6C616E672F537461636B5472616365456C656D656E743B4C0014737570707265737365"
+                + "64457863657074696F6E737400104C6A6176612F7574696C2F4C6973743B787071007E0009740006"
+                + "726561736F6E7572001E5B4C6A6176612E6C616E672E537461636B5472616365456C656D656E743B"
+                + "02462A3C3CFD22390200007870000000097372001B6A6176612E6C616E672E537461636B54726163"
+                + "65456C656D656E746109C59A2636DD8502000449000A6C696E654E756D6265724C000E6465636C61"
+                + "72696E67436C61737371007E00024C000866696C654E616D6571007E00024C000A6D6574686F644E"
+                + "616D6571007E000278700000002674002F6C6962636F72652E6A6176612E6E696F2E66696C652E41"
+                + "636365737344656E696564457863657074696F6E5465737474001E41636365737344656E69656445"
+                + "7863657074696F6E546573742E6A617661740025746573745F636F6E7374727563746F7224537472"
+                + "696E6724537472696E6724537472696E677371007E000DFFFFFFFE7400186A6176612E6C616E672E"
+                + "7265666C6563742E4D6574686F6474000B4D6574686F642E6A617661740006696E766F6B65737100"
+                + "7E000D000000F9740028766F6761722E7461726765742E6A756E69742E4A756E69743324566F6761"
+                + "724A556E69745465737474000B4A756E6974332E6A61766174000372756E7371007E000D00000063"
+                + "740020766F6761722E7461726765742E6A756E69742E4A556E697452756E6E657224317400104A55"
+                + "6E697452756E6E65722E6A61766174000463616C6C7371007E000D0000005C740020766F6761722E"
+                + "7461726765742E6A756E69742E4A556E697452756E6E657224317400104A556E697452756E6E6572"
+                + "2E6A61766174000463616C6C7371007E000D000000ED74001F6A6176612E7574696C2E636F6E6375"
+                + "7272656E742E4675747572655461736B74000F4675747572655461736B2E6A61766174000372756E"
+                + "7371007E000D0000046D7400276A6176612E7574696C2E636F6E63757272656E742E546872656164"
+                + "506F6F6C4578656375746F72740017546872656164506F6F6C4578656375746F722E6A6176617400"
+                + "0972756E576F726B65727371007E000D0000025F74002E6A6176612E7574696C2E636F6E63757272"
+                + "656E742E546872656164506F6F6C4578656375746F7224576F726B6572740017546872656164506F"
+                + "6F6C4578656375746F722E6A61766174000372756E7371007E000D000002F97400106A6176612E6C"
+                + "616E672E54687265616474000B5468726561642E6A61766174000372756E7372001F6A6176612E75"
+                + "74696C2E436F6C6C656374696F6E7324456D7074794C6973747AB817B43CA79EDE02000078707874"
+                + "000466696C657400096F7468657246696C65";
         AccessDeniedException exception = (AccessDeniedException)
                 SerializationTester.deserializeHex(hex);
 
diff --git a/luni/src/test/java/libcore/java/nio/file/AtomicMoveNotSupportedExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/AtomicMoveNotSupportedExceptionTest.java
index c330ad8..67d8b86 100644
--- a/luni/src/test/java/libcore/java/nio/file/AtomicMoveNotSupportedExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/AtomicMoveNotSupportedExceptionTest.java
@@ -35,40 +35,40 @@
     }
 
     public void test_serialization() throws IOException, ClassNotFoundException {
-        String hex = "aced00057372002d6a6176612e6e696f2e66696c652e41746f6d69634d6f76654e6f745375707"
-                + "06f72746564457863657074696f6e4afa75ccc59748db020000787200216a6176612e6e696f2e666"
-                + "96c652e46696c6553797374656d457863657074696f6ed598f27876d360fc0200024c000466696c6"
-                + "57400124c6a6176612f6c616e672f537472696e673b4c00056f7468657271007e0002787200136a6"
-                + "176612e696f2e494f457863657074696f6e6c8073646525f0ab020000787200136a6176612e6c616"
-                + "e672e457863657074696f6ed0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726"
-                + "f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f546"
-                + "8726f7761626c653b4c000d64657461696c4d65737361676571007e00025b000a737461636b54726"
-                + "1636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c0014737"
-                + "57070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b78707"
-                + "1007e0009740006726561736f6e7572001e5b4c6a6176612e6c616e672e537461636b54726163654"
-                + "56c656d656e743b02462a3c3cfd22390200007870000000097372001b6a6176612e6c616e672e537"
-                + "461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724"
-                + "c000e6465636c6172696e67436c61737371007e00024c000866696c654e616d6571007e00024c000"
-                + "a6d6574686f644e616d6571007e00027870000000247400396c6962636f72652e6a6176612e6e696"
-                + "f2e66696c652e41746f6d69634d6f76654e6f74537570706f72746564457863657074696f6e54657"
-                + "37474002841746f6d69634d6f76654e6f74537570706f72746564457863657074696f6e546573742"
-                + "e6a617661740012746573745f73657269616c697a6174696f6e7371007e000dfffffffe7400186a6"
-                + "176612e6c616e672e7265666c6563742e4d6574686f6474000b4d6574686f642e6a6176617400066"
-                + "96e766f6b657371007e000d000000f9740028766f6761722e7461726765742e6a756e69742e4a756"
-                + "e69743324566f6761724a556e69745465737474000b4a756e6974332e6a61766174000372756e737"
-                + "1007e000d00000063740020766f6761722e7461726765742e6a756e69742e4a556e697452756e6e6"
-                + "57224317400104a556e697452756e6e65722e6a61766174000463616c6c7371007e000d0000005c7"
-                + "40020766f6761722e7461726765742e6a756e69742e4a556e697452756e6e657224317400104a556"
-                + "e697452756e6e65722e6a61766174000463616c6c7371007e000d000000ed74001f6a6176612e757"
-                + "4696c2e636f6e63757272656e742e4675747572655461736b74000f4675747572655461736b2e6a6"
-                + "1766174000372756e7371007e000d0000046d7400276a6176612e7574696c2e636f6e63757272656"
-                + "e742e546872656164506f6f6c4578656375746f72740017546872656164506f6f6c4578656375746"
-                + "f722e6a61766174000972756e576f726b65727371007e000d0000025f74002e6a6176612e7574696"
-                + "c2e636f6e63757272656e742e546872656164506f6f6c4578656375746f7224576f726b657274001"
-                + "7546872656164506f6f6c4578656375746f722e6a61766174000372756e7371007e000d000002f97"
-                + "400106a6176612e6c616e672e54687265616474000b5468726561642e6a61766174000372756e737"
-                + "2001f6a6176612e7574696c2e436f6c6c656374696f6e7324456d7074794c6973747ab817b43ca79"
-                + "ede020000787078740006736f75726365740006746172676574";
+        String hex = "ACED00057372002D6A6176612E6E696F2E66696C652E41746F6D69634D6F76654E6F745375707"
+                + "06F72746564457863657074696F6E4AFA75CCC59748DB020000787200216A6176612E6E696F2E666"
+                + "96C652E46696C6553797374656D457863657074696F6ED598F27876D360FC0200024C000466696C6"
+                + "57400124C6A6176612F6C616E672F537472696E673B4C00056F7468657271007E0002787200136A6"
+                + "176612E696F2E494F457863657074696F6E6C8073646525F0AB020000787200136A6176612E6C616"
+                + "E672E457863657074696F6ED0FD1F3E1A3B1CC4020000787200136A6176612E6C616E672E5468726"
+                + "F7761626C65D5C635273977B8CB0300044C000563617573657400154C6A6176612F6C616E672F546"
+                + "8726F7761626C653B4C000D64657461696C4D65737361676571007E00025B000A737461636B54726"
+                + "1636574001E5B4C6A6176612F6C616E672F537461636B5472616365456C656D656E743B4C0014737"
+                + "57070726573736564457863657074696F6E737400104C6A6176612F7574696C2F4C6973743B78707"
+                + "1007E0009740006726561736F6E7572001E5B4C6A6176612E6C616E672E537461636B54726163654"
+                + "56C656D656E743B02462A3C3CFD22390200007870000000097372001B6A6176612E6C616E672E537"
+                + "461636B5472616365456C656D656E746109C59A2636DD8502000449000A6C696E654E756D6265724"
+                + "C000E6465636C6172696E67436C61737371007E00024C000866696C654E616D6571007E00024C000"
+                + "A6D6574686F644E616D6571007E00027870000000247400396C6962636F72652E6A6176612E6E696"
+                + "F2E66696C652E41746F6D69634D6F76654E6F74537570706F72746564457863657074696F6E54657"
+                + "37474002841746F6D69634D6F76654E6F74537570706F72746564457863657074696F6E546573742"
+                + "E6A617661740012746573745F73657269616C697A6174696F6E7371007E000DFFFFFFFE7400186A6"
+                + "176612E6C616E672E7265666C6563742E4D6574686F6474000B4D6574686F642E6A6176617400066"
+                + "96E766F6B657371007E000D000000F9740028766F6761722E7461726765742E6A756E69742E4A756"
+                + "E69743324566F6761724A556E69745465737474000B4A756E6974332E6A61766174000372756E737"
+                + "1007E000D00000063740020766F6761722E7461726765742E6A756E69742E4A556E697452756E6E6"
+                + "57224317400104A556E697452756E6E65722E6A61766174000463616C6C7371007E000D0000005C7"
+                + "40020766F6761722E7461726765742E6A756E69742E4A556E697452756E6E657224317400104A556"
+                + "E697452756E6E65722E6A61766174000463616C6C7371007E000D000000ED74001F6A6176612E757"
+                + "4696C2E636F6E63757272656E742E4675747572655461736B74000F4675747572655461736B2E6A6"
+                + "1766174000372756E7371007E000D0000046D7400276A6176612E7574696C2E636F6E63757272656"
+                + "E742E546872656164506F6F6C4578656375746F72740017546872656164506F6F6C4578656375746"
+                + "F722E6A61766174000972756E576F726B65727371007E000D0000025F74002E6A6176612E7574696"
+                + "C2E636F6E63757272656E742E546872656164506F6F6C4578656375746F7224576F726B657274001"
+                + "7546872656164506F6F6C4578656375746F722E6A61766174000372756E7371007E000D000002F97"
+                + "400106A6176612E6C616E672E54687265616474000B5468726561642E6A61766174000372756E737"
+                + "2001F6A6176612E7574696C2E436F6C6C656374696F6E7324456D7074794C6973747AB817B43CA79"
+                + "EDE020000787078740006736F75726365740006746172676574";
 
         AtomicMoveNotSupportedException exception = (AtomicMoveNotSupportedException)
                 SerializationTester.deserializeHex(hex);
diff --git a/luni/src/test/java/libcore/java/nio/file/DirectoryNotEmptyExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/DirectoryNotEmptyExceptionTest.java
index 370475d..083fe16 100644
--- a/luni/src/test/java/libcore/java/nio/file/DirectoryNotEmptyExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/DirectoryNotEmptyExceptionTest.java
@@ -35,39 +35,39 @@
     }
 
     public void test_serialization() throws IOException, ClassNotFoundException {
-        String hex = "aced0005737200286a6176612e6e696f2e66696c652e4469726563746f72794e6f74456d70747"
-                + "9457863657074696f6e2a6b773c0727657b020000787200216a6176612e6e696f2e66696c652e466"
-                + "96c6553797374656d457863657074696f6ed598f27876d360fc0200024c000466696c657400124c6"
-                + "a6176612f6c616e672f537472696e673b4c00056f7468657271007e0002787200136a6176612e696"
-                + "f2e494f457863657074696f6e6c8073646525f0ab020000787200136a6176612e6c616e672e45786"
-                + "3657074696f6ed0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c6"
-                + "5d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f77616"
-                + "26c653b4c000d64657461696c4d65737361676571007e00025b000a737461636b547261636574001"
-                + "e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c00147375707072657"
-                + "3736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b787071007e00097"
-                + "07572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cf"
-                + "d22390200007870000000097372001b6a6176612e6c616e672e537461636b5472616365456c656d6"
-                + "56e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436"
-                + "c61737371007e00024c000866696c654e616d6571007e00024c000a6d6574686f644e616d6571007"
-                + "e00027870000000267400346c6962636f72652e6a6176612e6e696f2e66696c652e4469726563746"
-                + "f72794e6f74456d707479457863657074696f6e546573747400234469726563746f72794e6f74456"
-                + "d707479457863657074696f6e546573742e6a617661740012746573745f73657269616c697a61746"
-                + "96f6e7371007e000cfffffffe7400186a6176612e6c616e672e7265666c6563742e4d6574686f647"
-                + "4000b4d6574686f642e6a617661740006696e766f6b657371007e000c000000f9740028766f67617"
-                + "22e7461726765742e6a756e69742e4a756e69743324566f6761724a556e69745465737474000b4a7"
-                + "56e6974332e6a61766174000372756e7371007e000c00000063740020766f6761722e74617267657"
-                + "42e6a756e69742e4a556e697452756e6e657224317400104a556e697452756e6e65722e6a6176617"
-                + "4000463616c6c7371007e000c0000005c740020766f6761722e7461726765742e6a756e69742e4a5"
-                + "56e697452756e6e657224317400104a556e697452756e6e65722e6a61766174000463616c6c73710"
-                + "07e000c000000ed74001f6a6176612e7574696c2e636f6e63757272656e742e46757475726554617"
-                + "36b74000f4675747572655461736b2e6a61766174000372756e7371007e000c0000046d7400276a6"
-                + "176612e7574696c2e636f6e63757272656e742e546872656164506f6f6c4578656375746f7274001"
-                + "7546872656164506f6f6c4578656375746f722e6a61766174000972756e576f726b65727371007e0"
-                + "00c0000025f74002e6a6176612e7574696c2e636f6e63757272656e742e546872656164506f6f6c4"
-                + "578656375746f7224576f726b6572740017546872656164506f6f6c4578656375746f722e6a61766"
-                + "174000372756e7371007e000c000002f97400106a6176612e6c616e672e54687265616474000b546"
-                + "8726561642e6a61766174000372756e7372001f6a6176612e7574696c2e436f6c6c656374696f6e7"
-                + "324456d7074794c6973747ab817b43ca79ede02000078707874000466696c6570";
+        String hex = "ACED0005737200286A6176612E6E696F2E66696C652E4469726563746F72794E6F74456D70747"
+                + "9457863657074696F6E2A6B773C0727657B020000787200216A6176612E6E696F2E66696C652E466"
+                + "96C6553797374656D457863657074696F6ED598F27876D360FC0200024C000466696C657400124C6"
+                + "A6176612F6C616E672F537472696E673B4C00056F7468657271007E0002787200136A6176612E696"
+                + "F2E494F457863657074696F6E6C8073646525F0AB020000787200136A6176612E6C616E672E45786"
+                + "3657074696F6ED0FD1F3E1A3B1CC4020000787200136A6176612E6C616E672E5468726F7761626C6"
+                + "5D5C635273977B8CB0300044C000563617573657400154C6A6176612F6C616E672F5468726F77616"
+                + "26C653B4C000D64657461696C4D65737361676571007E00025B000A737461636B547261636574001"
+                + "E5B4C6A6176612F6C616E672F537461636B5472616365456C656D656E743B4C00147375707072657"
+                + "3736564457863657074696F6E737400104C6A6176612F7574696C2F4C6973743B787071007E00097"
+                + "07572001E5B4C6A6176612E6C616E672E537461636B5472616365456C656D656E743B02462A3C3CF"
+                + "D22390200007870000000097372001B6A6176612E6C616E672E537461636B5472616365456C656D6"
+                + "56E746109C59A2636DD8502000449000A6C696E654E756D6265724C000E6465636C6172696E67436"
+                + "C61737371007E00024C000866696C654E616D6571007E00024C000A6D6574686F644E616D6571007"
+                + "E00027870000000267400346C6962636F72652E6A6176612E6E696F2E66696C652E4469726563746"
+                + "F72794E6F74456D707479457863657074696F6E546573747400234469726563746F72794E6F74456"
+                + "D707479457863657074696F6E546573742E6A617661740012746573745F73657269616C697A61746"
+                + "96F6E7371007E000CFFFFFFFE7400186A6176612E6C616E672E7265666C6563742E4D6574686F647"
+                + "4000B4D6574686F642E6A617661740006696E766F6B657371007E000C000000F9740028766F67617"
+                + "22E7461726765742E6A756E69742E4A756E69743324566F6761724A556E69745465737474000B4A7"
+                + "56E6974332E6A61766174000372756E7371007E000C00000063740020766F6761722E74617267657"
+                + "42E6A756E69742E4A556E697452756E6E657224317400104A556E697452756E6E65722E6A6176617"
+                + "4000463616C6C7371007E000C0000005C740020766F6761722E7461726765742E6A756E69742E4A5"
+                + "56E697452756E6E657224317400104A556E697452756E6E65722E6A61766174000463616C6C73710"
+                + "07E000C000000ED74001F6A6176612E7574696C2E636F6E63757272656E742E46757475726554617"
+                + "36B74000F4675747572655461736B2E6A61766174000372756E7371007E000C0000046D7400276A6"
+                + "176612E7574696C2E636F6E63757272656E742E546872656164506F6F6C4578656375746F7274001"
+                + "7546872656164506F6F6C4578656375746F722E6A61766174000972756E576F726B65727371007E0"
+                + "00C0000025F74002E6A6176612E7574696C2E636F6E63757272656E742E546872656164506F6F6C4"
+                + "578656375746F7224576F726B6572740017546872656164506F6F6C4578656375746F722E6A61766"
+                + "174000372756E7371007E000C000002F97400106A6176612E6C616E672E54687265616474000B546"
+                + "8726561642E6A61766174000372756E7372001F6A6176612E7574696C2E436F6C6C656374696F6E7"
+                + "324456D7074794C6973747AB817B43CA79EDE02000078707874000466696C6570";
         DirectoryNotEmptyException exception = (DirectoryNotEmptyException) SerializationTester
                 .deserializeHex(hex);
 
diff --git a/luni/src/test/java/libcore/java/nio/file/FileAlreadyExistsExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/FileAlreadyExistsExceptionTest.java
index f8b03fd..6948926a 100644
--- a/luni/src/test/java/libcore/java/nio/file/FileAlreadyExistsExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/FileAlreadyExistsExceptionTest.java
@@ -42,40 +42,40 @@
     }
 
     public void test_serialization() throws IOException, ClassNotFoundException {
-        String hex = "aced0005737200286a6176612e6e696f2e66696c652e46696c65416c726561647945786973747"
-                + "3457863657074696f6e692ff0526155cb4d020000787200216a6176612e6e696f2e66696c652e466"
-                + "96c6553797374656d457863657074696f6ed598f27876d360fc0200024c000466696c657400124c6"
-                + "a6176612f6c616e672f537472696e673b4c00056f7468657271007e0002787200136a6176612e696"
-                + "f2e494f457863657074696f6e6c8073646525f0ab020000787200136a6176612e6c616e672e45786"
-                + "3657074696f6ed0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c6"
-                + "5d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f77616"
-                + "26c653b4c000d64657461696c4d65737361676571007e00025b000a737461636b547261636574001"
-                + "e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c00147375707072657"
-                + "3736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b787071007e00097"
-                + "40006726561736f6e7572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656"
-                + "e743b02462a3c3cfd22390200007870000000097372001b6a6176612e6c616e672e537461636b547"
-                + "2616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e64656"
-                + "36c6172696e67436c61737371007e00024c000866696c654e616d6571007e00024c000a6d6574686"
-                + "f644e616d6571007e000278700000002d7400346c6962636f72652e6a6176612e6e696f2e66696c6"
-                + "52e46696c65416c7265616479457869737473457863657074696f6e5465737474002346696c65416"
-                + "c7265616479457869737473457863657074696f6e546573742e6a617661740012746573745f73657"
-                + "269616c697a6174696f6e7371007e000dfffffffe7400186a6176612e6c616e672e7265666c65637"
-                + "42e4d6574686f6474000b4d6574686f642e6a617661740006696e766f6b657371007e000d000000f"
-                + "9740028766f6761722e7461726765742e6a756e69742e4a756e69743324566f6761724a556e69745"
-                + "465737474000b4a756e6974332e6a61766174000372756e7371007e000d00000063740020766f676"
-                + "1722e7461726765742e6a756e69742e4a556e697452756e6e657224317400104a556e697452756e6"
-                + "e65722e6a61766174000463616c6c7371007e000d0000005c740020766f6761722e7461726765742"
-                + "e6a756e69742e4a556e697452756e6e657224317400104a556e697452756e6e65722e6a617661740"
-                + "00463616c6c7371007e000d000000ed74001f6a6176612e7574696c2e636f6e63757272656e742e4"
-                + "675747572655461736b74000f4675747572655461736b2e6a61766174000372756e7371007e000d0"
-                + "000046d7400276a6176612e7574696c2e636f6e63757272656e742e546872656164506f6f6c45786"
-                + "56375746f72740017546872656164506f6f6c4578656375746f722e6a61766174000972756e576f7"
-                + "26b65727371007e000d0000025f74002e6a6176612e7574696c2e636f6e63757272656e742e54687"
-                + "2656164506f6f6c4578656375746f7224576f726b6572740017546872656164506f6f6c457865637"
-                + "5746f722e6a61766174000372756e7371007e000d000002f97400106a6176612e6c616e672e54687"
-                + "265616474000b5468726561642e6a61766174000372756e7372001f6a6176612e7574696c2e436f6"
-                + "c6c656374696f6e7324456d7074794c6973747ab817b43ca79ede02000078707874000466696c657"
-                + "400096f7468657246696c65";
+        String hex = "ACED0005737200286A6176612E6E696F2E66696C652E46696C65416C726561647945786973747"
+                + "3457863657074696F6E692FF0526155CB4D020000787200216A6176612E6E696F2E66696C652E466"
+                + "96C6553797374656D457863657074696F6ED598F27876D360FC0200024C000466696C657400124C6"
+                + "A6176612F6C616E672F537472696E673B4C00056F7468657271007E0002787200136A6176612E696"
+                + "F2E494F457863657074696F6E6C8073646525F0AB020000787200136A6176612E6C616E672E45786"
+                + "3657074696F6ED0FD1F3E1A3B1CC4020000787200136A6176612E6C616E672E5468726F7761626C6"
+                + "5D5C635273977B8CB0300044C000563617573657400154C6A6176612F6C616E672F5468726F77616"
+                + "26C653B4C000D64657461696C4D65737361676571007E00025B000A737461636B547261636574001"
+                + "E5B4C6A6176612F6C616E672F537461636B5472616365456C656D656E743B4C00147375707072657"
+                + "3736564457863657074696F6E737400104C6A6176612F7574696C2F4C6973743B787071007E00097"
+                + "40006726561736F6E7572001E5B4C6A6176612E6C616E672E537461636B5472616365456C656D656"
+                + "E743B02462A3C3CFD22390200007870000000097372001B6A6176612E6C616E672E537461636B547"
+                + "2616365456C656D656E746109C59A2636DD8502000449000A6C696E654E756D6265724C000E64656"
+                + "36C6172696E67436C61737371007E00024C000866696C654E616D6571007E00024C000A6D6574686"
+                + "F644E616D6571007E000278700000002D7400346C6962636F72652E6A6176612E6E696F2E66696C6"
+                + "52E46696C65416C7265616479457869737473457863657074696F6E5465737474002346696C65416"
+                + "C7265616479457869737473457863657074696F6E546573742E6A617661740012746573745F73657"
+                + "269616C697A6174696F6E7371007E000DFFFFFFFE7400186A6176612E6C616E672E7265666C65637"
+                + "42E4D6574686F6474000B4D6574686F642E6A617661740006696E766F6B657371007E000D000000F"
+                + "9740028766F6761722E7461726765742E6A756E69742E4A756E69743324566F6761724A556E69745"
+                + "465737474000B4A756E6974332E6A61766174000372756E7371007E000D00000063740020766F676"
+                + "1722E7461726765742E6A756E69742E4A556E697452756E6E657224317400104A556E697452756E6"
+                + "E65722E6A61766174000463616C6C7371007E000D0000005C740020766F6761722E7461726765742"
+                + "E6A756E69742E4A556E697452756E6E657224317400104A556E697452756E6E65722E6A617661740"
+                + "00463616C6C7371007E000D000000ED74001F6A6176612E7574696C2E636F6E63757272656E742E4"
+                + "675747572655461736B74000F4675747572655461736B2E6A61766174000372756E7371007E000D0"
+                + "000046D7400276A6176612E7574696C2E636F6E63757272656E742E546872656164506F6F6C45786"
+                + "56375746F72740017546872656164506F6F6C4578656375746F722E6A61766174000972756E576F7"
+                + "26B65727371007E000D0000025F74002E6A6176612E7574696C2E636F6E63757272656E742E54687"
+                + "2656164506F6F6C4578656375746F7224576F726B6572740017546872656164506F6F6C457865637"
+                + "5746F722E6A61766174000372756E7371007E000D000002F97400106A6176612E6C616E672E54687"
+                + "265616474000B5468726561642E6A61766174000372756E7372001F6A6176612E7574696C2E436F6"
+                + "C6C656374696F6E7324456D7074794C6973747AB817B43CA79EDE02000078707874000466696C657"
+                + "400096F7468657246696C65";
 
         FileAlreadyExistsException exception = (FileAlreadyExistsException) SerializationTester
                 .deserializeHex(hex);
diff --git a/luni/src/test/java/libcore/java/nio/file/FileSystemExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/FileSystemExceptionTest.java
index 6476230..75e84cb 100644
--- a/luni/src/test/java/libcore/java/nio/file/FileSystemExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/FileSystemExceptionTest.java
@@ -40,39 +40,39 @@
     }
 
     public void test_serialization() throws IOException, ClassNotFoundException {
-        String hex = "aced0005737200216a6176612e6e696f2e66696c652e46696c6553797374656d4578636570746"
-                + "96f6ed598f27876d360fc0200024c000466696c657400124c6a6176612f6c616e672f537472696e6"
-                + "73b4c00056f7468657271007e0001787200136a6176612e696f2e494f457863657074696f6e6c807"
-                + "3646525f0ab020000787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc40"
-                + "20000787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c00056"
-                + "3617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d657"
-                + "37361676571007e00015b000a737461636b547261636574001e5b4c6a6176612f6c616e672f53746"
-                + "1636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e73740"
-                + "0104c6a6176612f7574696c2f4c6973743b787071007e0008740006726561736f6e7572001e5b4c6"
-                + "a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000787"
-                + "0000000097372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2"
-                + "636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e0"
-                + "0014c000866696c654e616d6571007e00014c000a6d6574686f644e616d6571007e0001787000000"
-                + "02374002d6c6962636f72652e6a6176612e6e696f2e66696c652e46696c6553797374656d4578636"
-                + "57074696f6e5465737474001c46696c6553797374656d457863657074696f6e546573742e6a61766"
-                + "1740025746573745f636f6e7374727563746f7224537472696e6724537472696e6724537472696e6"
-                + "77371007e000cfffffffe7400186a6176612e6c616e672e7265666c6563742e4d6574686f6474000"
-                + "b4d6574686f642e6a617661740006696e766f6b657371007e000c000000f9740028766f6761722e7"
-                + "461726765742e6a756e69742e4a756e69743324566f6761724a556e69745465737474000b4a756e6"
-                + "974332e6a61766174000372756e7371007e000c00000063740020766f6761722e7461726765742e6"
-                + "a756e69742e4a556e697452756e6e657224317400104a556e697452756e6e65722e6a61766174000"
-                + "463616c6c7371007e000c0000005c740020766f6761722e7461726765742e6a756e69742e4a556e6"
-                + "97452756e6e657224317400104a556e697452756e6e65722e6a61766174000463616c6c7371007e0"
-                + "00c000000ed74001f6a6176612e7574696c2e636f6e63757272656e742e4675747572655461736b7"
-                + "4000f4675747572655461736b2e6a61766174000372756e7371007e000c0000046d7400276a61766"
-                + "12e7574696c2e636f6e63757272656e742e546872656164506f6f6c4578656375746f72740017546"
-                + "872656164506f6f6c4578656375746f722e6a61766174000972756e576f726b65727371007e000c0"
-                + "000025f74002e6a6176612e7574696c2e636f6e63757272656e742e546872656164506f6f6c45786"
-                + "56375746f7224576f726b6572740017546872656164506f6f6c4578656375746f722e6a617661740"
-                + "00372756e7371007e000c000002f97400106a6176612e6c616e672e54687265616474000b5468726"
-                + "561642e6a61766174000372756e7372001f6a6176612e7574696c2e436f6c6c656374696f6e73244"
-                + "56d7074794c6973747ab817b43ca79ede02000078707874000466696c657400096f7468657246696"
-                + "c65";
+        String hex = "ACED0005737200216A6176612E6E696F2E66696C652E46696C6553797374656D4578636570746"
+                + "96F6ED598F27876D360FC0200024C000466696C657400124C6A6176612F6C616E672F537472696E6"
+                + "73B4C00056F7468657271007E0001787200136A6176612E696F2E494F457863657074696F6E6C807"
+                + "3646525F0AB020000787200136A6176612E6C616E672E457863657074696F6ED0FD1F3E1A3B1CC40"
+                + "20000787200136A6176612E6C616E672E5468726F7761626C65D5C635273977B8CB0300044C00056"
+                + "3617573657400154C6A6176612F6C616E672F5468726F7761626C653B4C000D64657461696C4D657"
+                + "37361676571007E00015B000A737461636B547261636574001E5B4C6A6176612F6C616E672F53746"
+                + "1636B5472616365456C656D656E743B4C001473757070726573736564457863657074696F6E73740"
+                + "0104C6A6176612F7574696C2F4C6973743B787071007E0008740006726561736F6E7572001E5B4C6"
+                + "A6176612E6C616E672E537461636B5472616365456C656D656E743B02462A3C3CFD2239020000787"
+                + "0000000097372001B6A6176612E6C616E672E537461636B5472616365456C656D656E746109C59A2"
+                + "636DD8502000449000A6C696E654E756D6265724C000E6465636C6172696E67436C61737371007E0"
+                + "0014C000866696C654E616D6571007E00014C000A6D6574686F644E616D6571007E0001787000000"
+                + "02374002D6C6962636F72652E6A6176612E6E696F2E66696C652E46696C6553797374656D4578636"
+                + "57074696F6E5465737474001C46696C6553797374656D457863657074696F6E546573742E6A61766"
+                + "1740025746573745F636F6E7374727563746F7224537472696E6724537472696E6724537472696E6"
+                + "77371007E000CFFFFFFFE7400186A6176612E6C616E672E7265666C6563742E4D6574686F6474000"
+                + "B4D6574686F642E6A617661740006696E766F6B657371007E000C000000F9740028766F6761722E7"
+                + "461726765742E6A756E69742E4A756E69743324566F6761724A556E69745465737474000B4A756E6"
+                + "974332E6A61766174000372756E7371007E000C00000063740020766F6761722E7461726765742E6"
+                + "A756E69742E4A556E697452756E6E657224317400104A556E697452756E6E65722E6A61766174000"
+                + "463616C6C7371007E000C0000005C740020766F6761722E7461726765742E6A756E69742E4A556E6"
+                + "97452756E6E657224317400104A556E697452756E6E65722E6A61766174000463616C6C7371007E0"
+                + "00C000000ED74001F6A6176612E7574696C2E636F6E63757272656E742E4675747572655461736B7"
+                + "4000F4675747572655461736B2E6A61766174000372756E7371007E000C0000046D7400276A61766"
+                + "12E7574696C2E636F6E63757272656E742E546872656164506F6F6C4578656375746F72740017546"
+                + "872656164506F6F6C4578656375746F722E6A61766174000972756E576F726B65727371007E000C0"
+                + "000025F74002E6A6176612E7574696C2E636F6E63757272656E742E546872656164506F6F6C45786"
+                + "56375746F7224576F726B6572740017546872656164506F6F6C4578656375746F722E6A617661740"
+                + "00372756E7371007E000C000002F97400106A6176612E6C616E672E54687265616474000B5468726"
+                + "561642E6A61766174000372756E7372001F6A6176612E7574696C2E436F6C6C656374696F6E73244"
+                + "56D7074794C6973747AB817B43CA79EDE02000078707874000466696C657400096F7468657246696"
+                + "C65";
 
         FileSystemException exception = (FileSystemException) SerializationTester
                 .deserializeHex(hex);
diff --git a/luni/src/test/java/libcore/java/nio/file/FileSystemLoopExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/FileSystemLoopExceptionTest.java
index 2eaaed2..336aa4a 100644
--- a/luni/src/test/java/libcore/java/nio/file/FileSystemLoopExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/FileSystemLoopExceptionTest.java
@@ -32,39 +32,39 @@
     }
 
     public void test_serialization () throws IOException, ClassNotFoundException {
-        String hex = "aced0005737200256a6176612e6e696f2e66696c652e46696c6553797374656d4c6f6f7045786"
-                + "3657074696f6e4335eed96f492f51020000787200216a6176612e6e696f2e66696c652e46696c655"
-                + "3797374656d457863657074696f6ed598f27876d360fc0200024c000466696c657400124c6a61766"
-                + "12f6c616e672f537472696e673b4c00056f7468657271007e0002787200136a6176612e696f2e494"
-                + "f457863657074696f6e6c8073646525f0ab020000787200136a6176612e6c616e672e45786365707"
-                + "4696f6ed0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c65d5c63"
-                + "5273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653"
-                + "b4c000d64657461696c4d65737361676571007e00025b000a737461636b547261636574001e5b4c6"
-                + "a6176612f6c616e672f537461636b5472616365456c656d656e743b4c00147375707072657373656"
-                + "4457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b787071007e00097075720"
-                + "01e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd22390"
-                + "200007870000000097372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746"
-                + "109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737"
-                + "371007e00024c000866696c654e616d6571007e00024c000a6d6574686f644e616d6571007e00027"
-                + "870000000237400316c6962636f72652e6a6176612e6e696f2e66696c652e46696c6553797374656"
-                + "d4c6f6f70457863657074696f6e5465737474002046696c6553797374656d4c6f6f7045786365707"
-                + "4696f6e546573742e6a617661740012746573745f73657269616c697a6174696f6e7371007e000cf"
-                + "ffffffe7400186a6176612e6c616e672e7265666c6563742e4d6574686f6474000b4d6574686f642"
-                + "e6a617661740006696e766f6b657371007e000c000000f9740028766f6761722e7461726765742e6"
-                + "a756e69742e4a756e69743324566f6761724a556e69745465737474000b4a756e6974332e6a61766"
-                + "174000372756e7371007e000c00000063740020766f6761722e7461726765742e6a756e69742e4a5"
-                + "56e697452756e6e657224317400104a556e697452756e6e65722e6a61766174000463616c6c73710"
-                + "07e000c0000005c740020766f6761722e7461726765742e6a756e69742e4a556e697452756e6e657"
-                + "224317400104a556e697452756e6e65722e6a61766174000463616c6c7371007e000c000000ed740"
-                + "01f6a6176612e7574696c2e636f6e63757272656e742e4675747572655461736b74000f467574757"
-                + "2655461736b2e6a61766174000372756e7371007e000c0000046d7400276a6176612e7574696c2e6"
-                + "36f6e63757272656e742e546872656164506f6f6c4578656375746f72740017546872656164506f6"
-                + "f6c4578656375746f722e6a61766174000972756e576f726b65727371007e000c0000025f74002e6"
-                + "a6176612e7574696c2e636f6e63757272656e742e546872656164506f6f6c4578656375746f72245"
-                + "76f726b6572740017546872656164506f6f6c4578656375746f722e6a61766174000372756e73710"
-                + "07e000c000002f97400106a6176612e6c616e672e54687265616474000b5468726561642e6a61766"
-                + "174000372756e7372001f6a6176612e7574696c2e436f6c6c656374696f6e7324456d7074794c697"
-                + "3747ab817b43ca79ede02000078707874000466696c6570";
+        String hex = "ACED0005737200256A6176612E6E696F2E66696C652E46696C6553797374656D4C6F6F7045786"
+                + "3657074696F6E4335EED96F492F51020000787200216A6176612E6E696F2E66696C652E46696C655"
+                + "3797374656D457863657074696F6ED598F27876D360FC0200024C000466696C657400124C6A61766"
+                + "12F6C616E672F537472696E673B4C00056F7468657271007E0002787200136A6176612E696F2E494"
+                + "F457863657074696F6E6C8073646525F0AB020000787200136A6176612E6C616E672E45786365707"
+                + "4696F6ED0FD1F3E1A3B1CC4020000787200136A6176612E6C616E672E5468726F7761626C65D5C63"
+                + "5273977B8CB0300044C000563617573657400154C6A6176612F6C616E672F5468726F7761626C653"
+                + "B4C000D64657461696C4D65737361676571007E00025B000A737461636B547261636574001E5B4C6"
+                + "A6176612F6C616E672F537461636B5472616365456C656D656E743B4C00147375707072657373656"
+                + "4457863657074696F6E737400104C6A6176612F7574696C2F4C6973743B787071007E00097075720"
+                + "01E5B4C6A6176612E6C616E672E537461636B5472616365456C656D656E743B02462A3C3CFD22390"
+                + "200007870000000097372001B6A6176612E6C616E672E537461636B5472616365456C656D656E746"
+                + "109C59A2636DD8502000449000A6C696E654E756D6265724C000E6465636C6172696E67436C61737"
+                + "371007E00024C000866696C654E616D6571007E00024C000A6D6574686F644E616D6571007E00027"
+                + "870000000237400316C6962636F72652E6A6176612E6E696F2E66696C652E46696C6553797374656"
+                + "D4C6F6F70457863657074696F6E5465737474002046696C6553797374656D4C6F6F7045786365707"
+                + "4696F6E546573742E6A617661740012746573745F73657269616C697A6174696F6E7371007E000CF"
+                + "FFFFFFE7400186A6176612E6C616E672E7265666C6563742E4D6574686F6474000B4D6574686F642"
+                + "E6A617661740006696E766F6B657371007E000C000000F9740028766F6761722E7461726765742E6"
+                + "A756E69742E4A756E69743324566F6761724A556E69745465737474000B4A756E6974332E6A61766"
+                + "174000372756E7371007E000C00000063740020766F6761722E7461726765742E6A756E69742E4A5"
+                + "56E697452756E6E657224317400104A556E697452756E6E65722E6A61766174000463616C6C73710"
+                + "07E000C0000005C740020766F6761722E7461726765742E6A756E69742E4A556E697452756E6E657"
+                + "224317400104A556E697452756E6E65722E6A61766174000463616C6C7371007E000C000000ED740"
+                + "01F6A6176612E7574696C2E636F6E63757272656E742E4675747572655461736B74000F467574757"
+                + "2655461736B2E6A61766174000372756E7371007E000C0000046D7400276A6176612E7574696C2E6"
+                + "36F6E63757272656E742E546872656164506F6F6C4578656375746F72740017546872656164506F6"
+                + "F6C4578656375746F722E6A61766174000972756E576F726B65727371007E000C0000025F74002E6"
+                + "A6176612E7574696C2E636F6E63757272656E742E546872656164506F6F6C4578656375746F72245"
+                + "76F726B6572740017546872656164506F6F6C4578656375746F722E6A61766174000372756E73710"
+                + "07E000C000002F97400106A6176612E6C616E672E54687265616474000B5468726561642E6A61766"
+                + "174000372756E7372001F6A6176612E7574696C2E436F6C6C656374696F6E7324456D7074794C697"
+                + "3747AB817B43CA79EDE02000078707874000466696C6570";
         FileSystemLoopException exception = (FileSystemLoopException) SerializationTester
                 .deserializeHex(hex);
 
diff --git a/luni/src/test/java/libcore/java/nio/file/NoSuchFileExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/NoSuchFileExceptionTest.java
index 170879c..467d908 100644
--- a/luni/src/test/java/libcore/java/nio/file/NoSuchFileExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/NoSuchFileExceptionTest.java
@@ -41,40 +41,40 @@
     }
 
     public void test_serialization() throws IOException, ClassNotFoundException {
-        String hex = "aced0005737200216a6176612e6e696f2e66696c652e4e6f5375636846696c654578636570746"
-                + "96f6eecb4b0fef4cd7a85020000787200216a6176612e6e696f2e66696c652e46696c65537973746"
-                + "56d457863657074696f6ed598f27876d360fc0200024c000466696c657400124c6a6176612f6c616"
-                + "e672f537472696e673b4c00056f7468657271007e0002787200136a6176612e696f2e494f4578636"
-                + "57074696f6e6c8073646525f0ab020000787200136a6176612e6c616e672e457863657074696f6ed"
-                + "0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b"
-                + "8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d6"
-                + "4657461696c4d65737361676571007e00025b000a737461636b547261636574001e5b4c6a6176612"
-                + "f6c616e672f537461636b5472616365456c656d656e743b4c0014737570707265737365644578636"
-                + "57074696f6e737400104c6a6176612f7574696c2f4c6973743b787071007e0009740006726561736"
-                + "f6e7572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3"
-                + "cfd22390200007870000000097372001b6a6176612e6c616e672e537461636b5472616365456c656"
-                + "d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e674"
-                + "36c61737371007e00024c000866696c654e616d6571007e00024c000a6d6574686f644e616d65710"
-                + "07e000278700000002374002d6c6962636f72652e6a6176612e6e696f2e66696c652e4e6f5375636"
-                + "846696c65457863657074696f6e5465737474001c4e6f5375636846696c65457863657074696f6e5"
-                + "46573742e6a617661740025746573745f636f6e7374727563746f7224537472696e6724537472696"
-                + "e6724537472696e677371007e000dfffffffe7400186a6176612e6c616e672e7265666c6563742e4"
-                + "d6574686f6474000b4d6574686f642e6a617661740006696e766f6b657371007e000d000000f9740"
-                + "028766f6761722e7461726765742e6a756e69742e4a756e69743324566f6761724a556e697454657"
-                + "37474000b4a756e6974332e6a61766174000372756e7371007e000d00000063740020766f6761722"
-                + "e7461726765742e6a756e69742e4a556e697452756e6e657224317400104a556e697452756e6e657"
-                + "22e6a61766174000463616c6c7371007e000d0000005c740020766f6761722e7461726765742e6a7"
-                + "56e69742e4a556e697452756e6e657224317400104a556e697452756e6e65722e6a6176617400046"
-                + "3616c6c7371007e000d000000ed74001f6a6176612e7574696c2e636f6e63757272656e742e46757"
-                + "47572655461736b74000f4675747572655461736b2e6a61766174000372756e7371007e000d00000"
-                + "46d7400276a6176612e7574696c2e636f6e63757272656e742e546872656164506f6f6c457865637"
-                + "5746f72740017546872656164506f6f6c4578656375746f722e6a61766174000972756e576f726b6"
-                + "5727371007e000d0000025f74002e6a6176612e7574696c2e636f6e63757272656e742e546872656"
-                + "164506f6f6c4578656375746f7224576f726b6572740017546872656164506f6f6c4578656375746"
-                + "f722e6a61766174000372756e7371007e000d000002f97400106a6176612e6c616e672e546872656"
-                + "16474000b5468726561642e6a61766174000372756e7372001f6a6176612e7574696c2e436f6c6c6"
-                + "56374696f6e7324456d7074794c6973747ab817b43ca79ede02000078707874000466696c6574000"
-                + "96f7468657246696c65";
+        String hex = "ACED0005737200216A6176612E6E696F2E66696C652E4E6F5375636846696C654578636570746"
+                + "96F6EECB4B0FEF4CD7A85020000787200216A6176612E6E696F2E66696C652E46696C65537973746"
+                + "56D457863657074696F6ED598F27876D360FC0200024C000466696C657400124C6A6176612F6C616"
+                + "E672F537472696E673B4C00056F7468657271007E0002787200136A6176612E696F2E494F4578636"
+                + "57074696F6E6C8073646525F0AB020000787200136A6176612E6C616E672E457863657074696F6ED"
+                + "0FD1F3E1A3B1CC4020000787200136A6176612E6C616E672E5468726F7761626C65D5C635273977B"
+                + "8CB0300044C000563617573657400154C6A6176612F6C616E672F5468726F7761626C653B4C000D6"
+                + "4657461696C4D65737361676571007E00025B000A737461636B547261636574001E5B4C6A6176612"
+                + "F6C616E672F537461636B5472616365456C656D656E743B4C0014737570707265737365644578636"
+                + "57074696F6E737400104C6A6176612F7574696C2F4C6973743B787071007E0009740006726561736"
+                + "F6E7572001E5B4C6A6176612E6C616E672E537461636B5472616365456C656D656E743B02462A3C3"
+                + "CFD22390200007870000000097372001B6A6176612E6C616E672E537461636B5472616365456C656"
+                + "D656E746109C59A2636DD8502000449000A6C696E654E756D6265724C000E6465636C6172696E674"
+                + "36C61737371007E00024C000866696C654E616D6571007E00024C000A6D6574686F644E616D65710"
+                + "07E000278700000002374002D6C6962636F72652E6A6176612E6E696F2E66696C652E4E6F5375636"
+                + "846696C65457863657074696F6E5465737474001C4E6F5375636846696C65457863657074696F6E5"
+                + "46573742E6A617661740025746573745F636F6E7374727563746F7224537472696E6724537472696"
+                + "E6724537472696E677371007E000DFFFFFFFE7400186A6176612E6C616E672E7265666C6563742E4"
+                + "D6574686F6474000B4D6574686F642E6A617661740006696E766F6B657371007E000D000000F9740"
+                + "028766F6761722E7461726765742E6A756E69742E4A756E69743324566F6761724A556E697454657"
+                + "37474000B4A756E6974332E6A61766174000372756E7371007E000D00000063740020766F6761722"
+                + "E7461726765742E6A756E69742E4A556E697452756E6E657224317400104A556E697452756E6E657"
+                + "22E6A61766174000463616C6C7371007E000D0000005C740020766F6761722E7461726765742E6A7"
+                + "56E69742E4A556E697452756E6E657224317400104A556E697452756E6E65722E6A6176617400046"
+                + "3616C6C7371007E000D000000ED74001F6A6176612E7574696C2E636F6E63757272656E742E46757"
+                + "47572655461736B74000F4675747572655461736B2E6A61766174000372756E7371007E000D00000"
+                + "46D7400276A6176612E7574696C2E636F6E63757272656E742E546872656164506F6F6C457865637"
+                + "5746F72740017546872656164506F6F6C4578656375746F722E6A61766174000972756E576F726B6"
+                + "5727371007E000D0000025F74002E6A6176612E7574696C2E636F6E63757272656E742E546872656"
+                + "164506F6F6C4578656375746F7224576F726B6572740017546872656164506F6F6C4578656375746"
+                + "F722E6A61766174000372756E7371007E000D000002F97400106A6176612E6C616E672E546872656"
+                + "16474000B5468726561642E6A61766174000372756E7372001F6A6176612E7574696C2E436F6C6C6"
+                + "56374696F6E7324456D7074794C6973747AB817B43CA79EDE02000078707874000466696C6574000"
+                + "96F7468657246696C65";
         NoSuchFileException exception = (NoSuchFileException) SerializationTester
                 .deserializeHex(hex);
 
diff --git a/luni/src/test/java/libcore/java/nio/file/NotDirectoryExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/NotDirectoryExceptionTest.java
index 6719c0c..064c03a 100644
--- a/luni/src/test/java/libcore/java/nio/file/NotDirectoryExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/NotDirectoryExceptionTest.java
@@ -34,39 +34,39 @@
     }
 
     public void test_serialization() throws IOException, ClassNotFoundException {
-        String hex = "aced0005737200236a6176612e6e696f2e66696c652e4e6f744469726563746f7279457863657"
-                + "074696f6e82f0df36f87ce379020000787200216a6176612e6e696f2e66696c652e46696c6553797"
-                + "374656d457863657074696f6ed598f27876d360fc0200024c000466696c657400124c6a6176612f6"
-                + "c616e672f537472696e673b4c00056f7468657271007e0002787200136a6176612e696f2e494f457"
-                + "863657074696f6e6c8073646525f0ab020000787200136a6176612e6c616e672e457863657074696"
-                + "f6ed0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c65d5c635273"
-                + "977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c0"
-                + "00d64657461696c4d65737361676571007e00025b000a737461636b547261636574001e5b4c6a617"
-                + "6612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457"
-                + "863657074696f6e737400104c6a6176612f7574696c2f4c6973743b787071007e0009707572001e5"
-                + "b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd223902000"
-                + "07870000000097372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c"
-                + "59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c617373710"
-                + "07e00024c000866696c654e616d6571007e00024c000a6d6574686f644e616d6571007e000278700"
-                + "000002574002f6c6962636f72652e6a6176612e6e696f2e66696c652e4e6f744469726563746f727"
-                + "9457863657074696f6e5465737474001e4e6f744469726563746f7279457863657074696f6e54657"
-                + "3742e6a617661740012746573745f73657269616c697a6174696f6e7371007e000cfffffffe74001"
-                + "86a6176612e6c616e672e7265666c6563742e4d6574686f6474000b4d6574686f642e6a617661740"
-                + "006696e766f6b657371007e000c000000f9740028766f6761722e7461726765742e6a756e69742e4"
-                + "a756e69743324566f6761724a556e69745465737474000b4a756e6974332e6a61766174000372756"
-                + "e7371007e000c00000063740020766f6761722e7461726765742e6a756e69742e4a556e697452756"
-                + "e6e657224317400104a556e697452756e6e65722e6a61766174000463616c6c7371007e000c00000"
-                + "05c740020766f6761722e7461726765742e6a756e69742e4a556e697452756e6e657224317400104"
-                + "a556e697452756e6e65722e6a61766174000463616c6c7371007e000c000000ed74001f6a6176612"
-                + "e7574696c2e636f6e63757272656e742e4675747572655461736b74000f4675747572655461736b2"
-                + "e6a61766174000372756e7371007e000c0000046d7400276a6176612e7574696c2e636f6e6375727"
-                + "2656e742e546872656164506f6f6c4578656375746f72740017546872656164506f6f6c457865637"
-                + "5746f722e6a61766174000972756e576f726b65727371007e000c0000025f74002e6a6176612e757"
-                + "4696c2e636f6e63757272656e742e546872656164506f6f6c4578656375746f7224576f726b65727"
-                + "40017546872656164506f6f6c4578656375746f722e6a61766174000372756e7371007e000c00000"
-                + "2f97400106a6176612e6c616e672e54687265616474000b5468726561642e6a61766174000372756"
-                + "e7372001f6a6176612e7574696c2e436f6c6c656374696f6e7324456d7074794c6973747ab817b43"
-                + "ca79ede02000078707874000466696c6570";
+        String hex = "ACED0005737200236A6176612E6E696F2E66696C652E4E6F744469726563746F7279457863657"
+                + "074696F6E82F0DF36F87CE379020000787200216A6176612E6E696F2E66696C652E46696C6553797"
+                + "374656D457863657074696F6ED598F27876D360FC0200024C000466696C657400124C6A6176612F6"
+                + "C616E672F537472696E673B4C00056F7468657271007E0002787200136A6176612E696F2E494F457"
+                + "863657074696F6E6C8073646525F0AB020000787200136A6176612E6C616E672E457863657074696"
+                + "F6ED0FD1F3E1A3B1CC4020000787200136A6176612E6C616E672E5468726F7761626C65D5C635273"
+                + "977B8CB0300044C000563617573657400154C6A6176612F6C616E672F5468726F7761626C653B4C0"
+                + "00D64657461696C4D65737361676571007E00025B000A737461636B547261636574001E5B4C6A617"
+                + "6612F6C616E672F537461636B5472616365456C656D656E743B4C001473757070726573736564457"
+                + "863657074696F6E737400104C6A6176612F7574696C2F4C6973743B787071007E0009707572001E5"
+                + "B4C6A6176612E6C616E672E537461636B5472616365456C656D656E743B02462A3C3CFD223902000"
+                + "07870000000097372001B6A6176612E6C616E672E537461636B5472616365456C656D656E746109C"
+                + "59A2636DD8502000449000A6C696E654E756D6265724C000E6465636C6172696E67436C617373710"
+                + "07E00024C000866696C654E616D6571007E00024C000A6D6574686F644E616D6571007E000278700"
+                + "000002574002F6C6962636F72652E6A6176612E6E696F2E66696C652E4E6F744469726563746F727"
+                + "9457863657074696F6E5465737474001E4E6F744469726563746F7279457863657074696F6E54657"
+                + "3742E6A617661740012746573745F73657269616C697A6174696F6E7371007E000CFFFFFFFE74001"
+                + "86A6176612E6C616E672E7265666C6563742E4D6574686F6474000B4D6574686F642E6A617661740"
+                + "006696E766F6B657371007E000C000000F9740028766F6761722E7461726765742E6A756E69742E4"
+                + "A756E69743324566F6761724A556E69745465737474000B4A756E6974332E6A61766174000372756"
+                + "E7371007E000C00000063740020766F6761722E7461726765742E6A756E69742E4A556E697452756"
+                + "E6E657224317400104A556E697452756E6E65722E6A61766174000463616C6C7371007E000C00000"
+                + "05C740020766F6761722E7461726765742E6A756E69742E4A556E697452756E6E657224317400104"
+                + "A556E697452756E6E65722E6A61766174000463616C6C7371007E000C000000ED74001F6A6176612"
+                + "E7574696C2E636F6E63757272656E742E4675747572655461736B74000F4675747572655461736B2"
+                + "E6A61766174000372756E7371007E000C0000046D7400276A6176612E7574696C2E636F6E6375727"
+                + "2656E742E546872656164506F6F6C4578656375746F72740017546872656164506F6F6C457865637"
+                + "5746F722E6A61766174000972756E576F726B65727371007E000C0000025F74002E6A6176612E757"
+                + "4696C2E636F6E63757272656E742E546872656164506F6F6C4578656375746F7224576F726B65727"
+                + "40017546872656164506F6F6C4578656375746F722E6A61766174000372756E7371007E000C00000"
+                + "2F97400106A6176612E6C616E672E54687265616474000B5468726561642E6A61766174000372756"
+                + "E7372001F6A6176612E7574696C2E436F6C6C656374696F6E7324456D7074794C6973747AB817B43"
+                + "CA79EDE02000078707874000466696C6570";
         NotDirectoryException exception = (NotDirectoryException) SerializationTester
                 .deserializeHex(hex);
 
diff --git a/luni/src/test/java/libcore/java/nio/file/NotLinkExceptionTest.java b/luni/src/test/java/libcore/java/nio/file/NotLinkExceptionTest.java
index 0a058ec..2b74ed9 100644
--- a/luni/src/test/java/libcore/java/nio/file/NotLinkExceptionTest.java
+++ b/luni/src/test/java/libcore/java/nio/file/NotLinkExceptionTest.java
@@ -41,39 +41,39 @@
     }
 
     public void test_serialization() throws IOException, ClassNotFoundException {
-        String hex = "aced00057372001e6a6176612e6e696f2e66696c652e4e6f744c696e6b457863657074696f6ef"
-                + "a9b37cb53a0387b020000787200216a6176612e6e696f2e66696c652e46696c6553797374656d457"
-                + "863657074696f6ed598f27876d360fc0200024c000466696c657400124c6a6176612f6c616e672f5"
-                + "37472696e673b4c00056f7468657271007e0002787200136a6176612e696f2e494f4578636570746"
-                + "96f6e6c8073646525f0ab020000787200136a6176612e6c616e672e457863657074696f6ed0fd1f3"
-                + "e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb030"
-                + "0044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d6465746"
-                + "1696c4d65737361676571007e00025b000a737461636b547261636574001e5b4c6a6176612f6c616"
-                + "e672f537461636b5472616365456c656d656e743b4c0014737570707265737365644578636570746"
-                + "96f6e737400104c6a6176612f7574696c2f4c6973743b787071007e0009740006726561736f6e757"
-                + "2001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd223"
-                + "90200007870000000097372001b6a6176612e6c616e672e537461636b5472616365456c656d656e7"
-                + "46109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c617"
-                + "37371007e00024c000866696c654e616d6571007e00024c000a6d6574686f644e616d6571007e000"
-                + "278700000002c74002a6c6962636f72652e6a6176612e6e696f2e66696c652e4e6f744c696e6b457"
-                + "863657074696f6e546573747400194e6f744c696e6b457863657074696f6e546573742e6a6176617"
-                + "40012746573745f73657269616c697a6174696f6e7371007e000dfffffffe7400186a6176612e6c6"
-                + "16e672e7265666c6563742e4d6574686f6474000b4d6574686f642e6a617661740006696e766f6b6"
-                + "57371007e000d000000f9740028766f6761722e7461726765742e6a756e69742e4a756e697433245"
-                + "66f6761724a556e69745465737474000b4a756e6974332e6a61766174000372756e7371007e000d0"
-                + "0000063740020766f6761722e7461726765742e6a756e69742e4a556e697452756e6e65722431740"
-                + "0104a556e697452756e6e65722e6a61766174000463616c6c7371007e000d0000005c740020766f6"
-                + "761722e7461726765742e6a756e69742e4a556e697452756e6e657224317400104a556e697452756"
-                + "e6e65722e6a61766174000463616c6c7371007e000d000000ed74001f6a6176612e7574696c2e636"
-                + "f6e63757272656e742e4675747572655461736b74000f4675747572655461736b2e6a61766174000"
-                + "372756e7371007e000d0000046d7400276a6176612e7574696c2e636f6e63757272656e742e54687"
-                + "2656164506f6f6c4578656375746f72740017546872656164506f6f6c4578656375746f722e6a617"
-                + "66174000972756e576f726b65727371007e000d0000025f74002e6a6176612e7574696c2e636f6e6"
-                + "3757272656e742e546872656164506f6f6c4578656375746f7224576f726b6572740017546872656"
-                + "164506f6f6c4578656375746f722e6a61766174000372756e7371007e000d000002f97400106a617"
-                + "6612e6c616e672e54687265616474000b5468726561642e6a61766174000372756e7372001f6a617"
-                + "6612e7574696c2e436f6c6c656374696f6e7324456d7074794c6973747ab817b43ca79ede0200007"
-                + "8707874000466696c657400096f7468657246696c65";
+        String hex = "ACED00057372001E6A6176612E6E696F2E66696C652E4E6F744C696E6B457863657074696F6EF"
+                + "A9B37CB53A0387B020000787200216A6176612E6E696F2E66696C652E46696C6553797374656D457"
+                + "863657074696F6ED598F27876D360FC0200024C000466696C657400124C6A6176612F6C616E672F5"
+                + "37472696E673B4C00056F7468657271007E0002787200136A6176612E696F2E494F4578636570746"
+                + "96F6E6C8073646525F0AB020000787200136A6176612E6C616E672E457863657074696F6ED0FD1F3"
+                + "E1A3B1CC4020000787200136A6176612E6C616E672E5468726F7761626C65D5C635273977B8CB030"
+                + "0044C000563617573657400154C6A6176612F6C616E672F5468726F7761626C653B4C000D6465746"
+                + "1696C4D65737361676571007E00025B000A737461636B547261636574001E5B4C6A6176612F6C616"
+                + "E672F537461636B5472616365456C656D656E743B4C0014737570707265737365644578636570746"
+                + "96F6E737400104C6A6176612F7574696C2F4C6973743B787071007E0009740006726561736F6E757"
+                + "2001E5B4C6A6176612E6C616E672E537461636B5472616365456C656D656E743B02462A3C3CFD223"
+                + "90200007870000000097372001B6A6176612E6C616E672E537461636B5472616365456C656D656E7"
+                + "46109C59A2636DD8502000449000A6C696E654E756D6265724C000E6465636C6172696E67436C617"
+                + "37371007E00024C000866696C654E616D6571007E00024C000A6D6574686F644E616D6571007E000"
+                + "278700000002C74002A6C6962636F72652E6A6176612E6E696F2E66696C652E4E6F744C696E6B457"
+                + "863657074696F6E546573747400194E6F744C696E6B457863657074696F6E546573742E6A6176617"
+                + "40012746573745F73657269616C697A6174696F6E7371007E000DFFFFFFFE7400186A6176612E6C6"
+                + "16E672E7265666C6563742E4D6574686F6474000B4D6574686F642E6A617661740006696E766F6B6"
+                + "57371007E000D000000F9740028766F6761722E7461726765742E6A756E69742E4A756E697433245"
+                + "66F6761724A556E69745465737474000B4A756E6974332E6A61766174000372756E7371007E000D0"
+                + "0000063740020766F6761722E7461726765742E6A756E69742E4A556E697452756E6E65722431740"
+                + "0104A556E697452756E6E65722E6A61766174000463616C6C7371007E000D0000005C740020766F6"
+                + "761722E7461726765742E6A756E69742E4A556E697452756E6E657224317400104A556E697452756"
+                + "E6E65722E6A61766174000463616C6C7371007E000D000000ED74001F6A6176612E7574696C2E636"
+                + "F6E63757272656E742E4675747572655461736B74000F4675747572655461736B2E6A61766174000"
+                + "372756E7371007E000D0000046D7400276A6176612E7574696C2E636F6E63757272656E742E54687"
+                + "2656164506F6F6C4578656375746F72740017546872656164506F6F6C4578656375746F722E6A617"
+                + "66174000972756E576F726B65727371007E000D0000025F74002E6A6176612E7574696C2E636F6E6"
+                + "3757272656E742E546872656164506F6F6C4578656375746F7224576F726B6572740017546872656"
+                + "164506F6F6C4578656375746F722E6A61766174000372756E7371007E000D000002F97400106A617"
+                + "6612E6C616E672E54687265616474000B5468726561642E6A61766174000372756E7372001F6A617"
+                + "6612E7574696C2E436F6C6C656374696F6E7324456D7074794C6973747AB817B43CA79EDE0200007"
+                + "8707874000466696C657400096F7468657246696C65";
         NotLinkException exception = (NotLinkException) SerializationTester.deserializeHex(hex);
 
         String hex1 = SerializationTester.serializeHex(exception).toString();
diff --git a/luni/src/test/java/libcore/java/security/SignatureTest.java b/luni/src/test/java/libcore/java/security/SignatureTest.java
index ae6c5b6..fe431ed 100644
--- a/luni/src/test/java/libcore/java/security/SignatureTest.java
+++ b/luni/src/test/java/libcore/java/security/SignatureTest.java
@@ -68,6 +68,8 @@
 import java.util.concurrent.TimeUnit;
 import junit.framework.TestCase;
 
+import libcore.util.HexEncoding;
+
 public class SignatureTest extends TestCase {
     private static abstract class MockProvider extends Provider {
         public MockProvider(String name) {
@@ -558,13 +560,13 @@
         testSignature_MultipleThreads_Misuse(sig);
     }
 
-    private static final byte[] PK_BYTES = hexToBytes(
+    private static final byte[] PK_BYTES = HexEncoding.decode(
             "30819f300d06092a864886f70d010101050003818d0030818902818100cd769d178f61475fce3001"
             + "2604218320c77a427121d3b41dd76756c8fc0c428cd15cb754adc85466f47547b1c85623d9c17fc6"
             + "4f202fca21099caf99460c824ad657caa8c2db34996838d32623c4f23c8b6a4e6698603901262619"
             + "4840e0896b1a6ec4f6652484aad04569bb6a885b822a10d700224359c632dc7324520cbb3d020301"
             + "0001");
-    private static final byte[] CONTENT = hexToBytes(
+    private static final byte[] CONTENT = HexEncoding.decode(
             "f2fa9d73656e00fa01edc12e73656e2e7670632e6432004867268c46dd95030b93ce7260423e5c00"
             + "fabd4d656d6265727300fa018dc12e73656e2e7670632e643100d7c258dc00fabd44657669636573"
             + "00faa54b65797300fa02b5c12e4d2e4b009471968cc68835f8a68dde10f53d19693d480de767e5fb"
@@ -579,21 +581,12 @@
             + "c77a427121d3b41dd76756c8fc0c428cd15cb754adc85466f47547b1c85623d9c17fc64f202fca21"
             + "099caf99460c824ad657caa8c2db34996838d32623c4f23c8b6a4e66986039012626194840e0896b"
             + "1a6ec4f6652484aad04569bb6a885b822a10d700224359c632dc7324520cbb3d020301000100");
-    private static final byte[] SIGNATURE = hexToBytes(
+    private static final byte[] SIGNATURE = HexEncoding.decode(
             "b4016456148cd2e9f580470aad63d19c1fee52b38c9dcb5b4d61a7ca369a7277497775d106d86394"
             + "a69229184333b5a3e6261d5bcebdb02530ca9909f4d790199eae7c140f7db39dee2232191bdf0bfb"
             + "34fdadc44326b9b3f3fa828652bab07f0362ac141c8c3784ebdec44e0b156a5e7bccdc81a56fe954"
             + "56ac8c0e4ae12d97");
 
-    public static byte[] hexToBytes(String s) {
-        int len = s.length();
-        byte[] data = new byte[len / 2];
-        for (int i = 0; i < len; i += 2) {
-            data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
-                                  + Character.digit(s.charAt(i+1), 16));
-        }
-        return data;
-    }
 
     /**
      * This should actually fail because the ASN.1 encoding is incorrect. It is
@@ -3340,7 +3333,7 @@
     private static final byte[] NAMED_CURVE_VECTOR = "Satoshi Nakamoto".getBytes(UTF_8);
     // $ echo -n "Satoshi Nakamoto" > signed
     // $ openssl dgst -ecdsa-with-SHA1 -sign key.pem -out sig signed
-    private static final byte[] NAMED_CURVE_SIGNATURE = hexToBytes("304402205b41ece6dcc1c5bfcfdae74658d99c08c5e783f3926c11ecc1a8bea5d95cdf27022061a7d5fc687287e2e02dd7c6723e2e27fe0555f789590a37e96b1bb0355b4df0");
+    private static final byte[] NAMED_CURVE_SIGNATURE = HexEncoding.decode("304402205b41ece6dcc1c5bfcfdae74658d99c08c5e783f3926c11ecc1a8bea5d95cdf27022061a7d5fc687287e2e02dd7c6723e2e27fe0555f789590a37e96b1bb0355b4df0");
 
     private static PublicKey getNamedCurveEcPublicKey() throws Exception {
         // These are the parameters for the BitCoin curve (secp256k1). See
diff --git a/luni/src/test/java/libcore/java/security/spec/AlgorithmParametersPSSTest.java b/luni/src/test/java/libcore/java/security/spec/AlgorithmParametersPSSTest.java
index 72afe15..7c60b87 100644
--- a/luni/src/test/java/libcore/java/security/spec/AlgorithmParametersPSSTest.java
+++ b/luni/src/test/java/libcore/java/security/spec/AlgorithmParametersPSSTest.java
@@ -37,31 +37,31 @@
     // Bouncy Castle 1.52 AlgorithmParameters of type "PSS" and checked for correctness using ASN.1
     // DER decoder.
     private static final PSSParameterSpec DEFAULT_SPEC = PSSParameterSpec.DEFAULT;
-    private static final byte[] DEFAULT_SPEC_DER_ENCODED = hexDecode("3000");
+    private static final byte[] DEFAULT_SPEC_DER_ENCODED = HexEncoding.decode("3000");
 
     private static final PSSParameterSpec WEIRD_SPEC =
             new PSSParameterSpec("SHA-512", "MGF1", MGF1ParameterSpec.SHA384, 27, 3);
     private static final byte[] WEIRD_SPEC_DER_ENCODED =
-            hexDecode(
+            HexEncoding.decode(
                     "3039a00f300d06096086480165030402030500a11c301a06092a864886f70d010108300d060960"
                     + "86480165030402020500a20302011ba303020103");
 
     private static final PSSParameterSpec WEIRD2_SPEC =
             new PSSParameterSpec("SHA-224", "MGF1", MGF1ParameterSpec.SHA256, 32, 1);
     private static final byte[] WEIRD2_SPEC_DER_ENCODED =
-            hexDecode(
+            HexEncoding.decode(
                     "3034a00f300d06096086480165030402040500a11c301a06092a864886f70d010108300d060960"
                     + "86480165030402010500a203020120");
 
     /** Truncated SEQUENCE (one more byte needed at the end) */
     private static final byte[] BROKEN_SPEC1_DER_ENCODED =
-            hexDecode(
+            HexEncoding.decode(
                     "303aa00f300d06096086480165030402030500a11c301a06092a864886f70d010108300d060960"
                     + "86480165030402020500a20302011ba303020103");
 
     /** Payload of SEQUENCE extends beyond the SEQUENCE. */
     private static final byte[] BROKEN_SPEC2_DER_ENCODED =
-            hexDecode(
+            HexEncoding.decode(
                     "3037a00f300d06096086480165030402030500a11c301a06092a864886f70d010108300d060960"
                     + "86480165030402020500a20302011ba303020103");
 
@@ -207,10 +207,6 @@
         assertEquals(spec1.getTrailerField(), spec2.getTrailerField());
     }
 
-    private static final byte[] hexDecode(String encoded) {
-        return HexEncoding.decode(encoded.toCharArray(), false);
-    }
-
     // All the craziness with supporting OIDs is needed because Bouncy Castle, when parsing from
     // ASN.1 form, returns PSSParameterSpec instances which use OIDs instead of JCA standard names
     // for digest algorithms and MGF algorithms.
diff --git a/luni/src/test/java/libcore/java/util/Base64Test.java b/luni/src/test/java/libcore/java/util/Base64Test.java
index 30aa177..daf4916 100644
--- a/luni/src/test/java/libcore/java/util/Base64Test.java
+++ b/luni/src/test/java/libcore/java/util/Base64Test.java
@@ -36,6 +36,8 @@
 import java.util.Random;
 import java.util.Set;
 
+import libcore.util.HexEncoding;
+
 import static java.nio.charset.StandardCharsets.US_ASCII;
 import static java.util.Arrays.copyOfRange;
 
@@ -1115,18 +1117,11 @@
     /** Checks array contents. */
     private static void assertArrayEquals(byte[] expected, byte[] actual) {
         if (!Arrays.equals(expected, actual)) {
-            fail("Expected " + hexString(expected) + ", got " + hexString(actual));
+            fail("Expected " + HexEncoding.encodeToString(expected)
+                    + ", got " + HexEncoding.encodeToString(actual));
         }
     }
 
-    private static String hexString(byte[] bytes) {
-        StringBuilder sb = new StringBuilder("0x");
-        for (byte b : bytes) {
-            sb.append(Integer.toHexString(b & 0xff));
-        }
-        return sb.toString();
-    }
-
     private static void assertThrowsNpe(Runnable runnable) {
         try {
             runnable.run();
diff --git a/luni/src/test/java/libcore/java/util/CurrencyTest.java b/luni/src/test/java/libcore/java/util/CurrencyTest.java
index 552ad9e..d5bac07 100644
--- a/luni/src/test/java/libcore/java/util/CurrencyTest.java
+++ b/luni/src/test/java/libcore/java/util/CurrencyTest.java
@@ -149,8 +149,8 @@
     public void testSerialization() throws Exception {
         Currency usd = Currency.getInstance("USD");
         String actual = SerializationTester.serializeHex(usd);
-        String expected = "aced0005737200126a6176612e7574696c2e43757272656e6379fdcd934a5911a91f02" +
-                "00014c000c63757272656e6379436f64657400124c6a6176612f6c616e672f537472696e673b7870" +
+        String expected = "ACED0005737200126A6176612E7574696C2E43757272656E6379FDCD934A5911A91F02" +
+                "00014C000C63757272656E6379436F64657400124C6A6176612F6C616E672F537472696E673B7870" +
                 "740003555344";
         assertEquals(expected, actual);
 
diff --git a/luni/src/test/java/libcore/javax/crypto/CipherBasicsTest.java b/luni/src/test/java/libcore/javax/crypto/CipherBasicsTest.java
index ac45cc8..7f0818f 100644
--- a/luni/src/test/java/libcore/javax/crypto/CipherBasicsTest.java
+++ b/luni/src/test/java/libcore/javax/crypto/CipherBasicsTest.java
@@ -38,6 +38,7 @@
 import javax.crypto.Cipher;
 import javax.crypto.spec.GCMParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
+import libcore.util.HexEncoding;
 
 /**
  * Test for basic compliance for ciphers.  This test uses reference vectors produced by
@@ -206,15 +207,6 @@
     }
 
     private static byte[] toBytes(String hex) {
-        if (hex.length() % 2 == 1) {
-            hex = "0" + hex;
-        }
-        byte[] data = new byte[hex.length() / 2];
-        for (int i = 0; i < hex.length(); i += 2) {
-            int high = Character.digit(hex.charAt(i), 16);
-            int low = Character.digit(hex.charAt(i + 1), 16);
-            data[i / 2] = (byte) ((high << 4) + low);
-        }
-        return data;
+        return HexEncoding.decode(hex, /* allowSingleChar= */ true);
     }
 }
diff --git a/luni/src/test/java/libcore/javax/crypto/ECDHKeyAgreementTest.java b/luni/src/test/java/libcore/javax/crypto/ECDHKeyAgreementTest.java
index cc29640..69d9354 100644
--- a/luni/src/test/java/libcore/javax/crypto/ECDHKeyAgreementTest.java
+++ b/luni/src/test/java/libcore/javax/crypto/ECDHKeyAgreementTest.java
@@ -16,8 +16,6 @@
 
 package libcore.javax.crypto;
 
-import static libcore.java.security.SignatureTest.hexToBytes;
-
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
@@ -45,34 +43,35 @@
 import javax.crypto.KeyAgreement;
 import javax.crypto.SecretKey;
 import javax.crypto.ShortBufferException;
+import libcore.util.HexEncoding;
 
 /**
  * Tests for all registered Elliptic Curve Diffie-Hellman {@link KeyAgreement} providers.
  */
 public class ECDHKeyAgreementTest extends TestCase {
     // Two key pairs and the resulting shared secret for the Known Answer Test
-    private static final byte[] KAT_PUBLIC_KEY1_X509 = hexToBytes(
+    private static final byte[] KAT_PUBLIC_KEY1_X509 = HexEncoding.decode(
             "3059301306072a8648ce3d020106082a8648ce3d030107034200049fc2f71f85446b1371244491d83"
             + "9cf97b5d27cedbb04d2c0058b59709df3a216e6b4ca1b2d622588c5a0e6968144a8965e816a600c"
             + "05305a1da3df2bf02b41d1");
-    private static final byte[] KAT_PRIVATE_KEY1_PKCS8 = hexToBytes(
+    private static final byte[] KAT_PRIVATE_KEY1_PKCS8 = HexEncoding.decode(
             "308193020100301306072a8648ce3d020106082a8648ce3d030107047930770201010420e1e683003"
             + "c8b963a92742e5f955ce7fddc81d0c3ae9b149d6af86a0cacb2271ca00a06082a8648ce3d030107"
             + "a144034200049fc2f71f85446b1371244491d839cf97b5d27cedbb04d2c0058b59709df3a216e6b"
             + "4ca1b2d622588c5a0e6968144a8965e816a600c05305a1da3df2bf02b41d1");
 
-    private static final byte[] KAT_PUBLIC_KEY2_X509 = hexToBytes(
+    private static final byte[] KAT_PUBLIC_KEY2_X509 = HexEncoding.decode(
             "3059301306072a8648ce3d020106082a8648ce3d03010703420004358efb6d91e5bbcae21774af3f6"
             + "d85d0848630e7e61dbeb5ac9e47036ed0f8d38c7a1d1bb249f92861c7c9153fff33f45ab5b171eb"
             + "e8cad741125e6bb4fc6b07");
-    private static final byte[] KAT_PRIVATE_KEY2_PKCS8 = hexToBytes(
+    private static final byte[] KAT_PRIVATE_KEY2_PKCS8 = HexEncoding.decode(
             "308193020100301306072a8648ce3d020106082a8648ce3d0301070479307702010104202b1810a69"
             + "e12b74d50bf0343168f705f0104f76299855268aa526fdb31e6eec0a00a06082a8648ce3d030107"
             + "a14403420004358efb6d91e5bbcae21774af3f6d85d0848630e7e61dbeb5ac9e47036ed0f8d38c7"
             + "a1d1bb249f92861c7c9153fff33f45ab5b171ebe8cad741125e6bb4fc6b07");
 
     private static final byte[] KAT_SECRET =
-            hexToBytes("4faa0594c0e773eb26c8df2163af2443e88aab9578b9e1f324bc61e42d222783");
+            HexEncoding.decode("4faa0594c0e773eb26c8df2163af2443e88aab9578b9e1f324bc61e42d222783");
 
     private static final ECPublicKey KAT_PUBLIC_KEY1;
     private static final ECPrivateKey KAT_PRIVATE_KEY1;
diff --git a/luni/src/test/java/libcore/util/SerializationTester.java b/luni/src/test/java/libcore/util/SerializationTester.java
index 59f319c..5398a0d 100644
--- a/luni/src/test/java/libcore/util/SerializationTester.java
+++ b/luni/src/test/java/libcore/util/SerializationTester.java
@@ -54,11 +54,11 @@
         try {
             if (golden == null || golden.length() == 0) {
                 fail("No golden value supplied! Consider using this: "
-                        + hexEncode(serialize(value)));
+                        + HexEncoding.encodeToString(serialize(value)));
             }
 
             @SuppressWarnings("unchecked") // deserialize should return the proper type
-            T deserialized = (T) deserialize(hexDecode(golden));
+            T deserialized = (T) deserialize(HexEncoding.decode(golden));
             assertTrue("User-constructed value doesn't equal deserialized golden value",
                     equals(value, deserialized));
 
@@ -92,22 +92,6 @@
         return result;
     }
 
-    private static String hexEncode(byte[] bytes) {
-        StringBuilder result = new StringBuilder(bytes.length * 2);
-        for (byte b : bytes) {
-            result.append(String.format("%02x", b));
-        }
-        return result.toString();
-    }
-
-    private static byte[] hexDecode(String s) {
-        byte[] result = new byte[s.length() / 2];
-        for (int i = 0; i < result.length; i++) {
-            result[i] = (byte) Integer.parseInt(s.substring(i*2, i*2 + 2), 16);
-        }
-        return result;
-    }
-
     /**
      * Returns a serialized-and-deserialized copy of {@code object}.
      */
@@ -116,10 +100,10 @@
     }
 
     public static String serializeHex(Object object) throws IOException {
-        return hexEncode(serialize(object));
+        return HexEncoding.encodeToString(serialize(object));
     }
 
     public static Object deserializeHex(String hex) throws IOException, ClassNotFoundException {
-        return deserialize(hexDecode(hex));
+        return deserialize(HexEncoding.decode(hex));
     }
 }