Snap for 6439596 from b115c18dcfcc7433d89826f86a1f5889d3a6e37f to qt-aml-tzdata-release

Change-Id: I64058cd03174edd19c36f5416443452602640772
diff --git a/Android.bp b/Android.bp
index 0d92caf..07923d7 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,26 +1,5 @@
-// 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 {
-    default_visibility: ["//visibility:private"],
-}
-
 java_test {
     name: "apache-harmony-tests",
-    visibility: [
-        "//cts/tests/libcore/luni",
-    ],
     hostdex: true,
     srcs: [
         "beans/src/test/java/**/*.java",
@@ -46,15 +25,14 @@
         "sql/src/test/resources",
         "support/src/test/resources",
     ],
-    sdk_version: "none",
-    system_modules: "core-all-system-modules",
+    no_standard_libs: true,
     libs: [
+        "core-all",
         "junit",
     ],
-    static_libs: [
-        "core-tests-support",
-    ],
+    system_modules: "core-all-system-modules",
     javacflags: ["-Xmaxwarns 9999999"],
+    jarjar_rules: "jarjar-rules.txt",
     // Pin java_version until jarjar is certified to support later versions. http://b/72703434
     java_version: "1.8",
 
diff --git a/OWNERS b/OWNERS
index 4a2c004..f2e8ba9 100644
--- a/OWNERS
+++ b/OWNERS
@@ -5,6 +5,14 @@
 shertz@google.com
 
 # For build / style / minor test fixes:
-include platform/libcore:/OWNERS
 agampe@google.com
+flooey@google.com
+jsauer@google.com
+narayan@google.com
+nfuller@google.com
+paulduffin@google.com
+peteg@google.com
+pszczepaniak@google.com
 sehr@google.com
+tobiast@google.com
+vichang@google.com
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
deleted file mode 100644
index 321bab6..0000000
--- a/PREUPLOAD.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-[Builtin Hooks]
-bpfmt = true
diff --git a/beans/src/test/resources/serialization/org/apache/harmony/beans/tests/java/beans/PropertyChangeEventTest.golden.ser b/beans/src/test/resources/serialization/com/android/org/apache/harmony/beans/tests/java/beans/PropertyChangeEventTest.golden.ser
similarity index 100%
rename from beans/src/test/resources/serialization/org/apache/harmony/beans/tests/java/beans/PropertyChangeEventTest.golden.ser
rename to beans/src/test/resources/serialization/com/android/org/apache/harmony/beans/tests/java/beans/PropertyChangeEventTest.golden.ser
Binary files differ
diff --git a/beans/src/test/resources/serialization/org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.golden.ser b/beans/src/test/resources/serialization/com/android/org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.golden.ser
similarity index 100%
rename from beans/src/test/resources/serialization/org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.golden.ser
rename to beans/src/test/resources/serialization/com/android/org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.golden.ser
Binary files differ
diff --git a/jarjar-rules.txt b/jarjar-rules.txt
new file mode 100644
index 0000000..46bbc91
--- /dev/null
+++ b/jarjar-rules.txt
@@ -0,0 +1 @@
+rule org.apache.harmony.** com.android.@0
diff --git a/jdwp/Android.bp b/jdwp/Android.bp
index b1af1b5..80703f5 100644
--- a/jdwp/Android.bp
+++ b/jdwp/Android.bp
@@ -9,9 +9,6 @@
 
 java_test {
     name: "apache-harmony-jdwp-tests",
-    visibility: [
-        "//cts/tests/jdwp",
-    ],
     hostdex: true,
     host_supported: true,
     srcs: ["src/test/java/**/*.java"],
@@ -19,9 +16,14 @@
 
     libs: ["junit"],
 
-    sdk_version: "none",
+    no_standard_libs: true,
     system_modules: "core-all-system-modules",
     target: {
+        // Only depend on core-all for the Android variant so we can avoid
+        // needing to create a core-all host variant.
+        android: {
+            libs: ["core-all"],
+        },
         host: {
             exclude_srcs: ["src/test/java/org/apache/harmony/jpda/tests/jdwp/DDM/**/*.java"],
         },
@@ -34,3 +36,8 @@
 
     jarjar_rules: "jarjar-rules.txt",
 }
+
+java_library_host {
+    name: "apache-harmony-jdwp-tests-host",
+    static_libs: ["apache-harmony-jdwp-tests"],
+}
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java
index de5b397..9c237e8 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java
@@ -51,10 +51,6 @@
                 logWriter.println("main thread: Waiting for second thread to attempt to lock a monitor");
             }
             
-            // We think the monitor is contended.
-            synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
-            // Make sure we're good to finish.
-            synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
             logWriter.println("--> main thread: finish test");
         }
     }
@@ -70,6 +66,7 @@
         @Override
         public void run() {
             logWriter.println("--> BlockedThread: start to run");
+            
             synchronized (lock) {
                 this.getName().trim();
                 logWriter.println("--> BlockedThread: get lock");
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterTest.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterTest.java
index 5aa6491..7f80e5b 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterTest.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterTest.java
@@ -83,12 +83,6 @@
         assertEquals("Invalid monitor class signature: ", monitorSignature
                 , actualSignature);
         logWriter.println("==> CHECK: monitor class signature: " + actualSignature);
-
-        // We don't actually need these in this test. They're used for the Entered test.
-        // Debuggee thinks the monitor is contended.
-        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
-        // Wake up the blocking thread. Its job is done.
-        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
     }
 
 }
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnteredTest.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnteredTest.java
index b5d76fa..fc0bf0f 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnteredTest.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnteredTest.java
@@ -20,12 +20,9 @@
 
 import org.apache.harmony.jpda.tests.framework.TestErrorException;
 import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
-import org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands;
 import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
 import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
 import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent.Event_MONITOR_CONTENDED_ENTERED;
-import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
-import org.apache.harmony.jpda.tests.framework.jdwp.Value;
 import org.apache.harmony.jpda.tests.jdwp.share.JDWPSyncTestCase;
 import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
 
@@ -52,40 +49,6 @@
         // Inform debuggee that the request has been set
         logWriter.println("==> Request has been set.");
         synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
-        // Debuggee thinks the monitor is contended.
-        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
-
-        // Wait for the other thread to look asleep.
-        boolean hasWaiters;
-        long classID = getClassIDBySignature(getDebuggeeClassSignature());
-        long cnt = 0;
-        String fieldName = "lock";
-        long fld_id = checkField(classID, fieldName);
-        do {
-            CommandPacket getValuesCommand = new CommandPacket(
-                    JDWPCommands.ReferenceTypeCommandSet.CommandSetID,
-                    JDWPCommands.ReferenceTypeCommandSet.GetValuesCommand);
-            getValuesCommand.setNextValueAsReferenceTypeID(classID);
-            getValuesCommand.setNextValueAsInt(1);
-            getValuesCommand.setNextValueAsFieldID(fld_id);
-            ReplyPacket getValuesReply = debuggeeWrapper.vmMirror.performCommand(getValuesCommand);
-            checkReplyPacket(getValuesReply, "ReferenceType::GetValues command");
-            getValuesReply.getNextValueAsInt();  // num-replies
-            Value lkvalue = getValuesReply.getNextValueAsValue();
-            long lk = lkvalue.getLongValue();
-            CommandPacket monitorInfoCmd = new CommandPacket(
-                    JDWPCommands.ObjectReferenceCommandSet.CommandSetID,
-                    JDWPCommands.ObjectReferenceCommandSet.MonitorInfoCommand);
-            monitorInfoCmd.setNextValueAsObjectID(lk);
-            ReplyPacket monInfoReply = debuggeeWrapper.vmMirror.performCommand(monitorInfoCmd);
-            checkReplyPacket(monInfoReply, "ObjectReference::MonitorInfo command");
-            monInfoReply.getNextValueAsThreadID();  // owner
-            monInfoReply.getNextValueAsInt();  // entryCount
-            hasWaiters = monInfoReply.getNextValueAsInt() != 0;
-        } while (!hasWaiters);
-        logWriter.println("==> Monitor has waiter.");
-        // Wake up the blocking thread. Its job is done.
-        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
 
         // Receive event of MONITOR_CONTENDED_ENTERED
         logWriter.println("==> Receive Event.");
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ThreadReference/ForceEarlyReturn002Test.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ThreadReference/ForceEarlyReturn002Test.java
index 747ee17..befaf77 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ThreadReference/ForceEarlyReturn002Test.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ThreadReference/ForceEarlyReturn002Test.java
@@ -69,8 +69,7 @@
         long testedThreadID = debuggeeWrapper.vmMirror
                 .getThreadID(ForceEarlyReturnDebuggee.THREAD_LONG);
         logWriter.println("==> Get testedThreadID is" + testedThreadID);
-        logWriter.println("==> suspend testedThread...");
-        debuggeeWrapper.vmMirror.suspendThread(testedThreadID);
+
 
         // Compose the ForceEarlyReturn command
         CommandPacket forceEarlyReturnPacket = new CommandPacket(
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ThreadReference/ForceEarlyReturnDebuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ThreadReference/ForceEarlyReturnDebuggee.java
index 2949536..b6795e0 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ThreadReference/ForceEarlyReturnDebuggee.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ThreadReference/ForceEarlyReturnDebuggee.java
@@ -62,31 +62,6 @@
 
     static Object waitForFinish = new Object();
 
-    private final class NoCallSynchronizer extends Thread {
-        public volatile boolean signalReady = false;
-
-        public NoCallSynchronizer(String name) {
-          super(name + " - NoCallSynchronizer thread");
-        }
-
-        public void run() {
-            while (!signalReady) {
-                Thread.yield();
-            }
-            logWriter.println(getName() + ": " + "resuming debugger");
-            synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
-        }
-
-        public void sjoin() {
-          try {
-              join();
-          } catch (InterruptedException ie) {
-              logWriter.println("Interrupted exception: " + ie);
-              throw new Error("join interrupted!", ie);
-          }
-        }
-    }
-
     @Override
     public void run() {
         synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
@@ -107,81 +82,81 @@
         synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
     }
 
-    public Object func_Object(NoCallSynchronizer ncs) {
+    public Object func_Object() {
         logWriter.println("In func_Object");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return new Object();
     }
 
-    public int func_Int(NoCallSynchronizer ncs) {
+    public int func_Int() {
         logWriter.println("In func_Int");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return -1;
     }
 
-    public short func_Short(NoCallSynchronizer ncs) {
+    public short func_Short() {
         logWriter.println("In func_Short");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return -1;
     }
 
-    public byte func_Byte(NoCallSynchronizer ncs) {
+    public byte func_Byte() {
         logWriter.println("In func_Byte");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return -1;
     }
 
-    public char func_Char(NoCallSynchronizer ncs) {
+    public char func_Char() {
         logWriter.println("In func_Char");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return 'Z';
     }
 
-    public boolean func_Boolean(NoCallSynchronizer ncs) {
+    public boolean func_Boolean() {
         logWriter.println("In func_Boolean");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return false;
     }
 
-    public long func_Long(NoCallSynchronizer ncs) {
+    public long func_Long() {
         logWriter.println("In func_Long");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return -1;
     }
 
-    public float func_Float(NoCallSynchronizer ncs) {
+    public float func_Float() {
         logWriter.println("In func_Float");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return -1;
     }
 
-    public double func_Double(NoCallSynchronizer ncs) {
+    public double func_Double() {
         logWriter.println("In func_Double");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         return -1;
     }
 
-    public void func_Void(NoCallSynchronizer ncs) {
+    public void func_Void() {
         logWriter.println("In func_Void");
-        ncs.signalReady = true;
+        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
         while (condition)
             ;
         isFuncVoidBreak = false;
@@ -196,8 +171,6 @@
 
         @Override
         public void run() {
-            NoCallSynchronizer ncs = new NoCallSynchronizer(getName());
-            ncs.start();
 
             synchronized (ForceEarlyReturnDebuggee.waitForFinish) {
 
@@ -208,8 +181,7 @@
                     logWriter.println(getName() + ": started");
 
                     if (getName().equals(THREAD_OBJECT)) {
-                        Object result = func_Object(ncs);
-                        ncs.sjoin();
+                        Object result = func_Object();
                         logWriter.println(getName() + ": " + "Object");
                         if (result instanceof TestObject) {
                             synchronizer.sendMessage("TRUE");
@@ -220,63 +192,54 @@
                                 .println(getName() + ": func_Object returned.");
 
                     } else if (getName().equals(THREAD_INT)) {
-                        int result = func_Int(ncs);
-                        ncs.sjoin();
+                        int result = func_Int();
                         logWriter.println(getName() + ": " + result);
                         synchronizer
                                 .sendMessage(new Integer(result).toString());
                         logWriter.println(getName() + ": func_Int returned.");
                     } else if (getName().equals(THREAD_SHORT)) {
-                        short result = func_Short(ncs);
-                        ncs.sjoin();
+                        short result = func_Short();
                         logWriter.println(getName() + ": " + result);
                         synchronizer
                                 .sendMessage(new Integer(result).toString());
                         logWriter.println(getName() + ": func_Short returned.");
                     } else if (getName().equals(THREAD_BYTE)) {
-                        byte result = func_Byte(ncs);
-                        ncs.sjoin();
+                        byte result = func_Byte();
                         logWriter.println(getName() + ": " + result);
                         synchronizer
                                 .sendMessage(new Integer(result).toString());
                         logWriter.println(getName() + ": func_Byte returned.");
                     } else if (getName().equals(THREAD_CHAR)) {
-                        char result = func_Char(ncs);
-                        ncs.sjoin();
+                        char result = func_Char();
                         logWriter.println(getName() + ": " + result);
                         synchronizer.sendMessage(new Character(result)
                                 .toString());
                         logWriter.println(getName() + ": func_Char returned.");
                     } else if (getName().equals(THREAD_BOOLEAN)) {
-                        Boolean result = func_Boolean(ncs);
-                        ncs.sjoin();
+                        Boolean result = func_Boolean();
                         logWriter.println(getName() + ": " + result);
                         synchronizer
                                 .sendMessage(new Boolean(result).toString());
                         logWriter.println(getName()
                                 + ": func_Boolean returned.");
                     } else if (getName().equals(THREAD_LONG)) {
-                        long result = func_Long(ncs);
-                        ncs.sjoin();
+                        long result = func_Long();
                         logWriter.println(getName() + ": " + result);
                         synchronizer.sendMessage(new Long(result).toString());
                         logWriter.println(getName() + ": func_Long returned.");
                     } else if (getName().equals(THREAD_FLOAT)) {
-                        float result = func_Float(ncs);
-                        ncs.sjoin();
+                        float result = func_Float();
                         logWriter.println(getName() + ": " + result);
                         synchronizer.sendMessage(new Float(result).toString());
                         logWriter.println(getName() + ": func_Float returned.");
                     } else if (getName().equals(THREAD_DOUBLE)) {
-                        double result = func_Double(ncs);
-                        ncs.sjoin();
+                        double result = func_Double();
                         logWriter.println(getName() + ": " + result);
                         synchronizer.sendMessage(new Double(result).toString());
                         logWriter
                                 .println(getName() + ": func_Double returned.");
                     } else if (getName().equals(THREAD_VOID)) {
-                        func_Void(ncs);
-                        ncs.sjoin();
+                        func_Void();
                         logWriter.println(getName() + ": " + "void");
                         if (isFuncVoidBreak) {
                             synchronizer.sendMessage("TRUE");
@@ -286,8 +249,7 @@
                         logWriter.println(getName() + ": func_Void returned.");
                     } else {
                         logWriter.println(getName() + ": no func is called.");
-                        ncs.signalReady = true;
-                        ncs.sjoin();
+                        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
                         synchronizer.receiveMessage("ThreadExit");
                     }
 
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/share/AllTests.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/share/AllTests.java
index 55ce1ca..575cb45 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/share/AllTests.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/share/AllTests.java
@@ -18,156 +18,52 @@
 
 package org.apache.harmony.jpda.tests.share;
 
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import org.apache.harmony.jpda.tests.jdwp.share.JDWPRawTestCase;
 
 public class AllTests {
-  private static JPDATestOptions TEST_OPTIONS = new JPDATestOptions();
-
   public static void main(String[] args) {
     junit.framework.TestResult result = junit.textui.TestRunner.run(suite());
     if (!result.wasSuccessful()) {
-      System.exit(1);
+        System.exit(1);
     }
   }
 
-  public static final class BadTestClassException extends IllegalArgumentException {
-    public BadTestClassException(String s) {
-      super(s);
-    }
-
-    public BadTestClassException(String s, Throwable t) {
-      super(s, t);
-    }
-  }
-
-  public static junit.framework.Test makeWarning(String name, String msg) {
-    return new junit.framework.TestCase(name) {
-      protected void runTest() {
-        JPDALogWriter lw = new JPDALogWriter(System.out, null, TEST_OPTIONS.isVerbose());
-        lw.printError("Skipping " + name + " due to: " + msg);
-      }
-    };
-  }
-  public static interface FilterSuite {
-    public void addTestSuite(Class<? extends JDWPRawTestCase> k);
-  }
-
-
-  public static class FilteredTestSuite extends junit.framework.TestSuite {
-    public FilteredTestSuite(Class<? extends JDWPRawTestCase> tc, Predicate<Method> is_good)
-        throws BadTestClassException {
-      super();
-
-      setName(tc.getName());
-
-      if (!Modifier.isPublic(tc.getModifiers())) {
-        throw new BadTestClassException(tc + " is not public");
-      }
-      Function<Method, junit.framework.Test> mktest =
-          (m) -> {
-            try {
-              junit.framework.TestCase res = (junit.framework.TestCase) tc.newInstance();
-              res.setName(m.getName());
-              return res;
-            } catch (Exception t) {
-              return makeWarning(
-                  m.getName(), "Unable to create test case for " + m + " because of " + t);
-            }
-          };
-      Class<?> curClass = tc;
-      Set<String> seen_names = new HashSet<>();
-      while (junit.framework.Test.class.isAssignableFrom(curClass)) {
-        for (Method m : tc.getDeclaredMethods()) {
-          addTestMethod(m, seen_names, is_good, mktest);
-        }
-        curClass = curClass.getSuperclass();
-      }
-    }
-
-    private void addTestMethod(
-        Method m,
-        Set<String> seen,
-        Predicate<Method> is_good,
-        Function<Method, junit.framework.Test> mkTest) {
-      if (seen.contains(m.getName())) {
-        return;
-      }
-      seen.add(m.getName());
-      if (Modifier.isPublic(m.getModifiers())
-          && m.getParameterCount() == 0
-          && m.getName().startsWith("test")
-          && m.getReturnType().equals(Void.TYPE)) {
-        if (is_good.test(m)) {
-          addTest(mkTest.apply(m));
-        } else {
-          addTest(makeWarning(m.getName(), "Skipping test " + m + " due to explicit skip"));
-        }
-      }
-    }
-  }
-
-  private static void addOptionalTestSuite(FilterSuite suite, String classname) {
+  private static void addOptionalTestSuite(junit.framework.TestSuite suite, String classname) {
     try {
-      suite.addTestSuite((Class<? extends JDWPRawTestCase>) Class.forName(classname));
-    } catch (ClassNotFoundException e) {
-    }
+      suite.addTestSuite((Class<? extends junit.framework.TestCase>)Class.forName(classname));
+    } catch (ClassNotFoundException e) { }
   }
 
   public static junit.framework.Test suite() {
-    junit.framework.TestSuite baseSuite = new junit.framework.TestSuite();
-
-    // All of these tests can only be run using the full JDWP implementation. They weren't really
-    // used by IDEs/aren't really applicable to android so were never supported by the
-    // -XjdwpProvider:internal JDWP implementation. The new agent based implementation supports them
-    // though.
-    Set<String> bad_test_cases = new HashSet<>();
-    bad_test_cases.addAll(Arrays.asList(TEST_OPTIONS.getBadTestCases()));
-    FilterSuite suite = (k) -> {
-      try {
-        baseSuite.addTest(
-            new FilteredTestSuite(
-                k,
-                (Method m) -> {
-                  String test_desc = m.getDeclaringClass().getName() + "#" + m.getName();
-                  return !bad_test_cases.contains(test_desc);
-                }));
-      } catch (BadTestClassException e) {
-        baseSuite.addTest(makeWarning(k.getName(), "Could not add test " + k + " due to " + e));
-      }
-    };
-    if (TEST_OPTIONS.getSuiteType().equals("full")
-        || TEST_OPTIONS.getSuiteType().equals("libjdwp")) {
-      // I haven't yet found an IDE that will use these, but we might want to implement them anyway.
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.MonitorContendedEnteredTest.class);
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.MonitorContendedEnterTest.class);
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitedTest.class);
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitTest.class);
-      // I don't know when these are ever used, but they're not obviously useless.
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.ReferenceType.NestedTypesTest.class);
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.VirtualMachine.HoldEventsTest.class);
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.VirtualMachine.ReleaseEventsTest.class);
-      // Internal JDWP implementation never supported this.
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest.class);
-    }
+    junit.framework.TestSuite suite = new junit.framework.TestSuite();
 
     //
-    // These tests are not worth fixing or fundamentally do not make sense on android.
+    // "TODO".
     //
-    if (TEST_OPTIONS.getSuiteType().equals("full")) {
-      // It's not obvious how to translate this into our world, or what debuggers would do with it.
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.ReferenceType.ClassFileVersionTest.class);
-      // TODO The test suite itself seems to send incorrect commands when this is run.
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand.OnthrowDebuggerLaunchTest.class);
-      // TODO We don't implement class unloading in the way the test expects.
-      suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.ClassUnloadTest.class);
-    }
+
+    // I haven't yet found an IDE that will use these, but we might want to implement them anyway.
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.MonitorContendedEnteredTest.class);
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.MonitorContendedEnterTest.class);
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitedTest.class);
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitTest.class);
+
+    // I don't know when these are ever used, but they're not obviously useless.
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand.OnthrowDebuggerLaunchTest.class);
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.ReferenceType.NestedTypesTest.class);
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.VirtualMachine.HoldEventsTest.class);
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.VirtualMachine.ReleaseEventsTest.class);
+
+    //
+    // "Will not fix".
+    //
+
+    // It's not obvious how to translate this into our world, or what debuggers would do with it.
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.ReferenceType.ClassFileVersionTest.class);
+
+    // We don't implement Thread.stop at all, so it doesn't make sense for us to implement the JDWP.
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest.class);
+
+    // We don't implement class unloading.
+    //suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.Events.ClassUnloadTest.class);
 
     suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.ArrayReference.GetValuesTest.class);
     suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.ArrayReference.LengthTest.class);
@@ -350,7 +246,6 @@
     addOptionalTestSuite(suite, "org.apache.harmony.jpda.tests.jdwp.DDM.DDMTest");
     suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.VMDebug.VMDebugTest.class);
     suite.addTestSuite(org.apache.harmony.jpda.tests.jdwp.VMDebug.VMDebugTest002.class);
-
-    return baseSuite;
+    return suite;
   }
 }
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/share/JPDATestOptions.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/share/JPDATestOptions.java
index 0d7841a..adf773a 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/share/JPDATestOptions.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/share/JPDATestOptions.java
@@ -25,7 +25,6 @@
  */
 package org.apache.harmony.jpda.tests.share;
 
-import java.util.Arrays;
 import org.apache.harmony.jpda.tests.framework.TestOptions;
 
 /**
@@ -41,28 +40,6 @@
 public class JPDATestOptions extends TestOptions {
 
     /**
-     * Returns what test methods have been marked as bad and to be skipped.
-     *
-     * @return comma-split option "jpda.settings.badTestCases" or [] by default
-     */
-    public String[] getBadTestCases() {
-        return Arrays.stream(System.getProperty("jpda.settings.badTestCases", "").split(","))
-                     .filter((v) -> !v.equals(""))
-                     .toArray((i) -> new String[i]);
-    }
-
-    /**
-     * Returns what test suite we should use if running AllTests. May be "internal" (for the test
-     * suite corresponding to -XjdwpProvider:internal), "libjdwp" (for the test suite corresponding
-     * to -XjdwpProvider:adbconnection) or "full" for everything.
-     * 
-     * @return option "jpda.settings.testSuiteType" or "internal" by default.
-     */
-    public String getSuiteType() {
-        return System.getProperty("jpda.settings.testSuiteType", "internal");
-    }
-
-    /**
      * Returns kind of launching debuggee VM, which can be "auto" or "manual".
      * 
      * @return option "jpda.settings.debuggeeLaunchKind" or "auto" by default.
diff --git a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/FormatterTest.java b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/FormatterTest.java
index 5b30e98..8dabf91 100644
--- a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/FormatterTest.java
+++ b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/FormatterTest.java
@@ -89,7 +89,7 @@
         // normal case
         r.setMessage("msg");
         ResourceBundle rb = ResourceBundle
-                .getBundle("bundles/java/util/logging/res");
+                .getBundle("bundles/com/android/java/util/logging/res");
         r.setResourceBundle(rb);
         assertEquals(rb.getString("msg"), f.formatMessage(r));
 
@@ -107,7 +107,7 @@
         assertEquals(rb.getString("pattern{0,number}"), f.formatMessage(r));
 
         // another bundle
-        rb = ResourceBundle.getBundle("bundles/java/util/logging/res",
+        rb = ResourceBundle.getBundle("bundles/com/android/java/util/logging/res",
                 Locale.US);
         r.setMessage("msg");
         r.setResourceBundle(rb);
@@ -119,7 +119,7 @@
 
         // set bundle name but not bundle
         r.setResourceBundle(null);
-        r.setResourceBundleName("bundles/java/util/logging/res");
+        r.setResourceBundleName("bundles/com/android/java/util/logging/res");
         r.setMessage("msg");
         assertEquals("msg", f.formatMessage(r));
     }
diff --git a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LevelTest.java b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LevelTest.java
index 1b9eab0..9a290d6 100644
--- a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LevelTest.java
+++ b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LevelTest.java
@@ -331,16 +331,16 @@
     }
 
     public void testGetLocalName() {
-        ResourceBundle rb = ResourceBundle.getBundle("bundles/java/util/logging/res");
+        ResourceBundle rb = ResourceBundle.getBundle("bundles/com/android/java/util/logging/res");
         Level l = new MockLevel("level1", 120,
-                "bundles/java/util/logging/res");
+                "bundles/com/android/java/util/logging/res");
         assertEquals(rb.getString("level1"), l.getLocalizedName());
 
         // regression test for HARMONY-2415
         rb = ResourceBundle.getBundle(
-                "org.apache.harmony.logging.tests.java.util.logging.LevelTestResource");
+                "com.android.org.apache.harmony.logging.tests.java.util.logging.LevelTestResource");
         l = new MockLevel("Level_error", 120,
-                "org.apache.harmony.logging.tests.java.util.logging.LevelTestResource");
+                "com.android.org.apache.harmony.logging.tests.java.util.logging.LevelTestResource");
         assertEquals(rb.getString("Level_error"), l.getLocalizedName());
 
         l = new MockLevel("bad name", 120, "res");
diff --git a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java
index 5656f6d..c54eaa1 100644
--- a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java
+++ b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java
@@ -75,12 +75,12 @@
         lr.setResourceBundle(null);
         assertNull(lr.getResourceBundle());
 
-        lr.setResourceBundleName("bundles/java/util/logging/res");
+        lr.setResourceBundleName("bundles/com/android/java/util/logging/res");
         assertNull(lr.getResourceBundle());
 
         lr.setResourceBundleName(null);
         ResourceBundle rb = ResourceBundle
-                .getBundle("bundles/java/util/logging/res");
+                .getBundle("bundles/com/android/java/util/logging/res");
         lr.setResourceBundle(rb);
         assertEquals(rb, lr.getResourceBundle());
         assertNull(lr.getResourceBundleName());
@@ -326,9 +326,9 @@
     public void testSerializationResourceBundle() throws Exception {
 
         // test case: valid resource bundle name
-        lr.setResourceBundleName("bundles/java/util/logging/res2");
+        lr.setResourceBundleName("bundles/com/android/java/util/logging/res2");
         lr.setResourceBundle(ResourceBundle.getBundle(
-                "bundles/java/util/logging/res", Locale.US));
+                "bundles/com/android/java/util/logging/res", Locale.US));
 
         LogRecord result = (LogRecord) SerializationTest.copySerializable(lr);
         assertNotNull(result.getResourceBundle());
@@ -337,7 +337,7 @@
         // deserialization LogRecord object so check for returned null value
         lr.setResourceBundleName("bad bundle name");
         lr.setResourceBundle(ResourceBundle.getBundle(
-                "bundles/java/util/logging/res", Locale.US));
+                "bundles/com/android/java/util/logging/res", Locale.US));
 
         result = (LogRecord) SerializationTest.copySerializable(lr);
         assertNull(result.getResourceBundle());
diff --git a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java
index bf5e01c..03083ae 100644
--- a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java
+++ b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LoggerTest.java
@@ -43,18 +43,18 @@
  */
 public class LoggerTest extends TestCase {
 
-    private final static String VALID_RESOURCE_BUNDLE = "bundles/java/util/logging/res";
+    private final static String VALID_RESOURCE_BUNDLE = "bundles/com/android/java/util/logging/res";
 
     private final static String VALID_RESOURCE_BUNDLE2 =
-            "bundles/java/util/logging/res2";
+            "bundles/com/android/java/util/logging/res2";
 
     private final static String VALID_RESOURCE_BUNDLE3 =
-            "bundles/java/util/logging/res3";
+            "bundles/com/android/java/util/logging/res3";
 
     private final static String INVALID_RESOURCE_BUNDLE = "impossible_not_existing";
 
     private final static String LOGGING_CONFIG_RESOURCE =
-            "config/java/util/logging/logging.config";
+            "config/com/android/java/util/logging/logging.config";
 
     private final static String VALID_KEY = "LOGGERTEST";
 
@@ -332,9 +332,9 @@
       */
     public void testGetLogger_WithParentNormal() {
         assertNull(LogManager.getLogManager().getLogger(
-                "testGetLogger_WithParentNormal_ParentLogger"));
+                "testGetLogger_WithParent_ParentLogger"));
         // create the parent logger
-        Logger pLog = Logger.getLogger("testGetLogger_WithParentNormal_ParentLogger",
+        Logger pLog = Logger.getLogger("testGetLogger_WithParent_ParentLogger",
                 VALID_RESOURCE_BUNDLE);
         pLog.setLevel(Level.CONFIG);
         pLog.addHandler(new MockHandler());
@@ -342,14 +342,14 @@
         pLog.setUseParentHandlers(false);
 
         assertNull(LogManager.getLogManager().getLogger(
-                "testGetLogger_WithParentNormal_ParentLogger.child"));
+                "testGetLogger_WithParent_ParentLogger.child"));
         // create the child logger
         Logger log = Logger
-                .getLogger("testGetLogger_WithParentNormal_ParentLogger.child");
+                .getLogger("testGetLogger_WithParent_ParentLogger.child");
         assertNull(log.getFilter());
         assertEquals(0, log.getHandlers().length);
         assertNull(log.getLevel());
-        assertEquals("testGetLogger_WithParentNormal_ParentLogger.child", log
+        assertEquals("testGetLogger_WithParent_ParentLogger.child", log
                 .getName());
         assertSame(log.getParent(), pLog);
         assertNull(log.getResourceBundle());
@@ -532,25 +532,25 @@
       */
     public void testGetLoggerWithRes_WithParentNormal() {
         assertNull(LogManager.getLogManager().getLogger(
-                "testGetLoggerWithRes_WithParentNormal_ParentLogger"));
+                "testGetLoggerWithRes_WithParent_ParentLogger"));
         // create the parent logger
         Logger pLog = Logger
-                .getLogger("testGetLoggerWithRes_WithParentNormal_ParentLogger");
+                .getLogger("testGetLoggerWithRes_WithParent_ParentLogger");
         pLog.setLevel(Level.CONFIG);
         pLog.addHandler(new MockHandler());
         pLog.setFilter(new MockFilter());
         pLog.setUseParentHandlers(false);
 
         assertNull(LogManager.getLogManager().getLogger(
-                "testGetLoggerWithRes_WithParentNormal_ParentLogger.child"));
+                "testGetLoggerWithRes_WithParent_ParentLogger.child"));
         // create the child logger
         Logger log = Logger.getLogger(
-                "testGetLoggerWithRes_WithParentNormal_ParentLogger.child",
+                "testGetLoggerWithRes_WithParent_ParentLogger.child",
                 VALID_RESOURCE_BUNDLE);
         assertNull(log.getFilter());
         assertEquals(0, log.getHandlers().length);
         assertNull(log.getLevel());
-        assertEquals("testGetLoggerWithRes_WithParentNormal_ParentLogger.child", log
+        assertEquals("testGetLoggerWithRes_WithParent_ParentLogger.child", log
                 .getName());
         assertSame(log.getParent(), pLog);
         assertEquals(VALID_VALUE, log.getResourceBundle().getString(VALID_KEY));
diff --git a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/SimpleFormatterTest.java b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/SimpleFormatterTest.java
index ee35d2d..ea7589f 100644
--- a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/SimpleFormatterTest.java
+++ b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/SimpleFormatterTest.java
@@ -57,7 +57,7 @@
     public void testLocalizedFormat() {
         // if bundle set, should use localized message
         ResourceBundle rb = ResourceBundle
-                .getBundle("bundles/java/util/logging/res");
+                .getBundle("bundles/com/android/java/util/logging/res");
         lr.setResourceBundle(rb);
         lr.setMessage("msg");
         String localeMsg = rb.getString("msg");
@@ -66,7 +66,7 @@
 
         // if bundle not set but bundle name set, should use original message
         lr.setResourceBundle(null);
-        lr.setResourceBundleName("bundles/java/util/logging/res");
+        lr.setResourceBundleName("bundles/com/android/java/util/logging/res");
         lr.setMessage("msg");
         str = sf.format(lr);
         localeMsg = rb.getString("msg");
diff --git a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/XMLFormatterTest.java b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/XMLFormatterTest.java
index 386daef..b14d571 100644
--- a/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/XMLFormatterTest.java
+++ b/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/XMLFormatterTest.java
@@ -53,7 +53,7 @@
         // but put the original message into the key element
         // further more, if message pattern has no effect
         ResourceBundle rb = ResourceBundle
-                .getBundle("bundles/java/util/logging/res");
+                .getBundle("bundles/com/android/java/util/logging/res");
         lr.setResourceBundle(rb);
         lr.setMessage("pattern");
         String result = formatter.format(lr);
@@ -88,7 +88,7 @@
         lr.setParameters(new Object[] { "100", "200" });
         lr.setSequenceNumber(1);
         ResourceBundle rb = ResourceBundle
-                .getBundle("bundles/java/util/logging/res");
+                .getBundle("bundles/com/android/java/util/logging/res");
         lr.setResourceBundle(rb);
         lr.setResourceBundleName("rbname");
         String output = formatter.format(lr);
diff --git a/logging/src/test/resources/bundles/com/android/java/util/logging/res.properties b/logging/src/test/resources/bundles/com/android/java/util/logging/res.properties
new file mode 100644
index 0000000..db455b0
--- /dev/null
+++ b/logging/src/test/resources/bundles/com/android/java/util/logging/res.properties
@@ -0,0 +1,12 @@
+level1=en_US_level1
+SEVERE=US_SEVERE
+WARNING=US_WARNING
+CONFIG=US_CONFIG
+FINE=US_FINE
+FINER=US_FINER
+FINEST=US_FINEST
+ALL=US_ALL
+OFF=US_OFF
+msg=US_MSG
+pattern=US_pattern {0, number}
+pattern{0,number}=US
\ No newline at end of file
diff --git a/logging/src/test/resources/bundles/com/android/java/util/logging/res2.properties b/logging/src/test/resources/bundles/com/android/java/util/logging/res2.properties
new file mode 100644
index 0000000..66f02eb
--- /dev/null
+++ b/logging/src/test/resources/bundles/com/android/java/util/logging/res2.properties
@@ -0,0 +1,13 @@
+level1=level1
+SEVERE=SEVERE2
+WARNING=WARNING2
+CONFIG=CONFIG2
+FINE=FINE2
+FINER=FINER2
+FINEST=FINEST2
+ALL=ALL2
+OFF=OFF2
+msg=MSG2
+pattern=pattern {0, number}2
+pattern{0,number}=NOLOCALE2
+LOGGERTEST=Test_NoLocale2
\ No newline at end of file
diff --git a/logging/src/test/resources/bundles/com/android/java/util/logging/res3.properties b/logging/src/test/resources/bundles/com/android/java/util/logging/res3.properties
new file mode 100644
index 0000000..f7b4b29
--- /dev/null
+++ b/logging/src/test/resources/bundles/com/android/java/util/logging/res3.properties
@@ -0,0 +1,13 @@
+level1=level13
+SEVERE=SEVERE3
+WARNING=WARNING3
+CONFIG=CONFIG3
+FINE=FINE3
+FINER=FINER3
+FINEST=FINEST3
+ALL=ALL3
+OFF=OFF3
+msg=MSG3
+pattern=pattern {0, number}3
+pattern{0,number}=NOLOCALE3
+LOGGERTEST=Test_NoLocale3
\ No newline at end of file
diff --git a/logging/src/test/resources/bundles/com/android/java/util/logging/res_en_US.properties b/logging/src/test/resources/bundles/com/android/java/util/logging/res_en_US.properties
new file mode 100644
index 0000000..db455b0
--- /dev/null
+++ b/logging/src/test/resources/bundles/com/android/java/util/logging/res_en_US.properties
@@ -0,0 +1,12 @@
+level1=en_US_level1
+SEVERE=US_SEVERE
+WARNING=US_WARNING
+CONFIG=US_CONFIG
+FINE=US_FINE
+FINER=US_FINER
+FINEST=US_FINEST
+ALL=US_ALL
+OFF=US_OFF
+msg=US_MSG
+pattern=US_pattern {0, number}
+pattern{0,number}=US
\ No newline at end of file
diff --git a/logging/src/test/resources/bundles/com/android/java/util/logging/res_zh_CN.properties b/logging/src/test/resources/bundles/com/android/java/util/logging/res_zh_CN.properties
new file mode 100644
index 0000000..e96803d
--- /dev/null
+++ b/logging/src/test/resources/bundles/com/android/java/util/logging/res_zh_CN.properties
@@ -0,0 +1,13 @@
+level1=zh_CN_level1
+SEVERE=zh_CN_SEVERE
+WARNING=zh_CN_WARNING
+CONFIG=ZH_CN_CONFIG
+FINE=ZH_CN_FINE
+FINER=ZH_CN_FINER
+FINEST=ZH_CN_FINEST
+ALL=ZH_CN_ALL
+OFF=ZH_CN_OFF
+msg=ZH_CN_MSG
+pattern=ZH_CN_pattern {0, number}
+pattern{0,number}=ZH_CN
+LOGGERTEST=Test_ZH_CN
\ No newline at end of file
diff --git a/logging/src/test/resources/config/com/android/java/util/logging/logging.config b/logging/src/test/resources/config/com/android/java/util/logging/logging.config
new file mode 100644
index 0000000..c67dadd
--- /dev/null
+++ b/logging/src/test/resources/config/com/android/java/util/logging/logging.config
@@ -0,0 +1,3 @@
+handlers=com.android.org.apache.harmony.logging.tests.java.util.logging.LogManagerTest$MockHandler ,  java.util.logging.ConsoleHandler
+.level=ALL
+com.android.org.apache.harmony.logging.tests.java.util.logging.LogManagerTest$MockHandler.level=OFF
\ No newline at end of file
diff --git a/logging/src/test/resources/serialization/com/android/org/apache/harmony/logging/tests/java/util/logging/LevelTest.golden.ser b/logging/src/test/resources/serialization/com/android/org/apache/harmony/logging/tests/java/util/logging/LevelTest.golden.ser
new file mode 100644
index 0000000..721a368
--- /dev/null
+++ b/logging/src/test/resources/serialization/com/android/org/apache/harmony/logging/tests/java/util/logging/LevelTest.golden.ser
Binary files differ
diff --git a/logging/src/test/resources/serialization/com/android/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.golden.ser b/logging/src/test/resources/serialization/com/android/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.golden.ser
new file mode 100644
index 0000000..955c6fb
--- /dev/null
+++ b/logging/src/test/resources/serialization/com/android/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.golden.ser
Binary files differ
diff --git a/luni/src/test/api/common/org/apache/harmony/luni/tests/internal/process/SystemProcessTest.java b/luni/src/test/api/common/org/apache/harmony/luni/tests/internal/process/SystemProcessTest.java
new file mode 100644
index 0000000..74597a1
--- /dev/null
+++ b/luni/src/test/api/common/org/apache/harmony/luni/tests/internal/process/SystemProcessTest.java
@@ -0,0 +1,54 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.luni.tests.internal.process;
+
+import java.io.OutputStream;
+
+import junit.framework.TestCase;
+import tests.support.Support_Exec;
+
+public class SystemProcessTest extends TestCase {
+
+    public void test_interrupt() throws Exception {
+        Object[] execArgs = null;
+        Process process = null;
+        try {
+            Thread.currentThread().interrupt();
+            execArgs = Support_Exec.execJava2(
+                    new String[] { "tests.support.Support_AvailTest" }, null,
+                    true);
+            process = (Process) execArgs[0];
+            OutputStream os = process.getOutputStream();
+            os.write("10 5 abcde".getBytes());
+            os.close();
+            process.waitFor();
+            fail("Should throw InterruptedException");
+        } catch (InterruptedException e) {
+            // Expected
+        }
+
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+            // Ignored
+        }
+        process.waitFor();
+        Support_Exec.checkStderr(execArgs);
+        process.destroy();
+    }
+}
diff --git a/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/test_protocol/Handler.java b/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/test_protocol/Handler.java
new file mode 100644
index 0000000..e868391
--- /dev/null
+++ b/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/test_protocol/Handler.java
@@ -0,0 +1,30 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.luni.tests.java.net.test_protocol;
+
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+
+public class Handler extends URLStreamHandler {
+    protected URLConnection openConnection(URL u) throws IOException {
+        return null;
+    }
+}
+
diff --git a/luni/src/test/api/common/org/apache/harmony/luni/tests/pkg1/TestClass.java b/luni/src/test/api/common/org/apache/harmony/luni/tests/pkg1/TestClass.java
new file mode 100644
index 0000000..5bef9b9
--- /dev/null
+++ b/luni/src/test/api/common/org/apache/harmony/luni/tests/pkg1/TestClass.java
@@ -0,0 +1,30 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.luni.tests.pkg1;
+
+import java.io.Serializable;
+
+/**
+ * Used for a serialization test, must have different package and same base name
+ * as the TestClass in o.a.h.l.tests.pkg2
+ */
+public class TestClass implements Serializable {
+    private static final long serialVersionUID = 11111L;
+
+    public int i = 0;
+}
diff --git a/luni/src/test/api/common/org/apache/harmony/luni/tests/pkg2/TestClass.java b/luni/src/test/api/common/org/apache/harmony/luni/tests/pkg2/TestClass.java
new file mode 100644
index 0000000..c1a9a4e
--- /dev/null
+++ b/luni/src/test/api/common/org/apache/harmony/luni/tests/pkg2/TestClass.java
@@ -0,0 +1,29 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.luni.tests.pkg2;
+
+import java.io.Serializable;
+
+/**
+ * Used for a serialization test, must have different package and same base name
+ * as the TestClass in o.a.h.l.tests.pkg1
+ */
+public class TestClass implements Serializable {
+    private static final long serialVersionUID = 11111L;
+    public int i = 0;
+}
diff --git a/luni/src/test/resources/org/apache/harmony/luni/tests/ObjectStreamClassTest.jar b/luni/src/test/resources/org/apache/harmony/luni/tests/ObjectStreamClassTest.jar
new file mode 100644
index 0000000..7ba6034
--- /dev/null
+++ b/luni/src/test/resources/org/apache/harmony/luni/tests/ObjectStreamClassTest.jar
Binary files differ
diff --git a/luni/src/test/resources/org/apache/harmony/luni/tests/key_store.bks b/luni/src/test/resources/org/apache/harmony/luni/tests/key_store.bks
new file mode 100644
index 0000000..9aa43d8
--- /dev/null
+++ b/luni/src/test/resources/org/apache/harmony/luni/tests/key_store.bks
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/AbstractMapTest_SimpleEntry.golden.ser b/luni/src/test/resources/serialization/java/util/AbstractMapTest_SimpleEntry.golden.ser
new file mode 100644
index 0000000..0b5d815
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/AbstractMapTest_SimpleEntry.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/AbstractMapTest_SimpleImmutableEntry.golden.ser b/luni/src/test/resources/serialization/java/util/AbstractMapTest_SimpleImmutableEntry.golden.ser
new file mode 100644
index 0000000..a85543d
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/AbstractMapTest_SimpleImmutableEntry.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_CheckedCollection.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_CheckedCollection.golden.ser
new file mode 100644
index 0000000..eec840e
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_CheckedCollection.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_CheckedList.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_CheckedList.golden.ser
new file mode 100644
index 0000000..e9a4122
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_CheckedList.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_CheckedListRandomAccess.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_CheckedListRandomAccess.golden.ser
new file mode 100644
index 0000000..dfa2d43
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_CheckedListRandomAccess.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_CheckedMap.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_CheckedMap.golden.ser
new file mode 100644
index 0000000..13415f6
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_CheckedMap.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_CheckedSet.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_CheckedSet.golden.ser
new file mode 100644
index 0000000..ed1f305
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_CheckedSet.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_CheckedSortedMap.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_CheckedSortedMap.golden.ser
new file mode 100644
index 0000000..eca8ffa
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_CheckedSortedMap.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_CheckedSortedSet.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_CheckedSortedSet.golden.ser
new file mode 100644
index 0000000..4520ed4
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_CheckedSortedSet.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_asLifoQueue.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_asLifoQueue.golden.ser
new file mode 100644
index 0000000..73134df
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_asLifoQueue.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/Collections_newSetFromMap.golden.ser b/luni/src/test/resources/serialization/java/util/Collections_newSetFromMap.golden.ser
new file mode 100644
index 0000000..88f97e5
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/Collections_newSetFromMap.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/java/util/PriorityQueue.golden.ser b/luni/src/test/resources/serialization/java/util/PriorityQueue.golden.ser
new file mode 100644
index 0000000..d716dda
--- /dev/null
+++ b/luni/src/test/resources/serialization/java/util/PriorityQueue.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/FileTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/FileTest.golden.ser
new file mode 100644
index 0000000..0a15a61
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/FileTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/IOErrorTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/IOErrorTest.golden.ser
new file mode 100644
index 0000000..cd0e319
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/IOErrorTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/test_array_integers.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/test_array_integers.ser
new file mode 100644
index 0000000..3c5a5e1
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/test_array_integers.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/test_array_strings.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/test_array_strings.ser
new file mode 100644
index 0000000..ee2de1c
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/io/test_array_strings.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/AbstractMethodErrorTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/AbstractMethodErrorTest.golden.ser
new file mode 100644
index 0000000..255e965
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/AbstractMethodErrorTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/IllegalArgumentExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/IllegalArgumentExceptionTest.golden.ser
new file mode 100644
index 0000000..a94e8bf
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/IllegalArgumentExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/IllegalStateExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/IllegalStateExceptionTest.golden.ser
new file mode 100644
index 0000000..14b902b
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/IllegalStateExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/SecurityExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/SecurityExceptionTest.golden.ser
new file mode 100644
index 0000000..76abfd1
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/SecurityExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/StringBufferTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/StringBufferTest.golden.ser
new file mode 100644
index 0000000..861b4ab
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/StringBufferTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/StringBuilderTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/StringBuilderTest.golden.ser
new file mode 100644
index 0000000..fb54290
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/StringBuilderTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/UnsupportedOperationExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/UnsupportedOperationExceptionTest.golden.ser
new file mode 100644
index 0000000..9197188
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/lang/UnsupportedOperationExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/HttpRetryExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/HttpRetryExceptionTest.golden.ser
new file mode 100644
index 0000000..40413eb
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/HttpRetryExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet4AddressTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet4AddressTest.golden.ser
new file mode 100644
index 0000000..bc70d04
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet4AddressTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet6AddressTest.golden.0.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet6AddressTest.golden.0.ser
new file mode 100644
index 0000000..4607c20
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet6AddressTest.golden.0.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet6AddressTest.golden.1.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet6AddressTest.golden.1.ser
new file mode 100644
index 0000000..5d55693
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/Inet6AddressTest.golden.1.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetAddressTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetAddressTest.golden.ser
new file mode 100644
index 0000000..bc70d04
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetAddressTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetSocketAddressTest.golden.0.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetSocketAddressTest.golden.0.ser
new file mode 100644
index 0000000..94fe222
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetSocketAddressTest.golden.0.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetSocketAddressTest.golden.1.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetSocketAddressTest.golden.1.ser
new file mode 100644
index 0000000..1672d5f
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/InetSocketAddressTest.golden.1.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/SocketTimeoutExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/SocketTimeoutExceptionTest.golden.ser
new file mode 100644
index 0000000..a6e7680
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/net/SocketTimeoutExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/ArrayDequeTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/ArrayDequeTest.golden.ser
new file mode 100644
index 0000000..794419a
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/ArrayDequeTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/BitSetTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/BitSetTest.golden.ser
new file mode 100644
index 0000000..1f38d8d
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/BitSetTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/DuplicateFormatFlagsExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/DuplicateFormatFlagsExceptionTest.golden.ser
new file mode 100644
index 0000000..f26eade
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/DuplicateFormatFlagsExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/EnumMapTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/EnumMapTest.golden.ser
new file mode 100644
index 0000000..8ab8303
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/EnumMapTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/EnumSetTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/EnumSetTest.golden.ser
new file mode 100644
index 0000000..6859db8
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/EnumSetTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/FormatFlagsConversionMismatchExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/FormatFlagsConversionMismatchExceptionTest.golden.ser
new file mode 100644
index 0000000..ff1afb2
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/FormatFlagsConversionMismatchExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/FormatterClosedExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/FormatterClosedExceptionTest.golden.ser
new file mode 100644
index 0000000..02e8dbc
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/FormatterClosedExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/HashMapTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/HashMapTest.golden.ser
new file mode 100644
index 0000000..529512a
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/HashMapTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/HashSetTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/HashSetTest.golden.ser
new file mode 100644
index 0000000..5d76a32
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/HashSetTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IdentityHashMapTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IdentityHashMapTest.golden.ser
new file mode 100644
index 0000000..a1d8844
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IdentityHashMapTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatCodePointExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatCodePointExceptionTest.golden.ser
new file mode 100644
index 0000000..23db2c6
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatCodePointExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatConversionExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatConversionExceptionTest.golden.ser
new file mode 100644
index 0000000..52c8817
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatConversionExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatFlagsExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatFlagsExceptionTest.golden.ser
new file mode 100644
index 0000000..b14987f
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatFlagsExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatPrecisionExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatPrecisionExceptionTest.golden.ser
new file mode 100644
index 0000000..e822aec
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatPrecisionExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatWidthExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatWidthExceptionTest.golden.ser
new file mode 100644
index 0000000..8e1a25b
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/IllegalFormatWidthExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/InputMismatchExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/InputMismatchExceptionTest.golden.ser
new file mode 100644
index 0000000..5b76933
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/InputMismatchExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/LinkedListTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/LinkedListTest.golden.ser
new file mode 100644
index 0000000..c94e6dc
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/LinkedListTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/MissingFormatArgumentExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/MissingFormatArgumentExceptionTest.golden.ser
new file mode 100644
index 0000000..ea6797d
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/MissingFormatArgumentExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/MissingFormatWidthExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/MissingFormatWidthExceptionTest.golden.ser
new file mode 100644
index 0000000..19773a5
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/MissingFormatWidthExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/ServiceConfigurationErrorTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/ServiceConfigurationErrorTest.golden.ser
new file mode 100644
index 0000000..d43a064
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/ServiceConfigurationErrorTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/UnknownFormatConversionExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/UnknownFormatConversionExceptionTest.golden.ser
new file mode 100644
index 0000000..20a59cc
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/UnknownFormatConversionExceptionTest.golden.ser
Binary files differ
diff --git a/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/UnknownFormatFlagsExceptionTest.golden.ser b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/UnknownFormatFlagsExceptionTest.golden.ser
new file mode 100644
index 0000000..e4b2278
--- /dev/null
+++ b/luni/src/test/resources/serialization/org/apache/harmony/luni/tests/java/util/UnknownFormatFlagsExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java b/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java
new file mode 100644
index 0000000..3f883e7
--- /dev/null
+++ b/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java
@@ -0,0 +1,568 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.harmony.sql.tests.java.sql;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.lang.reflect.Method;
+import java.security.Permission;
+import java.sql.Connection;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.DriverPropertyInfo;
+import java.sql.SQLException;
+import java.sql.SQLPermission;
+import java.util.Enumeration;
+import java.util.Properties;
+import tests.support.Support_Exec;
+
+import junit.framework.TestCase;
+
+/**
+ * JUnit Testcase for the java.sql.DriverManager class
+ */
+public class DriverManagerTest extends TestCase {
+
+    // Set of driver names to use
+    static final String DRIVER1 = "org.apache.harmony.sql.tests.java.sql.TestHelper_Driver1";
+
+    static final String DRIVER2 = "org.apache.harmony.sql.tests.java.sql.TestHelper_Driver2";
+
+    static final String DRIVER3 = "org.apache.harmony.sql.tests.java.sql.TestHelper_Driver3";
+
+    static final String DRIVER4 = "org.apache.harmony.sql.tests.java.sql.TestHelper_Driver4";
+
+    static final String DRIVER5 = "org.apache.harmony.sql.tests.java.sql.TestHelper_Driver5";
+
+    static final String INVALIDDRIVER1 = "abc.klm.Foo";
+
+    static String[] driverNames = { DRIVER1, DRIVER2, DRIVER4, DRIVER5 };
+
+    static int numberLoaded;
+
+    static String baseURL1 = "jdbc:mikes1";
+
+    static String baseURL4 = "jdbc:mikes4";
+
+    static final String JDBC_PROPERTY = "jdbc.drivers";
+
+    static TestHelper_ClassLoader testClassLoader = new TestHelper_ClassLoader();
+
+    // Static initializer to load the drivers so that they are available to all
+    // the
+    // test methods as needed.
+    @Override
+    public void setUp() {
+        numberLoaded = loadDrivers();
+    } // end setUp()
+
+    /**
+     * Test for the method DriverManager.deregisterDriver
+     *
+     * @throws SQLException
+     */
+    public void testDeregisterDriver() throws Exception {
+        // First get one of the drivers loaded by the test
+        Driver aDriver;
+        aDriver = DriverManager.getDriver(baseURL4);
+
+        // Deregister this driver
+        DriverManager.deregisterDriver(aDriver);
+
+        assertFalse("testDeregisterDriver: Driver was not deregistered.",
+                isDriverLoaded(aDriver));
+
+        // Re-register this driver (so subsequent tests have it available)
+        DriverManager.registerDriver(aDriver);
+        assertTrue("testDeregisterDriver: Driver did not reload.",
+                isDriverLoaded(aDriver));
+
+        // Test deregistering a null driver
+        DriverManager.deregisterDriver(null);
+
+        // Test deregistering a driver which was not loaded by this test's
+        // classloader
+        // TODO - need to load a driver with a different classloader!!
+        aDriver = DriverManager.getDriver(baseURL1);
+
+        Class<?> driverClass = Class
+                .forName(
+                        "org.apache.harmony.sql.tests.java.sql.TestHelper_DriverManager",
+                        true, testClassLoader);
+
+        // Give the Helper class one of our drivers....
+        Class<?>[] methodClasses = { Class.forName("java.sql.Driver") };
+        Method theMethod = driverClass.getDeclaredMethod("setDriver",
+                methodClasses);
+        Object[] args = { aDriver };
+        theMethod.invoke(null, args);
+
+        // Check that the driver was not deregistered
+        assertTrue(
+                "testDeregisterDriver: Driver was incorrectly deregistered.",
+                DriverManagerTest.isDriverLoaded(aDriver));
+
+    } // end method testDeregisterDriver()
+
+    static void printClassLoader(Object theObject) {
+        Class<? extends Object> theClass = theObject.getClass();
+        ClassLoader theClassLoader = theClass.getClassLoader();
+        System.out.println("ClassLoader is: " + theClassLoader.toString()
+                + " for object: " + theObject.toString());
+    } // end method printClassLoader( Object )
+
+    static boolean isDriverLoaded(Driver theDriver) {
+        Enumeration<?> driverList = DriverManager.getDrivers();
+        while (driverList.hasMoreElements()) {
+            if ((Driver) driverList.nextElement() == theDriver) {
+                return true;
+            }
+        } // end while
+        return false;
+    } // end method isDriverLoaded( Driver )
+
+    /*
+     * Class under test for Connection getConnection(String)
+     */
+    // valid connection - data1 does not require a user and password...
+    static String validConnectionURL = "jdbc:mikes1:data1";
+
+    // invalid connection - data2 requires a user & password
+    static String invalidConnectionURL1 = "jdbc:mikes1:data2";
+
+    // invalid connection - URL is gibberish
+    static String invalidConnectionURL2 = "xyz1:abc3:456q";
+
+    // invalid connection - URL is null
+    static String invalidConnectionURL3 = null;
+
+    static String[] invalidConnectionURLs = { invalidConnectionURL2,
+            invalidConnectionURL3 };
+
+    public void testGetConnectionString() throws SQLException {
+        Connection theConnection = null;
+        // validConnection - no user & password required
+        theConnection = DriverManager.getConnection(validConnectionURL);
+        assertNotNull(theConnection);
+        assertNotNull(DriverManager.getConnection(invalidConnectionURL1));
+
+        for (String element : invalidConnectionURLs) {
+            try {
+                theConnection = DriverManager.getConnection(element);
+                fail("Should throw SQLException");
+            } catch (SQLException e) {
+                // expected
+            } // end try
+        } // end for
+    } // end method testGetConnectionString()
+
+    /**
+     * @tests java.sql.DriverManager#getConnection(String, Properties)
+     */
+    public void test_getConnection_LStringLProperties() {
+        try {
+            DriverManager.getConnection("fff", //$NON-NLS-1$
+                    new Properties());
+            fail("Should throw SQLException.");
+        } catch (SQLException e) {
+            assertEquals("08001", e.getSQLState()); //$NON-NLS-1$
+        }
+
+        try {
+            DriverManager.getConnection(null, new Properties());
+            fail("Should throw SQLException.");
+        } catch (SQLException e) {
+            assertEquals("08001", e.getSQLState()); //$NON-NLS-1$
+        }
+    }
+
+    /*
+     * Class under test for Connection getConnection(String, Properties)
+     */
+    public void testGetConnectionStringProperties() throws SQLException {
+        String validURL1 = "jdbc:mikes1:data2";
+        String validuser1 = "theuser";
+        String validpassword1 = "thepassword";
+        String invalidURL1 = "xyz:abc1:foo";
+        String invalidURL2 = "jdbc:mikes1:crazyone";
+        String invalidURL3 = "";
+        String invaliduser1 = "jonny nouser";
+        String invalidpassword1 = "whizz";
+        Properties nullProps = null;
+        Properties validProps = new Properties();
+        validProps.setProperty("user", validuser1);
+        validProps.setProperty("password", validpassword1);
+        Properties invalidProps1 = new Properties();
+        invalidProps1.setProperty("user", invaliduser1);
+        invalidProps1.setProperty("password", invalidpassword1);
+        String[] invalidURLs = { null, invalidURL1, invalidURL2, invalidURL3 };
+        Properties[] invalidProps = { nullProps, invalidProps1 };
+
+        Connection theConnection = null;
+        // validConnection - user & password required
+        theConnection = DriverManager.getConnection(validURL1, validProps);
+        assertNotNull(theConnection);
+
+        // invalid Connections
+        for (int i = 0; i < invalidURLs.length; i++) {
+            theConnection = null;
+            try {
+                theConnection = DriverManager.getConnection(invalidURLs[i],
+                        validProps);
+                fail("Should throw SQLException");
+            } catch (SQLException e) {
+                // expected
+            } // end try
+        } // end for
+        for (Properties invalidProp : invalidProps) {
+            assertNotNull(DriverManager.getConnection(validURL1, invalidProp));
+        }
+    } // end method testGetConnectionStringProperties()
+
+    /*
+     * Class under test for Connection getConnection(String, String, String)
+     */
+    public void testGetConnectionStringStringString() throws SQLException {
+        String validURL1 = "jdbc:mikes1:data2";
+        String validuser1 = "theuser";
+        String validpassword1 = "thepassword";
+        String invalidURL1 = "xyz:abc1:foo";
+        String invaliduser1 = "jonny nouser";
+        String invalidpassword1 = "whizz";
+        String[] invalid1 = { null, validuser1, validpassword1 };
+        String[] invalid2 = { validURL1, null, validpassword1 };
+        String[] invalid3 = { validURL1, validuser1, null };
+        String[] invalid4 = { invalidURL1, validuser1, validpassword1 };
+        String[] invalid5 = { validURL1, invaliduser1, invalidpassword1 };
+        String[] invalid6 = { validURL1, validuser1, invalidpassword1 };
+        String[][] invalids1 = { invalid1, invalid4 };
+        String[][] invalids2 = { invalid2, invalid3, invalid5, invalid6 };
+
+        Connection theConnection = null;
+        // validConnection - user & password required
+        theConnection = DriverManager.getConnection(validURL1, validuser1,
+                validpassword1);
+        assertNotNull(theConnection);
+        for (String[] theData : invalids1) {
+            theConnection = null;
+            try {
+                theConnection = DriverManager.getConnection(theData[0],
+                        theData[1], theData[2]);
+                fail("Should throw SQLException.");
+            } catch (SQLException e) {
+                // expected
+            } // end try
+        } // end for
+        for (String[] theData : invalids2) {
+            assertNotNull(DriverManager.getConnection(theData[0], theData[1],
+                    theData[2]));
+        }
+    } // end method testGetConnectionStringStringString()
+
+    static String validURL1 = "jdbc:mikes1";
+
+    static String validURL2 = "jdbc:mikes2";
+
+    static String invalidURL1 = "xyz:acb";
+
+    static String invalidURL2 = null;
+
+    static String[] validURLs = { validURL1, validURL2 };
+
+    static String[] invalidURLs = { invalidURL1, invalidURL2 };
+
+    static String exceptionMsg1 = "No suitable driver";
+
+    public void testGetDriver() throws SQLException {
+        for (String element : validURLs) {
+            Driver validDriver = DriverManager.getDriver(element);
+            assertNotNull(validDriver);
+        } // end for
+
+//      Comment out since it depends on the drivers providered
+//        for (String element : invalidURLs) {
+//            System.out.println(element);
+//            try {
+//                DriverManager.getDriver(element);
+//                fail("Should throw SQLException");
+//            } catch (SQLException e) {
+//                assertEquals("08001", e.getSQLState());
+//                assertEquals(exceptionMsg1, e.getMessage());
+//            } // end try
+//        } // end for
+
+    } // end method testGetDriver()
+
+    public void testGetDrivers() {
+        // Load a driver manager
+        Enumeration<Driver> driverList = DriverManager.getDrivers();
+        int i = 0;
+        while (driverList.hasMoreElements()) {
+            Driver theDriver = driverList.nextElement();
+            assertNotNull(theDriver);
+            i++;
+        } // end while
+
+        // Check that all the drivers are in the list...
+        // There might be other drivers loaded in other classes
+        assertTrue("testGetDrivers: Don't see all the loaded drivers - ",
+                i >= numberLoaded);
+    } // end method testGetDrivers()
+
+    static int timeout1 = 25;
+
+    public void testGetLoginTimeout() {
+        DriverManager.setLoginTimeout(timeout1);
+        assertEquals(timeout1, DriverManager.getLoginTimeout());
+    } // end method testGetLoginTimeout()
+
+    @SuppressWarnings("deprecation")
+    public void testGetLogStream() {
+        assertNull(DriverManager.getLogStream());
+
+        DriverManager.setLogStream(testPrintStream);
+        assertTrue(DriverManager.getLogStream() == testPrintStream);
+
+        DriverManager.setLogStream(null);
+    } // end method testGetLogStream()
+
+    public void testGetLogWriter() {
+        assertNull(DriverManager.getLogWriter());
+
+        DriverManager.setLogWriter(testPrintWriter);
+
+        assertTrue(DriverManager.getLogWriter() == testPrintWriter);
+
+        DriverManager.setLogWriter(null);
+    } // end method testGetLogWriter()
+
+    static String testMessage = "DriverManagerTest: test message for print stream";
+
+    @SuppressWarnings("deprecation")
+    public void testPrintln() {
+        // System.out.println("testPrintln");
+        DriverManager.println(testMessage);
+
+        DriverManager.setLogWriter(testPrintWriter);
+        DriverManager.println(testMessage);
+
+        String theOutput = outputStream.toString();
+        // System.out.println("testPrintln: output= " + theOutput );
+        assertTrue(theOutput.startsWith(testMessage));
+
+        DriverManager.setLogWriter(null);
+
+        DriverManager.setLogStream(testPrintStream);
+        DriverManager.println(testMessage);
+
+        theOutput = outputStream2.toString();
+        // System.out.println("testPrintln: output= " + theOutput );
+        assertTrue(theOutput.startsWith(testMessage));
+
+        DriverManager.setLogStream(null);
+    } // end method testPrintln()
+
+    public void testRegisterDriver() throws ClassNotFoundException,
+            SQLException, IllegalAccessException, InstantiationException {
+        String EXTRA_DRIVER_NAME = "org.apache.harmony.sql.tests.java.sql.TestHelper_Driver3";
+
+        try {
+            DriverManager.registerDriver(null);
+            fail("Should throw NullPointerException.");
+        } catch (NullPointerException e) {
+            // expected
+        } // end try
+
+        Driver theDriver = null;
+        // Load another Driver that isn't in the basic set
+        Class<?> driverClass = Class.forName(EXTRA_DRIVER_NAME);
+        theDriver = (Driver) driverClass.newInstance();
+        DriverManager.registerDriver(theDriver);
+
+        assertTrue("testRegisterDriver: driver not in loaded set",
+                isDriverLoaded(theDriver));
+
+    } // end testRegisterDriver()
+
+    static int validTimeout1 = 15;
+
+    static int validTimeout2 = 0;
+
+    static int[] validTimeouts = { validTimeout1, validTimeout2 };
+
+    static int invalidTimeout1 = -10;
+
+    public void testSetLoginTimeout() {
+        for (int element : validTimeouts) {
+            DriverManager.setLoginTimeout(element);
+
+            assertEquals(element, DriverManager.getLoginTimeout());
+        } // end for
+        // Invalid timeouts
+        DriverManager.setLoginTimeout(invalidTimeout1);
+        assertEquals(invalidTimeout1, DriverManager.getLoginTimeout());
+    } // end testSetLoginTimeout()
+
+    static ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
+
+    static PrintStream testPrintStream = new PrintStream(outputStream2);
+
+    @SuppressWarnings("deprecation")
+    public void testSetLogStream() {
+        // System.out.println("testSetLogStream");
+        DriverManager.setLogStream(testPrintStream);
+
+        assertSame(testPrintStream, DriverManager.getLogStream());
+
+        DriverManager.setLogStream(null);
+
+        assertNull(DriverManager.getLogStream());
+    } // end method testSetLogStream()
+
+    static ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+
+    static PrintWriter testPrintWriter = new PrintWriter(outputStream);
+
+    /**
+     * Test for the setLogWriter method
+     */
+    public void testSetLogWriter() {
+        // System.out.println("testSetLogWriter");
+        DriverManager.setLogWriter(testPrintWriter);
+
+        assertSame(testPrintWriter, DriverManager.getLogWriter());
+
+        DriverManager.setLogWriter(null);
+
+        assertNull("testDriverManager: Log writer not null:", DriverManager
+                .getLogWriter());
+    } // end method testSetLogWriter()
+
+    /*
+     * Method which loads a set of JDBC drivers ready for use by the various
+     * tests @return the number of drivers loaded
+     */
+    static boolean driversLoaded = false;
+
+    private static int loadDrivers() {
+        if (driversLoaded) {
+            return numberLoaded;
+        }
+        /*
+         * First define a value for the System property "jdbc.drivers" - before
+         * the DriverManager class is loaded - this property defines a set of
+         * drivers which the DriverManager will load during its initialization
+         * and which will be loaded on the System ClassLoader - unlike the ones
+         * loaded later by this method which are loaded on the Application
+         * ClassLoader.
+         */
+        int numberLoaded = 0;
+
+        for (String element : driverNames) {
+            try {
+                Class<?> driverClass = Class.forName(element);
+                assertNotNull(driverClass);
+                // System.out.println("Loaded driver - classloader = " +
+                // driverClass.getClassLoader());
+                numberLoaded++;
+            } catch (ClassNotFoundException e) {
+                System.out.println("DriverManagerTest: failed to load Driver: "
+                        + element);
+            } // end try
+        } // end for
+        /*
+         * System.out.println("DriverManagerTest: number of drivers loaded: " +
+         * numberLoaded);
+         */
+        driversLoaded = true;
+        return numberLoaded;
+    } // end method loadDrivers()
+
+    /**
+     * @tests {@link java.sql.DriverManager#registerDriver(Driver)}
+     * <p/>
+     * Registers a driver for multiple times and deregisters it only once.
+     * <p/>
+     * Regression for HARMONY-4205
+     */
+    public void test_registerDriver_MultiTimes() throws SQLException {
+        int register_count = 10;
+        int deregister_count = 1;
+
+        Driver dummy = new DummyDriver();
+        DriverManager.registerDriver(new BadDummyDriver());
+        for (int i = 0; i < register_count; i++) {
+            DriverManager.registerDriver(dummy);
+        }
+        DriverManager.registerDriver(new BadDummyDriver());
+        for (int i = 0; i < deregister_count; i++) {
+            DriverManager.deregisterDriver(dummy);
+        }
+        Driver d = DriverManager.getDriver("jdbc:dummy_protocol:dummy_subname");
+        assertNotNull(d);
+    }
+
+    /**
+     * Regression for HARMONY-4303
+     */
+    public void test_initClass() throws Exception {
+        String[] arg = new String[1];
+        arg[0] = "org/apache/harmony/sql/tests/java/sql/TestMainForDriver";
+        String result = Support_Exec.execJava(arg, null, true);
+        assertEquals("", result);
+    }
+
+    private static class BadDummyDriver extends DummyDriver {
+        public boolean acceptsURL(String url) {
+            return false;
+        }
+    }
+
+    private static class DummyDriver implements Driver {
+
+        String goodurl = "jdbc:dummy_protocol:dummy_subname";
+
+        public boolean acceptsURL(String url) {
+            return url.equals(goodurl);
+        }
+
+        public Connection connect(String url, Properties info) {
+            return null;
+        }
+
+        public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) {
+            return null;
+        }
+
+        public int getMajorVersion() {
+            return 0;
+        }
+
+        public int getMinorVersion() {
+            return 0;
+        }
+
+        public boolean jdbcCompliant() {
+            return true;
+        }
+
+    }
+
+} // end class DriverManagerTest
diff --git a/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/BatchUpdateExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/BatchUpdateExceptionTest.golden.ser
new file mode 100644
index 0000000..d20eed1
--- /dev/null
+++ b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/BatchUpdateExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/DataTruncationTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/DataTruncationTest.golden.ser
new file mode 100644
index 0000000..9ecd6e1
--- /dev/null
+++ b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/DataTruncationTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLClientInfoExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLClientInfoExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLClientInfoExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLClientInfoExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLDataExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLDataExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLDataExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLDataExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLExceptionTest.golden.ser
new file mode 100644
index 0000000..6e58660
--- /dev/null
+++ b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLFeatureNotSupportedExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLFeatureNotSupportedExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLFeatureNotSupportedExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLFeatureNotSupportedExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLIntegrityConstraintViolationExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLIntegrityConstraintViolationExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLIntegrityConstraintViolationExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLIntegrityConstraintViolationExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLInvalidAuthorizationSpecExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLInvalidAuthorizationSpecExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLInvalidAuthorizationSpecExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLInvalidAuthorizationSpecExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLNonTransientConnectionExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLNonTransientConnectionExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLNonTransientConnectionExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLNonTransientConnectionExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLNonTransientExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLNonTransientExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLNonTransientExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLNonTransientExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLRecoverableExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLRecoverableExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLRecoverableExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLRecoverableExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLSyntaxErrorExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLSyntaxErrorExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLSyntaxErrorExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLSyntaxErrorExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLTimeoutExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLTimeoutExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLTimeoutExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLTimeoutExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLTransactionRollbackExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLTransactionRollbackExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLTransactionRollbackExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLTransactionRollbackExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLTransientConnectionExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLTransientConnectionExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLTransientConnectionExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLTransientConnectionExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLTransientExceptionTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLTransientExceptionTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/java/sql/SQLTransientExceptionTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLTransientExceptionTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLWarningTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLWarningTest.golden.ser
new file mode 100644
index 0000000..be37cb8
--- /dev/null
+++ b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/SQLWarningTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/TimestampTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/TimestampTest.golden.ser
new file mode 100644
index 0000000..4e51a0a
--- /dev/null
+++ b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/java/sql/TimestampTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/javax/sql/ConnectionEventTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/javax/sql/ConnectionEventTest.golden.ser
new file mode 100644
index 0000000..642e2fc
--- /dev/null
+++ b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/javax/sql/ConnectionEventTest.golden.ser
Binary files differ
diff --git a/sql/src/test/resources/serialization/org/apache/harmony/sql/tests/javax/sql/StatementEventTest.golden.ser b/sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/javax/sql/StatementEventTest.golden.ser
similarity index 100%
rename from sql/src/test/resources/serialization/org/apache/harmony/sql/tests/javax/sql/StatementEventTest.golden.ser
rename to sql/src/test/resources/serialization/com/android/org/apache/harmony/sql/tests/javax/sql/StatementEventTest.golden.ser
Binary files differ
diff --git a/support/src/test/java/org/apache/harmony/testframework/CharSinkTester.java b/support/src/test/java/org/apache/harmony/testframework/CharSinkTester.java
new file mode 100644
index 0000000..7a1ce25
--- /dev/null
+++ b/support/src/test/java/org/apache/harmony/testframework/CharSinkTester.java
@@ -0,0 +1,209 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.testframework;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Arrays;
+import java.util.Random;
+
+/**
+ * Tests behaviour common to all implementations of {@link Writer}. This adapts
+ * writers that collects untransformed chars so that they may be tested.
+ */
+public abstract class CharSinkTester {
+
+    private boolean throwsExceptions = true;
+
+    /**
+     * Creates a new writer ready to receive an arbitrary number of chars. Each
+     * time this method is invoked, any previously returned writers may be
+     * discarded.
+     */
+    public abstract Writer create() throws Exception;
+
+    /**
+     * Returns the current set of chars written to the writer last returned by
+     * {@link #create}, and releases any resources held by that writer.
+     */
+    public abstract char[] getChars() throws Exception;
+
+    /**
+     * Configures whether the writer is expected to throw exceptions when an
+     * error is encountered. Classes like {@code PrintWriter} report errors via
+     * an API method instead.
+     */
+    public CharSinkTester setThrowsExceptions(boolean throwsExceptions) {
+        this.throwsExceptions = throwsExceptions;
+        return this;
+    }
+
+    public final TestSuite createTests() {
+        TestSuite result = new TestSuite();
+        result.addTest(new SinkTestCase("sinkTestNoWriting"));
+        result.addTest(new SinkTestCase("sinkTestWriteZeroChars"));
+        result.addTest(new SinkTestCase("sinkTestWriteCharByChar"));
+        result.addTest(new SinkTestCase("sinkTestWriteArray"));
+        result.addTest(new SinkTestCase("sinkTestWriteOffset"));
+        result.addTest(new SinkTestCase("sinkTestWriteLargeArray"));
+
+        if (throwsExceptions) {
+            result.addTest(new SinkTestCase("sinkTestWriteAfterClose"));
+        } else {
+            result.addTest(new SinkTestCase("sinkTestWriteAfterCloseSuppressed"));
+        }
+
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return getClass().getName();
+    }
+
+    private static void assertArrayEquals(char[] expected, char[] actual) {
+        Assert.assertEquals(Arrays.toString(expected), Arrays.toString(actual));
+    }
+
+    public class SinkTestCase extends TestCase {
+
+        private SinkTestCase(String name) {
+            super(name);
+        }
+
+        public void sinkTestNoWriting() throws Exception {
+            char[] expected = new char[] { };
+
+            Writer out = create();
+            out.close();
+            assertArrayEquals(expected, getChars());
+        }
+
+        public void sinkTestWriteZeroChars() throws Exception {
+            char[] expected = new char[] { };
+
+            Writer out = create();
+            char[] a = new char[1024];
+            out.write(a, 1000, 0);
+            out.write(a, 0, 0);
+            out.write(new char[] { });
+
+            out.close();
+            assertArrayEquals(expected, getChars());
+        }
+
+        public void sinkTestWriteCharByChar() throws Exception {
+            char[] expected = "EFGCDECBA".toCharArray();
+
+            Writer out = create();
+            for (char c : expected) {
+                out.write(c);
+            }
+
+            out.close();
+            assertArrayEquals(expected, getChars());
+        }
+
+        public void sinkTestWriteArray() throws Exception {
+            char[] expected = "EFGCDECBA".toCharArray();
+
+            Writer out = create();
+
+            out.write("EF".toCharArray());
+            out.write("GCDE".toCharArray());
+            out.write("CBA".toCharArray());
+
+            out.close();
+            assertArrayEquals(expected, getChars());
+        }
+
+        public void sinkTestWriteOffset() throws Exception {
+            char[] expected = "EFGCDECBA".toCharArray();
+            Writer out = create();
+
+            char[] a = new char[1024];
+            a[1000] = 'E';
+            a[1001] = 'F';
+            out.write(a, 1000, 2);
+
+            char[] b = new char[1024];
+            b[1020] = 'G';
+            b[1021] = 'C';
+            b[1022] = 'D';
+            b[1023] = 'E';
+            out.write(b, 1020, 4);
+
+            char[] c = new char[1024];
+            c[0] = 'C';
+            c[1] = 'B';
+            c[2] = 'A';
+            out.write(c, 0, 3);
+
+            out.close();
+            assertArrayEquals(expected, getChars());
+        }
+
+        public void sinkTestWriteLargeArray() throws Exception {
+            Random dice = new Random();
+            char[] expected = new char[(1024 * 1024) + 1]; // 2 MB + 1 char
+            for (int c = 0; c < expected.length; c++) {
+                expected[c] = (char) ('A' + dice.nextInt(26));
+            }
+
+            Writer out = create();
+            out.write(expected);
+            out.close();
+
+            assertArrayEquals(expected, getChars());
+        }
+
+        public void sinkTestWriteAfterClose() throws Exception {
+            char[] expectedChars = "EF".toCharArray();
+            Writer out = create();
+
+            out.write(expectedChars);
+            out.close();
+
+            try {
+                out.write("GCDE".toCharArray());
+                fail("expected already closed exception");
+            } catch (IOException expected) {
+            }
+
+            assertArrayEquals(expectedChars, getChars());
+        }
+
+        public void sinkTestWriteAfterCloseSuppressed() throws Exception {
+            Writer out = create();
+            out.write("EF".toCharArray());
+            out.close();
+            out.write("GCDE".toCharArray()); // no exception expected!
+        }
+
+        // adding a new test? Don't forget to update createTests().
+
+        @Override
+        public String getName() {
+            return CharSinkTester.this.toString() + ":" + super.getName();
+        }
+    }
+}
diff --git a/support/src/test/java/org/apache/harmony/testframework/CharWrapperTester.java b/support/src/test/java/org/apache/harmony/testframework/CharWrapperTester.java
new file mode 100644
index 0000000..3bbebf2
--- /dev/null
+++ b/support/src/test/java/org/apache/harmony/testframework/CharWrapperTester.java
@@ -0,0 +1,258 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.testframework;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.io.IOException;
+import java.io.Writer;
+
+/**
+ * Tests behaviour common to wrapping and filtering implementations of {@link
+ * Writer}.
+ */
+public abstract class CharWrapperTester {
+
+    private boolean throwsExceptions = true;
+
+    /**
+     * Creates a new output stream that receives one stream of chars, optionally
+     * transforms it, and emits another stream of chars to {@code delegate}.
+     */
+    public abstract Writer create(Writer delegate) throws Exception;
+
+    /**
+     * Decodes the chars received by the delegate into their original form: the
+     * chars originally received by this wrapper.
+     */
+    public abstract char[] decode(char[] delegateChars) throws Exception;
+
+    /**
+     * Configures whether the writer is expected to throw exceptions when an
+     * error is encountered. Classes like {@code PrintWriter} report errors via
+     * an API method instead.
+     */
+    public CharWrapperTester setThrowsExceptions(boolean throwsExceptions) {
+        this.throwsExceptions = throwsExceptions;
+        return this;
+    }
+
+    public final TestSuite createTests() {
+        TestSuite result = new TestSuite();
+        result.addTest(new WrapperSinkTester()
+                .setThrowsExceptions(throwsExceptions)
+                .createTests());
+
+        if (throwsExceptions) {
+            result.addTest(new WrapperTestCase("wrapperTestFlushThrowsViaFlush"));
+            result.addTest(new WrapperTestCase("wrapperTestFlushThrowsViaClose"));
+            result.addTest(new WrapperTestCase("wrapperTestCloseThrows"));
+        } else {
+            result.addTest(new WrapperTestCase("wrapperTestFlushThrowsViaFlushSuppressed"));
+            result.addTest(new WrapperTestCase("wrapperTestFlushThrowsViaCloseSuppressed"));
+            result.addTest(new WrapperTestCase("wrapperTestCloseThrowsSuppressed"));
+        }
+
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return getClass().getName();
+    }
+
+    private class WrapperSinkTester extends CharSinkTester {
+        private ClosableStringWriter delegate;
+
+        @Override
+        public Writer create() throws Exception {
+            delegate = new ClosableStringWriter();
+            return CharWrapperTester.this.create(delegate);
+        }
+
+        @Override
+        public char[] getChars() throws Exception {
+            return decode(delegate.buffer.toString().toCharArray());
+        }
+
+        @Override
+        public String toString() {
+            return CharWrapperTester.this.toString();
+        }
+    }
+
+    public class WrapperTestCase extends TestCase {
+
+        private WrapperTestCase(String name) {
+            super(name);
+        }
+
+        @Override
+        public String getName() {
+            return CharWrapperTester.this.toString() + ":" + super.getName();
+        }
+
+        public void wrapperTestFlushThrowsViaFlushSuppressed() throws Exception {
+            FailOnFlushWriter delegate = new FailOnFlushWriter();
+            Writer o = create(delegate);
+            o.write("BUT");
+            o.write("TERS");
+            o.flush();
+            assertTrue(delegate.flushed);
+        }
+
+        public void wrapperTestFlushThrowsViaCloseSuppressed() throws Exception {
+            FailOnFlushWriter delegate = new FailOnFlushWriter();
+            Writer o = create(delegate);
+            o.write("BUT");
+            o.write("TERS");
+            o.close();
+            assertTrue(delegate.flushed);
+        }
+
+        public void wrapperTestFlushThrowsViaFlush() throws Exception {
+            FailOnFlushWriter delegate = new FailOnFlushWriter();
+
+            Writer o = create(delegate);
+            try {
+                // any of these is permitted to flush
+                o.write("BUT");
+                o.write("TERS");
+                o.flush();
+                assertTrue(delegate.flushed);
+                fail("flush exception ignored");
+            } catch (IOException expected) {
+                assertEquals("Flush failed", expected.getMessage());
+            }
+        }
+
+        public void wrapperTestFlushThrowsViaClose() throws Exception {
+            FailOnFlushWriter delegate = new FailOnFlushWriter();
+
+            Writer o = create(delegate);
+            try {
+                // any of these is permitted to flush
+                o.write("BUT");
+                o.write("TERS");
+                o.close();
+                assertTrue(delegate.flushed);
+                fail("flush exception ignored");
+            } catch (IOException expected) {
+                assertEquals("Flush failed", expected.getMessage());
+            }
+
+            try {
+                o.write("BARK");
+                fail("expected already closed exception");
+            } catch (IOException expected) {
+            }
+        }
+
+        public void wrapperTestCloseThrows() throws Exception {
+            FailOnCloseWriter delegate = new FailOnCloseWriter();
+            Writer o = create(delegate);
+            try {
+                o.close();
+                assertTrue(delegate.closed);
+                fail("close exception ignored");
+            } catch (IOException expected) {
+                assertEquals("Close failed", expected.getMessage());
+            }
+        }
+
+        public void wrapperTestCloseThrowsSuppressed() throws Exception {
+            FailOnCloseWriter delegate = new FailOnCloseWriter();
+            Writer o = create(delegate);
+            o.close();
+            assertTrue(delegate.closed);
+        }
+
+        // adding a new test? Don't forget to update createTests().
+    }
+
+    /**
+     * A custom Writer that respects the closed state. The built-in StringWriter
+     * doesn't respect close(), which makes testing wrapped streams difficult.
+     */
+    private static class ClosableStringWriter extends Writer {
+        private final StringBuilder buffer = new StringBuilder();
+        private boolean closed = false;
+
+        @Override
+        public void close() throws IOException {
+            closed = true;
+        }
+
+        @Override
+        public void flush() throws IOException {
+        }
+
+        @Override
+        public void write(char[] buf, int offset, int count) throws IOException {
+            if (closed) {
+                throw new IOException();
+            }
+            buffer.append(buf, offset, count);
+        }
+    }
+
+    private static class FailOnFlushWriter extends Writer {
+        boolean flushed = false;
+        boolean closed = false;
+
+        @Override
+        public void write(char[] buf, int offset, int count) throws IOException {
+            if (closed) {
+                throw new IOException("Already closed");
+            }
+        }
+
+        @Override
+        public void close() throws IOException {
+            closed = true;
+            flush();
+        }
+
+        @Override
+        public void flush() throws IOException {
+            if (!flushed) {
+                flushed = true;
+                throw new IOException("Flush failed");
+            }
+        }
+    }
+
+    private static class FailOnCloseWriter extends Writer {
+        boolean closed = false;
+
+        @Override
+        public void flush() throws IOException {
+        }
+
+        @Override
+        public void write(char[] buf, int offset, int count) throws IOException {
+        }
+
+        @Override
+        public void close() throws IOException {
+            closed = true;
+            throw new IOException("Close failed");
+        }
+    }
+}
\ No newline at end of file
diff --git a/support/src/test/java/org/apache/harmony/testframework/SinkTester.java b/support/src/test/java/org/apache/harmony/testframework/SinkTester.java
new file mode 100644
index 0000000..6c12384
--- /dev/null
+++ b/support/src/test/java/org/apache/harmony/testframework/SinkTester.java
@@ -0,0 +1,221 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.testframework;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Arrays;
+import java.util.Random;
+
+/**
+ * Tests behaviour common to all implementations of {@link OutputStream}. This
+ * adapts streams that collects untransformed bytes so that they may be tested.
+ */
+public abstract class SinkTester {
+
+    private boolean throwsExceptions = true;
+
+    /**
+     * Creates a new output stream ready to receive an arbitrary number of
+     * bytes. Each time this method is invoked, any previously returned output
+     * streams may be discarded.
+     */
+    public abstract OutputStream create() throws Exception;
+
+    /**
+     * Returns the current set of bytes written to the output stream last
+     * returned by {@link #create}, and releases any resources held by that
+     * stream.
+     */
+    public abstract byte[] getBytes() throws Exception;
+
+    /**
+     * Configures whether the stream is expected to throw exceptions when an
+     * error is encountered. Classes like {@code PrintStream} report errors via
+     * an API method instead.
+     */
+    public SinkTester setThrowsExceptions(boolean throwsExceptions) {
+        this.throwsExceptions = throwsExceptions;
+        return this;
+    }
+
+    public final TestSuite createTests() {
+        TestSuite result = new TestSuite();
+        result.addTest(new SinkTestCase("sinkTestNoWriting"));
+        result.addTest(new SinkTestCase("sinkTestWriteZeroBytes"));
+        result.addTest(new SinkTestCase("sinkTestWriteByteByByte"));
+        result.addTest(new SinkTestCase("sinkTestWriteArray"));
+        result.addTest(new SinkTestCase("sinkTestWriteOffset"));
+        result.addTest(new SinkTestCase("sinkTestWriteLargeArray"));
+
+        if (throwsExceptions) {
+            result.addTest(new SinkTestCase("sinkTestWriteAfterClose"));
+        } else {
+            result.addTest(new SinkTestCase("sinkTestWriteAfterCloseSuppressed"));
+        }
+
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return getClass().getName();
+    }
+
+    private static void assertArrayEquals(byte[] expected, byte[] actual) {
+        Assert.assertEquals(Arrays.toString(expected), Arrays.toString(actual));
+    }
+
+    public class SinkTestCase extends TestCase {
+
+        private SinkTestCase(String name) {
+            super(name);
+        }
+
+        public void sinkTestNoWriting() throws Exception {
+            byte[] expected = new byte[] { };
+
+            OutputStream out = create();
+            out.close();
+            assertArrayEquals(expected, getBytes());
+        }
+
+        public void sinkTestWriteZeroBytes() throws Exception {
+            byte[] expected = new byte[] { };
+
+            OutputStream out = create();
+            byte[] a = new byte[1024];
+            out.write(a, 1000, 0);
+            out.write(a, 0, 0);
+            out.write(new byte[] { });
+
+            out.close();
+            assertArrayEquals(expected, getBytes());
+        }
+
+        public void sinkTestWriteByteByByte() throws Exception {
+            byte[] expected = new byte[] { 5, 6, 7, 3, 4, 5, 3, 2, 1 };
+
+            OutputStream out = create();
+            for (byte b : expected) {
+                out.write(b);
+            }
+
+            out.close();
+            assertArrayEquals(expected, getBytes());
+        }
+
+        public void sinkTestWriteArray() throws Exception {
+            byte[] expected = new byte[] {
+                    5, 6,
+                    7, 3, 4, 5,
+                    3, 2, 1
+            };
+
+            OutputStream out = create();
+
+            byte[] a = new byte[] { 5, 6 };
+            out.write(a);
+
+            byte[] b = new byte[] { 7, 3, 4, 5 };
+            out.write(b);
+
+            byte[] c = new byte[] { 3, 2, 1 };
+            out.write(c);
+
+            out.close();
+            assertArrayEquals(expected, getBytes());
+        }
+
+        public void sinkTestWriteOffset() throws Exception {
+            byte[] expected = new byte[] {
+                    5, 6,
+                    7, 3, 4, 5,
+                    3, 2, 1
+            };
+
+            OutputStream out = create();
+
+            byte[] a = new byte[1024];
+            a[1000] = 5;
+            a[1001] = 6;
+            out.write(a, 1000, 2);
+
+            byte[] b = new byte[1024];
+            b[1020] = 7;
+            b[1021] = 3;
+            b[1022] = 4;
+            b[1023] = 5;
+            out.write(b, 1020, 4);
+
+            byte[] c = new byte[1024];
+            c[0] = 3;
+            c[1] = 2;
+            c[2] = 1;
+            out.write(c, 0, 3);
+
+            out.close();
+            assertArrayEquals(expected, getBytes());
+        }
+
+        public void sinkTestWriteLargeArray() throws Exception {
+            byte[] expected = new byte[(1024 * 1024) + 1]; // 1 MB + 1 byte
+            new Random().nextBytes(expected);
+
+            OutputStream out = create();
+            out.write(expected);
+            out.close();
+
+            assertArrayEquals(expected, getBytes());
+        }
+
+        public void sinkTestWriteAfterClose() throws Exception {
+            byte[] expectedBytes = { 5, 6 };
+            OutputStream out = create();
+
+            out.write(expectedBytes);
+            out.close();
+
+            try {
+                out.write(new byte[] { 7, 3, 4, 5 });
+                fail("expected already closed exception");
+            } catch (IOException expected) {
+            }
+
+            assertArrayEquals(expectedBytes, getBytes());
+        }
+
+        public void sinkTestWriteAfterCloseSuppressed() throws Exception {
+            OutputStream out = create();
+            out.write(new byte[] { 5, 6 });
+            out.close();
+            out.write(new byte[] { 7, 3, 4, 5 }); // no exception expected!
+        }
+
+        // adding a new test? Don't forget to update createTests().
+
+        @Override
+        public String getName() {
+            return SinkTester.this.toString() + ":" + super.getName();
+        }
+    }
+}
diff --git a/support/src/test/java/org/apache/harmony/testframework/WrapperTester.java b/support/src/test/java/org/apache/harmony/testframework/WrapperTester.java
new file mode 100644
index 0000000..515c94f
--- /dev/null
+++ b/support/src/test/java/org/apache/harmony/testframework/WrapperTester.java
@@ -0,0 +1,243 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.testframework;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * Tests behaviour common to wrapping and filtering implementations of {@link
+ * OutputStream}.
+ */
+public abstract class WrapperTester {
+
+    private boolean throwsExceptions = true;
+
+    /**
+     * Creates a new output stream that receives one stream of bytes, optionally
+     * transforms it, and emits another stream of bytes to {@code delegate}.
+     */
+    public abstract OutputStream create(OutputStream delegate) throws Exception;
+
+    /**
+     * Decodes the bytes received by the delegate into their original form: the
+     * bytes originally received by this wrapper.
+     */
+    public abstract byte[] decode(byte[] delegateBytes) throws Exception;
+
+    /**
+     * Configures whether the stream is expected to throw exceptions when an
+     * error is encountered. Classes like {@code PrintStream} report errors via
+     * an API method instead.
+     */
+    public WrapperTester setThrowsExceptions(boolean throwsExceptions) {
+        this.throwsExceptions = throwsExceptions;
+        return this;
+    }
+
+    public final TestSuite createTests() {
+        TestSuite result = new TestSuite();
+        result.addTest(new WrapperSinkTester()
+                .setThrowsExceptions(throwsExceptions)
+                .createTests());
+
+        if (throwsExceptions) {
+            result.addTest(new WrapperTestCase("wrapperTestFlushThrowsViaFlush"));
+            result.addTest(new WrapperTestCase("wrapperTestFlushThrowsViaClose"));
+            result.addTest(new WrapperTestCase("wrapperTestCloseThrows"));
+        } else {
+            result.addTest(new WrapperTestCase("wrapperTestFlushThrowsViaFlushSuppressed"));
+            result.addTest(new WrapperTestCase("wrapperTestFlushThrowsViaCloseSuppressed"));
+            result.addTest(new WrapperTestCase("wrapperTestCloseThrowsSuppressed"));
+        }
+
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return getClass().getName();
+    }
+
+    private class WrapperSinkTester extends SinkTester {
+        private ClosableByteArrayOutputStream delegate;
+
+        @Override
+        public OutputStream create() throws Exception {
+            delegate = new ClosableByteArrayOutputStream();
+            return WrapperTester.this.create(delegate);
+        }
+
+        @Override
+        public byte[] getBytes() throws Exception {
+            return WrapperTester.this.decode(delegate.bytesOut.toByteArray());
+        }
+
+        @Override
+        public String toString() {
+            return WrapperTester.this.toString();
+        }
+    }
+
+    public class WrapperTestCase extends TestCase {
+
+        private WrapperTestCase(String name) {
+            super(name);
+        }
+
+        @Override
+        public String getName() {
+            return WrapperTester.this.toString() + ":" + super.getName();
+        }
+
+        public void wrapperTestFlushThrowsViaFlushSuppressed() throws Exception {
+            FailOnFlushOutputStream delegate = new FailOnFlushOutputStream();
+            OutputStream o = create(delegate);
+            o.write(new byte[] { 8, 6, 7, 5 });
+            o.write(new byte[] { 3, 0, 9 });
+            o.flush();
+            assertTrue(delegate.flushed);
+        }
+
+        public void wrapperTestFlushThrowsViaCloseSuppressed() throws Exception {
+            FailOnFlushOutputStream delegate = new FailOnFlushOutputStream();
+            OutputStream o = create(delegate);
+            o.write(new byte[] { 8, 6, 7, 5 });
+            o.write(new byte[] { 3, 0, 9 });
+            o.close();
+            assertTrue(delegate.flushed);
+        }
+
+        public void wrapperTestFlushThrowsViaFlush() throws Exception {
+            FailOnFlushOutputStream delegate = new FailOnFlushOutputStream();
+
+            OutputStream o = create(delegate);
+            try {
+                // any of these is permitted to flush
+                o.write(new byte[] { 8, 6, 7, 5 });
+                o.write(new byte[] { 3, 0, 9 });
+                o.flush();
+                assertTrue(delegate.flushed);
+                fail("flush exception ignored");
+            } catch (IOException expected) {
+                assertEquals("Flush failed", expected.getMessage());
+            }
+        }
+
+        public void wrapperTestFlushThrowsViaClose() throws Exception {
+            FailOnFlushOutputStream delegate = new FailOnFlushOutputStream();
+
+            OutputStream o = create(delegate);
+            try {
+                // any of these is permitted to flush
+                o.write(new byte[] { 8, 6, 7, 5 });
+                o.write(new byte[] { 3, 0, 9 });
+                o.close();
+                assertTrue(delegate.flushed);
+                fail("flush exception ignored");
+            } catch (IOException expected) {
+                assertEquals("Flush failed", expected.getMessage());
+            }
+
+            try {
+                o.write(new byte[] { 4, 4, 5 });
+                fail("expected already closed exception");
+            } catch (IOException expected) {
+            }
+        }
+
+        public void wrapperTestCloseThrows() throws Exception {
+            FailOnCloseOutputStream delegate = new FailOnCloseOutputStream();
+            OutputStream o = create(delegate);
+            try {
+                o.close();
+                assertTrue(delegate.closed);
+                fail("close exception ignored");
+            } catch (IOException expected) {
+                assertEquals("Close failed", expected.getMessage());
+            }
+        }
+
+        public void wrapperTestCloseThrowsSuppressed() throws Exception {
+            FailOnCloseOutputStream delegate = new FailOnCloseOutputStream();
+            OutputStream o = create(delegate);
+            o.close();
+            assertTrue(delegate.closed);
+        }
+
+        // adding a new test? Don't forget to update createTests().
+    }
+
+    private static class ClosableByteArrayOutputStream extends OutputStream {
+        private final ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+        private boolean closed = false;
+
+        @Override
+        public void close() throws IOException {
+            closed = true;
+        }
+
+        @Override
+        public void write(int oneByte) throws IOException {
+            if (closed) {
+                throw new IOException();
+            }
+            bytesOut.write(oneByte);
+        }
+    }
+
+    private static class FailOnFlushOutputStream extends OutputStream {
+        boolean flushed = false;
+        boolean closed = false;
+
+        @Override
+        public void write(int oneByte) throws IOException {
+            if (closed) {
+                throw new IOException("Already closed");
+            }
+        }
+
+        @Override
+        public void close() throws IOException {
+            closed = true;
+            flush();
+        }
+
+        @Override
+        public void flush() throws IOException {
+            if (!flushed) {
+                flushed = true;
+                throw new IOException("Flush failed");
+            }
+        }
+    }
+
+    private static class FailOnCloseOutputStream extends ByteArrayOutputStream {
+        boolean closed = false;
+
+        @Override
+        public void close() throws IOException {
+            closed = true;
+            throw new IOException("Close failed");
+        }
+    }
+}
diff --git a/support/src/test/java/org/apache/harmony/testframework/serialization/SerializationTest.java b/support/src/test/java/org/apache/harmony/testframework/serialization/SerializationTest.java
new file mode 100644
index 0000000..44b807f
--- /dev/null
+++ b/support/src/test/java/org/apache/harmony/testframework/serialization/SerializationTest.java
@@ -0,0 +1,665 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/**
+ * @author Alexey V. Varlamov
+ */
+
+package org.apache.harmony.testframework.serialization;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.UnresolvedPermission;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+/**
+ * Framework for serialization testing. Subclasses only need to override
+ * getData() method and, optionally, assertDeserialized() method. The first one
+ * returns array of objects to be de/serialized in tests, and the second
+ * compares reference and deserialized objects (needed only if tested objects do
+ * not provide specific method equals()). <br>
+ * There are two modes of test run: <b>reference generation mode </b> and
+ * <b>testing mode </b>. The actual mode is selected via
+ * <b>&quot;test.mode&quot; </b> system property. The <b>testing mode </b> is
+ * the default mode. <br>
+ * To turn on the <b>reference generation mode </b>, the test.mode property
+ * should be set to value &quot;serial.reference&quot;. In this mode, no testing
+ * is performed but golden files are produced, which contain reference
+ * serialized objects. This mode should be run on a pure
+ * Implementation classes, which are targeted for compartibility. <br>
+ * The location of golden files (in both modes) is controlled via
+ * <b>&quot;RESOURCE_DIR&quot; </b> system property.
+ */
+public abstract class SerializationTest extends TestCase {
+
+    /**
+     * Property name for the testing mode.
+     */
+    public static final String MODE_KEY = "test.mode";
+
+
+    /**
+     * Testing mode.
+     */
+    public static String mode = System.getProperty(MODE_KEY);
+
+    /**
+     * Reference files generation mode switch.
+     */
+    public static final String SERIAL_REFERENCE_MODE = "serial.reference";
+
+    /**
+     * Key to a system property defining root location of golden files.
+     */
+    public static final String GOLDEN_PATH = "RESOURCE_DIR";
+
+    private static final String outputPath = System.getProperty(GOLDEN_PATH,
+            "src/test/resources/serialization");
+
+    /**
+     * Parameterized c-tor inherited from superclass.
+     */
+    public SerializationTest(String name) {
+        super(name);
+    }
+
+    /**
+     * Default c-tor inherited from superclass.
+     */
+    public SerializationTest() {
+        super();
+    }
+
+    /**
+     * Depending on testing mode, produces golden files or performs testing.
+     */
+    @Override
+    public void runBare() throws Throwable {
+
+        if (mode != null && mode.equals(SERIAL_REFERENCE_MODE)) {
+            produceGoldenFiles();
+        } else {
+            super.runBare();
+        }
+    }
+
+    /**
+     * This is the main working method of this framework. Subclasses must
+     * override it to provide actual objects for testing.
+     *
+     * @return array of objects to be de/serialized in tests.
+     */
+    protected abstract Object[] getData();
+
+    /**
+     * Tests that data objects can be serialized and deserialized without
+     * exceptions, and that deserialization really produces deeply cloned
+     * objects.
+     */
+    public void testSelf() throws Throwable {
+
+        if (this instanceof SerializableAssert) {
+            verifySelf(getData(), (SerializableAssert) this);
+        } else {
+            verifySelf(getData());
+
+        }
+    }
+
+    /**
+     * Tests that data objects can be deserialized from golden files, to verify
+     * compartibility with Reference Implementation.
+     */
+    public void testGolden() throws Throwable {
+
+        verifyGolden(this, getData());
+    }
+
+    /**
+     * Returns golden file for an object being tested.
+     *
+     * @param index array index of tested data (as returned by
+     *              {@link #getData() getData()})
+     * @return corresponding golden file
+     */
+    protected File getDataFile(int index) {
+        String name = this.getClass().getName();
+        int dot = name.lastIndexOf('.');
+        String path = name.substring(0, dot).replace('.', File.separatorChar);
+        if (outputPath != null && outputPath.length() != 0) {
+            path = outputPath + File.separator + path;
+        }
+
+        return new File(path, name.substring(dot + 1) + "." + index + ".dat");
+    }
+
+    /**
+     * Working method for files generation mode. Serializes test objects
+     * returned by {@link #getData() getData()}to golden files, each object to
+     * a separate file.
+     *
+     * @throws IOException
+     */
+    protected void produceGoldenFiles() throws IOException {
+
+        String goldenPath = outputPath + File.separatorChar
+                + getClass().getName().replace('.', File.separatorChar)
+                + ".golden.";
+
+        Object[] data = getData();
+        for (int i = 0; i < data.length; i++) {
+
+            File goldenFile = new File(goldenPath + i + ".ser");
+            goldenFile.getParentFile().mkdirs();
+            goldenFile.createNewFile();
+
+            putObjectToStream(data[i], new FileOutputStream(goldenFile));
+        }
+    }
+
+    /**
+     * Serializes specified object to an output stream.
+     */
+    public static void putObjectToStream(Object obj, OutputStream os)
+            throws IOException {
+        ObjectOutputStream oos = new ObjectOutputStream(os);
+        oos.writeObject(obj);
+        oos.flush();
+        oos.close();
+    }
+
+    /**
+     * Deserializes single object from an input stream.
+     */
+    public static Serializable getObjectFromStream(InputStream is) throws IOException,
+            ClassNotFoundException {
+        ObjectInputStream ois = new ObjectInputStream(is);
+        Object result = ois.readObject();
+        ois.close();
+        return (Serializable) result;
+    }
+
+    /**
+     * Interface to compare (de)serialized objects
+     * <p/>
+     * Should be implemented if a class under test does not provide specific
+     * equals() method and it's instances should to be compared manually.
+     */
+    public interface SerializableAssert {
+
+        /**
+         * Compares deserialized and reference objects.
+         *
+         * @param initial      -
+         *                     initial object used for creating serialized form
+         * @param deserialized -
+         *                     deserialized object
+         */
+        void assertDeserialized(Serializable initial, Serializable deserialized);
+    }
+
+    // default comparator for a class that has equals(Object) method
+    private final static SerializableAssert DEFAULT_COMPARATOR = new SerializableAssert() {
+        public void assertDeserialized(Serializable initial,
+                Serializable deserialized) {
+
+            Assert.assertEquals(initial, deserialized);
+        }
+    };
+
+    /**
+     * Comparator for verifying that deserialized object is the same as initial.
+     */
+    public final static SerializableAssert SAME_COMPARATOR = new SerializableAssert() {
+        public void assertDeserialized(Serializable initial,
+                Serializable deserialized) {
+
+            Assert.assertSame(initial, deserialized);
+        }
+    };
+
+    /**
+     * Comparator for java.lang.Throwable objects
+     */
+    public final static SerializableAssert THROWABLE_COMPARATOR = new SerializableAssert() {
+        public void assertDeserialized(Serializable initial, Serializable deserialized) {
+
+            Throwable initThr = (Throwable) initial;
+            Throwable dserThr = (Throwable) deserialized;
+
+            // verify class
+            Assert.assertEquals(initThr.getClass(), dserThr.getClass());
+
+            // verify message
+            Assert.assertEquals(initThr.getMessage(), dserThr.getMessage());
+
+            // verify cause
+            if (initThr.getCause() == null) {
+                Assert.assertNull(dserThr.getCause());
+            } else {
+                Assert.assertNotNull(dserThr.getCause());
+
+                THROWABLE_COMPARATOR.assertDeserialized(initThr.getCause(),
+                        dserThr.getCause());
+            }
+        }
+    };
+
+    /**
+     * Comparator for java.security.PermissionCollection objects
+     */
+    public final static SerializableAssert PERMISSION_COLLECTION_COMPARATOR = new SerializableAssert() {
+        public void assertDeserialized(Serializable initial, Serializable deserialized) {
+
+            PermissionCollection initPC = (PermissionCollection) initial;
+            PermissionCollection dserPC = (PermissionCollection) deserialized;
+
+            // verify class
+            Assert.assertEquals(initPC.getClass(), dserPC.getClass());
+
+            // verify 'readOnly' field
+            Assert.assertEquals(initPC.isReadOnly(), dserPC.isReadOnly());
+
+            // verify collection of permissions
+            Collection<Permission> refCollection = new HashSet<Permission>(
+                    Collections.list(initPC.elements()));
+            Collection<Permission> tstCollection = new HashSet<Permission>(
+                    Collections.list(dserPC.elements()));
+
+            Assert.assertEquals(refCollection.size(), tstCollection.size());
+            int size = refCollection.size();
+            if (size > 0) {
+                ArrayList<Permission> refList = Collections.list(initPC
+                        .elements());
+                ArrayList<Permission> tstList = Collections.list(dserPC
+                        .elements());
+                if (refList.get(0) instanceof UnresolvedPermission
+                        && tstList.get(0) instanceof UnresolvedPermission) {
+                    boolean found;
+                    UnresolvedPermission refPerm, tstPerm;
+                    for (int i = 0; i < size; i++) {
+                        found = false;
+                        refPerm = (UnresolvedPermission) refList.get(i);
+                        for (int j = 0; j < size; j++) {
+                            tstPerm = (UnresolvedPermission) tstList.get(i);
+                            if (equalsUnresolvedPermission(refPerm, tstPerm)) {
+                                found = true;
+                                break;
+                            }
+                        }
+
+                        Assert.assertTrue(found);
+                    }
+                } else {
+                    Assert.assertEquals(refCollection, tstCollection);
+                }
+            }
+        }
+
+        /*
+           * check whether the given two UnresolvedPermission objects equal to
+           * each other
+           */
+        private boolean equalsUnresolvedPermission(UnresolvedPermission up1,
+                UnresolvedPermission up2) {
+            java.security.cert.Certificate[] certs = up1.getUnresolvedCerts();
+            if (certs != null && certs.length == 0) {
+                if (null == up2.getUnresolvedCerts()) {
+                    if (up1.getName().equals(up2.getName())) {
+                        String up1Name = up1.getUnresolvedName();
+                        String up2Name = up2.getUnresolvedName();
+                        if (up1Name == null ? up2Name == null : up1Name
+                                .equals(up2Name)) {
+                            String up1Actions = up1.getUnresolvedActions();
+                            String up2Actions = up2.getUnresolvedActions();
+                            return up1Actions == null ? up2Actions == null
+                                    : up1Actions.equals(up2Actions);
+                        }
+                    }
+                }
+                return false;
+            }
+            return up1.equals(up2);
+        }
+    };
+
+    /**
+     * Comparator for java.security.UnresolvedPermission objects
+     */
+    public final static SerializableAssert UNRESOLVED_PERMISSION_COMPARATOR = new SerializableAssert() {
+        public void assertDeserialized(Serializable initial,
+                Serializable deserialized) {
+            UnresolvedPermission initPerm = (UnresolvedPermission) initial;
+            UnresolvedPermission dserPerm = (UnresolvedPermission) deserialized;
+            java.security.cert.Certificate[] certs = initPerm
+                    .getUnresolvedCerts();
+            if (certs != null && certs.length == 0) {
+                Assert.assertEquals(initPerm.getUnresolvedType(), dserPerm
+                        .getUnresolvedType());
+                Assert.assertEquals(initPerm.getUnresolvedName(), dserPerm
+                        .getUnresolvedName());
+                Assert.assertEquals(initPerm.getUnresolvedActions(), dserPerm
+                        .getUnresolvedActions());
+                Assert.assertNull(dserPerm.getUnresolvedCerts());
+            } else {
+                Assert.assertEquals(initPerm, dserPerm);
+            }
+        }
+    };
+
+    /**
+     * Returns <code>comparator</code> for provided serializable
+     * <code>object</code>.
+     * <p/>
+     * The <code>comparator</code> is searched in the following order: <br>-
+     * if <code>test</code> implements SerializableAssert interface then it is
+     * selected as </code>comparator</code>.<br>- if passed <code>object</code>
+     * has class in its classes hierarchy that overrides <code>equals(Object)</code>
+     * method then <code>DEFAULT_COMPARATOR</code> is selected.<br> - the
+     * method tries to select one of known comparators basing on <code>object's</code>
+     * class,for example, if passed <code>object</code> is instance of
+     * java.lang.Throwable then <code>THROWABLE_COMPARATOR</code> is used.<br>-
+     * otherwise RuntimeException is thrown
+     *
+     * @param test   -
+     *               test case
+     * @param object -
+     *               object to be compared
+     * @return object's comparator
+     */
+    public static SerializableAssert defineComparator(TestCase test,
+            Object object) throws Exception {
+
+        if (test instanceof SerializableAssert) {
+            return (SerializableAssert) test;
+        }
+
+        Method m = object.getClass().getMethod("equals",
+                new Class[] { Object.class });
+
+        if (m.getDeclaringClass() != Object.class) {
+            if (object instanceof UnresolvedPermission) {
+                // object is an instance of UnresolvedPermission, use
+                // UNRESOLVED_PERMISSION_COMPARATOR
+                return UNRESOLVED_PERMISSION_COMPARATOR;
+            }
+            // one of classes overrides Object.equals(Object) method
+            // use default comparator
+            return DEFAULT_COMPARATOR;
+        }
+
+        // TODO use generics to detect comparator
+        // instead of 'instanceof' for the first element
+        if (object instanceof java.lang.Throwable) {
+            return THROWABLE_COMPARATOR;
+        } else if (object instanceof java.security.PermissionCollection) {
+            return PERMISSION_COLLECTION_COMPARATOR;
+        }
+
+        throw new RuntimeException("Failed to detect comparator");
+    }
+
+    /**
+     * Verifies that object deserialized from golden file correctly.
+     * <p/>
+     * The method invokes <br>
+     * verifyGolden(test, object, defineComparator(test, object));
+     *
+     * @param test   -
+     *               test case
+     * @param object -
+     *               to be compared
+     */
+    public static void verifyGolden(TestCase test, Object object)
+            throws Exception {
+
+        verifyGolden(test, object, defineComparator(test, object));
+    }
+
+    /**
+     * Verifies that object deserialized from golden file correctly.
+     * <p/>
+     * The method loads "<code>testName</code>.golden.ser" resource file
+     * from "<module root>/src/test/resources/serialization/<code>testPackage</code>"
+     * folder, reads an object from the loaded file and compares it with
+     * <code>object</code> using specified <code>comparator</code>.
+     *
+     * @param test-      test case
+     * @param object-    to be compared
+     * @param comparator -
+     *                   for comparing (de)serialized objects
+     */
+    public static void verifyGolden(TestCase test, Object object,
+            SerializableAssert comparator) throws Exception {
+
+        Assert.assertNotNull("Null comparator", comparator);
+
+        Serializable deserialized = getObject(test, ".golden.ser");
+
+        comparator.assertDeserialized((Serializable) object, deserialized);
+    }
+
+    /**
+     * Verifies that objects from array deserialized from golden files
+     * correctly.
+     * <p/>
+     * The method invokes <br>
+     * verifyGolden(test, objects, defineComparator(test, object[0]));
+     *
+     * @param test    -
+     *                test case
+     * @param objects -
+     *                array of objects to be compared
+     */
+    public static void verifyGolden(TestCase test, Object[] objects)
+            throws Exception {
+
+        Assert.assertFalse("Empty array", objects.length == 0);
+        verifyGolden(test, objects, defineComparator(test, objects[0]));
+    }
+
+    /**
+     * Verifies that objects from array deserialized from golden files
+     * correctly.
+     * <p/>
+     * The method loads "<code>testName</code>.golden.<code>N</code>.ser"
+     * resource files from "<module root>/src/test/resources/serialization/<code>testPackage</code>"
+     * folder, from each loaded file it reads an object from and compares it
+     * with corresponding object in provided array (i.e. <code>objects[N]</code>)
+     * using specified <code>comparator</code>. (<code>N</code> is index
+     * in object's array.)
+     *
+     * @param test-      test case
+     * @param objects    -
+     *                   array of objects to be compared
+     * @param comparator -
+     *                   for comparing (de)serialized objects
+     */
+    public static void verifyGolden(TestCase test, Object[] objects,
+            SerializableAssert comparator) throws Exception {
+
+        Assert.assertFalse("Empty array", objects.length == 0);
+        for (int i = 0; i < objects.length; i++) {
+            Serializable deserialized = getObject(test, ".golden." + i + ".ser");
+            comparator.assertDeserialized((Serializable) objects[i],
+                    deserialized);
+        }
+    }
+
+    /**
+     * Verifies that object can be smoothly serialized/deserialized.
+     * <p/>
+     * The method invokes <br>
+     * verifySelf(object, defineComparator(null, object));
+     *
+     * @param object -
+     *               to be serialized/deserialized
+     */
+    public static void verifySelf(Object object)
+            throws Exception {
+
+        verifySelf(object, defineComparator(null, object));
+    }
+
+    /**
+     * Verifies that object can be smoothly serialized/deserialized.
+     * <p/>
+     * The method serialize/deserialize <code>object</code> and compare it
+     * with initial <code>object</code>.
+     *
+     * @param object     -
+     *                   object to be serialized/deserialized
+     * @param comparator -
+     *                   for comparing serialized/deserialized object with initial
+     *                   object
+     */
+    public static void verifySelf(Object object, SerializableAssert comparator)
+            throws Exception {
+
+        Serializable initial = (Serializable) object;
+
+        comparator.assertDeserialized(initial, copySerializable(initial));
+    }
+
+    /**
+     * Verifies that that objects from array can be smoothly
+     * serialized/deserialized.
+     * <p/>
+     * The method invokes <br>
+     * verifySelf(objects, defineComparator(null, object[0]));
+     *
+     * @param objects -
+     *                array of objects to be serialized/deserialized
+     */
+    public static void verifySelf(Object[] objects)
+            throws Exception {
+
+        Assert.assertFalse("Empty array", objects.length == 0);
+        verifySelf(objects, defineComparator(null, objects[0]));
+    }
+
+    /**
+     * Verifies that that objects from array can be smoothly
+     * serialized/deserialized.
+     * <p/>
+     * The method serialize/deserialize each object in <code>objects</code>
+     * array and compare it with initial object.
+     *
+     * @param objects    -
+     *                   array of objects to be serialized/deserialized
+     * @param comparator -
+     *                   for comparing serialized/deserialized object with initial
+     *                   object
+     */
+    public static void verifySelf(Object[] objects, SerializableAssert comparator)
+            throws Exception {
+
+        Assert.assertFalse("Empty array", objects.length == 0);
+        for (Object entry : objects) {
+            verifySelf(entry, comparator);
+        }
+    }
+
+    private static Serializable getObject(TestCase test, String toAppend)
+            throws Exception {
+
+        StringBuilder path = new StringBuilder("/serialization");
+
+        path.append(File.separatorChar);
+        path.append(test.getClass().getName().replace('.', File.separatorChar));
+        path.append(toAppend);
+
+        InputStream in = SerializationTest.class.getResourceAsStream(path.toString());
+
+        Assert.assertNotNull("Failed to load serialization resource file: "
+                + path, in);
+
+        return getObjectFromStream(in);
+    }
+
+    /**
+     * Creates golden file.
+     * <p/>
+     * The folder for created file is: <code>root + test's package name</code>.
+     * The file name is: <code>test's name + "golden.ser"</code>
+     *
+     * @param root   -
+     *               root directory for serialization resource files
+     * @param test   -
+     *               test case
+     * @param object -
+     *               object to be serialized
+     * @throws IOException -
+     *                     if I/O error
+     */
+    public static void createGoldenFile(String root, TestCase test,
+            Object object) throws IOException {
+
+        String goldenPath = test.getClass().getName().replace('.',
+                File.separatorChar)
+                + ".golden.ser";
+
+        if (root != null) {
+            goldenPath = root + File.separatorChar + goldenPath;
+        }
+
+
+        File goldenFile = new File(goldenPath);
+        goldenFile.getParentFile().mkdirs();
+        goldenFile.createNewFile();
+
+        putObjectToStream(object, new FileOutputStream(goldenFile));
+
+        // don't forget to remove it from test case after using
+        Assert.fail("Generating golden file.\nGolden file name:"
+                + goldenFile.getAbsolutePath());
+    }
+
+    /**
+     * Copies an object by serializing/deserializing it.
+     *
+     * @param initial -
+     *                an object to be copied
+     * @return copy of provided object
+     */
+    public static Serializable copySerializable(Serializable initial)
+            throws IOException, ClassNotFoundException {
+
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        putObjectToStream(initial, out);
+        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+
+        return getObjectFromStream(in);
+    }
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/AbstractService.java b/support/src/test/java/tests/resources/ServiceLoader/AbstractService.java
new file mode 100644
index 0000000..bff9660
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/AbstractService.java
@@ -0,0 +1,38 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public abstract class AbstractService {
+    /**
+     * @return name of the class
+     */
+    public abstract String myNameIs();
+
+    /**
+     * test of internal interface
+     */
+    public interface InternalService {
+        /**
+         * @return name
+         */
+        public String myInternalNameIs();
+    }
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/Service.java b/support/src/test/java/tests/resources/ServiceLoader/Service.java
new file mode 100644
index 0000000..c36fdb3
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/Service.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface Service {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceDuplicateIn2File.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceDuplicateIn2File.java
new file mode 100644
index 0000000..b09bc81
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceDuplicateIn2File.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface ServiceDuplicateIn2File {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceFinalClass.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceFinalClass.java
new file mode 100644
index 0000000..767f016
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceFinalClass.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public final class ServiceFinalClass {
+    /**
+     * @return name of the class
+     */
+    @SuppressWarnings("nls")
+    public String myNameIs() {
+        return "ServiceFinalClass";
+    }
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceForAllCommentTest.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceForAllCommentTest.java
new file mode 100644
index 0000000..e982b3f
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceForAllCommentTest.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface ServiceForAllCommentTest {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceForEmptyTest.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceForEmptyTest.java
new file mode 100644
index 0000000..d777293
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceForEmptyTest.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface ServiceForEmptyTest {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceForIllegalNameTest.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceForIllegalNameTest.java
new file mode 100644
index 0000000..4e9cde7
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceForIllegalNameTest.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface ServiceForIllegalNameTest {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceForWrongNameTest.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceForWrongNameTest.java
new file mode 100644
index 0000000..910faec
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceForWrongNameTest.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface ServiceForWrongNameTest {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceIn2File.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceIn2File.java
new file mode 100644
index 0000000..49f19d7
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceIn2File.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface ServiceIn2File {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceIn2FileWithEmptyConfig.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceIn2FileWithEmptyConfig.java
new file mode 100644
index 0000000..ad63606
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceIn2FileWithEmptyConfig.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface ServiceIn2FileWithEmptyConfig {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceMoreThanOne.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceMoreThanOne.java
new file mode 100644
index 0000000..895972e
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceMoreThanOne.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public class ServiceMoreThanOne {
+    /**
+     * @return name of the class
+     */
+    @SuppressWarnings("nls")
+    public String myNameIs() {
+        return "ServiceMoreThanOne";
+    }
+}
diff --git a/support/src/test/java/tests/resources/ServiceLoader/ServiceWithDuplicateSons.java b/support/src/test/java/tests/resources/ServiceLoader/ServiceWithDuplicateSons.java
new file mode 100644
index 0000000..a299931
--- /dev/null
+++ b/support/src/test/java/tests/resources/ServiceLoader/ServiceWithDuplicateSons.java
@@ -0,0 +1,28 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.resources.ServiceLoader;
+
+/**
+ * A class just for test cases of java.util.ServiceLoader.
+ */
+public interface ServiceWithDuplicateSons {
+    /**
+     * @return name of the class
+     */
+    public String myNameIs();
+}
diff --git a/support/src/test/java/tests/support/Streams.java b/support/src/test/java/tests/support/Streams.java
new file mode 100644
index 0000000..f9f5c77
--- /dev/null
+++ b/support/src/test/java/tests/support/Streams.java
@@ -0,0 +1,58 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package tests.support;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringWriter;
+
+/**
+ * Utility methods for working with byte and character streams.
+ */
+public class Streams {
+    private Streams() {
+    }
+
+    /**
+     * Drains the stream into a byte array and returns the result.
+     */
+    public static byte[] streamToBytes(InputStream source) throws IOException {
+        byte[] buffer = new byte[1024];
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        int count;
+        while ((count = source.read(buffer)) != -1) {
+            out.write(buffer, 0, count);
+        }
+        return out.toByteArray();
+    }
+
+    /**
+     * Drains the stream into a string and returns the result.
+     */
+    public static String streamToString(Reader fileReader) throws IOException {
+        char[] buffer = new char[1024];
+        StringWriter out = new StringWriter();
+        int count;
+        while ((count = fileReader.read(buffer)) != -1) {
+            out.write(buffer, 0, count);
+        }
+        return out.toString();
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_AvailTest.java b/support/src/test/java/tests/support/Support_AvailTest.java
new file mode 100644
index 0000000..b07b461
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_AvailTest.java
@@ -0,0 +1,111 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public class Support_AvailTest {
+
+    public static void main(String[] args) {
+        // This test is for:
+
+        // This program accepts from stdin a
+        // string of the form '<int1> <int2> <data>'
+        // where data is some bytes, <int1> is the length of the whole string
+        // and <int2> is the length in bytes of <data> (all bytes until the end
+        // of
+        // the input)
+
+        // If the string is formatted correctly, and the available method works
+        // the string "true" will be sent to stdout, otherwise "false"
+        String output = "true";
+        try {
+            FileInputStream myin = new FileInputStream(FileDescriptor.in);
+            StringBuffer input = new StringBuffer("");
+
+            try {
+                Thread.sleep(500);
+            } catch (Exception sleepException) {
+            }
+
+            int real = myin.available();
+            int expected;
+            int c = 0;
+            while (true) {
+                c = myin.read();
+                if (c == ' ' || c == -1) {
+                    break;
+                }
+                input.append((char) c);
+            }
+            expected = Integer.parseInt(input.toString());
+            // Verify correct value at start of read
+            if (real != expected) {
+                output = "Failed avail test1 - " + real + "!=" + expected;
+            }
+
+            c = 0;
+            input = new StringBuffer("");
+            while (true) {
+                c = myin.read();
+                if (c == ' ' || c == -1) {
+                    break;
+                }
+                input.append((char) c);
+            }
+            expected = Integer.parseInt(input.toString());
+            real = myin.available();
+            // Verify value at middle of reading
+            // This test doesn't work on Windows, at present
+            // if(real != expected) output = "Failed avail test2 - " + real +
+            // "!=" + expected;
+
+            // Verify value at end of reading
+            // loop to EOF, then check if available = 0
+            // replace this:
+            for (int i = 0; i < 5; i++) {
+                myin.read();
+                // with:
+                // while(myin.read() != -1);
+            }
+
+            // The current for loop reads exactly to the end
+            // of the data, but is dependent on knowing the length of the data
+            // sent to it, which isn't nice
+
+            expected = 0;
+            real = myin.available();
+            if (real != 0) {
+                output = "Failed avail test3 - " + real + "!=" + expected;
+            }
+
+        } catch (IOException e) {
+            output = "IOException during available() testing";
+        }
+
+        try {
+            FileOutputStream myout = new FileOutputStream(FileDescriptor.out);
+            myout.write(output.getBytes());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_CollectionTest.java b/support/src/test/java/tests/support/Support_CollectionTest.java
new file mode 100644
index 0000000..328405f
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_CollectionTest.java
@@ -0,0 +1,107 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.util.Collection;
+import java.util.TreeSet;
+
+/**
+ * @tests java.util.Collection
+ */
+public class Support_CollectionTest extends junit.framework.TestCase {
+
+    Collection<Integer> col; // must contain the Integers 0 to 99
+
+    public Support_CollectionTest(String p1) {
+        super(p1);
+    }
+
+    public Support_CollectionTest(String p1, Collection<Integer> c) {
+        super(p1);
+        col = c;
+    }
+
+    @Override
+    public void runTest() {
+        new Support_UnmodifiableCollectionTest("", col).runTest();
+
+        // setup
+        Collection<Integer> myCollection = new TreeSet<Integer>();
+        myCollection.add(new Integer(101));
+        myCollection.add(new Integer(102));
+        myCollection.add(new Integer(103));
+
+        // add
+        assertTrue("CollectionTest - a) add did not work", col.add(new Integer(
+                101)));
+        assertTrue("CollectionTest - b) add did not work", col
+                .contains(new Integer(101)));
+
+        // remove
+        assertTrue("CollectionTest - a) remove did not work", col
+                .remove(new Integer(101)));
+        assertTrue("CollectionTest - b) remove did not work", !col
+                .contains(new Integer(101)));
+
+        // addAll
+        assertTrue("CollectionTest - a) addAll failed", col
+                .addAll(myCollection));
+        assertTrue("CollectionTest - b) addAll failed", col
+                .containsAll(myCollection));
+
+        // containsAll
+        assertTrue("CollectionTest - a) containsAll failed", col
+                .containsAll(myCollection));
+        col.remove(new Integer(101));
+        assertTrue("CollectionTest - b) containsAll failed", !col
+                .containsAll(myCollection));
+
+        // removeAll
+        assertTrue("CollectionTest - a) removeAll failed", col
+                .removeAll(myCollection));
+        assertTrue("CollectionTest - b) removeAll failed", !col
+                .removeAll(myCollection)); // should not change the colletion
+        // the 2nd time around
+        assertTrue("CollectionTest - c) removeAll failed", !col
+                .contains(new Integer(102)));
+        assertTrue("CollectionTest - d) removeAll failed", !col
+                .contains(new Integer(103)));
+
+        // retianAll
+        col.addAll(myCollection);
+        assertTrue("CollectionTest - a) retainAll failed", col
+                .retainAll(myCollection));
+        assertTrue("CollectionTest - b) retainAll failed", !col
+                .retainAll(myCollection)); // should not change the colletion
+        // the 2nd time around
+        assertTrue("CollectionTest - c) retainAll failed", col
+                .containsAll(myCollection));
+        assertTrue("CollectionTest - d) retainAll failed", !col
+                .contains(new Integer(0)));
+        assertTrue("CollectionTest - e) retainAll failed", !col
+                .contains(new Integer(50)));
+
+        // clear
+        col.clear();
+        assertTrue("CollectionTest - a) clear failed", col.isEmpty());
+        assertTrue("CollectionTest - b) clear failed", !col
+                .contains(new Integer(101)));
+
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_Configuration.java b/support/src/test/java/tests/support/Support_Configuration.java
new file mode 100644
index 0000000..1b253a6
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_Configuration.java
@@ -0,0 +1,340 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Hashtable;
+
+/**
+ * This class is responsible for providing the dynamic names and addresses for
+ * the java.net classes. There are two directories which need to be placed on an
+ * ftp server and an http server which should accompany this source. The
+ * ftp-files have to be placed on an ftp server and have to be the root of a
+ * user jcltest with password jclpass. The testres files must be available on an
+ * HTTP server and the name and location can be configured below.
+ */
+public class Support_Configuration {
+
+    public static String DomainAddress = "apache.org";
+
+    public static String WebName = "jcltest.";
+
+    public static final String HomeAddress;
+
+    public static String TestResourcesDir = "/testres231";
+
+    public static final String TestResources;
+
+    public static String HomeAddressResponse = "HTTP/1.1 200 OK";
+
+    public static String HomeAddressSoftware = "Jetty(6.0.x)";
+
+    public static String ProxyServerTestHost = "jcltest.apache.org";
+
+    public static String SocksServerTestHost = "jcltest.apache.org";
+
+    public static int SocksServerTestPort = 1080;
+
+    // Need an IP address that does not resolve to a host name
+    public static String UnresolvedIP = "192.168.99.99";
+
+    // the bytes for an address which represents an address which is not
+    // one of the addresses for any of our machines on which tests will run
+    // it is used to verify we get the expected error when we try to bind
+    // to an address that is not one of the machines local addresses
+    public static byte nonLocalAddressBytes[] = { 1, 0, 0, 0 };
+
+    public static String InetTestIP = "127.0.0.1";
+
+    public static String InetTestIP2 = "127.0.0.1";
+
+    public static final String HomeAddress6 = "jcltest6.apache.org";
+
+    public static String ProxyServerTestHostIPv6 = "jcltest6.apache.org";
+
+    // ip address that resolves to a host that is not present on the local
+    // network
+    // this allows us to check the timeouts for connect
+    public static String ResolvedNotExistingHost = "9.26.194.72";
+
+    /**
+     * You can compute the hash code with the following code: try { String name =
+     * "whatever.xxx.com";
+     * System.out.println(InetAddress.getByName(name).hashCode()); } catch
+     * (UnknownHostException e) {}
+     */
+
+    public static String FTPTestAddress = "jcltest:jclpass@localhost";
+
+    public static String URLConnectionLastModifiedString = "Mon, 14 Jun 1999 21:06:22 GMT";
+
+    public static long URLConnectionLastModified = 929394382000L;
+
+    public static boolean RunCommTests = false;
+
+    public static String Port1 = "COM1";
+
+    public static String Port2 = "COM2";
+
+    static Hashtable<String, String> props = null;
+
+    static {
+        loadProperties();
+        HomeAddress = WebName + DomainAddress;
+        TestResources = HomeAddress + TestResourcesDir;
+    }
+
+    static void loadProperties() {
+        InputStream in = null;
+        Hashtable<String, String> props = new Hashtable<String, String>();
+
+        String iniName = System.getProperty("test.ini.file", "JCLAuto.ini");
+        if (System.getProperty("test.comm") != null) {
+            RunCommTests = true;
+        }
+
+        try {
+            in = new FileInputStream(iniName);
+        } catch (IOException e) {
+        } catch (Exception e) {
+            System.out.println("SupportConfiguration.loadProperties()");
+            System.out.println(e);
+            e.printStackTrace();
+        }
+        if (in == null) {
+            try {
+                Class<?> cl = Class
+                        .forName("com.ibm.support.Support_Configuration");
+                in = cl.getResourceAsStream(iniName);
+            } catch (ClassNotFoundException e) {
+            }
+        }
+        try {
+            if (in != null) {
+                load(in, props);
+            }
+        } catch (IOException e) {
+        }
+        if (props.size() == 0) {
+            return;
+        }
+        String value;
+
+        value = props.get("DomainAddress");
+        if (value != null) {
+            DomainAddress = value;
+        }
+
+        value = props.get("WebName");
+        if (value != null) {
+            WebName = value;
+        }
+
+        value = props.get("TestResourcesDir");
+        if (value != null) {
+            TestResourcesDir = value;
+        }
+        value = props.get("HomeAddressResponse");
+        if (value != null) {
+            HomeAddressResponse = value;
+        }
+
+        value = props.get("HomeAddressSoftware");
+        if (value != null) {
+            HomeAddressSoftware = value;
+        }
+
+        value = props.get("ProxyServerTestHost");
+        if (value != null) {
+            ProxyServerTestHost = value;
+        }
+
+        value = props.get("SocksServerTestHost");
+        if (value != null) {
+            SocksServerTestHost = value;
+        }
+
+        value = props.get("SocksServerTestPort");
+        if (value != null) {
+            SocksServerTestPort = Integer.parseInt(value);
+        }
+
+        value = props.get("UnresolvedIP");
+        if (value != null) {
+            UnresolvedIP = value;
+        }
+
+        value = props.get("FTPTestAddress");
+        if (value != null) {
+            FTPTestAddress = value;
+        }
+
+        value = props.get("URLConnectionLastModifiedString");
+        if (value != null) {
+            URLConnectionLastModifiedString = value;
+        }
+
+        value = props.get("URLConnectionLastModified");
+        if (value != null) {
+            URLConnectionLastModified = Long.parseLong(value);
+        }
+
+        value = props.get("Port1");
+        if (value != null) {
+            Port1 = value;
+        }
+
+        value = props.get("Port2");
+        if (value != null) {
+            Port2 = value;
+        }
+
+        value = props.get("ProxyServerTestHostIPv6");
+        if (value != null) {
+            ProxyServerTestHostIPv6 = value;
+        }
+
+        value = props.get("ResolvedNotExistingHost");
+        if (value != null) {
+            ResolvedNotExistingHost = value;
+        }
+
+    }
+
+    static void load(InputStream in, Hashtable<String, String> result) throws IOException {
+        int NONE = 0, SLASH = 1, UNICODE = 2, CONTINUE = 3, DONE = 4, IGNORE = 5;
+        int mode = NONE, unicode = 0, count = 0, nextChar;
+        StringBuffer key = new StringBuffer(), value = new StringBuffer(), buffer = key;
+        boolean firstChar = true;
+
+        while ((nextChar = in.read()) != -1) {
+            if (mode == UNICODE) {
+                int digit = Character.digit((char) nextChar, 16);
+                if (digit >= 0) {
+                    unicode = (unicode << 4) + digit;
+                    if (++count < 4) {
+                        continue;
+                    }
+                }
+                mode = NONE;
+                buffer.append((char) unicode);
+                if (nextChar != '\n') {
+                    continue;
+                }
+            }
+            if (mode == SLASH) {
+                mode = NONE;
+                switch (nextChar) {
+                    case '\r':
+                        mode = CONTINUE; // Look for a following \n
+                        continue;
+                    case '\n':
+                        mode = IGNORE; // Ignore whitespace on the next line
+                        continue;
+                    case 'b':
+                        nextChar = '\b';
+                        break;
+                    case 'f':
+                        nextChar = '\f';
+                        break;
+                    case 'n':
+                        nextChar = '\n';
+                        break;
+                    case 'r':
+                        nextChar = '\r';
+                        break;
+                    case 't':
+                        nextChar = '\t';
+                        break;
+                    case 'u':
+                        mode = UNICODE;
+                        unicode = count = 0;
+                        continue;
+                }
+            } else {
+                switch (nextChar) {
+                    case '#':
+                    case '!':
+                        if (firstChar) {
+                            while ((nextChar = in.read()) != -1) {
+                                if (nextChar == '\r' || nextChar == '\n') {
+                                    break;
+                                }
+                            }
+                            continue;
+                        }
+                        break;
+                    case '\n':
+                        if (mode == CONTINUE) { // Part of a \r\n sequence
+                            mode = IGNORE; // Ignore whitespace on the next line
+                            continue;
+                        }
+                        // fall into the next case
+                    case '\r':
+                        mode = NONE;
+                        firstChar = true;
+                        if (key.length() > 0 || buffer == value) {
+                            result.put(key.toString(), value.toString());
+                        }
+                        key.setLength(0);
+                        value.setLength(0);
+                        buffer = key;
+                        continue;
+                    case '\\':
+                        mode = SLASH;
+                        continue;
+                    case ':':
+                    case '=':
+                        if (buffer == key) {
+                            buffer = value;
+                            continue;
+                        }
+                        break;
+                }
+                char c = (char) nextChar;
+                if ((c >= 0x1c && c <= 0x20) || (c >= 0x9 && c <= 0xd)) {
+                    if (mode == CONTINUE) {
+                        mode = IGNORE;
+                    }
+                    if (buffer.length() == 0 || mode == IGNORE) {
+                        continue;
+                    }
+                    if (buffer == key) {
+                        mode = DONE;
+                        continue;
+                    }
+                }
+                if (mode == IGNORE || mode == CONTINUE) {
+                    mode = NONE;
+                }
+            }
+            firstChar = false;
+            if (mode == DONE) {
+                buffer = value;
+                mode = NONE;
+            }
+            buffer.append((char) nextChar);
+        }
+        if (key.length() > 0 || buffer == value) {
+            result.put(key.toString(), value.toString());
+        }
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_DeleteOnExitTest.java b/support/src/test/java/tests/support/Support_DeleteOnExitTest.java
new file mode 100644
index 0000000..7ad3f20
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_DeleteOnExitTest.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.io.File;
+
+public class Support_DeleteOnExitTest {
+
+    public static void main(java.lang.String[] args) {
+        for (int i = 0; i < args.length; i++) {
+            File f1 = new File(args[i]);
+            f1.deleteOnExit();
+        }
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_Exec.java b/support/src/test/java/tests/support/Support_Exec.java
new file mode 100644
index 0000000..3a454d2
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_Exec.java
@@ -0,0 +1,288 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import junit.framework.TestCase;
+
+public class Support_Exec extends TestCase {
+
+    /**
+     * Exec java returns the exitCode, and stdOut and stdErr as strings
+     */
+    public static Object[] runJava(List<String> args, String[] envp,
+            boolean displayOutput)
+            throws IOException, InterruptedException {
+        String executable = System.getProperty("java.home");
+        if (!executable.endsWith(File.separator)) {
+            executable += File.separator;
+        }
+        executable += "bin" + File.separator + "java";
+
+        // parse hy.test.vmargs if was given
+        String testVMArgs = System.getProperty("hy.test.vmargs");
+        if (testVMArgs != null) {
+            StringTokenizer st = new StringTokenizer(testVMArgs, " ");
+            int i = 0; // add at the beginning but maintain order
+            while (st.hasMoreTokens()) {
+                args.add(i++, st.nextToken());
+            }
+        }
+
+        return run(executable, args, envp, displayOutput);
+    }
+
+    /**
+     * Exec command returns the exitCode, and stdOut and stdErr as strings
+     */
+    public static Object[] run(String command, List<String> args, String[] envp,
+            boolean displayOutput)
+            throws IOException, InterruptedException {
+        Object[] arr = exec(command, args, envp, displayOutput);
+
+        Process proc = (Process) arr[0];
+        StringBuilder output = new StringBuilder();
+        InputStream in = proc.getInputStream();
+        int result;
+        byte[] bytes = new byte[1024];
+
+        while ((result = in.read(bytes)) != -1) {
+            output.append(new String(bytes, 0, result));
+            if (displayOutput) {
+                System.out.write(bytes, 0, result);
+            }
+        }
+
+        in.close();
+        proc.waitFor();
+        int exitCode = proc.exitValue();
+        proc.destroy();
+        return new Object[] {
+                Integer.valueOf(exitCode),
+                output.toString(),
+                ((StringBuilder) arr[1]).toString()
+        };
+    }
+
+    /**
+     * This function returns the output of the process as a string
+     */
+    public static String execJava(String[] args, String[] classpath,
+            boolean displayOutput)
+            throws IOException, InterruptedException {
+        Object[] arr =
+                execJavaCommon(args, classpath, null, displayOutput, true);
+
+        return getProcessOutput(arr, displayOutput, true);
+    }
+
+    /**
+     * This function returns the output of the process as a string
+     */
+    public static String execJava(String[] args, String[] classpath,
+            String[] envp, boolean displayOutput)
+            throws IOException, InterruptedException {
+        Object[] arr =
+                execJavaCommon(args, classpath, envp, displayOutput, false);
+
+        return getProcessOutput(arr, displayOutput, true);
+    }
+
+    private static String getProcessOutput(Object[] arr, boolean displayOutput,
+            boolean checkStderr)
+            throws IOException, InterruptedException {
+        Process proc = (Process) arr[0];
+        StringBuilder output = new StringBuilder();
+        InputStream in = proc.getInputStream();
+        int result;
+        byte[] bytes = new byte[1024];
+
+        while ((result = in.read(bytes)) != -1) {
+            output.append(new String(bytes, 0, result));
+            if (displayOutput) {
+                System.out.write(bytes, 0, result);
+            }
+        }
+
+        in.close();
+        proc.waitFor();
+        if (checkStderr) {
+            checkStderr(arr);
+        }
+        proc.destroy();
+
+        return output.toString();
+    }
+
+    public static void checkStderr(Object[] execArgs) {
+        StringBuilder errBuf = (StringBuilder) execArgs[1];
+
+        synchronized (errBuf) {
+            if (errBuf.length() > 0) {
+                fail(errBuf.toString());
+            }
+        }
+    }
+
+    public static Object[] execJava2(String[] args, String[] classpath,
+            boolean displayOutput)
+            throws IOException, InterruptedException {
+        return execJavaCommon(args, classpath, null, displayOutput, true);
+    }
+
+    private static Object[] execJavaCommon(String[] args, String[] classpath,
+            String[] envp,
+            boolean displayOutput,
+            boolean appendToSystemClassPath)
+            throws IOException, InterruptedException {
+        // this function returns the resulting process from the exec
+        ArrayList<String> execArgs = null;
+        StringBuilder classPathString = new StringBuilder();
+        StringBuilder command;
+
+        execArgs = new ArrayList<String>(3 + args.length);
+
+        // construct the name of executable file
+        String executable = System.getProperty("java.home");
+        if (!executable.endsWith(File.separator)) {
+            executable += File.separator;
+        }
+        executable += "bin" + File.separator + "java";
+
+        // add classpath string
+        if (classpath != null) {
+            for (String element : classpath) {
+                classPathString.append(File.pathSeparator);
+                classPathString.append(element);
+            }
+        }
+        if (appendToSystemClassPath) {
+            execArgs.add("-cp");
+            execArgs.add(System.getProperty("java.class.path") +
+                    classPathString);
+        } else {
+            if (classpath != null) {
+                execArgs.add("-cp");
+                execArgs.add(classPathString.toString());
+            }
+        }
+
+        // parse hy.test.vmargs if was given
+        String testVMArgs = System.getProperty("hy.test.vmargs");
+        if (testVMArgs != null) {
+            StringTokenizer st = new StringTokenizer(testVMArgs, " ");
+
+            while (st.hasMoreTokens()) {
+                execArgs.add(st.nextToken());
+            }
+        }
+
+        // add custom args given as parameter
+        for (String arg : args) {
+            execArgs.add(arg);
+        }
+        return exec(executable, execArgs, envp, displayOutput);
+    }
+
+    private static Object[] exec(String command, List<String> args,
+            String[] envp,
+            boolean displayOutput)
+            throws IOException, InterruptedException {
+        // this function returns the resulting process from the exec
+        args.add(0, command);
+
+        if (displayOutput) {
+            StringBuilder commandLine;
+            // construct command line string and print it to stdout
+            commandLine = new StringBuilder(args.get(0));
+            for (int i = 1; i < args.size(); i++) {
+                commandLine.append(" ");
+                commandLine.append(args.get(i));
+            }
+            System.out.println("Exec: " + commandLine.toString());
+            System.out.println();
+        }
+
+        // execute java process
+        final Process proc =
+                Runtime.getRuntime().exec(args.toArray(new String[args.size()]),
+                        envp);
+
+        final StringBuilder errBuf = new StringBuilder();
+        Thread errThread = new Thread(new Runnable() {
+            public void run() {
+                synchronized (errBuf) {
+                    InputStream err;
+                    int result;
+                    byte[] bytes = new byte[1024];
+
+                    synchronized (proc) {
+                        proc.notifyAll();
+                    }
+
+                    err = proc.getErrorStream();
+                    try {
+                        while ((result = err.read(bytes)) != -1) {
+                            System.err.write(bytes, 0, result);
+                            errBuf.append(new String(bytes));
+                        }
+                        err.close();
+                    } catch (IOException e) {
+                        ByteArrayOutputStream out =
+                                new ByteArrayOutputStream();
+                        PrintStream printer = new PrintStream(out);
+
+                        e.printStackTrace();
+                        e.printStackTrace(printer);
+                        printer.close();
+                        errBuf.append(new String(out.toByteArray()));
+                    }
+                }
+            }
+        });
+
+        synchronized (proc) {
+            errThread.start();
+            // wait for errThread to start
+            int count = 0;
+            boolean isFinished = false;
+            while (!isFinished) {
+                try {
+                    proc.wait();
+                    isFinished = true;
+                } catch (InterruptedException e) {
+                    if (++count == 2) {
+                        throw e;
+                    }
+                }
+            }
+            if (count > 0) {
+                Thread.currentThread().interrupt();
+            }
+        }
+        return new Object[] { proc, errBuf };
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_Field.java b/support/src/test/java/tests/support/Support_Field.java
new file mode 100644
index 0000000..ead1c07
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_Field.java
@@ -0,0 +1,45 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_Field {
+
+    protected Object objectField;
+
+    protected boolean booleanField;
+
+    protected byte byteField;
+
+    protected char charField;
+
+    protected short shortField;
+
+    protected int intField;
+
+    protected long longField;
+
+    protected float floatField;
+
+    protected double doubleField;
+
+    /**
+     *
+     */
+    public Support_Field() {
+    }
+}
\ No newline at end of file
diff --git a/support/src/test/java/tests/support/Support_GetLocal.java b/support/src/test/java/tests/support/Support_GetLocal.java
new file mode 100644
index 0000000..2d7acf7
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_GetLocal.java
@@ -0,0 +1,101 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.JarURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Hashtable;
+
+import tests.support.resource.Support_Resources;
+
+public class Support_GetLocal {
+
+    static Hashtable<String, File> cache = new Hashtable<String, File>(20);
+
+    public static File getLocalFile(String url) throws IOException,
+            MalformedURLException {
+        url = Support_Resources.RESOURCE_PACKAGE + url;
+        File temp = cache.get(url);
+        if (temp == null) {
+            InputStream in = Support_GetLocal.class.getResourceAsStream(url);
+            temp = File.createTempFile("hyts_local", ".tmp", null);
+            temp.deleteOnExit();
+            FileOutputStream out = new FileOutputStream(temp);
+            int result;
+            byte[] buf = new byte[4096];
+            while ((result = in.read(buf)) != -1) {
+                out.write(buf, 0, result);
+            }
+            in.close();
+            out.close();
+            cache.put(url, temp);
+        }
+        return temp;
+    }
+
+    public static File getExternalLocalFile(String url) throws IOException,
+            MalformedURLException {
+        File temp = cache.get(url);
+        if (temp == null) {
+            InputStream in = new URL(url).openStream();
+            temp = File.createTempFile("hyts_local", ".tmp", null);
+            temp.deleteOnExit();
+            FileOutputStream out = new FileOutputStream(temp);
+            int result;
+            byte[] buf = new byte[4096];
+            while ((result = in.read(buf)) != -1) {
+                out.write(buf, 0, result);
+            }
+            in.close();
+            out.close();
+            cache.put(url, temp);
+        }
+        return temp;
+    }
+
+    static ByteArrayInputStream getStream(String url) throws IOException,
+            MalformedURLException {
+        InputStream in = new URL(url).openStream();
+        ByteArrayOutputStream out = new ByteArrayOutputStream(256);
+        int result;
+        byte[] buf = new byte[256];
+        while ((result = in.read(buf)) != -1) {
+            out.write(buf, 0, result);
+        }
+        return new ByteArrayInputStream(out.toByteArray());
+    }
+
+    public static File createTempFile(String suffix) throws IOException {
+        return File.createTempFile("hyts_", suffix, null);
+    }
+
+    public static JarURLConnection getJarURLConnection() throws IOException {
+        JarURLConnection con1 = null;
+        File file = getLocalFile("hyts_att.jar");
+        URL fUrl1 = new URL("jar:file:" + file.getPath() + "!/");
+        con1 = (JarURLConnection) fUrl1.openConnection();
+        return con1;
+    }
+}
\ No newline at end of file
diff --git a/support/src/test/java/tests/support/Support_GetResource.java b/support/src/test/java/tests/support/Support_GetResource.java
new file mode 100644
index 0000000..69c8627
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_GetResource.java
@@ -0,0 +1,25 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_GetResource {
+
+    public static String getResourceURL(String resource) {
+        return "http://" + Support_Configuration.TestResources + resource;
+    }
+}
\ No newline at end of file
diff --git a/support/src/test/java/tests/support/Support_ListTest.java b/support/src/test/java/tests/support/Support_ListTest.java
new file mode 100644
index 0000000..6e9160b
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_ListTest.java
@@ -0,0 +1,220 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.NoSuchElementException;
+
+public class Support_ListTest extends junit.framework.TestCase {
+
+    List<Integer> list; // must contain the Integers 0 to 99 in order
+
+    public Support_ListTest(String p1) {
+        super(p1);
+    }
+
+    public Support_ListTest(String p1, List<Integer> l) {
+        super(p1);
+        list = l;
+    }
+
+    @Override
+    public void runTest() {
+        int hashCode = 1;
+        for (int counter = 0; counter < 100; counter++) {
+            Object elem;
+            elem = list.get(counter);
+            hashCode = 31 * hashCode + elem.hashCode();
+            assertTrue("ListTest - get failed", elem
+                    .equals(new Integer(counter)));
+        }
+        assertTrue("ListTest - hashCode failed", hashCode == list.hashCode());
+
+        list.add(50, new Integer(1000));
+        assertTrue("ListTest - a) add with index failed--did not insert", list
+                .get(50).equals(new Integer(1000)));
+        assertTrue(
+                "ListTest - b) add with index failed--did not move following elements",
+                list.get(51).equals(new Integer(50)));
+        assertTrue(
+                "ListTest - c) add with index failed--affected previous elements",
+                list.get(49).equals(new Integer(49)));
+
+        list.set(50, new Integer(2000));
+        assertTrue("ListTest - a) set failed--did not set", list.get(50)
+                .equals(new Integer(2000)));
+        assertTrue("ListTest - b) set failed--affected following elements",
+                list.get(51).equals(new Integer(50)));
+        assertTrue("ListTest - c) set failed--affected previous elements", list
+                .get(49).equals(new Integer(49)));
+
+        list.remove(50);
+        assertTrue("ListTest - a) remove with index failed--did not remove",
+                list.get(50).equals(new Integer(50)));
+        assertTrue(
+                "ListTest - b) remove with index failed--did not move following elements",
+                list.get(51).equals(new Integer(51)));
+        assertTrue(
+                "ListTest - c) remove with index failed--affected previous elements",
+                list.get(49).equals(new Integer(49)));
+
+        List<Integer> myList = new LinkedList<Integer>();
+        myList.add(new Integer(500));
+        myList.add(new Integer(501));
+        myList.add(new Integer(502));
+
+        list.addAll(50, myList);
+        assertTrue("ListTest - a) addAll with index failed--did not insert",
+                list.get(50).equals(new Integer(500)));
+        assertTrue("ListTest - b) addAll with index failed--did not insert",
+                list.get(51).equals(new Integer(501)));
+        assertTrue("ListTest - c) addAll with index failed--did not insert",
+                list.get(52).equals(new Integer(502)));
+        assertTrue(
+                "ListTest - d) addAll with index failed--did not move following elements",
+                list.get(53).equals(new Integer(50)));
+        assertTrue(
+                "ListTest - e) addAll with index failed--affected previous elements",
+                list.get(49).equals(new Integer(49)));
+
+        List<Integer> mySubList = list.subList(50, 53);
+        assertEquals(3, mySubList.size());
+        assertTrue(
+                "ListTest - a) sublist Failed--does not contain correct elements",
+                mySubList.get(0).equals(new Integer(500)));
+        assertTrue(
+                "ListTest - b) sublist Failed--does not contain correct elements",
+                mySubList.get(1).equals(new Integer(501)));
+        assertTrue(
+                "ListTest - c) sublist Failed--does not contain correct elements",
+                mySubList.get(2).equals(new Integer(502)));
+
+        t_listIterator(mySubList);
+
+        mySubList.clear();
+        assertEquals("ListTest - Clearing the sublist did not remove the appropriate elements from the original list",
+                100, list.size());
+
+        t_listIterator(list);
+        ListIterator<Integer> li = list.listIterator();
+        for (int counter = 0; li.hasNext(); counter++) {
+            Object elem;
+            elem = li.next();
+            assertTrue("ListTest - listIterator failed", elem
+                    .equals(new Integer(counter)));
+        }
+
+        new Support_CollectionTest("", list).runTest();
+
+    }
+
+    public void t_listIterator(List<Integer> list) {
+        ListIterator<Integer> li = list.listIterator(1);
+        assertTrue("listIterator(1)", li.next() == list.get(1));
+
+        int orgSize = list.size();
+        li = list.listIterator();
+        for (int i = 0; i <= orgSize; i++) {
+            if (i == 0) {
+                assertTrue("list iterator hasPrevious(): " + i, !li
+                        .hasPrevious());
+            } else {
+                assertTrue("list iterator hasPrevious(): " + i, li
+                        .hasPrevious());
+            }
+            if (i == list.size()) {
+                assertTrue("list iterator hasNext(): " + i, !li.hasNext());
+            } else {
+                assertTrue("list iterator hasNext(): " + i, li.hasNext());
+            }
+            assertTrue("list iterator nextIndex(): " + i, li.nextIndex() == i);
+            assertTrue("list iterator previousIndex(): " + i, li
+                    .previousIndex() == i - 1);
+            boolean exception = false;
+            try {
+                assertTrue("list iterator next(): " + i, li.next() == list
+                        .get(i));
+            } catch (NoSuchElementException e) {
+                exception = true;
+            }
+            if (i == list.size()) {
+                assertTrue("list iterator next() exception: " + i, exception);
+            } else {
+                assertTrue("list iterator next() exception: " + i, !exception);
+            }
+        }
+
+        for (int i = orgSize - 1; i >= 0; i--) {
+            assertTrue("list iterator previous(): " + i, li.previous() == list
+                    .get(i));
+            assertTrue("list iterator nextIndex()2: " + i, li.nextIndex() == i);
+            assertTrue("list iterator previousIndex()2: " + i, li
+                    .previousIndex() == i - 1);
+            if (i == 0) {
+                assertTrue("list iterator hasPrevious()2: " + i, !li
+                        .hasPrevious());
+            } else {
+                assertTrue("list iterator hasPrevious()2: " + i, li
+                        .hasPrevious());
+            }
+            assertTrue("list iterator hasNext()2: " + i, li.hasNext());
+        }
+        boolean exception = false;
+        try {
+            li.previous();
+        } catch (NoSuchElementException e) {
+            exception = true;
+        }
+        assertTrue("list iterator previous() exception", exception);
+
+        Integer add1 = new Integer(600);
+        Integer add2 = new Integer(601);
+        li.add(add1);
+        assertTrue("list iterator add(), size()", list.size() == (orgSize + 1));
+        assertEquals("list iterator add(), nextIndex()", 1, li.nextIndex());
+        assertEquals("list iterator add(), previousIndex()",
+                0, li.previousIndex());
+        Object next = li.next();
+        assertTrue("list iterator add(), next(): " + next, next == list.get(1));
+        li.add(add2);
+        Object previous = li.previous();
+        assertTrue("list iterator add(), previous(): " + previous,
+                previous == add2);
+        assertEquals("list iterator add(), nextIndex()2", 2, li.nextIndex());
+        assertEquals("list iterator add(), previousIndex()2",
+                1, li.previousIndex());
+
+        li.remove();
+        assertTrue("list iterator remove(), size()",
+                list.size() == (orgSize + 1));
+        assertEquals("list iterator remove(), nextIndex()", 2, li.nextIndex());
+        assertEquals("list iterator remove(), previousIndex()", 1, li
+                .previousIndex());
+        assertTrue("list iterator previous()2", li.previous() == list.get(1));
+        assertTrue("list iterator previous()3", li.previous() == list.get(0));
+        assertTrue("list iterator next()2", li.next() == list.get(0));
+        li.remove();
+        assertTrue("list iterator hasPrevious()3", !li.hasPrevious());
+        assertTrue("list iterator hasNext()3", li.hasNext());
+        assertTrue("list iterator size()", list.size() == orgSize);
+        assertEquals("list iterator nextIndex()3", 0, li.nextIndex());
+        assertEquals("list iterator previousIndex()3", -1, li.previousIndex());
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_MapTest2.java b/support/src/test/java/tests/support/Support_MapTest2.java
new file mode 100644
index 0000000..217b198
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_MapTest2.java
@@ -0,0 +1,66 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.util.Map;
+import junit.framework.TestCase;
+
+public class Support_MapTest2 extends TestCase {
+
+    Map<String, String> map;
+
+    public Support_MapTest2(Map<String, String> m) {
+        super();
+        map = m;
+        if (!map.isEmpty()) {
+            fail("Map must be empty");
+        }
+    }
+
+    @Override
+    public void runTest() {
+        try {
+            map.put("one", "1");
+            assertEquals("size should be one", 1, map.size());
+            map.clear();
+            assertEquals("size should be zero", 0, map.size());
+            assertTrue("Should not have entries", !map.entrySet().iterator()
+                    .hasNext());
+            assertTrue("Should not have keys", !map.keySet().iterator()
+                    .hasNext());
+            assertTrue("Should not have values", !map.values().iterator()
+                    .hasNext());
+        } catch (UnsupportedOperationException e) {
+        }
+
+        try {
+            map.put("one", "1");
+            assertEquals("size should be one", 1, map.size());
+            map.remove("one");
+            assertEquals("size should be zero", 0, map.size());
+            assertTrue("Should not have entries", !map.entrySet().iterator()
+                    .hasNext());
+            assertTrue("Should not have keys", !map.keySet().iterator()
+                    .hasNext());
+            assertTrue("Should not have values", !map.values().iterator()
+                    .hasNext());
+        } catch (UnsupportedOperationException e) {
+        }
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_ProviderTrust.java b/support/src/test/java/tests/support/Support_ProviderTrust.java
new file mode 100644
index 0000000..b5f4d87
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_ProviderTrust.java
@@ -0,0 +1,91 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.Provider;
+
+/**
+ * This class implements a dummy provider.
+ */
+public class Support_ProviderTrust extends Provider {
+    private static final long serialVersionUID = 1L;
+
+    // Provider name
+    private static final String NAME = "ProviderTrust";
+
+    // Version of the services
+    private static final double VERSION = 1.0;
+
+    private static final String INFO = NAME
+            + " DSA key, parameter generation and signing; SHA-1 digest; SHA1PRNG SecureRandom";
+
+    /**
+     * Constructs a new instance of the dummy provider.
+     */
+    public Support_ProviderTrust() {
+        super(NAME, VERSION, INFO);
+        registerServices();
+    }
+
+    /**
+     * Register the services the receiver provides.
+     */
+    private void registerServices() {
+        AccessController.doPrivileged(new PrivilegedAction<Void>() {
+            public Void run() {
+                // Digest engine
+                put("MessageDigest.SHA",
+                        "made.up.provider.name.MessageDigestSHA");
+                put("MessageDigest.MD5",
+                        "made.up.provider.name.MessageDigestMD5");
+
+                // Algorithm parameter generator
+                put("AlgorithmParameterGenerator.DSA",
+                        "made.up.provider.name.AlgorithmParameterGeneratorDSA");
+
+                // Algorithm parameters
+                put("AlgorithmParameters.DSA",
+                        "made.up.provider.name.AlgorithmParametersDSA");
+
+                // Key pair generator
+                put("KeyPairGenerator.DSA",
+                        "made.up.provider.name.KeyPairGeneratorDSA");
+
+                // Key factory
+                put("KeyFactory.DSA", "made.up.provider.name.KeyFactoryDSA");
+                put("KeyFactory.RSA", "made.up.provider.name.KeyFactoryRSA");
+
+                // Signature algorithm
+                put("Signature.SHA1withDSA",
+                        "made.up.provider.name.SignatureDSA");
+
+                // KeyStore
+                put("KeyStore.PKCS#12/Netscape",
+                        "made.up.provider.name.KeyStore");
+
+                // Certificate
+                put("CertificateFactory.X509",
+                        "made.up.provider.name.CertificateFactoryX509");
+
+                return null;
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/support/src/test/java/tests/support/Support_Proxy_I1.java b/support/src/test/java/tests/support/Support_Proxy_I1.java
new file mode 100644
index 0000000..66296c9
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_Proxy_I1.java
@@ -0,0 +1,28 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public interface Support_Proxy_I1 {
+    boolean equals(Object o);
+
+    int[] array(long[] f);
+
+    void foo(int i, boolean b);
+
+    String string(String s) throws Support_Proxy_ParentException, LinkageError;
+}
diff --git a/support/src/test/java/tests/support/Support_Proxy_I2.java b/support/src/test/java/tests/support/Support_Proxy_I2.java
new file mode 100644
index 0000000..e6e5394
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_Proxy_I2.java
@@ -0,0 +1,27 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public interface Support_Proxy_I2 {
+
+    int[] array(long[] f);
+
+    void foo(boolean b, int i);
+
+    String string(String s) throws Support_Proxy_SubException, Error;
+}
diff --git a/support/src/test/java/tests/support/Support_Proxy_ParentException.java b/support/src/test/java/tests/support/Support_Proxy_ParentException.java
new file mode 100644
index 0000000..13ac4c0
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_Proxy_ParentException.java
@@ -0,0 +1,22 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_Proxy_ParentException extends Exception {
+    private static final long serialVersionUID = -2760151845410887038L;
+}
diff --git a/support/src/test/java/tests/support/Support_Proxy_SubException.java b/support/src/test/java/tests/support/Support_Proxy_SubException.java
new file mode 100644
index 0000000..0d43630
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_Proxy_SubException.java
@@ -0,0 +1,23 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_Proxy_SubException extends Support_Proxy_ParentException {
+    private static final long serialVersionUID = -2615472925826542925L;
+
+}
diff --git a/support/src/test/java/tests/support/Support_SetTest.java b/support/src/test/java/tests/support/Support_SetTest.java
new file mode 100644
index 0000000..51ac1c4
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_SetTest.java
@@ -0,0 +1,48 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.util.Set;
+
+public class Support_SetTest extends junit.framework.TestCase {
+
+    Set<Integer> set; // must contain only the Integers 0 to 99
+
+    public Support_SetTest(String p1) {
+        super(p1);
+    }
+
+    public Support_SetTest(String p1, Set<Integer> s) {
+        super(p1);
+        set = s;
+    }
+
+    @Override
+    public void runTest() {
+        // add
+        assertTrue("Set Test - Adding a duplicate element changed the set",
+                !set.add(new Integer(50)));
+        assertTrue("Set Test - Removing an element did not change the set", set
+                .remove(new Integer(50)));
+        assertTrue(
+                "Set Test - Adding and removing a duplicate element failed to remove it",
+                !set.contains(new Integer(50)));
+        set.add(new Integer(50));
+        new Support_CollectionTest("", set).runTest();
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_StringReader.java b/support/src/test/java/tests/support/Support_StringReader.java
new file mode 100644
index 0000000..cc2725b
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_StringReader.java
@@ -0,0 +1,229 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.io.IOException;
+import java.io.Reader;
+
+public class Support_StringReader extends Reader {
+    private String str;
+
+    private int markpos = -1;
+
+    private int pos = 0;
+
+    private int count;
+
+    /**
+     * Construct a StringReader on the String <code>str</code>. The size of
+     * the reader is set to the <code>length()</code> of the String and the
+     * Object to synchronize access through is set to <code>str</code>.
+     *
+     * @param str the String to filter reads on.
+     */
+    public Support_StringReader(String str) {
+        super(str);
+        this.str = str;
+        this.count = str.length();
+    }
+
+    /**
+     * This method closes this StringReader. Once it is closed, you can no
+     * longer read from it. Only the first invocation of this method has any
+     * effect.
+     */
+    @Override
+    public void close() {
+        synchronized (lock) {
+            if (isOpen()) {
+                str = null;
+            }
+        }
+    }
+
+    /**
+     * Answer a boolean indicating whether or not this StringReader is open.
+     */
+    private boolean isOpen() {
+        return str != null;
+    }
+
+    /**
+     * Set a Mark position in this Reader. The parameter <code>readLimit</code>
+     * is ignored for StringReaders. Sending reset() will reposition the reader
+     * back to the marked position provided the mark has not been invalidated.
+     *
+     * @param readlimit ignored for StringReaders.
+     * @throws java.io.IOException If an error occurs attempting mark this StringReader.
+     */
+    @Override
+    public void mark(int readLimit) throws IOException {
+        if (readLimit >= 0) {
+            synchronized (lock) {
+                if (isOpen()) {
+                    markpos = pos;
+                } else {
+                    throw new IOException("StringReader is closed");
+                }
+            }
+        } else {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    /**
+     * Answers a boolean indicating whether or not this StringReader supports
+     * mark() and reset(). This method always returns true.
+     *
+     * @return <code>true</code> if mark() and reset() are supported,
+     *         <code>false</code> otherwise. This implementation always
+     *         returns <code>true</code>.
+     */
+    @Override
+    public boolean markSupported() {
+        return true;
+    }
+
+    /**
+     * Reads a single character from this StringReader and returns the result as
+     * an int. The 2 higher-order bytes are set to 0. If the end of reader was
+     * encountered then return -1.
+     *
+     * @return the character read or -1 if end of reader.
+     * @throws java.io.IOException If the StringReader is already closed.
+     */
+    @Override
+    public int read() throws IOException {
+        synchronized (lock) {
+            if (isOpen()) {
+                if (pos != count) {
+                    return str.charAt(pos++);
+                }
+                return -1;
+            }
+            throw new IOException("StringReader is closed");
+        }
+    }
+
+    /**
+     * Reads at most <code>count</code> characters from this StringReader and
+     * stores them at <code>offset</code> in the character array
+     * <code>buf</code>. Returns the number of characters actually read or -1
+     * if the end of reader was encountered.
+     *
+     * @param buf    character array to store the read characters
+     * @param offset offset in buf to store the read characters
+     * @param count  maximum number of characters to read
+     * @return the number of characters read or -1 if end of reader.
+     * @throws java.io.IOException If the StringReader is closed.
+     */
+    @Override
+    public int read(char buf[], int offset, int count) throws IOException {
+        // avoid int overflow
+        if (0 <= offset && offset <= buf.length && 0 <= count
+                && count <= buf.length - offset) {
+            synchronized (lock) {
+                if (isOpen()) {
+                    if (pos == this.count) {
+                        return -1;
+                    }
+                    int end = pos + count > this.count ? this.count : pos
+                            + count;
+                    str.getChars(pos, end, buf, offset);
+                    int read = end - pos;
+                    pos = end;
+                    return read;
+                }
+                throw new IOException("StringReader is closed");
+            }
+        }
+        throw new ArrayIndexOutOfBoundsException();
+    }
+
+    /**
+     * Answers a <code>boolean</code> indicating whether or not this
+     * StringReader is ready to be read without blocking. If the result is
+     * <code>true</code>, the next <code>read()</code> will not block. If
+     * the result is <code>false</code> this Reader may or may not block when
+     * <code>read()</code> is sent. The implementation in StringReader always
+     * returns <code>true</code> even when it has been closed.
+     *
+     * @return <code>true</code> if the receiver will not block when
+     *         <code>read()</code> is called, <code>false</code> if unknown
+     *         or blocking will occur.
+     * @throws java.io.IOException If an IO error occurs.
+     */
+    @Override
+    public boolean ready() throws IOException {
+        synchronized (lock) {
+            if (isOpen()) {
+                return true;
+            }
+            throw new IOException("StringReader is closed");
+        }
+    }
+
+    /**
+     * Reset this StringReader's position to the last <code>mark()</code>
+     * location. Invocations of <code>read()/skip()</code> will occur from
+     * this new location. If this Reader was not marked, the StringReader is
+     * reset to the beginning of the String.
+     *
+     * @throws java.io.IOException If this StringReader has already been closed.
+     */
+    @Override
+    public void reset() throws IOException {
+        synchronized (lock) {
+            if (isOpen()) {
+                pos = markpos != -1 ? markpos : 0;
+            } else {
+                throw new IOException("StringReader is closed");
+            }
+        }
+    }
+
+    /**
+     * Skips <code>count</code> number of characters in this StringReader.
+     * Subsequent <code>read()</code>'s will not return these characters
+     * unless <code>reset()</code> is used.
+     *
+     * @param count The number of characters to skip.
+     * @return the number of characters actually skipped.
+     * @throws java.io.IOException If this StringReader has already been closed.
+     */
+    @Override
+    public long skip(long count) throws IOException {
+        synchronized (lock) {
+            if (isOpen()) {
+                if (count <= 0) {
+                    return 0;
+                }
+                long skipped = 0;
+                if (count < this.count - pos) {
+                    pos = pos + (int) count;
+                    skipped = count;
+                } else {
+                    skipped = this.count - pos;
+                    pos = this.count;
+                }
+                return skipped;
+            }
+            throw new IOException("StringReader is closed");
+        }
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_StringWriter.java b/support/src/test/java/tests/support/Support_StringWriter.java
new file mode 100644
index 0000000..7d1b171
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_StringWriter.java
@@ -0,0 +1,164 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.io.IOException;
+import java.io.Writer;
+
+public class Support_StringWriter extends Writer {
+    private StringBuffer buf;
+
+    /**
+     * Constructs a new StringWriter which has a StringBuffer allocated with the
+     * default size of 16 characters. The StringBuffer is also the
+     * <code>lock</code> used to synchronize access to this Writer.
+     */
+    public Support_StringWriter() {
+        super();
+        buf = new StringBuffer(16);
+        lock = buf;
+    }
+
+    /**
+     * Constructs a new StringWriter which has a StringBuffer allocated with the
+     * size of <code>initialSize</code> characters. The StringBuffer is also
+     * the <code>lock</code> used to synchronize access to this Writer.
+     */
+    public Support_StringWriter(int initialSize) {
+        if (initialSize >= 0) {
+            buf = new StringBuffer(initialSize);
+            lock = buf;
+        } else {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    /**
+     * Close this Writer. This is the concrete implementation required. This
+     * particular implementation does nothing.
+     *
+     * @throws java.io.IOException If an IO error occurs closing this StringWriter.
+     */
+    @Override
+    public void close() throws IOException {
+    }
+
+    /**
+     * Flush this Writer. This is the concrete implementation required. This
+     * particular implementation does nothing.
+     */
+    @Override
+    public void flush() {
+    }
+
+    /**
+     * Answer the contents of this StringWriter as a StringBuffer. Any changes
+     * made to the StringBuffer by the receiver or the caller are reflected in
+     * this StringWriter.
+     *
+     * @return this StringWriters local StringBuffer.
+     */
+    public StringBuffer getBuffer() {
+        synchronized (lock) {
+            return buf;
+        }
+    }
+
+    /**
+     * Answer the contents of this StringWriter as a String. Any changes made to
+     * the StringBuffer by the receiver after returning will not be reflected in
+     * the String returned to the caller.
+     *
+     * @return this StringWriters current contents as a String.
+     */
+    @Override
+    public String toString() {
+        synchronized (lock) {
+            return buf.toString();
+        }
+    }
+
+    /**
+     * Writes <code>count</code> characters starting at <code>offset</code>
+     * in <code>buf</code> to this StringWriter.
+     *
+     * @param buf    the non-null array containing characters to write.
+     * @param offset offset in buf to retrieve characters
+     * @param count  maximum number of characters to write
+     * @throws java.lang.ArrayIndexOutOfBoundsException
+     *          If offset or count are outside of bounds.
+     */
+    @Override
+    public void write(char[] buf, int offset, int count) {
+        // avoid int overflow
+        if (0 <= offset && offset <= buf.length && 0 <= count
+                && count <= buf.length - offset) {
+            synchronized (lock) {
+                this.buf.append(buf, offset, count);
+            }
+        } else {
+            throw new ArrayIndexOutOfBoundsException();
+        }
+    }
+
+    /**
+     * Writes the specified character <code>oneChar</code> to this
+     * StringWriter. This implementation writes the low order two bytes to the
+     * Stream.
+     *
+     * @param oneChar The character to write
+     */
+    @Override
+    public void write(int oneChar) {
+        synchronized (lock) {
+            buf.append((char) oneChar);
+        }
+    }
+
+    /**
+     * Writes the characters from the String <code>str</code> to this
+     * StringWriter.
+     *
+     * @param str the non-null String containing the characters to write.
+     */
+    @Override
+    public void write(String str) {
+        synchronized (lock) {
+            buf.append(str);
+        }
+    }
+
+    /**
+     * Writes <code>count</code> number of characters starting at
+     * <code>offset</code> from the String <code>str</code> to this
+     * StringWriter.
+     *
+     * @param str    the non-null String containing the characters to write.
+     * @param offset the starting point to retrieve characters.
+     * @param count  the number of characters to retrieve and write.
+     * @throws java.lang.ArrayIndexOutOfBoundsException
+     *          If offset or count are outside of bounds.
+     */
+    @Override
+    public void write(String str, int offset, int count) {
+        String sub = str.substring(offset, offset + count);
+        synchronized (lock) {
+            buf.append(sub);
+        }
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_TestProvider.java b/support/src/test/java/tests/support/Support_TestProvider.java
new file mode 100644
index 0000000..e425ad6
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_TestProvider.java
@@ -0,0 +1,125 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.Provider;
+
+/**
+ * This class implements a dummy provider.
+ */
+public class Support_TestProvider extends Provider {
+    private static final long serialVersionUID = 1L;
+
+    // Provider name
+    private static final String NAME = "TestProvider";
+
+    // Version of the services provided
+    private static final double VERSION = 1.0;
+
+    private static final String INFO = NAME
+            + " DSA key, parameter generation and signing; SHA-1 digest; "
+            + "SHA1PRNG SecureRandom; PKCS#12/Netscape KeyStore";
+
+    /**
+     * Constructs a new instance of the dummy provider.
+     */
+    public Support_TestProvider() {
+        super(NAME, VERSION, INFO);
+        registerServices();
+    }
+
+    /**
+     * Register the services the receiver provides.
+     */
+    private void registerServices() {
+        AccessController.doPrivileged(new PrivilegedAction<Void>() {
+            public Void run() {
+                // Digest engine
+                put("MessageDigest.SHA",
+                        "made.up.provider.name.MessageDigestSHA");
+                put("MessageDigest.MD2",
+                        "made.up.provider.name.MessageDigestMD2");
+                // aliases
+                put("Alg.Alias.MessageDigest.SHA1", "SHA");
+                put("Alg.Alias.MessageDigest.SHA-1", "SHA");
+                put("Alg.Alias.MessageDigest.OID.1.3.14.3.2.26", "SHA");
+                put("Alg.Alias.MessageDigest.1.3.14.3.2.26", "SHA");
+
+                // Algorithm parameter generator
+                put("AlgorithmParameterGenerator.DSA",
+                        "made.up.provider.name.AlgorithmParameterGeneratorDSA");
+
+                // Algorithm parameters
+                put("AlgorithmParameters.DSA",
+                        "made.up.provider.name.AlgorithmParametersDSA");
+                // aliases
+                put("Alg.Alias.AlgorithmParameters.1.2.840.10040.4.1", "DSA");
+                put("Alg.Alias.AlgorithmParameters.1.3.14.3.2.12", "DSA");
+
+                // Key pair generator
+                put("KeyPairGenerator.DSA",
+                        "made.up.provider.name.KeyPairGeneratorDSA");
+                // aliases
+                put("Alg.Alias.KeyPairGenerator.OID.1.2.840.10040.4.1", "DSA");
+                put("Alg.Alias.KeyPairGenerator.1.2.840.10040.4.1", "DSA");
+                put("Alg.Alias.KeyPairGenerator.1.3.14.3.2.12", "DSA");
+
+                // Key factory
+                put("KeyFactory.DSA", "made.up.provider.name.KeyFactoryDSA");
+                put("KeyFactory.RSA", "made.up.provider.name.KeyFactoryRSA");
+                // aliases
+                put("Alg.Alias.KeyFactory.1.2.840.10040.4.1", "DSA");
+                put("Alg.Alias.KeyFactory.1.3.14.3.2.12", "DSA");
+
+                // Signature algorithm
+                put("Signature.SHA1withDSA",
+                        "made.up.provider.name.SignatureDSA");
+
+                // aliases
+                put("Alg.Alias.Signature.DSA", "SHA1withDSA");
+                put("Alg.Alias.Signature.DSS", "SHA1withDSA");
+                put("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA");
+                put("Alg.Alias.Signature.SHA1/DSA", "SHA1withDSA");
+                put("Alg.Alias.Signature.SHA-1/DSA", "SHA1withDSA");
+                put("Alg.Alias.Signature.SHAwithDSA", "SHA1withDSA");
+                put("Alg.Alias.Signature.DSAwithSHA1", "SHA1withDSA");
+                put("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA");
+                put("Alg.Alias.Signature.SHA-1withDSA", "SHA1withDSA");
+                put("Alg.Alias.Signature.OID.1.2.840.10040.4.3", "SHA1withDSA");
+                put("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA1withDSA");
+                put("Alg.Alias.Signature.1.3.14.3.2.13", "SHA1withDSA");
+                put("Alg.Alias.Signature.1.3.14.3.2.27", "SHA1withDSA");
+                put("Alg.Alias.Signature.OID.1.3.14.3.2.13", "SHA1withDSA");
+                put("Alg.Alias.Signature.OID.1.3.14.3.2.27", "SHA1withDSA");
+
+                put("KeyStore.PKCS#12/Netscape",
+                        "tests.support.Support_DummyPKCS12Keystore");
+
+                // Certificate
+                put("CertificateFactory.X509",
+                        "made.up.provider.name.CertificateFactoryX509");
+                // aliases
+                put("Alg.Alias.CertificateFactory.X.509", "X509");
+
+                return null;
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/support/src/test/java/tests/support/Support_TestResource.java b/support/src/test/java/tests/support/Support_TestResource.java
new file mode 100644
index 0000000..e16b518
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_TestResource.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_TestResource extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "parent1", "parentValue1" },
+                { "parent2", "parentValue2" }, { "parent3", "parentValue3" },
+                { "parent4", "parentValue4" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_TestResource_en.java b/support/src/test/java/tests/support/Support_TestResource_en.java
new file mode 100644
index 0000000..4a69d7f
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_TestResource_en.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_TestResource_en extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "parent2", "enValue2" },
+                { "parent3", "enValue3" }, { "parent4", "enValue4" },
+                { "child1", "enChildValue1" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_TestResource_en_US.java b/support/src/test/java/tests/support/Support_TestResource_en_US.java
new file mode 100644
index 0000000..4d73675
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_TestResource_en_US.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_TestResource_en_US extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "parent3", "enUSValue3" },
+                { "parent4", "enUSValue4" }, { "child1", "enUSChildValue1" },
+                { "child2", "enUSChildValue2" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_TestResource_fr.java b/support/src/test/java/tests/support/Support_TestResource_fr.java
new file mode 100644
index 0000000..8bc0829
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_TestResource_fr.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_TestResource_fr extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "parent2", "frValue2" },
+                { "parent3", "frValue3" }, { "parent4", "frValue4" },
+                { "child1", "frChildValue1" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_TestResource_fr_FR.java b/support/src/test/java/tests/support/Support_TestResource_fr_FR.java
new file mode 100644
index 0000000..59c56bd
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_TestResource_fr_FR.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+public class Support_TestResource_fr_FR extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "parent3", "frFRValue3" },
+                { "parent4", "frFRValue4" }, { "child1", "frFRChildValue1" },
+                { "child2", "frFRChildValue2" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_TestResource_fr_FR_VAR.java b/support/src/test/java/tests/support/Support_TestResource_fr_FR_VAR.java
new file mode 100644
index 0000000..b9f4d60
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_TestResource_fr_FR_VAR.java
@@ -0,0 +1,31 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package tests.support;
+
+public class Support_TestResource_fr_FR_VAR extends
+        java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "parent4", "frFRVARValue4" },
+                { "child1", "frFRVARChildValue1" },
+                { "child2", "frFRVARChildValue2" },
+                { "child3", "frFRVARChildValue3" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/java/tests/support/Support_TimeZone.java b/support/src/test/java/tests/support/Support_TimeZone.java
new file mode 100644
index 0000000..e2c3e65
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_TimeZone.java
@@ -0,0 +1,82 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+
+/**
+ * Sample java.util.TimeZone subclass to test getDSTSavings() and getOffset(long)
+ * APIs
+ */
+public class Support_TimeZone extends TimeZone {
+    private static final long serialVersionUID = 1L;
+
+    int rawOffset;
+
+    boolean useDaylightTime;
+
+    public Support_TimeZone(int rawOffset, boolean useDaylightTime) {
+        this.rawOffset = rawOffset;
+        this.useDaylightTime = useDaylightTime;
+    }
+
+    @Override
+    public int getRawOffset() {
+        return rawOffset;
+    }
+
+    /**
+     * let's assume this timezone has daylight savings from the 4th month till
+     * the 10th month of the year to ame things simple.
+     */
+    @Override
+    public boolean inDaylightTime(java.util.Date p1) {
+        if (!useDaylightTime) {
+            return false;
+        }
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setTime(p1);
+        int month = cal.get(Calendar.MONTH);
+
+        if (month > 4 && month < 10) {
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean useDaylightTime() {
+        return useDaylightTime;
+    }
+
+    /*
+      * return 0 to keep it simple, since this subclass is not used to test this
+      * method..
+      */
+    @Override
+    public int getOffset(int p1, int p2, int p3, int p4, int p5, int p6) {
+        return 0;
+    }
+
+    @Override
+    public void setRawOffset(int p1) {
+        rawOffset = p1;
+    }
+}
diff --git a/support/src/test/java/tests/support/Support_UnmodifiableCollectionTest.java b/support/src/test/java/tests/support/Support_UnmodifiableCollectionTest.java
new file mode 100644
index 0000000..96619bd
--- /dev/null
+++ b/support/src/test/java/tests/support/Support_UnmodifiableCollectionTest.java
@@ -0,0 +1,111 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import junit.framework.TestCase;
+
+public class Support_UnmodifiableCollectionTest extends TestCase {
+
+    Collection<Integer> col;
+
+    // must be a collection containing the Integers 0 to 99 (which will iterate
+    // in order)
+
+    public Support_UnmodifiableCollectionTest(String p1) {
+        super(p1);
+    }
+
+    public Support_UnmodifiableCollectionTest(String p1, Collection<Integer> c) {
+        super(p1);
+        col = c;
+    }
+
+    @Override
+    public void runTest() {
+
+        // contains
+        assertTrue("UnmodifiableCollectionTest - should contain 0", col
+                .contains(new Integer(0)));
+        assertTrue("UnmodifiableCollectionTest - should contain 50", col
+                .contains(new Integer(50)));
+        assertTrue("UnmodifiableCollectionTest - should not contain 100", !col
+                .contains(new Integer(100)));
+
+        // containsAll
+        HashSet<Integer> hs = new HashSet<Integer>();
+        hs.add(new Integer(0));
+        hs.add(new Integer(25));
+        hs.add(new Integer(99));
+        assertTrue(
+                "UnmodifiableCollectionTest - should contain set of 0, 25, and 99",
+                col.containsAll(hs));
+        hs.add(new Integer(100));
+        assertTrue(
+                "UnmodifiableCollectionTest - should not contain set of 0, 25, 99 and 100",
+                !col.containsAll(hs));
+
+        // isEmpty
+        assertTrue("UnmodifiableCollectionTest - should not be empty", !col
+                .isEmpty());
+
+        // iterator
+        Iterator<Integer> it = col.iterator();
+        SortedSet<Integer> ss = new TreeSet<Integer>();
+        while (it.hasNext()) {
+            ss.add(it.next());
+        }
+        it = ss.iterator();
+        for (int counter = 0; it.hasNext(); counter++) {
+            int nextValue = it.next().intValue();
+            assertTrue(
+                    "UnmodifiableCollectionTest - Iterator returned wrong value.  Wanted: "
+                            + counter + " got: " + nextValue,
+                    nextValue == counter);
+        }
+
+        // size
+        assertTrue(
+                "UnmodifiableCollectionTest - returned wrong size.  Wanted 100, got: "
+                        + col.size(), col.size() == 100);
+
+        // toArray
+        Object[] objArray;
+        objArray = col.toArray();
+        for (int counter = 0; it.hasNext(); counter++) {
+            assertTrue(
+                    "UnmodifiableCollectionTest - toArray returned incorrect array",
+                    objArray[counter] == it.next());
+        }
+
+        // toArray (Object[])
+        objArray = new Object[100];
+        col.toArray(objArray);
+        for (int counter = 0; it.hasNext(); counter++) {
+            assertTrue(
+                    "UnmodifiableCollectionTest - toArray(Object) filled array incorrectly",
+                    objArray[counter] == it.next());
+        }
+
+    }
+
+}
diff --git a/support/src/test/java/tests/support/resource/Support_Resources.java b/support/src/test/java/tests/support/resource/Support_Resources.java
new file mode 100644
index 0000000..ec1a4b7
--- /dev/null
+++ b/support/src/test/java/tests/support/resource/Support_Resources.java
@@ -0,0 +1,162 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support.resource;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import tests.support.Support_Configuration;
+
+public class Support_Resources {
+
+    public static final String RESOURCE_PACKAGE = "/tests/resources/";
+
+    public static final String RESOURCE_PACKAGE_NAME = "tests.resources";
+
+    public static InputStream getStream(String name) {
+        // System.err.println("getResourceAsStream(" + RESOURCE_PACKAGE + name + ")");
+        return Support_Resources.class.getResourceAsStream(RESOURCE_PACKAGE + name);
+    }
+
+    public static String getURL(String name) {
+        String folder = null;
+        String fileName = name;
+        File resources = createTempFolder();
+        int index = name.lastIndexOf("/");
+        if (index != -1) {
+            folder = name.substring(0, index);
+            name = name.substring(index + 1);
+        }
+        copyFile(resources, folder, name);
+        URL url = null;
+        String resPath = resources.toString();
+        if (resPath.charAt(0) == '/' || resPath.charAt(0) == '\\') {
+            resPath = resPath.substring(1);
+        }
+        try {
+            url = new URL("file:/" + resPath + "/" + fileName);
+        } catch (MalformedURLException e) {
+            throw new RuntimeException(e);
+        }
+        return url.toString();
+    }
+
+    public static File createTempFolder() {
+        File folder = null;
+        try {
+            folder = File.createTempFile("hyts_resources", "", null);
+            folder.delete();
+            folder.mkdirs();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        folder.deleteOnExit();
+        return folder;
+    }
+
+    public static void copyFile(File root, String folder, String file) {
+        File f;
+        if (folder != null) {
+            f = new File(root.toString() + "/" + folder);
+            if (!f.exists()) {
+                f.mkdirs();
+                f.deleteOnExit();
+            }
+        } else {
+            f = root;
+        }
+
+        String src = folder == null ? file : folder + "/" + file;
+        InputStream in = Support_Resources.getStream(src);
+        try {
+            File dst = new File(f.toString() + "/" + file);
+            copyLocalFileTo(dst, in);
+        } catch (Exception e) {
+            throw new RuntimeException("copyFile failed: root=" + root + " folder=" + folder + " file=" + file + " (src=" + src + ")", e);
+        }
+    }
+
+    public static File createTempFile(String suffix) throws IOException {
+        return File.createTempFile("hyts_", suffix, null);
+    }
+
+    public static void copyLocalFileTo(File dest, InputStream in) throws IOException {
+        if (!dest.exists()) {
+            FileOutputStream out = new FileOutputStream(dest);
+            int result;
+            byte[] buf = new byte[4096];
+            while ((result = in.read(buf)) != -1) {
+                out.write(buf, 0, result);
+            }
+            in.close();
+            out.close();
+            dest.deleteOnExit();
+        }
+    }
+
+    public static File getExternalLocalFile(String url) throws IOException, MalformedURLException {
+        File resources = createTempFolder();
+        InputStream in = new URL(url).openStream();
+        File temp = new File(resources.toString() + "/local.tmp");
+        copyLocalFileTo(temp, in);
+        return temp;
+    }
+
+    public static String getResourceURL(String resource) {
+        return "http://" + Support_Configuration.TestResources + resource;
+    }
+
+    /**
+     * Util method to load resource files
+     *
+     * @param name - name of resource file
+     * @return - resource input stream
+     */
+    public static InputStream getResourceStream(String name) {
+        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(name);
+        if (is == null) {
+            throw new RuntimeException("Failed to load resource: " + name);
+        }
+        return is;
+    }
+
+    /**
+     * Util method to get absolute path to resource file
+     *
+     * @param name - name of resource file
+     * @return - path to resource
+     */
+    public static String getAbsoluteResourcePath(String name) {
+        URL url = ClassLoader.getSystemClassLoader().getResource(name);
+        if (url == null) {
+            throw new RuntimeException("Failed to load resource: " + name);
+        }
+
+        try {
+            return new File(url.toURI()).getAbsolutePath();
+        } catch (URISyntaxException e) {
+            throw new RuntimeException("Failed to load resource: " + name);
+        }
+    }
+}
diff --git a/support/src/test/java/tests/util/SerializationTester.java b/support/src/test/java/tests/util/SerializationTester.java
new file mode 100644
index 0000000..93bff70
--- /dev/null
+++ b/support/src/test/java/tests/util/SerializationTester.java
@@ -0,0 +1,231 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.net.URL;
+
+/**
+ * This class simplifies the serialization test.
+ */
+public class SerializationTester {
+
+    /*
+      * --------------------------------------------------------------------
+      * Class variables
+      * --------------------------------------------------------------------
+      */
+
+    // the last deserialized object
+    private static Object lastOutput = null;
+
+    /*
+      * -------------------------------------------------------------------
+      * Constructors
+      * -------------------------------------------------------------------
+      */
+
+    private SerializationTester() {
+
+    }
+
+    /*
+      * -------------------------------------------------------------------
+      * Methods
+      * -------------------------------------------------------------------
+      */
+
+    /**
+     * Serialize an object and then deserialize it.
+     *
+     * @param inputObject the input object
+     * @return the deserialized object
+     */
+    public static Object getDeserilizedObject(Object inputObject)
+            throws IOException, ClassNotFoundException {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ObjectOutputStream oos = new ObjectOutputStream(bos);
+        oos.writeObject(inputObject);
+        oos.close();
+
+        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+        ObjectInputStream ois = new ObjectInputStream(bis);
+        Object outputObject = ois.readObject();
+        lastOutput = outputObject;
+        ois.close();
+        return outputObject;
+    }
+
+    /**
+     * Tests the serialization and deserialization of const objects.
+     *
+     * @param inputObject A const object
+     * @return true if the deserialized object is the same as the input object,
+     *         otherwise false
+     * @throws Exception If any occurs.
+     */
+    public static boolean assertSame(Object inputObject) throws Exception {
+        return inputObject == getDeserilizedObject(inputObject);
+    }
+
+    /**
+     * Tests the serialization and deserialization of instance objects.
+     *
+     * @param inputObject An object
+     * @return true if the deserialized object is equal to the input object,
+     *         otherwise false
+     * @throws Exception If any occurs.
+     */
+    public static boolean assertEquals(Object inputObject) throws Exception {
+        return inputObject.equals(getDeserilizedObject(inputObject));
+    }
+
+    /**
+     * Tests the serialization compatibility with reference const objects.
+     *
+     * @param obj      the object to be checked
+     * @param fileName the serialization output file generated by reference
+     * @return true if compatible, otherwise false
+     * @throws Exception If any occurs.
+     */
+    public static boolean assertCompabilitySame(Object obj, String fileName)
+            throws Exception {
+        return obj == readObject(obj, fileName);
+    }
+
+    /**
+     * Tests the serialization compatibility with reference for instance
+     * objects.
+     *
+     * @param obj      the object to be checked
+     * @param fileName the serialization output file generated by reference
+     * @return true if compatible, otherwise false
+     * @throws Exception If any occurs.
+     */
+    public static boolean assertCompabilityEquals(Object obj, String fileName)
+            throws Exception {
+        return obj.equals(readObject(obj, fileName));
+    }
+
+    /**
+     * Deserialize an object from a file.
+     *
+     * @param obj      the object to be serialized if no serialization file is found
+     * @param fileName the serialization file
+     * @return the deserialized object
+     * @throws Exception If any occurs.
+     */
+    public static Object readObject(Object obj, String fileName)
+            throws Exception {
+        InputStream input = null;
+        ObjectInputStream oinput = null;
+        URL url = SerializationTester.class.getClassLoader().getResource(
+                fileName);
+        if (null == url) {
+            // serialization file does not exist, create one in the current dir
+            writeObject(obj, new File(fileName).getName());
+            throw new Error(
+                    "Serialization file does not exist, created in the current dir.");
+        }
+        input = url.openStream();
+        try {
+            oinput = new ObjectInputStream(input);
+            Object newObj = oinput.readObject();
+            return newObj;
+        } finally {
+            try {
+                if (null != oinput) {
+                    oinput.close();
+                }
+            } catch (Exception e) {
+                // ignore
+            }
+            try {
+                if (null != input) {
+                    input.close();
+                }
+            } catch (Exception e) {
+                // ignore
+            }
+        }
+    }
+
+    /*
+      * Creates a serialization output.
+      *
+      * @param obj the object to be serialized @param fileName the output file
+      * @throws Exception If any occurs.
+      */
+    public static void writeObject(Object obj, String fileName)
+            throws Exception {
+        // String path = SerializationTester.class.getResource(".").getPath();
+        // if (path.endsWith(".")) {
+        // path = path.substring(0, path.length() - 1);
+        // }
+        // if (!path.endsWith("/")) {
+        // path += "/";
+        // }
+        // path += fileName;
+        // System.out.println(path);
+        OutputStream output = null;
+        ObjectOutputStream ooutput = null;
+        try {
+            output = new FileOutputStream(fileName);
+            ooutput = new ObjectOutputStream(output);
+            ooutput.writeObject(obj);
+        } finally {
+            try {
+                if (null != ooutput) {
+                    ooutput.close();
+                }
+            } catch (Exception e) {
+                // ignore
+            }
+            try {
+                if (null != output) {
+                    output.close();
+                }
+            } catch (Exception e) {
+                // ignore
+            }
+        }
+    }
+
+    /**
+     * Gets the last deserialized object.
+     *
+     * @return the last deserialized object
+     */
+    public static Object getLastOutput() {
+        return lastOutput;
+    }
+
+    /*
+      * For test purpose.
+      */
+    public static void main(String[] args) {
+    }
+}
diff --git a/support/src/test/resources/config/jcltest-excludes.xml b/support/src/test/resources/config/jcltest-excludes.xml
new file mode 100644
index 0000000..dac4583
--- /dev/null
+++ b/support/src/test/resources/config/jcltest-excludes.xml
@@ -0,0 +1,2536 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hy:suite xmlns:hy="http://incubator.apache.org/harmony/testing"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://incubator.apache.org/harmony/testing excludes.xsd">
+
+    <!-- Applet module test exclusions -->
+
+
+    <!-- Archive module test exclusions -->
+    <hy:type id="tests.api.java.util.zip.GZIPInputStreamTest">
+        <hy:exclude id="test_read$BII" shouldfix="true">
+            <hy:reason>java.io.IOException: Size mismatch</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_close" shouldfix="true">
+            <hy:reason>java.io.IOException: Size mismatch</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.util.zip.InflaterInputStreamTest">
+        <hy:exclude id="test_ConstructorLjava_io_InputStream" shouldfix="true">
+            <hy:reason>read() threw an exception while testing constructor
+            </hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.util.zip.InflaterTest">
+        <hy:exclude id="test_setDictionary$B" shouldfix="true">
+            <hy:reason>java.lang.IllegalArgumentException in native method
+            </hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- Auth module test exclusions -->
+    <hy:type
+            id="javax.security.auth.login.serialization.SerAccountExpiredExceptionTest">
+        <hy:exclude id="testGolden" shouldfix="true">
+            <hy:reason>java.io.EOFException</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="javax.security.auth.login.serialization.SerCredentialExpiredExceptionTest">
+        <hy:exclude id="testGolden" shouldfix="true">
+            <hy:reason>java.io.EOFException</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.security.auth.x500.X500PrincipalTest">
+        <hy:exclude id="testValidEncoding" shouldfix="true">
+            <hy:reason>Undiagnosed Error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.javax.security.auth.x500.X500PrincipalTest">
+        <hy:exclude id="all" shouldfix="true">
+            <hy:reason>Undiagnosed Error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- AWT module test exclusions -->
+
+
+    <!-- Beans module test exclusions -->
+    <hy:type id="java.beans.beancontext.BeanContextServicesSupportTest">
+        <hy:exclude id="all" shouldfix="true">
+            <hy:reason>protected system package 'java.beans.beancontext'
+            </hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="java.beans.beancontext.BeanContextSupportTest">
+        <hy:exclude id="all" shouldfix="true">
+            <hy:reason>protected system package 'java.beans.beancontext'
+            </hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.tests.java.beans.BeansTest">
+        <hy:exclude id="testLoadBySpecificClassLoader" shouldfix="true">
+            <hy:reason>Class with name
+                org.apache.harmony.tests.beans.auxiliary.SampleBean is not found
+            </hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testLoadByDefaultClassLoader" shouldfix="true">
+            <hy:reason>Class with name
+                org.apache.harmony.tests.beans.auxiliary.SampleBean is not found
+            </hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.tests.java.beans.EventHandlerTest">
+        <hy:exclude id="testNullListenerMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInvoke" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInvokeWithNullPropertyName" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateWithDottedParameterCall" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateWithMethodCallWhichIsSetter" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateForStaticMethodAsPropertyGetter"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.tests.java.beans.SimpleBeanInfoTest">
+        <hy:exclude id="testLoadImage" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.BeanDescriptorTest">
+        <hy:exclude id="testBeanDescriptorClass" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBeanDescriptorClassClass_CustomizerClassNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.BeansTest">
+        <hy:exclude id="testInstantiateClassLoaderString_Class"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiateClassLoaderString_Ser" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiateClassLoaderStringBeanContext_Class"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiateClassLoaderStringBeanContext_Ser"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testInstantiateClassLoaderStringBeanContextAppletInitializer_Class"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testInstantiateClassLoaderStringBeanContextAppletInitializer_Ser"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIsInstanceOf_BeanNull" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.CustomizedPersistenceDelegateTest">
+        <hy:exclude id="testArrayPD" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testProxyPD" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPrimitivePD" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMethodPD" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFieldPD" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.DefaultPersistenceDelegateTest">
+        <hy:exclude id="testInstantiate_NullProperty" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiate_EmptyProperty" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiate_NonExistingGetter" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiate_NonExistingGetterNulEncoder"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiate_InitialUpperCasePropName"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiate_NoGetter" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiate_NotRegularGetter" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMutatesTo_NormalNoProperty" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMutatesTo_NormalWithEmptyPropertyPublicEqualMethod"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMutatesTo_Null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_Normal" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_NormalBeanInfo" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_SameInstance" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_TransientProperty" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_NullClass" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_NullInstances" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_NullEncoder" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_NotRegularGetter" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.EncoderTest">
+        <hy:exclude id="testGetExceptionListener" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetExceptionListener_Null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetExceptionListener" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteExpression_Null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetPersistenceDelegate_BeanInfo" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetPersistenceDelegate_Default" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetPersistenceDelegate_Null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGet_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGet_Integer" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemove_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.EventHandlerTest">
+        <hy:exclude id="testCreateClassObjectString_ObjectNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectString_MethodNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectString_MethodEmpty"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringString_TargetNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringString_ActionNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringString_ActionInvalid"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringString_PropertyNameNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringString_PropertyNameInvalid"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringStringString_TargetNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringStringString_ActionNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringStringString_ActionInvalid"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringStringString_PropertyNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateClassObjectStringStringString_PropertyInvalid"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInvoke_1" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIncompatibleMethod" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCoverage_1" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInvoke_extend2" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInvoke_extend2_2" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInvoke_extend4_BooleanObject" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEventHandlerCreate" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.EventSetDescriptorTest">
+        <hy:exclude id="testEventSetDescriptorClassStringClassString2"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEventSetDescriptorClassStringClassString_EventNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEventSetDescriptorClassStringClassString_EventEmpty"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassString_EventInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassString_ListenerInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringString"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringString_sourceClassNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringString_eventNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringString_eventEmpty"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringString_listenerMethodNamesNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringString_listenerMethodNamesEmpty"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringString_addListenerMethodNameNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringString_removeListenerMethodNameNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringStringString"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringStringString_getListenerMethodNameNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorClassStringClassStringArrayStringStringString_getListenerMethodNameInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethod"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethod_EventNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethod_EventEmpty"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethod_ListenerTypeNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethod_listenerMethodsNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethod_listenerMethodsInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethod_addListenerMethodInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethod_removeListenerMethodInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethodMethod"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodArrayMethodMethodMethod_getListenerMethodInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testEventSetDescriptorStringClassMethodDescriptorArrayMethodMethod_ListenerMDNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.ExpressionTest">
+        <hy:exclude id="testConstructor_Normal" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NullTarget" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_ArrayTarget" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NullMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NewMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_EmptyMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NullArguments" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NullArgument" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_Normal" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_NullTarget" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_ArrayTarget" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_NullMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_NewMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_EmptyMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_NullArguments" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_NullArgument" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_NullValue" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetValue_UnboundedNormalInstanceMethod"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetValue_UnboundedNullMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetValue_UnboundedOverloadedMethods"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetValue_UnboundedNormalConstructor"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetValue_UnboundedOverloadedConstructorsNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetValue_UnboundedAmbitiousStaticMethod"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetValue_UnboundedClassForName" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetValue_UnboundedVoidMethod" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_Value_SetValueCalledIn"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.FeatureDescriptorTest">
+        <hy:exclude id="testSetDisplayName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetValue_ValueNull" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.IndexedPropertyDescriptorTest">
+        <hy:exclude id="testEquals" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_ReadMethod" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_ReadMethodNull" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_WriteMethod" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_WriteMethodNull" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_IndexedR" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_IndexedRNull" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_IndexedW" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_IndexWNull" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEquals_PropertyType" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIndexedPropertyDescriptorStringClass"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringClass_PropertyNameInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringClass_NotIndexedProperty"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringClassStringStringStringString"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringClassStringStringStringString_IndexedReadMethodNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringClassStringStringStringString_IndexedRWNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringClassStringStringStringString_RNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_propInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_ReadMethodNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_WriteMethodNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_IndexedReadMethodNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_IndexedWriteMethodNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_IndexedRWNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_RWNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_RWIncompatible"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testIndexedPropertyDescriptorStringMethodMethodMethodMethod_IndexedRWIncompatible"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedReadMethod_invalid" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedReadMethod_null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedReadMethod_RInvalidArgs" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedReadMethod_RInvalidArgType"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedReadMethod_RInvalidReturn"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedWriteMethod_null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedWriteMethod" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedWriteMethod_noargs" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedWriteMethod_badargtype" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedWriteMethod_return" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetIndexedWriteMethod_InvalidIndexType"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.IntrospectionExceptionTest">
+        <hy:exclude id="testSerialization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.IntrospectorTest">
+        <hy:exclude id="testGetBeanInfoClassClass_ClassInvalid"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetBeanInfoClassint_IGNORE_IMMEDIATE_Event"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetBeanInfoClassint_IGNORE_ALL_Event"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetBeanInfoSearchPath" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetBeanInfoSearchPath_Default" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntrospection_5" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntrospection_8" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntrospection_9" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntrospection_10" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntrospection_11" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntrospection_13" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBeanInfo_1" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetBeanInfoSearchPath2" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.MethodDescriptorTest">
+        <hy:exclude id="testMethodDescriptorMethod" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMethodDescriptorMethodParameterDescriptorArray"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testMethodDescriptorMethodParameterDescriptorArray_PDNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.PersistenceDelegateTest">
+        <hy:exclude id="testWriteObject_NormalMutatesToFalse" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_NullObject" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_Normal" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_NullClass" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_NullInstances" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInitialize_NullEncoder" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMutatesTo_Null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.PropertyChangeEventTest">
+        <hy:exclude id="testSerializationCompatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.PropertyChangeSupportTest">
+        <hy:exclude
+                id="testAddPropertyChangeListener_PropertyChangeListener_Normal"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testAddPropertyChangeListener_PropertyChangeListener_Null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testAddPropertyChangeListener_PropertyChangeListener_String_Normal"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testAddPropertyChangeListener_PropertyChangeListener_String_NullListener"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testAddPropertyChangeListener_PropertyChangeListener_String_NullProperty"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testAddPropertyChangeListener_PropertyChangeListener_String_Duplicate"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemovePropertyChangeListener_PropertyChangeListener_Normal"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemovePropertyChangeListener_PropertyChangeListener_Null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemovePropertyChangeListener_PropertyChangeListener_String_PropertyRegistered"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemovePropertyChangeListener_PropertyChangeListener_String_NullListener"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemovePropertyChangeListener_PropertyChangeListener_String_NullProperty"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetPropertyChangeListener_String_Normal"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetPropertyChangeListener_String_Null"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testHasListener_PropertyRegistered" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testHasListener_Null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFirePropertyChange_Object_NullProperty"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFirePropertyChange_Object_NullListener"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFirePropertyChange_PropertyChangeEvent_NullProperty"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFirePropertyChange_PropertyChangeEvent_NullListener"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFirePropertyChange_Boolean_NullProperty"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFirePropertyChange_Boolean_NullListener"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFirePropertyChange_Int_NullProperty"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFirePropertyChange_Int_NullListener"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerializationCompatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.PropertyDescriptorTest">
+        <hy:exclude id="testPropertyDescriptorStringClass" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPropertyDescriptorStringClass_PropertyNameInvalid"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPropertyDescriptorStringClass_ProtectedGetter"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPropertyDescriptorStringClassStringString"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testPropertyDescriptorStringClassStringString_ReadMethodNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testPropertyDescriptorStringClassStringString_ReadMethodInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testPropertyDescriptorStringClassStringString_WriteMethodNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testPropertyDescriptorStringClassStringString_WriteMethodEmpty"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testPropertyDescriptorStringClassStringString_WriteMethodInvalid"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPropertyDescriptorStringMethodMethod"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPropertyDescriptorStringMethodMethod_ReadMethodNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testPropertyDescriptorStringMethodMethod_WriteMethodNull"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetReadMethod_Invalid_returnVoid" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetBound_true" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetBound_false" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetConstrained_true" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetConstrained_false" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.PropertyEditorManagerTest">
+        <hy:exclude id="testGetEditorSearchPath_default" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetEditorSearchPath_null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBoolEditor_setAsText" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBoolEditor_setAsText_null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBoolEditor_setAsText_Invalid" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testByteEditor" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testByteEditor_null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testByteEditor_invalid" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testByteEditor_invalid2" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testDoubleEditor" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testDoubleEditor_SetAsText_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testDoubleEditor_SetAsText_Invalid" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFloatEditor" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFloatEditor_SetAsText_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFloatEditor_SetAsText_Invalid" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testLongEditor" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testLongEditor_SetAsText_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testLongEditor_SetAsText_Invalid" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testShortEditor" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testShortEditor_SetAsText_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testShortEditor_SetAsText_Invalid" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntegerEditor" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntegerEditor_SetAsText_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIntegerEditor_SetAsText_Invalid" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testStringEditor" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testStringEditor_SetAsText_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testStringEditor_SetAsText_SpecialChars"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.PropertyEditorSupportTest">
+        <hy:exclude id="testPropertyEditorSupport" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPropertyEditorSupportObject" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPropertyEditorSupportObject_null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAddPropertyChangeListener" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAddPropertyChangeListener_source_null"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAddPropertyChangeListener_null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemovePropertyChangeListener" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemovePropertyChangeListener_null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemovePropertyChangeListener_diff" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemovePropertyChangeListener_null_null"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetAsText" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetValue" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetValue_null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.PropertyVetoExceptionTest">
+        <hy:exclude id="testSerializablization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.StatementTest">
+        <hy:exclude id="testConstructor_Normal" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NullTarget" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_ArrayTarget" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NullMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NewMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_EmptyMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NullArguments" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testConstructor_NullArgument" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_NormalInstanceMethod" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_NullMethodName" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_OverloadedMethods" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_NormalConstructor" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_OverloadedConstructorsNull"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_AmbitiousStaticMethod" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_ClassForName" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_ArrayGet" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_ArrayInvalidSet" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_PrimitiveVSWrapper" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExecute_IntMethodNullParameter" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.VetoableChangeListenerProxyTest">
+        <hy:exclude id="testVetoableChangeListenerProxy" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.VetoableChangeSupportTest">
+        <hy:exclude
+                id="testAddVetoableChangeListenerStringVetoableChangeListener_null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testAddVetoableChangeListenerVetoableChangeListener_null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testAddVetoableChangeListenerVetoableChangeListener_Proxy"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFireVetoableChangePropertyChangeEvent_Veto"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFireVetoableChangePropertyChangeEvent_listener_null"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testFireVetoableChangeStringbooleanboolean_listener_null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testFireVetoableChangeStringbooleanboolean_listener_null_property"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerStringVetoableChangeListener_property"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerStringVetoableChangeListener_property_more"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerStringVetoableChangeListener_property_diff"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerStringVetoableChangeListener_listener_diff"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerStringVetoableChangeListener_listener_null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerStringVetoableChangeListener_propertyName_Null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerStringVetoableChangeListener_listener_null_null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerVetoableChangeListener_all_more_diff"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerVetoableChangeListener_all_null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testRemoveVetoableChangeListenerVetoableChangeListener_null_null"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.XMLDecoderTest">
+        <hy:exclude id="testGetExceptionListener" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_Integer" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_StringCodec" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_IntArray" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_PropertyDependency" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_NoChange" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_BornFriendChange" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_ManyChanges" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_StaticField" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_Owner" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadObject_Owner_WithWriteStatement"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetExceptionListener_CatchException"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testXMLDecoderInputStream" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testXMLDecoderInputStreamObject" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.XMLEncoderTest">
+        <hy:exclude id="testWriteObject_Null" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_Integer" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_StringCodec" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_IntArray" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_PropertyDependency" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_NoChange" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_BornFriendChange" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_ManyChanges" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_ManyChanges_2" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_SetOwner" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_SetOwnerWithWriteStatement"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testWriteObject_StaticField" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFlush" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.beancontext.BeanContextChildSupportTest">
+        <hy:exclude id="testAddPropertyChangeListener_NullParam"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAddVetoableChangeListener_NullParam"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testServiceAvailable" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testServiceRevoked" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetBeanContext" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetBeanContext_VetoedByListener" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetBeanContext_VetoedByValidateMethod"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_NoPeer" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_WithPeer" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="tests.api.java.beans.beancontext.BeanContextMembershipEventTest">
+        <hy:exclude id="testSerialization" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="tests.api.java.beans.beancontext.BeanContextServiceAvailableEventTest">
+        <hy:exclude id="testSerialization" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="tests.api.java.beans.beancontext.BeanContextServiceRevokedEventTest">
+        <hy:exclude id="testBeanContextServiceRevokedEvent_NullParam"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBeanContextServiceRevokedEvent" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetSourceAsBeanContextServices" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="tests.api.java.beans.beancontext.BeanContextServicesSupportTest">
+        <hy:exclude id="testAddServiceClassBeanContextServiceProvider_NullParam"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAddServiceClassBeanContextServiceProvider_Exist"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="testAddServiceClassBeanContextServiceProviderboolean_FalseParam"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testChildJustRemovedHook" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFireServiceRevokedClassboolean" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetCurrentServiceClasses" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetCurrentServiceSelectors_NullParam"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetCurrentServiceSelectors_NonExist"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetCurrentServiceSelectors" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetService_NullParam" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetService_NonChild" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetService_ThisContext" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetService_ParentContext" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testHasService_ParentService" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReleaseBeanContextResources" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReleaseService_WrongChildOrRequestor"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReleaseService" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRevokeService_ChildContext" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.beans.beancontext.BeanContextSupportTest">
+        <hy:exclude id="testAdd_NonBCC" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAdd_BCC" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAdd_BCP" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAdd_Exist" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAdd_Veto" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAddAll" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAddBeanContextMembershipListener" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testAvoidingGui_VisibleChild" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBcsChildren" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBcsPreDeserializationHook" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBcsPreSerializationHook" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testChildDeserializedHook" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testContains" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testContainsAll" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testContainsKey" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCopyChildren" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetChildBeanContextChild_Both" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetResource_NullParam" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetResource_NonChild" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetResource_NotExist" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetResource" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetResourceAsStream_NullParam" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetResourceAsStream_NonChild" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetResourceAsStream_NotExist" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetResourceAsStream" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInstantiateChild" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIsEmpty" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testIterator" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testNeedsGui_NoVisibleChild" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testNeedsGui_VisibilityChild" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testPropertyChange" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testReadChildren" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemoveBeanContextMembershipListener"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemoveObject_NonBCC" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemoveObject_BCC" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemoveObject_BCP" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemoveObject_BCP2" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemoveObject_NonExist" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemoveObject_Veto" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testRemoveObjectboolean" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetDesignTime" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetLocale_NullParam" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetLocale" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetLocale_Veto" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testToArray" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testToArrayObjectArray_WrongType" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testToArrayObjectArray_LesserLength" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testToArrayObjectArray_RightLength" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testToArrayObjectArray_GreaterLength" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testVetoableChange" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_NoPeer" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_Peer" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSerialization_Compatibility" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- Crypto module test exclusions -->
+
+
+    <!-- JNDI module test exclusions -->
+
+
+    <!-- Logging module test exclusions -->
+    <hy:type
+            id="org.apache.harmony.logging.tests.java.util.logging.FileHandlerTest">
+        <hy:exclude id="testSecurity" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFileSecurity" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInvalidProperty" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testInvalidParams" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSetOutputStream" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testFileHandlerString" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="org.apache.harmony.logging.tests.java.util.logging.LogManagerTest">
+        <hy:exclude id="testDefaultLoggerProperties" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetProperty" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="org.apache.harmony.logging.tests.java.util.logging.SocketHandlerTest">
+        <hy:exclude id="testPublish_Null" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- LUNI module test exclusions -->
+    <hy:type id="tests.api.java.io.InputStreamReaderTest">
+        <hy:exclude id="test_read" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.io.ObjectInputStreamTest">
+        <hy:exclude id="test_ConstructorLjava_io_InputStream_subtest0"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.io.ObjectOutputStreamTest">
+        <hy:exclude id="test_ConstructorLjava_io_OutputStream_subtest0"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_writeObject_NotSerializable" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.io.OutputStreamWriterTest">
+        <hy:exclude id="testSingleCharIO" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testBlockIO" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_close" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.io.PipedInputStreamTest">
+        <hy:exclude id="test_receive" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.lang.AssertionErrorTest">
+        <hy:exclude id="test_ObjectConstructor" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.lang.ClassTest">
+        <hy:exclude id="test_getResourceLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getResourceAsStreamLjava_lang_String"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.lang.ProcessTest">
+        <hy:exclude id="test_getOutputStream" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.lang.StringTest">
+        <hy:exclude id="test_concatLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getBytes" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getBytesLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.DatagramSocketTest">
+        <hy:exclude id="test_connectLjava_net_InetAddressI" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.HttpURLConnectionTest">
+        <hy:exclude id="test_getResponseCode" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getResponseMessage" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getHeaderFields" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_usingProxy" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.InetAddressTest">
+        <hy:exclude id="test_getHostName" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_toString" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.JarURLConnectionTest">
+        <hy:exclude id="test_getAttributes" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getJarEntry" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getMainAttributes" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.MulticastSocketTest">
+        <hy:exclude id="test_ConstructorI" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getInterface" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getNetworkInterface" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getTimeToLive" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getTTL" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_joinGroupLjava_net_InetAddress" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="test_joinGroupLjava_net_SocketAddressLjava_net_NetworkInterface"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_leaveGroupLjava_net_InetAddress" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="test_leaveGroupLjava_net_SocketAddressLjava_net_NetworkInterface"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_sendLjava_net_DatagramPacketB" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_setInterfaceLjava_net_InetAddress"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_setNetworkInterfaceLjava_net_NetworkInterface"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_setTimeToLiveI" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_setTTLB" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_setLoopbackModeZ" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_setReuseAddressZ" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.ServerSocketTest">
+        <hy:exclude id="test_toString" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.SocketImplTest">
+        <hy:exclude id="test_Constructor" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.SocketTest">
+        <hy:exclude
+                id="test_ConstructorLjava_lang_StringILjava_net_InetAddressI"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.URLClassLoaderTest">
+        <hy:exclude id="test_findResourcesLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_newInstance$Ljava_net_URL" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_findClassLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_findResourceLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.URLConnectionTest">
+        <hy:exclude id="test_getContent" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getContentLength" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getContentType" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getHeaderFieldI" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getHeaderFields" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getHeaderFieldKeyI" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getInputStream" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getOutputStream" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_guessContentTypeFromStreamLjava_io_InputStream"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.net.URLTest">
+        <hy:exclude
+                id="test_ConstructorLjava_lang_StringLjava_lang_StringLjava_lang_String"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_openStream" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getAuthority" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.util.CalendarTest">
+        <hy:exclude id="test_setII" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.util.LocaleTest">
+        <hy:exclude id="test_toString" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- Math module test exclusions -->
+
+
+    <!-- NIO module test exclusions -->
+
+
+    <!-- NIO_Char module test exclusions -->
+    <hy:type id="tests.api.java.nio.charset.ASCCharsetEncoderTest">
+        <hy:exclude id="testCanEncodeCharSequence" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMultiStepEncode" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEncodeCharBufferException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.CharsetEncoderTest">
+        <hy:exclude id="testEncodeCharBufferException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.CharsetEncoderTest">
+        <hy:exclude id="all" shouldfix="true">
+            <hy:reason>Failure - Exception in constructor</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.CharsetTest">
+        <hy:exclude id="testEncode_CharBuffer_Normal" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEncode_String_Normal" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.ConcreteCharsetTest">
+        <hy:exclude id="all" shouldfix="true">
+            <hy:reason>Failure - No public constructor</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.GBCharsetEncoderTest">
+        <hy:exclude id="testEncodeCharBufferException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMultiStepEncode" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.ISOCharsetEncoderTest">
+        <hy:exclude id="testCanEncodeCharSequence" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSpecificDefaultValue" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMultiStepEncode" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEncodeCharBufferException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.UTF16BECharsetEncoderTest">
+        <hy:exclude id="testSpecificDefaultValue" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEncodeCharBufferException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMultiStepEncode" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.UTF16CharsetDecoderTest">
+        <hy:exclude id="testMultiStepDecode" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.UTF16CharsetEncoderTest">
+        <hy:exclude id="testEncodeCharBufferException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMultiStepEncode" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.UTF16LECharsetEncoderTest">
+        <hy:exclude id="testSpecificDefaultValue" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testEncodeCharBufferException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMultiStepEncode" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.nio.charset.UTFCharsetEncoderTest">
+        <hy:exclude id="testEncodeCharBufferException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testMultiStepEncode" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- Prefs module test exclusions -->
+    <hy:type
+            id="org.apache.harmony.prefs.tests.java.util.prefs.AbstractPreferencesTest">
+        <hy:exclude id="testPutByteArray" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExportNode" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testExportSubtree" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="org.apache.harmony.prefs.tests.java.util.prefs.FilePreferencesImplTest">
+        <hy:exclude id="testPutGet" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testChildNodes" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testSecurityException" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="org.apache.harmony.prefs.tests.java.util.prefs.PreferencesTest">
+        <hy:exclude id="testImportPreferences" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- Regex module test exclusions -->
+
+
+    <!-- RMI module test exclusions -->
+
+
+    <!-- Security module test exclusions -->
+    <hy:type id="java.security.serialization.KeyPairTest">
+        <hy:exclude id="testSerialization02" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.AccessControllerTest">
+        <hy:exclude id="test_doPrivilegedLjava_security_PrivilegedAction"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.AlgorithmParameterGeneratorTest">
+        <hy:exclude id="test_initLjava_security_spec_AlgorithmParameterSpec"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="test_initLjava_security_spec_AlgorithmParameterSpecLjava_security_SecureRandom"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.AlgorithmParametersTest">
+        <hy:exclude id="test_getEncodedLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.KeyStoreTest">
+        <hy:exclude id="test_aliases" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_containsAliasLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getCertificateLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getCertificateAliasLjava_security_cert_Certificate"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getCertificateChainLjava_lang_String"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getInstanceLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getInstanceLjava_lang_StringLjava_lang_String"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getKeyLjava_lang_String$C" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getProvider" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getType" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_isCertificateEntryLjava_lang_String"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_isKeyEntryLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_loadLjava_io_InputStream$C" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="test_setCertificateEntryLjava_lang_StringLjava_security_cert_Certificate"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="test_setKeyEntryLjava_lang_String$B$Ljava_security_cert_Certificate"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="test_setKeyEntryLjava_lang_StringLjava_security_Key$C$Ljava_security_cert_Certificate"
+                shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_size" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.PermissionCollectionTest">
+        <hy:exclude id="test_impliesLjava_security_Permission" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.SecureRandomTest">
+        <hy:exclude id="test_getInstanceLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getInstanceLjava_lang_StringLjava_lang_String"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.SecurityTest">
+        <hy:exclude id="test_addProviderLjava_security_Provider"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getProvidersLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getProvidersLjava_util_Map" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.cert.CertificateFactoryTest">
+        <hy:exclude id="test_generateCertificateLjava_io_InputStream"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.cert.X509CertificateTest">
+        <hy:exclude id="test_getExtensionValueLjava_lang_String"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.cert.X509CRLEntryTest">
+        <hy:exclude id="test_getExtensionValueLjava_lang_String"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="tests.api.java.security.cert.X509CRLTest">
+        <hy:exclude id="test_getExtensionValueLjava_lang_String"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- SQL module test exclusions -->
+    <hy:type id="org.apache.harmony.sql.tests.java.sql.ArrayTest">
+        <hy:exclude id="all" shouldfix="true">
+            <hy:reason>This class contains no test methods</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- Text module test exclusions -->
+    <hy:type
+            id="org.apache.harmony.text.tests.java.text.AttributedCharacterIteratorTest">
+        <hy:exclude
+                id="test_getRunLimitLjava_text_AttributedCharacterIterator$Attribute"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.text.tests.java.text.ChoiceFormatTest">
+        <hy:exclude id="test_toPattern" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.text.tests.java.text.CollationKeyTest">
+        <hy:exclude id="test_toByteArray" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.text.tests.java.text.CollatorTest">
+        <hy:exclude id="test_getAvailableLocales" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getDecomposition" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_setDecompositionI" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type
+            id="org.apache.harmony.text.tests.java.text.DecimalFormatSymbolsTest">
+        <hy:exclude id="test_RIHarmony_compatible" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.text.tests.java.text.DecimalFormatTest">
+        <hy:exclude
+                id="test_formatDLjava_lang_StringBufferLjava_text_FieldPosition"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude
+                id="test_formatJLjava_lang_StringBufferLjava_text_FieldPosition"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_formatToCharacterIteratorLjava_lang_Object"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getCurrency" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_parseLjava_lang_StringLjava_text_ParsePosition"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.text.tests.java.text.MessageFormatTest">
+        <hy:exclude id="test_applyPatternLjava_lang_String" shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_formatToCharacterIteratorLjava_lang_Object"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="org.apache.harmony.text.tests.java.text.NumberFormatTest">
+        <hy:exclude
+                id="test_formatLjava_lang_ObjectLjava_lang_StringBufferLjava_text_FieldPosition"
+                shouldfix="true">
+            <hy:reason>Undiagnosed failure</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="test_getCurrency" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+
+    <!-- X-Net module test exclusions -->
+    <hy:type id="javax.net.ServerSocketFactoryTest">
+        <hy:exclude id="testGetDefault" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.net.SocketFactoryTest">
+        <hy:exclude id="testGetDefault" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.net.ssl.DefaultSSLServerSocketFactoryTest">
+        <hy:exclude id="testCreateServerSocketint" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateServerSocketintint" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateServerSocketintintInetAddress"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetDefaultCipherSuites" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetSupportedCipherSuites" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.net.ssl.DefaultSSLSocketFactoryTest">
+        <hy:exclude id="testCreateSocketStringint" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateSocketStringintInetAddressint"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateSocketInetAddressint" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateSocketInetAddressintInetAddressint"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetDefaultCipherSuites" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetSupportedCipherSuites" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testCreateSocketSocketStringintboolean"
+                    shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.net.ssl.HttpsURLConnectionTest">
+        <hy:exclude id="testGetDefaultHostnameVerifier" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGetHostnameVerifier" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.net.ssl.SSLServerSocketFactoryTest">
+        <hy:exclude id="testGetDefault" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.net.ssl.SSLSocketFactoryTest">
+        <hy:exclude id="testGetDefault" shouldfix="true">
+            <hy:reason>Undiagnosed error</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.net.ssl.serialization.HandshakeCompletedEventTest">
+        <hy:exclude id="testSelf" shouldfix="true">
+            <hy:reason>This test requires a JSSE provider</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGolden" shouldfix="true">
+            <hy:reason>This test requires a JSSE provider</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+    <hy:type id="javax.net.ssl.serialization.SSLSessionBindingEventTest">
+        <hy:exclude id="testSelf" shouldfix="true">
+            <hy:reason>This test requires a JSSE provider</hy:reason>
+        </hy:exclude>
+        <hy:exclude id="testGolden" shouldfix="true">
+            <hy:reason>This test requires a JSSE provider</hy:reason>
+        </hy:exclude>
+    </hy:type>
+
+</hy:suite>    
diff --git a/support/src/test/resources/hyts_Foo.c b/support/src/test/resources/hyts_Foo.c
new file mode 100644
index 0000000..907de59
--- /dev/null
+++ b/support/src/test/resources/hyts_Foo.c
@@ -0,0 +1 @@
+/* Some random file for it to look at. */
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/Broken_entry.jar b/support/src/test/resources/tests/resources/Broken_entry.jar
new file mode 100644
index 0000000..e6e7927
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Broken_entry.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Broken_manifest.jar b/support/src/test/resources/tests/resources/Broken_manifest.jar
new file mode 100644
index 0000000..4c3ff31
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Broken_manifest.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Created_by_1_4.jar b/support/src/test/resources/tests/resources/Created_by_1_4.jar
new file mode 100644
index 0000000..1fe7947
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Created_by_1_4.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/EmptyEntries_signed.jar b/support/src/test/resources/tests/resources/EmptyEntries_signed.jar
new file mode 100644
index 0000000..237d244
--- /dev/null
+++ b/support/src/test/resources/tests/resources/EmptyEntries_signed.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Harmony.GIF b/support/src/test/resources/tests/resources/Harmony.GIF
new file mode 100644
index 0000000..be2dc56
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Harmony.GIF
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Inserted_Entry_Manifest.jar b/support/src/test/resources/tests/resources/Inserted_Entry_Manifest.jar
new file mode 100644
index 0000000..154d8d6
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Inserted_Entry_Manifest.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Inserted_Entry_Manifest_with_DigestCode.jar b/support/src/test/resources/tests/resources/Inserted_Entry_Manifest_with_DigestCode.jar
new file mode 100644
index 0000000..a94ae49
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Inserted_Entry_Manifest_with_DigestCode.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Integrate.jar b/support/src/test/resources/tests/resources/Integrate.jar
new file mode 100644
index 0000000..16e9c55
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Integrate.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_11.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_11.jar
new file mode 100644
index 0000000..19cf5f2
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_11.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_12.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_12.jar
new file mode 100644
index 0000000..236659b
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_12.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_13.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_13.jar
new file mode 100644
index 0000000..9ea6806
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_13.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_14.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_14.jar
new file mode 100644
index 0000000..d8bc44b
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_14.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_21.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_21.jar
new file mode 100644
index 0000000..c25d4bf
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_21.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_22-new.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_22-new.jar
new file mode 100644
index 0000000..542c22a
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_22-new.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_22.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_22.jar
new file mode 100644
index 0000000..84c7af0
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_22.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_23.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_23.jar
new file mode 100644
index 0000000..a932052
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_23.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_31.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_31.jar
new file mode 100644
index 0000000..ab69696
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_31.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_32.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_32.jar
new file mode 100644
index 0000000..12de6bb
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_32.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_33.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_33.jar
new file mode 100644
index 0000000..086e494
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_33.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_41.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_41.jar
new file mode 100644
index 0000000..fb71bf8
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_41.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/JarIndex/hyts_42.jar b/support/src/test/resources/tests/resources/JarIndex/hyts_42.jar
new file mode 100644
index 0000000..06a35cd
--- /dev/null
+++ b/support/src/test/resources/tests/resources/JarIndex/hyts_42.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Modified_Class.jar b/support/src/test/resources/tests/resources/Modified_Class.jar
new file mode 100644
index 0000000..d8113c7
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Modified_Class.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Modified_Manifest_EntryAttributes.jar b/support/src/test/resources/tests/resources/Modified_Manifest_EntryAttributes.jar
new file mode 100644
index 0000000..bd1dbb1
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Modified_Manifest_EntryAttributes.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Modified_Manifest_MainAttributes.jar b/support/src/test/resources/tests/resources/Modified_Manifest_MainAttributes.jar
new file mode 100644
index 0000000..5bc60e6
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Modified_Manifest_MainAttributes.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Modified_SF_EntryAttributes.jar b/support/src/test/resources/tests/resources/Modified_SF_EntryAttributes.jar
new file mode 100644
index 0000000..7b76694
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Modified_SF_EntryAttributes.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Package/hyts_all_attributes.jar b/support/src/test/resources/tests/resources/Package/hyts_all_attributes.jar
new file mode 100644
index 0000000..bde3f4d
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Package/hyts_all_attributes.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Package/hyts_c.jar b/support/src/test/resources/tests/resources/Package/hyts_c.jar
new file mode 100644
index 0000000..111f73c
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Package/hyts_c.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Package/hyts_no_attributes.jar b/support/src/test/resources/tests/resources/Package/hyts_no_attributes.jar
new file mode 100644
index 0000000..1879acb
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Package/hyts_no_attributes.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Package/hyts_no_entry.jar b/support/src/test/resources/tests/resources/Package/hyts_no_entry.jar
new file mode 100644
index 0000000..66090a5
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Package/hyts_no_entry.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Package/hyts_pq.jar b/support/src/test/resources/tests/resources/Package/hyts_pq.jar
new file mode 100644
index 0000000..5919f6c
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Package/hyts_pq.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/Package/hyts_some_attributes.jar b/support/src/test/resources/tests/resources/Package/hyts_some_attributes.jar
new file mode 100644
index 0000000..95c87a8
--- /dev/null
+++ b/support/src/test/resources/tests/resources/Package/hyts_some_attributes.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/ServiceLoader/hyts_services.jar b/support/src/test/resources/tests/resources/ServiceLoader/hyts_services.jar
new file mode 100644
index 0000000..12503a6
--- /dev/null
+++ b/support/src/test/resources/tests/resources/ServiceLoader/hyts_services.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/ServiceLoader/hyts_services2.jar b/support/src/test/resources/tests/resources/ServiceLoader/hyts_services2.jar
new file mode 100644
index 0000000..a7a754a
--- /dev/null
+++ b/support/src/test/resources/tests/resources/ServiceLoader/hyts_services2.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/TestCodeSigners.jar b/support/src/test/resources/tests/resources/TestCodeSigners.jar
new file mode 100644
index 0000000..a4c42aa
--- /dev/null
+++ b/support/src/test/resources/tests/resources/TestCodeSigners.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_Bar.ser b/support/src/test/resources/tests/resources/hyts_Bar.ser
new file mode 100644
index 0000000..2802528
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_Bar.ser
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_Foo.ser b/support/src/test/resources/tests/resources/hyts_Foo.ser
new file mode 100644
index 0000000..9f511ac
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_Foo.ser
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_PropertiesTest.properties b/support/src/test/resources/tests/resources/hyts_PropertiesTest.properties
new file mode 100644
index 0000000..6c1b950
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_PropertiesTest.properties
@@ -0,0 +1,29 @@
+
+
+    
+    		
+   \ \r \n \t \f
+   
+            					
+! dshfjklahfjkldashgjl;as
+     #jdfagdfjagkdjfghksdajfd
+     
+!!properties
+
+a=a
+b bb as,dn   
+c\r\ \t\nu =:: cu
+bu= b\
+		u
+d=d\r\ne=e
+f   :f\
+f\
+			f
+g		g
+h\u0020h
+\   i=i
+j=\   j
+space=\   c
+
+dblbackslash=\\
+                        
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/hyts_ZipFile.zip b/support/src/test/resources/tests/resources/hyts_ZipFile.zip
new file mode 100644
index 0000000..f9cd6ed
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_ZipFile.zip
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_att.jar b/support/src/test/resources/tests/resources/hyts_att.jar
new file mode 100644
index 0000000..7f4530c
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_att.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_available.tst b/support/src/test/resources/tests/resources/hyts_available.tst
new file mode 100644
index 0000000..d67b2f4
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_available.tst
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_checkInput.txt b/support/src/test/resources/tests/resources/hyts_checkInput.txt
new file mode 100644
index 0000000..6d49d33
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_checkInput.txt
@@ -0,0 +1,4 @@
+	crc.reset();

+	crc.update(1);

+	//System.out.print("value of crc"+crc.getValue()); 

+	
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/hyts_compDiction.bin b/support/src/test/resources/tests/resources/hyts_compDiction.bin
new file mode 100644
index 0000000..f0478c8
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_compDiction.bin
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_compressD.bin b/support/src/test/resources/tests/resources/hyts_compressD.bin
new file mode 100644
index 0000000..36c89f2
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_compressD.bin
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_construOD.bin b/support/src/test/resources/tests/resources/hyts_construOD.bin
new file mode 100644
index 0000000..035d12e
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_construOD.bin
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_construODI.bin b/support/src/test/resources/tests/resources/hyts_construODI.bin
new file mode 100644
index 0000000..1e5d284
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_construODI.bin
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_htmltest.html b/support/src/test/resources/tests/resources/hyts_htmltest.html
new file mode 100644
index 0000000..c7795c2
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_htmltest.html
@@ -0,0 +1,63 @@
+<HTML>
+<TITLE>Test HTML Document</TITLE>
+
+<BODY>
+<H2>Test HTML Document</H2>
+This file is used by the <CODE>Test_java_net_URL.test_getContent()</CODE>.
+<p>
+    It contains the string
+    <quote>A Seemingly Non Important String</quote>
+    . Which is
+    looked for in the testcase.
+<P>
+<UL>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+    <LI>A Line of text</LI>
+</UL>
+<p>
+    A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph. A bunch of text representing part of a
+    paragraph. A bunch of text representing part of a paragraph. A bunch of text
+    representing part of a paragraph.
+
+<p>
+
+    The End.
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/hyts_mainClass.ser b/support/src/test/resources/tests/resources/hyts_mainClass.ser
new file mode 100644
index 0000000..0421ba9
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_mainClass.ser
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_manifest1.jar b/support/src/test/resources/tests/resources/hyts_manifest1.jar
new file mode 100644
index 0000000..fb292b2
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_manifest1.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_missingclass.ser b/support/src/test/resources/tests/resources/hyts_missingclass.ser
new file mode 100644
index 0000000..0a71403
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_missingclass.ser
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_patch.jar b/support/src/test/resources/tests/resources/hyts_patch.jar
new file mode 100644
index 0000000..f3c51d0
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_patch.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_patch2.jar b/support/src/test/resources/tests/resources/hyts_patch2.jar
new file mode 100644
index 0000000..c26f9e7
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_patch2.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_resource.properties b/support/src/test/resources/tests/resources/hyts_resource.properties
new file mode 100644
index 0000000..baf5762
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_resource.properties
@@ -0,0 +1,2 @@
+property=parent
+propertyInSystemParent=valueInSystemParent
diff --git a/support/src/test/resources/tests/resources/hyts_security.jar b/support/src/test/resources/tests/resources/hyts_security.jar
new file mode 100644
index 0000000..abef675
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_security.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/hyts_signed.jar b/support/src/test/resources/tests/resources/hyts_signed.jar
new file mode 100644
index 0000000..8ea8489
--- /dev/null
+++ b/support/src/test/resources/tests/resources/hyts_signed.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/manifest/hyts_MANIFEST.MF b/support/src/test/resources/tests/resources/manifest/hyts_MANIFEST.MF
new file mode 100644
index 0000000..2402bca
--- /dev/null
+++ b/support/src/test/resources/tests/resources/manifest/hyts_MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-Name: ClientSupport
+Bundle-Description: Provides SessionService, AuthenticationService. Extends RegistryService.
+Bundle-Activator: com.ibm.ive.eccomm.client.support.ClientSupportActivator
+Import-Package: com.ibm.ive.eccomm.client.services.log,
+ com.ibm.ive.eccomm.client.services.registry,
+ com.ibm.ive.eccomm.service.registry; specification-version=1.0.0,
+ com.ibm.ive.eccomm.service.session; specification-version=1.0.0,
+ com.ibm.ive.eccomm.service.framework; specification-version=1.2.0,
+ org.osgi.framework; specification-version=1.0.0,
+ org.osgi.service.log; specification-version=1.0.0,
+ com.ibm.ive.eccomm.flash; specification-version=1.2.0,
+ com.ibm.ive.eccomm.client.xml,
+ com.ibm.ive.eccomm.client.http.common,
+ com.ibm.ive.eccomm.client.http.client
+Import-Service: org.osgi.service.log.LogReaderService
+ org.osgi.service.log.LogService,
+ com.ibm.ive.eccomm.service.registry.RegistryService
+Export-Package: com.ibm.ive.eccomm.client.services.authentication; specification-version=1.0.0,
+ com.ibm.ive.eccomm.service.authentication; specification-version=1.0.0,
+ com.ibm.ive.eccomm.common; specification-version=1.0.0,
+ com.ibm.ive.eccomm.client.services.registry.store; specification-version=1.0.0
+Export-Service: com.ibm.ive.eccomm.service.authentication.AuthenticationService,
+ com.ibm.ive.eccomm.service.session.SessionService
+Bundle-Vendor: IBM
+Bundle-Version: 1.2.0
diff --git a/support/src/test/resources/tests/resources/morestuff/hyts_patch.jar b/support/src/test/resources/tests/resources/morestuff/hyts_patch.jar
new file mode 100644
index 0000000..f3c51d0
--- /dev/null
+++ b/support/src/test/resources/tests/resources/morestuff/hyts_patch.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/morestuff/hyts_patch2.jar b/support/src/test/resources/tests/resources/morestuff/hyts_patch2.jar
new file mode 100644
index 0000000..c26f9e7
--- /dev/null
+++ b/support/src/test/resources/tests/resources/morestuff/hyts_patch2.jar
Binary files differ
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en.properties b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en.properties
new file mode 100644
index 0000000..40b8caf
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en.properties
@@ -0,0 +1,2 @@
+property=en_resource
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US.java b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US.java
new file mode 100644
index 0000000..1913879
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US.java
@@ -0,0 +1,31 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.resources.subfolder.tests.norootresources;
+
+public class hyts_resource_en_US extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent3", "enUSValue3" },
+                { "subParent4", "enUSValue4" },
+                { "subChild1", "enUSChildValue1" },
+                { "subChild2", "enUSChildValue2" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US.properties b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US.properties
new file mode 100644
index 0000000..06c99f6
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US.properties
@@ -0,0 +1,2 @@
+property=en_US_resource
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US_VAR.java b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US_VAR.java
new file mode 100644
index 0000000..1c75ec8
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_en_US_VAR.java
@@ -0,0 +1,31 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.resources.subfolder.tests.norootresources;
+
+public class hyts_resource_en_US_VAR extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent4", "enUSVARValue4" },
+                { "subChild1", "enUSVARChildValue1" },
+                { "subChild2", "enUSVARChildValue2" },
+                { "subChild3", "enUSVARChildValue3" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr.java b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr.java
new file mode 100644
index 0000000..d049d7b
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.resources.subfolder.tests.norootresources;
+
+public class hyts_resource_fr extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent2", "frValue2" },
+                { "subParent3", "frValue3" }, { "subParent4", "frValue4" },
+                { "subChild1", "frChildValue1" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr.properties b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr.properties
new file mode 100644
index 0000000..447f06c
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr.properties
@@ -0,0 +1,3 @@
+property=fr_resource
+propertyInFR=valueInFR
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR.java b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR.java
new file mode 100644
index 0000000..ae11beb
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR.java
@@ -0,0 +1,31 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.resources.subfolder.tests.norootresources;
+
+public class hyts_resource_fr_FR extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent3", "frFRValue3" },
+                { "subParent4", "frFRValue4" },
+                { "subChild1", "frFRChildValue1" },
+                { "subChild2", "frFRChildValue2" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR.properties b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR.properties
new file mode 100644
index 0000000..0ac2c73
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR.properties
@@ -0,0 +1,3 @@
+property=fr_FR_resource
+propertyInFRFR=valueInFRFR
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR_VAR.java b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR_VAR.java
new file mode 100644
index 0000000..958c5ff
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR_VAR.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package tests.resources.subfolder.tests.norootresources;
+
+public class hyts_resource_fr_FR_VAR extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent4", "frFRVARValue4" },
+                { "subChild1", "frFRVARChildValue1" },
+                { "subChild2", "frFRVARChildValue2" },
+                { "subChild3", "frFRVARChildValue3" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR_VAR.properties b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR_VAR.properties
new file mode 100644
index 0000000..dd76478
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/norootresources/hyts_resource_fr_FR_VAR.properties
@@ -0,0 +1,2 @@
+property=fr_FR_VAR_resource
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource.java b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource.java
new file mode 100644
index 0000000..afa3e6e
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource.java
@@ -0,0 +1,31 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.resources.subfolder.tests.resources;
+
+public class hyts_resource extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent1", "subParentValue1" },
+                { "subParent2", "subParentValue2" },
+                { "subParent3", "subParentValue3" },
+                { "subParent4", "subParentValue4" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource.properties b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource.properties
new file mode 100644
index 0000000..eae054e
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource.properties
@@ -0,0 +1,3 @@
+property=resource
+propertyInURLParent=valueInURLParent
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en.properties b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en.properties
new file mode 100644
index 0000000..40b8caf
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en.properties
@@ -0,0 +1,2 @@
+property=en_resource
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US.java b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US.java
new file mode 100644
index 0000000..16c6e08
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US.java
@@ -0,0 +1,31 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.resources.subfolder.tests.resources;
+
+public class hyts_resource_en_US extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent3", "enUSValue3" },
+                { "subParent4", "enUSValue4" },
+                { "subChild1", "enUSChildValue1" },
+                { "subChild2", "enUSChildValue2" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US.properties b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US.properties
new file mode 100644
index 0000000..06c99f6
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US.properties
@@ -0,0 +1,2 @@
+property=en_US_resource
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US_VAR.java b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US_VAR.java
new file mode 100644
index 0000000..aba4675
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_en_US_VAR.java
@@ -0,0 +1,31 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.resources.subfolder.tests.resources;
+
+public class hyts_resource_en_US_VAR extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent4", "enUSVARValue4" },
+                { "subChild1", "enUSVARChildValue1" },
+                { "subChild2", "enUSVARChildValue2" },
+                { "subChild3", "enUSVARChildValue3" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr.java b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr.java
new file mode 100644
index 0000000..adac070
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.resources.subfolder.tests.resources;
+
+public class hyts_resource_fr extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent2", "frValue2" },
+                { "subParent3", "frValue3" }, { "subParent4", "frValue4" },
+                { "subChild1", "frChildValue1" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr.properties b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr.properties
new file mode 100644
index 0000000..447f06c
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr.properties
@@ -0,0 +1,3 @@
+property=fr_resource
+propertyInFR=valueInFR
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR.properties b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR.properties
new file mode 100644
index 0000000..0ac2c73
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR.properties
@@ -0,0 +1,3 @@
+property=fr_FR_resource
+propertyInFRFR=valueInFRFR
+ 
\ No newline at end of file
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR_VAR.java b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR_VAR.java
new file mode 100644
index 0000000..5d48aa3
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR_VAR.java
@@ -0,0 +1,30 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package tests.resources.subfolder.tests.resources;
+
+public class hyts_resource_fr_FR_VAR extends java.util.ListResourceBundle {
+
+    @Override
+    protected Object[][] getContents() {
+        Object[][] contents = { { "subParent4", "frFRVARValue4" },
+                { "subChild1", "frFRVARChildValue1" },
+                { "subChild2", "frFRVARChildValue2" },
+                { "subChild3", "frFRVARChildValue3" }, };
+        return contents;
+    }
+
+}
diff --git a/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR_VAR.properties b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR_VAR.properties
new file mode 100644
index 0000000..dd76478
--- /dev/null
+++ b/support/src/test/resources/tests/resources/subfolder/tests/resources/hyts_resource_fr_FR_VAR.properties
@@ -0,0 +1,2 @@
+property=fr_FR_VAR_resource
+ 
\ No newline at end of file