You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/08/08 17:57:05 UTC

[15/17] incubator-freemarker git commit: Renamed XxxUtil classes to XxxUtils, as this convention is more widespread nowadays.

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java
index e9084c9..495a72e 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java
@@ -38,8 +38,8 @@ import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.model.TemplateNumberModel;
 import org.apache.freemarker.core.model.WrapperTemplateModel;
 import org.apache.freemarker.core.model.impl.RationalNumber;
-import org.apache.freemarker.core.util._StringUtil;
-import org.apache.freemarker.test.TestUtil;
+import org.apache.freemarker.core.util._StringUtils;
+import org.apache.freemarker.test.TestUtils;
 
 public class OverloadedMethods2 {
 
@@ -321,80 +321,80 @@ public class OverloadedMethods2 {
     }
 
     public String varargs1(String s, int... xs) {
-        return "varargs1(String s = " + _StringUtil.jQuote(s) + ", int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs1(String s = " + _StringUtils.jQuote(s) + ", int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs1(String s, double... xs) {
-        return "varargs1(String s = " + _StringUtil.jQuote(s) + ", double... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs1(String s = " + _StringUtils.jQuote(s) + ", double... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs1(String s, Object... xs) {
-        return "varargs1(String s = " + _StringUtil.jQuote(s) + ", Object... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs1(String s = " + _StringUtils.jQuote(s) + ", Object... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs1(Object s, Object... xs) {
-        return "varargs1(Object s = " + s + ", Object... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs1(Object s = " + s + ", Object... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs2(int... xs) {
-        return "varargs2(int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs2(int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs2(double... xs) {
-        return "varargs2(double... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs2(double... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs3(String... xs) {
-        return "varargs3(String... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs3(String... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs3(Comparable... xs) {
-        return "varargs3(Comparable... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs3(Comparable... xs = " + TestUtils.arrayToString(xs) + ")";
     }
     
     public String varargs3(Object... xs) {
-        return "varargs3(Object... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs3(Object... xs = " + TestUtils.arrayToString(xs) + ")";
     }
     
     public String varargs4(Integer... xs) {
-        return "varargs4(Integer... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs4(Integer... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs4(int... xs) {
-        return "varargs4(int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs4(int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs5(int... xs) {
-        return "varargs5(int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs5(int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
     
     public String varargs5(int a1, int... xs) {
-        return "varargs5(int a1 = " + a1 + ", int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs5(int a1 = " + a1 + ", int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
     
     public String varargs5(int a1, int a2, int... xs) {
-        return "varargs5(int a1 = " + a1 + ", int a2 = " + a2 + ", int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs5(int a1 = " + a1 + ", int a2 = " + a2 + ", int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs5(int a1, int a2, int a3, int... xs) {
         return "varargs5(int a1 = " + a1 + ", int a2 = " + a2 + ", int a3 = " + a3
-                + ", int... xs = " + TestUtil.arrayToString(xs) + ")";
+                + ", int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
 
     public String varargs6(String a1, int... xs) {
-        return "varargs6(String a1 = " + a1 + ", int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs6(String a1 = " + a1 + ", int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
     
     public String varargs6(Object a1, int a2, int... xs) {
-        return "varargs6(Object a1 = " + a1 + ", int a2 = " + a2 + ", int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs6(Object a1 = " + a1 + ", int a2 = " + a2 + ", int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
     
     public String varargs7(int... xs) {
-        return "varargs7(int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs7(int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
     
     public String varargs7(short a1, int... xs) {
-        return "varargs7(short a1 = " + a1 + ", int... xs = " + TestUtil.arrayToString(xs) + ")";
+        return "varargs7(short a1 = " + a1 + ", int... xs = " + TestUtils.arrayToString(xs) + ")";
     }
     
     public String mNullAmbiguous(String s) {
@@ -430,11 +430,11 @@ public class OverloadedMethods2 {
     }
     
     public String mVarargsIgnoredTail(int i, double... ds) {
-        return "mVarargsIgnoredTail(int i = " + i + ", double... ds = " + TestUtil.arrayToString(ds) + ")";
+        return "mVarargsIgnoredTail(int i = " + i + ", double... ds = " + TestUtils.arrayToString(ds) + ")";
     }
     
     public String mVarargsIgnoredTail(int... is) {
-        return "mVarargsIgnoredTail(int... is = " + TestUtil.arrayToString(is) + ")";
+        return "mVarargsIgnoredTail(int... is = " + TestUtils.arrayToString(is) + ")";
     }
     
     public String mLowRankWins(int x, int y, Object o) {
@@ -473,19 +473,19 @@ public class OverloadedMethods2 {
     }
 
     public String mSeqToArrayNonOverloaded(String[] items, String s) {
-        return "mSeqToArrayNonOverloaded(String[] " + TestUtil.arrayToString(items) + ", String " + s + ")";
+        return "mSeqToArrayNonOverloaded(String[] " + TestUtils.arrayToString(items) + ", String " + s + ")";
     }
     
     public String mSeqToArrayGoodHint(String[] items, String s) {
-        return "mSeqToArrayGoodHint(String[] " + TestUtil.arrayToString(items) + ", String " + s + ")";
+        return "mSeqToArrayGoodHint(String[] " + TestUtils.arrayToString(items) + ", String " + s + ")";
     }
 
     public String mSeqToArrayGoodHint(String[] items, int i) {
-        return "mSeqToArrayGoodHint(String[] " + TestUtil.arrayToString(items) + ", int " + i + ")";
+        return "mSeqToArrayGoodHint(String[] " + TestUtils.arrayToString(items) + ", int " + i + ")";
     }
 
     public String mSeqToArrayGoodHint2(String[] items, String s) {
-        return "mSeqToArrayGoodHint2(String[] " + TestUtil.arrayToString(items) + ", String " + s + ")";
+        return "mSeqToArrayGoodHint2(String[] " + TestUtils.arrayToString(items) + ", String " + s + ")";
     }
 
     public String mSeqToArrayGoodHint2(String item) {
@@ -493,7 +493,7 @@ public class OverloadedMethods2 {
     }
     
     public String mSeqToArrayPoorHint(String[] items, String s) {
-        return "mSeqToArrayPoorHint(String[] " + TestUtil.arrayToString(items) + ", String " + s + ")";
+        return "mSeqToArrayPoorHint(String[] " + TestUtils.arrayToString(items) + ", String " + s + ")";
     }
 
     public String mSeqToArrayPoorHint(String item, int i) {
@@ -501,7 +501,7 @@ public class OverloadedMethods2 {
     }
 
     public String mSeqToArrayPoorHint2(String[] items) {
-        return "mSeqToArrayPoorHint2(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mSeqToArrayPoorHint2(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mSeqToArrayPoorHint2(String item) {
@@ -509,43 +509,43 @@ public class OverloadedMethods2 {
     }
     
     public String mSeqToArrayPoorHint3(String[] items) {
-        return "mSeqToArrayPoorHint3(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mSeqToArrayPoorHint3(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mSeqToArrayPoorHint3(int[] items) {
-        return "mSeqToArrayPoorHint3(int[] " + TestUtil.arrayToString(items) + ")";
+        return "mSeqToArrayPoorHint3(int[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVsListPreference(String[] items) {
-        return "mStringArrayVsListPreference(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVsListPreference(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVsListPreference(List items) {
-        return "mStringArrayVsListPreference(List " + TestUtil.listToString(items) + ")";
+        return "mStringArrayVsListPreference(List " + TestUtils.listToString(items) + ")";
     }
 
     public String mStringArrayVsObjectArrayPreference(String[] items) {
-        return "mStringArrayVsObjectArrayPreference(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVsObjectArrayPreference(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVsObjectArrayPreference(Object[] items) {
-        return "mStringArrayVsObjectArrayPreference(Object[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVsObjectArrayPreference(Object[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mIntArrayVsIntegerArrayPreference(int[] items) {
-        return "mIntArrayVsIntegerArrayPreference(int[] " + TestUtil.arrayToString(items) + ")";
+        return "mIntArrayVsIntegerArrayPreference(int[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mIntArrayVsIntegerArrayPreference(Integer[] items) {
-        return "mIntArrayVsIntegerArrayPreference(Integer[] " + TestUtil.arrayToString(items) + ")";
+        return "mIntArrayVsIntegerArrayPreference(Integer[] " + TestUtils.arrayToString(items) + ")";
     }
     
     public String mIntArrayNonOverloaded(int[] items) {
-        return "mIntArrayNonOverloaded(int[] " + TestUtil.arrayToString(items) + ")";
+        return "mIntArrayNonOverloaded(int[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mIntegerArrayNonOverloaded(Integer[] items) {
-        return "mIntegerArrayNonOverloaded(Integer[] " + TestUtil.arrayToString(items) + ")";
+        return "mIntegerArrayNonOverloaded(Integer[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mIntegerListNonOverloaded(List<Integer> items) {
@@ -557,7 +557,7 @@ public class OverloadedMethods2 {
     }
 
     public String mStringArrayNonOverloaded(String[] items) {
-        return "mStringArrayNonOverloaded(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayNonOverloaded(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mObjectListNonOverloaded(List<Object> items) {
@@ -565,11 +565,11 @@ public class OverloadedMethods2 {
     }
 
     public String mObjectArrayNonOverloaded(Object[] items) {
-        return "mObjectArrayNonOverloaded(Object[] " + TestUtil.arrayToString(items) + ")";
+        return "mObjectArrayNonOverloaded(Object[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mIntegerArrayOverloaded(Integer[] items, int i) {
-        return "mIntegerArrayOverloaded(Integer[] " + TestUtil.arrayToString(items) + ", int " + i + ")";
+        return "mIntegerArrayOverloaded(Integer[] " + TestUtils.arrayToString(items) + ", int " + i + ")";
     }
 
     public String mIntegerArrayOverloaded(Object obj, boolean b) {
@@ -577,7 +577,7 @@ public class OverloadedMethods2 {
     }
 
     public String mStringArrayOverloaded(String[] items, int i) {
-        return "mStringArrayOverloaded(String[] " + TestUtil.arrayToString(items) + ", int " + i + ")";
+        return "mStringArrayOverloaded(String[] " + TestUtils.arrayToString(items) + ", int " + i + ")";
     }
 
     public String mStringArrayOverloaded(Object obj, boolean b) {
@@ -585,11 +585,11 @@ public class OverloadedMethods2 {
     }
 
     public String mCharArrayOverloaded(char[] items, int i) {
-        return "mCharArrayOverloaded(char[] " + TestUtil.arrayToString(items) + ", int " + i + ")";
+        return "mCharArrayOverloaded(char[] " + TestUtils.arrayToString(items) + ", int " + i + ")";
     }
 
     public String mCharArrayOverloaded(Character[] items, String s) {
-        return "mCharArrayOverloaded(Character[] " + TestUtil.arrayToString(items) + ", String " + s + ")";
+        return "mCharArrayOverloaded(Character[] " + TestUtils.arrayToString(items) + ", String " + s + ")";
     }
     
     public String mCharArrayOverloaded(Object obj, boolean b) {
@@ -597,7 +597,7 @@ public class OverloadedMethods2 {
     }
 
     public String mStringArrayArrayOverloaded(String[][] arrayArray, int i) {
-        return "mStringArrayArrayOverloaded(String[][] " + TestUtil.arrayToString(arrayArray) + ", int " + i + ")";
+        return "mStringArrayArrayOverloaded(String[][] " + TestUtils.arrayToString(arrayArray) + ", int " + i + ")";
     }
     
     public String mStringArrayArrayOverloaded(Object obj, boolean b) {
@@ -605,7 +605,7 @@ public class OverloadedMethods2 {
     }
     
     public String mIntArrayArrayOverloaded(int[][] xss) {
-        return "mIntArrayArrayOverloaded(" + TestUtil.arrayToString(xss) + ")";
+        return "mIntArrayArrayOverloaded(" + TestUtils.arrayToString(xss) + ")";
     }
 
     public String mIntArrayArrayOverloaded(String s) {
@@ -613,7 +613,7 @@ public class OverloadedMethods2 {
     }
     
     public String mArrayOfListsOverloaded(List[] xss) {
-        return "mArrayOfListsOverloaded(" + TestUtil.arrayToString(xss) + ")";
+        return "mArrayOfListsOverloaded(" + TestUtils.arrayToString(xss) + ")";
     }
 
     public String mArrayOfListsOverloaded(String x) {
@@ -621,31 +621,31 @@ public class OverloadedMethods2 {
     }
     
     public String mIntArrayArrayNonOverloaded(int[][] xss) {
-        return "mIntArrayArrayNonOverloaded(" + TestUtil.arrayToString(xss) + ")";
+        return "mIntArrayArrayNonOverloaded(" + TestUtils.arrayToString(xss) + ")";
     }
 
     public String mArrayOfListsNonOverloaded(List[] xss) {
-        return "mArrayOfListsNonOverloaded(" + TestUtil.arrayToString(xss) + ")";
+        return "mArrayOfListsNonOverloaded(" + TestUtils.arrayToString(xss) + ")";
     }
     
     public String mStringArrayVarargsNonOverloaded(String... items) {
-        return "mStringArrayVarargsNonOverloaded(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVarargsNonOverloaded(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVarargsOverloaded(String... items) {
-        return "mStringArrayVarargsNonOverloaded(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVarargsNonOverloaded(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVarargsOverloaded1(String... items) {
-        return "mStringArrayVarargsOverloaded1(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVarargsOverloaded1(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVarargsOverloaded1(List<String> items) {
-        return "mStringArrayVarargsOverloaded1(List " + TestUtil.listToString(items) + ")";
+        return "mStringArrayVarargsOverloaded1(List " + TestUtils.listToString(items) + ")";
     }
 
     public String mStringArrayVarargsOverloaded2(String... items) {
-        return "mStringArrayVarargsOverloaded2(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVarargsOverloaded2(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVarargsOverloaded2(String item) {
@@ -653,7 +653,7 @@ public class OverloadedMethods2 {
     }
     
     public String mStringArrayVarargsOverloaded3(String... items) {
-        return "mStringArrayVarargsOverloaded3(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVarargsOverloaded3(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVarargsOverloaded3(String item1, String item2) {
@@ -661,15 +661,15 @@ public class OverloadedMethods2 {
     }
     
     public String mStringArrayVarargsOverloaded4(String... items) {
-        return "mStringArrayVarargsOverloaded4(String[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVarargsOverloaded4(String[] " + TestUtils.arrayToString(items) + ")";
     }
 
     public String mStringArrayVarargsOverloaded4(List... items) {
-        return "mStringArrayVarargsOverloaded4(List[] " + TestUtil.arrayToString(items) + ")";
+        return "mStringArrayVarargsOverloaded4(List[] " + TestUtils.arrayToString(items) + ")";
     }
     
     public String mListOrString(List<String> items) {
-        return "mListOrString(List " + TestUtil.listToString(items) + ")";
+        return "mListOrString(List " + TestUtils.listToString(items) + ")";
     }
 
     public String mListOrString(String item) {
@@ -677,7 +677,7 @@ public class OverloadedMethods2 {
     }
 
     public String mListListOrString(List<List<Object>> items) {
-        return "mListListOrString(List " + TestUtil.listToString(items) + ")";
+        return "mListListOrString(List " + TestUtils.listToString(items) + ")";
     }
 
     public String mListListOrString(String item) {
@@ -693,11 +693,11 @@ public class OverloadedMethods2 {
     }
 
     public String mMapOrBooleanVarargs(Map... v) {
-        return "mMapOrBooleanVarargs(Map... " + TestUtil.arrayToString(v) + ")";
+        return "mMapOrBooleanVarargs(Map... " + TestUtils.arrayToString(v) + ")";
     }
 
     public String mMapOrBooleanVarargs(boolean... v) {
-        return "mMapOrBooleanVarargs(boolean... " + TestUtil.arrayToString(v) + ")";
+        return "mMapOrBooleanVarargs(boolean... " + TestUtils.arrayToString(v) + ")";
     }
 
     public String mMapOrBooleanFixedAndVarargs(Map v) {
@@ -709,11 +709,11 @@ public class OverloadedMethods2 {
     }
 
     public String mMapOrBooleanFixedAndVarargs(Map... v) {
-        return "mMapOrBooleanFixedAndVarargs(Map... " + TestUtil.arrayToString(v) + ")";
+        return "mMapOrBooleanFixedAndVarargs(Map... " + TestUtils.arrayToString(v) + ")";
     }
 
     public String mMapOrBooleanFixedAndVarargs(boolean... v) {
-        return "mMapOrBooleanFixedAndVarargs(boolean... " + TestUtil.arrayToString(v) + ")";
+        return "mMapOrBooleanFixedAndVarargs(boolean... " + TestUtils.arrayToString(v) + ")";
     }
     
     public String mNumberOrArray(Number v) {
@@ -721,7 +721,7 @@ public class OverloadedMethods2 {
     }
 
     public String mNumberOrArray(Object[] v) {
-        return "mNumberOrArray(Object[] " + TestUtil.arrayToString(v) + ")";
+        return "mNumberOrArray(Object[] " + TestUtils.arrayToString(v) + ")";
     }
     
     public String mIntOrArray(int v) {
@@ -729,7 +729,7 @@ public class OverloadedMethods2 {
     }
 
     public String mIntOrArray(Object[] v) {
-        return "mIntOrArray(Object[] " + TestUtil.arrayToString(v) + ")";
+        return "mIntOrArray(Object[] " + TestUtils.arrayToString(v) + ")";
     }
 
     public String mDateOrArray(Date v) {
@@ -737,7 +737,7 @@ public class OverloadedMethods2 {
     }
 
     public String mDateOrArray(Object[] v) {
-        return "mDateOrArray(Object[] " + TestUtil.arrayToString(v) + ")";
+        return "mDateOrArray(Object[] " + TestUtils.arrayToString(v) + ")";
     }
     
     public String mStringOrArray(String v) {
@@ -745,7 +745,7 @@ public class OverloadedMethods2 {
     }
 
     public String mStringOrArray(Object[] v) {
-        return "mStringOrArray(Object[] " + TestUtil.arrayToString(v) + ")";
+        return "mStringOrArray(Object[] " + TestUtils.arrayToString(v) + ")";
     }
     
     public String mBooleanOrArray(boolean v) {
@@ -753,7 +753,7 @@ public class OverloadedMethods2 {
     }
 
     public String mBooleanOrArray(Object[] v) {
-        return "mBooleanOrArray(Object[] " + TestUtil.arrayToString(v) + ")";
+        return "mBooleanOrArray(Object[] " + TestUtils.arrayToString(v) + ")";
     }
     
     public String mMapOrArray(Map v) {
@@ -761,7 +761,7 @@ public class OverloadedMethods2 {
     }
 
     public String mMapOrArray(Object[] v) {
-        return "mMapOrArray(Object[] " + TestUtil.arrayToString(v) + ")";
+        return "mMapOrArray(Object[] " + TestUtils.arrayToString(v) + ")";
     }
     
     public String mListOrArray(List v) {
@@ -769,7 +769,7 @@ public class OverloadedMethods2 {
     }
 
     public String mListOrArray(Object[] v) {
-        return "mListOrArray(Object[] " + TestUtil.arrayToString(v) + ")";
+        return "mListOrArray(Object[] " + TestUtils.arrayToString(v) + ")";
     }
     
     public String mSetOrArray(Set v) {
@@ -777,7 +777,7 @@ public class OverloadedMethods2 {
     }
 
     public String mSetOrArray(Object[] v) {
-        return "mSetOrArray(Object[] " + TestUtil.arrayToString(v) + ")";
+        return "mSetOrArray(Object[] " + TestUtils.arrayToString(v) + ")";
     }
     
     public String mCharNonOverloaded(char c) {
@@ -1010,7 +1010,7 @@ public class OverloadedMethods2 {
     }
 
     public String bugReport363(Object... fields) {
-        return "Executed: testMethod(Object... fields) on input: fields=" + TestUtil.arrayToString(fields);
+        return "Executed: testMethod(Object... fields) on input: fields=" + TestUtils.arrayToString(fields);
     }
     
     private static class MyAdapterNumberModel implements TemplateNumberModel, AdapterTemplateModel {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/BaseNTemplateNumberFormatFactory.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/BaseNTemplateNumberFormatFactory.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/BaseNTemplateNumberFormatFactory.java
index e5def77..aa5d4db 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/BaseNTemplateNumberFormatFactory.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/BaseNTemplateNumberFormatFactory.java
@@ -23,8 +23,8 @@ import java.util.Locale;
 import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.util._NumberUtil;
-import org.apache.freemarker.core.util._StringUtil;
+import org.apache.freemarker.core.util._NumberUtils;
+import org.apache.freemarker.core.util._StringUtils;
 import org.apache.freemarker.core.valueformat.InvalidFormatParametersException;
 import org.apache.freemarker.core.valueformat.TemplateFormatUtil;
 import org.apache.freemarker.core.valueformat.TemplateNumberFormat;
@@ -60,7 +60,7 @@ public class BaseNTemplateNumberFormatFactory extends TemplateNumberFormatFactor
                 } catch (TemplateValueFormatException e) {
                     throw new InvalidFormatParametersException(
                             "Couldn't get the fallback number format (specified after the \"|\"), "
-                            + _StringUtil.jQuote(fallbackFormatStr) + ". Reason: " + e.getMessage(),
+                            + _StringUtils.jQuote(fallbackFormatStr) + ". Reason: " + e.getMessage(),
                             e);
                 }
             } else {
@@ -78,7 +78,7 @@ public class BaseNTemplateNumberFormatFactory extends TemplateNumberFormatFactor
             }
             throw new InvalidFormatParametersException(
                     "The format paramter must be an integer, but was (shown quoted): "
-                    + _StringUtil.jQuote(params));
+                    + _StringUtils.jQuote(params));
         }
         if (base < 2) {
             throw new InvalidFormatParametersException("A base must be at least 2.");
@@ -101,7 +101,7 @@ public class BaseNTemplateNumberFormatFactory extends TemplateNumberFormatFactor
                 throws TemplateModelException, TemplateValueFormatException {
             Number n = TemplateFormatUtil.getNonNullNumber(numberModel);
             try {
-                return Integer.toString(_NumberUtil.toIntExact(n), base);
+                return Integer.toString(_NumberUtils.toIntExact(n), base);
             } catch (ArithmeticException e) {
                 if (fallbackFormat == null) {
                     throw new UnformattableValueException(

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/CustomHTMLOutputFormat.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/CustomHTMLOutputFormat.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/CustomHTMLOutputFormat.java
index 96a6a63..a8576bd 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/CustomHTMLOutputFormat.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/CustomHTMLOutputFormat.java
@@ -23,7 +23,7 @@ import java.io.Writer;
 
 import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.outputformat.CommonMarkupOutputFormat;
-import org.apache.freemarker.core.util._StringUtil;
+import org.apache.freemarker.core.util._StringUtils;
 
 /**
  * Represents the HTML output format.
@@ -54,7 +54,7 @@ public final class CustomHTMLOutputFormat extends CommonMarkupOutputFormat<Custo
 
     @Override
     public String escapePlainText(String plainTextContent) {
-        return _StringUtil.XHTMLEnc(plainTextContent.replace('x', 'X'));
+        return _StringUtils.XHTMLEnc(plainTextContent.replace('x', 'X'));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/EpochMillisDivTemplateDateFormatFactory.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/EpochMillisDivTemplateDateFormatFactory.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/EpochMillisDivTemplateDateFormatFactory.java
index 8799eef..be06442 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/EpochMillisDivTemplateDateFormatFactory.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/EpochMillisDivTemplateDateFormatFactory.java
@@ -25,7 +25,7 @@ import java.util.TimeZone;
 import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.model.TemplateDateModel;
 import org.apache.freemarker.core.model.TemplateModelException;
-import org.apache.freemarker.core.util._StringUtil;
+import org.apache.freemarker.core.util._StringUtils;
 import org.apache.freemarker.core.valueformat.InvalidFormatParametersException;
 import org.apache.freemarker.core.valueformat.TemplateDateFormat;
 import org.apache.freemarker.core.valueformat.TemplateDateFormatFactory;
@@ -54,7 +54,7 @@ public class EpochMillisDivTemplateDateFormatFactory extends TemplateDateFormatF
                         "A format parameter is required, which specifies the divisor.");
             }
             throw new InvalidFormatParametersException(
-                    "The format paramter must be an integer, but was (shown quoted): " + _StringUtil.jQuote(params));
+                    "The format paramter must be an integer, but was (shown quoted): " + _StringUtils.jQuote(params));
         }
         return new EpochMillisDivTemplateDateFormat(divisor);
     }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HTMLISOTemplateDateFormatFactory.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HTMLISOTemplateDateFormatFactory.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HTMLISOTemplateDateFormatFactory.java
index 357034c..83e349f 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HTMLISOTemplateDateFormatFactory.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HTMLISOTemplateDateFormatFactory.java
@@ -26,9 +26,9 @@ import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.model.TemplateDateModel;
 import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.outputformat.impl.HTMLOutputFormat;
-import org.apache.freemarker.core.util._DateUtil;
-import org.apache.freemarker.core.util._DateUtil.CalendarFieldsToDateConverter;
-import org.apache.freemarker.core.util._DateUtil.DateParseException;
+import org.apache.freemarker.core.util._DateUtils;
+import org.apache.freemarker.core.util._DateUtils.CalendarFieldsToDateConverter;
+import org.apache.freemarker.core.util._DateUtils.DateParseException;
 import org.apache.freemarker.core.valueformat.InvalidFormatParametersException;
 import org.apache.freemarker.core.valueformat.TemplateDateFormat;
 import org.apache.freemarker.core.valueformat.TemplateDateFormatFactory;
@@ -57,7 +57,7 @@ public class HTMLISOTemplateDateFormatFactory extends TemplateDateFormatFactory
 
         private static final HTMLISOTemplateDateFormat INSTANCE = new HTMLISOTemplateDateFormat();
 
-        private _DateUtil.TrivialDateToISO8601CalendarFactory calendarFactory;
+        private _DateUtils.TrivialDateToISO8601CalendarFactory calendarFactory;
 
         private CalendarFieldsToDateConverter calToDateConverter;
         
@@ -67,11 +67,11 @@ public class HTMLISOTemplateDateFormatFactory extends TemplateDateFormatFactory
         public String formatToPlainText(TemplateDateModel dateModel)
                 throws UnformattableValueException, TemplateModelException {
             if (calendarFactory == null) {
-                calendarFactory = new _DateUtil.TrivialDateToISO8601CalendarFactory();
+                calendarFactory = new _DateUtils.TrivialDateToISO8601CalendarFactory();
             }
-            return _DateUtil.dateToISO8601String(
+            return _DateUtils.dateToISO8601String(
                     TemplateFormatUtil.getNonNullDate(dateModel),
-                    true, true, true, _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC,
+                    true, true, true, _DateUtils.ACCURACY_SECONDS, _DateUtils.UTC,
                     calendarFactory);
         }
 
@@ -89,9 +89,9 @@ public class HTMLISOTemplateDateFormatFactory extends TemplateDateFormatFactory
         public Date parse(String s, int dateType) throws UnparsableValueException {
             try {
                 if (calToDateConverter == null) {
-                    calToDateConverter = new _DateUtil.TrivialCalendarFieldsToDateConverter();
+                    calToDateConverter = new _DateUtils.TrivialCalendarFieldsToDateConverter();
                 }
-                return _DateUtil.parseISO8601DateTime(s, _DateUtil.UTC, calToDateConverter);
+                return _DateUtils.parseISO8601DateTime(s, _DateUtils.UTC, calToDateConverter);
             } catch (DateParseException e) {
                 throw new UnparsableValueException("Malformed ISO date-time", e);
             }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HexTemplateNumberFormatFactory.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HexTemplateNumberFormatFactory.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HexTemplateNumberFormatFactory.java
index 6d72c20..c1f34b4 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HexTemplateNumberFormatFactory.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/HexTemplateNumberFormatFactory.java
@@ -23,7 +23,7 @@ import java.util.Locale;
 import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.util._NumberUtil;
+import org.apache.freemarker.core.util._NumberUtils;
 import org.apache.freemarker.core.valueformat.InvalidFormatParametersException;
 import org.apache.freemarker.core.valueformat.TemplateFormatUtil;
 import org.apache.freemarker.core.valueformat.TemplateNumberFormat;
@@ -56,7 +56,7 @@ public class HexTemplateNumberFormatFactory extends TemplateNumberFormatFactory
                 throws UnformattableValueException, TemplateModelException {
             Number n = TemplateFormatUtil.getNonNullNumber(numberModel);
             try {
-                return Integer.toHexString(_NumberUtil.toIntExact(n));
+                return Integer.toHexString(_NumberUtils.toIntExact(n));
             } catch (ArithmeticException e) {
                 throw new UnformattableValueException(n + " doesn't fit into an int");
             }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java
index e8d5f2b..7be09f7 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java
@@ -26,7 +26,7 @@ import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.model.TemplateNumberModel;
 import org.apache.freemarker.core.outputformat.impl.HTMLOutputFormat;
-import org.apache.freemarker.core.util._StringUtil;
+import org.apache.freemarker.core.util._StringUtils;
 import org.apache.freemarker.core.valueformat.InvalidFormatParametersException;
 import org.apache.freemarker.core.valueformat.TemplateFormatUtil;
 import org.apache.freemarker.core.valueformat.TemplateNumberFormat;
@@ -55,7 +55,7 @@ public class PrintfGTemplateNumberFormatFactory extends TemplateNumberFormatFact
             } catch (NumberFormatException e) {
                 throw new InvalidFormatParametersException(
                         "The format parameter must be an integer, but was (shown quoted) "
-                        + _StringUtil.jQuote(params) + ".");
+                        + _StringUtils.jQuote(params) + ".");
             }
         } else {
             // Use the default of %G

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java
index a1b263c..9cedddd 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java
@@ -29,7 +29,7 @@ import org.apache.freemarker.core.model.TemplateNumberModel;
 import org.apache.freemarker.core.model.TemplateScalarModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.util.FTLUtil;
-import org.apache.freemarker.core.util._StringUtil;
+import org.apache.freemarker.core.util._StringUtils;
 
 public abstract class TestTemplateCallableModel implements TemplateCallableModel {
 
@@ -91,7 +91,7 @@ public abstract class TestTemplateCallableModel implements TemplateCallableModel
             }
             sb.append('}');
         } else if (value instanceof String) {
-            sb.append(_StringUtil.jQuote(value));
+            sb.append(_StringUtils.jQuote(value));
         } else if (value instanceof Number) {
             sb.append(value.toString());
         } else if (value instanceof Boolean) {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/CollectionUtilTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/CollectionUtilTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/CollectionUtilTest.java
deleted file mode 100644
index a18d585..0000000
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/CollectionUtilTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.freemarker.core.util;
-
-import static org.junit.Assert.*;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.Test;
-
-public class CollectionUtilTest {
-
-    @Test
-    public void unmodifiableMap() {
-        Map<Object, Object> modifiableMap = new HashMap<>();
-        assertNotSame(modifiableMap, _CollectionUtil.unmodifiableMap(modifiableMap));
-
-        Map<Object, Object> wrappedModifiableMap = Collections.unmodifiableMap(modifiableMap);
-        assertSame(wrappedModifiableMap, _CollectionUtil.unmodifiableMap(wrappedModifiableMap));
-
-        assertSame(Collections.emptyMap(), _CollectionUtil.unmodifiableMap(Collections.emptyMap()));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/CollectionUtilsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/CollectionUtilsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/CollectionUtilsTest.java
new file mode 100644
index 0000000..652d5b2
--- /dev/null
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/CollectionUtilsTest.java
@@ -0,0 +1,43 @@
+/*
+ * 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.freemarker.core.util;
+
+import static org.junit.Assert.*;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class CollectionUtilsTest {
+
+    @Test
+    public void unmodifiableMap() {
+        Map<Object, Object> modifiableMap = new HashMap<>();
+        assertNotSame(modifiableMap, _CollectionUtils.unmodifiableMap(modifiableMap));
+
+        Map<Object, Object> wrappedModifiableMap = Collections.unmodifiableMap(modifiableMap);
+        assertSame(wrappedModifiableMap, _CollectionUtils.unmodifiableMap(wrappedModifiableMap));
+
+        assertSame(Collections.emptyMap(), _CollectionUtils.unmodifiableMap(Collections.emptyMap()));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ebb39b84/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/DateUtilTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/DateUtilTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/DateUtilTest.java
deleted file mode 100644
index 0cd8fc0..0000000
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/DateUtilTest.java
+++ /dev/null
@@ -1,1085 +0,0 @@
-/*
- * 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.freemarker.core.util;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.TimeZone;
-
-import javax.xml.datatype.DatatypeConfigurationException;
-import javax.xml.datatype.DatatypeFactory;
-import javax.xml.datatype.XMLGregorianCalendar;
-
-import org.apache.freemarker.core.util._DateUtil.CalendarFieldsToDateConverter;
-import org.apache.freemarker.core.util._DateUtil.DateParseException;
-import org.apache.freemarker.core.util._DateUtil.DateToISO8601CalendarFactory;
-import org.apache.freemarker.core.util._DateUtil.TrivialCalendarFieldsToDateConverter;
-
-import junit.framework.TestCase;
-
-public class DateUtilTest extends TestCase {
-    
-    private final TimeZone originalDefaultTZ = TimeZone.getDefault();
-
-    @Override
-    protected void setUp() throws Exception {
-        TimeZone.setDefault(TimeZone.getTimeZone("Europe/Prague"));
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        TimeZone.setDefault(originalDefaultTZ);
-    }
-
-    private final DateFormat df
-            = new SimpleDateFormat("G yyyy-MM-dd HH:mm:ss:S Z", Locale.US);
-    {
-        df.setTimeZone(_DateUtil.UTC);
-    }
-    
-    private CalendarFieldsToDateConverter cf2dc = new TrivialCalendarFieldsToDateConverter();
-    
-    private DateToISO8601CalendarFactory calendarFactory
-            = new _DateUtil.TrivialDateToISO8601CalendarFactory();
-    
-    public DateUtilTest(String name) {
-        super(name);
-    }
-    
-    public void testDateToUTCString() throws ParseException {
-        assertEquals(
-                "1998-10-30T15:30:00.512Z",
-                dateToISO8601UTCDateTimeMSString(
-                        df.parse("AD 1998-10-30 19:30:00:512 +0400"), true));
-        assertEquals(
-                "1998-10-30T15:30:00.5Z",
-                dateToISO8601UTCDateTimeMSString(
-                        df.parse("AD 1998-10-30 19:30:00:500 +0400"), true));
-        assertEquals(
-                "1998-10-30T15:30:00.51Z",
-                dateToISO8601UTCDateTimeMSString(
-                        df.parse("AD 1998-10-30 19:30:00:510 +0400"), true));
-        assertEquals(
-                "1998-10-30T15:30:00.1Z",
-                dateToISO8601UTCDateTimeMSString(
-                        df.parse("AD 1998-10-30 19:30:00:100 +0400"), true));
-        assertEquals(
-                "1998-10-30T15:30:00.01Z",
-                dateToISO8601UTCDateTimeMSString(
-                        df.parse("AD 1998-10-30 19:30:00:10 +0400"), true));
-        assertEquals(
-                "1998-10-30T15:30:00.001Z",
-                dateToISO8601UTCDateTimeMSString(
-                        df.parse("AD 1998-10-30 19:30:00:1 +0400"), true));
-        assertEquals(
-                "2000-02-08T06:05:04Z",
-                dateToISO8601UTCDateTimeMSString(
-                        df.parse("AD 2000-02-08 09:05:04:0 +0300"), true));
-        assertEquals(
-                "0099-02-28T06:15:24Z",
-                dateToISO8601UTCDateTimeString(
-                        df.parse(
-                        "AD 0099-03-02 09:15:24:0 +0300"), true));
-        assertEquals(
-                "0010-02-28T06:15:24Z",
-                dateToISO8601UTCDateTimeString(
-                        df.parse("AD 0010-03-02 09:15:24:0 +0300"), true));
-        assertEquals(
-                "0001-02-28T06:15:24Z",
-                dateToISO8601UTCDateTimeString(
-                        df.parse("AD 0001-03-02 09:15:24:0 +0300"), true));
-        assertEquals(
-                "0000-02-29T06:15:24Z",
-                dateToISO8601UTCDateTimeString(
-                        df.parse("BC 0001-03-02 09:15:24:0 +0300"), true));
-        assertEquals(
-                "-1-02-28T06:15:24Z",
-                dateToISO8601UTCDateTimeString(
-                        df.parse("BC 2-03-02 09:15:24:0 +0300"), true));
-        assertEquals(
-                "10000-02-28T06:15:24Z",
-                dateToISO8601UTCDateTimeString(
-                        df.parse("AD 10000-02-28 09:15:24:0 +0300"), true));
-
-        Date d = df.parse("AD 1998-10-30 19:30:00:512 +0400");
-        assertEquals(
-                "1998-10-30",
-                dateToISO8601UTCDateString(d));
-        assertEquals(
-                "15:30:00.512Z",
-                dateToISO8601UTCTimeMSString(d, true));
-        assertEquals(
-                "15:30:00.512",
-                dateToISO8601UTCTimeMSString(d, false));
-        assertEquals(
-                "1998-10-30",
-                dateToISO8601UTCDateString(
-                        new java.sql.Date(d.getTime())));
-        assertEquals(
-                "15:30:00.512Z",
-                dateToISO8601UTCTimeMSString(
-                        new java.sql.Time(d.getTime()), true));
-    }
-
-    public void testLocalTime() throws ParseException {
-        Date dsum = df.parse("AD 2010-05-09 20:00:00:0 UTC");
-        Date dwin = df.parse("AD 2010-01-01 20:00:00:0 UTC");
-        
-        TimeZone tzRome = TimeZone.getTimeZone("Europe/Rome");
-        if (tzRome.getOffset(0) == 0) {
-            throw new RuntimeException(
-                    "Can't get time zone for Europe/Rome!");
-        }
-        assertEquals(
-                "2010-05-09T22:00:00+02:00",
-                dateToISO8601DateTimeString(dsum, tzRome));
-        assertEquals(
-                "2010-01-01T21:00:00+01:00",
-                dateToISO8601DateTimeString(dwin, tzRome));
-        assertEquals(
-                "2010-05-09",
-                dateToISO8601DateString(dsum, tzRome));
-        assertEquals(
-                "2010-01-01",
-                dateToISO8601DateString(dwin, tzRome));
-        assertEquals(
-                "22:00:00+02:00",
-                dateToISO8601TimeString(dsum, tzRome));
-        assertEquals(
-                "21:00:00+01:00",
-                dateToISO8601TimeString(dwin, tzRome));
-        
-        TimeZone tzNY = TimeZone.getTimeZone("America/New_York");
-        if (tzNY.getOffset(0) == 0) {
-            throw new RuntimeException(
-                    "Can't get time zone for America/New_York!");
-        }
-        assertEquals(
-                "2010-05-09T16:00:00-04:00",
-                dateToISO8601DateTimeString(dsum, tzNY));
-        assertEquals(
-                "2010-01-01T15:00:00-05:00",
-                dateToISO8601DateTimeString(dwin, tzNY));
-        assertEquals(
-                "2010-05-09",
-                dateToISO8601DateString(dsum, tzNY));
-        assertEquals(
-                "2010-01-01",
-                dateToISO8601DateString(dwin, tzNY));
-        assertEquals(
-                "16:00:00-04:00",
-                dateToISO8601TimeString(dsum, tzNY));
-        assertEquals(
-                "15:00:00-05:00",
-                dateToISO8601TimeString(dwin, tzNY));
-        
-        TimeZone tzFixed = TimeZone.getTimeZone("GMT+02:30");
-        assertEquals(
-                "2010-05-09T22:30:00+02:30",
-                dateToISO8601DateTimeString(dsum, tzFixed));
-        assertEquals(
-                "2010-01-01T22:30:00+02:30",
-                dateToISO8601DateTimeString(dwin, tzFixed));
-    }
-
-    public void testGetTimeZone() throws Exception {
-        assertTrue(_DateUtil.getTimeZone("GMT") != _DateUtil.UTC);
-        assertTrue(_DateUtil.getTimeZone("UT1") != _DateUtil.UTC);
-        assertEquals(_DateUtil.getTimeZone("UTC"), _DateUtil.UTC);
-        
-        assertEquals(_DateUtil.getTimeZone("Europe/Rome"),
-                TimeZone.getTimeZone("Europe/Rome"));
-        
-        assertEquals(_DateUtil.getTimeZone("Iceland"), // GMT and no DST
-                TimeZone.getTimeZone("Iceland"));
-        
-        try {
-            _DateUtil.getTimeZone("Europe/NoSuch");
-            fail();
-        } catch (UnrecognizedTimeZoneException e) {
-            // good
-        }
-    }
-    
-    public void testTimeOnlyDate() throws UnrecognizedTimeZoneException {
-        Date t = new Date(0L);
-        SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss");
-        
-        tf.setTimeZone(_DateUtil.UTC);
-        assertEquals("00:00:00", tf.format(t));
-        assertEquals("00:00:00",
-                dateToISO8601UTCTimeString(t, false));
-        
-        TimeZone gmt1 = _DateUtil.getTimeZone("GMT+01");
-        tf.setTimeZone(gmt1);
-        assertEquals("01:00:00", tf.format(t)); 
-        assertEquals("01:00:00+01:00",
-                dateToISO8601TimeString(t, gmt1));
-    }
-    
-    public void testAccuracy() throws ParseException {
-        Date d = df.parse("AD 2000-02-08 09:05:04:250 UTC"); 
-        assertEquals("2000-02-08T09:05:04Z",
-                dateToISO8601UTCDateTimeString(d, true));
-        assertEquals("2000-02-08T09:05:04.25Z",
-                dateToISO8601String(d, true, true, true,
-                        _DateUtil.ACCURACY_MILLISECONDS, null));
-        assertEquals("2000-02-08T09:05:04Z",
-                dateToISO8601String(d, true, true, true,
-                        _DateUtil.ACCURACY_SECONDS, null));
-        assertEquals("2000-02-08T09:05Z",
-                dateToISO8601String(d, true, true, true,
-                        _DateUtil.ACCURACY_MINUTES, null));
-        assertEquals("2000-02-08T09Z",
-                dateToISO8601String(d, true, true, true,
-                        _DateUtil.ACCURACY_HOURS, null));
-        
-        d = df.parse("AD 1998-10-30 19:30:00:000 +0400");
-        assertEquals(
-                "15:30:00Z",
-                dateToISO8601UTCTimeMSString(d, true));
-        assertEquals(
-                "15:30:00.000Z",
-                dateToISO8601UTCTimeMSFString(d, true));
-        assertEquals(
-                "1998-10-30T15:30:00Z",
-                dateToISO8601UTCDateTimeMSString(d, true));
-        assertEquals(
-                "1998-10-30T15:30:00.000Z",
-                dateToISO8601UTCDateTimeMSFString(d, true));
-                
-        d = df.parse("AD 1998-10-30 19:30:00:100 +0400");
-        assertEquals(
-                "15:30:00.1Z",
-                dateToISO8601UTCTimeMSString(d, true));
-        assertEquals(
-                "15:30:00.100Z",
-                dateToISO8601UTCTimeMSFString(d, true));
-        assertEquals(
-                "1998-10-30T15:30:00.1Z",
-                dateToISO8601UTCDateTimeMSString(d, true));
-        assertEquals(
-                "1998-10-30T15:30:00.100Z",
-                dateToISO8601UTCDateTimeMSFString(d, true));
-        
-        d = df.parse("AD 1998-10-30 19:30:00:010 +0400");
-        assertEquals(
-                "15:30:00.01Z",
-                dateToISO8601UTCTimeMSString(d, true));
-        assertEquals(
-                "15:30:00.010Z",
-                dateToISO8601UTCTimeMSFString(d, true));
-        assertEquals(
-                "1998-10-30T15:30:00.01Z",
-                dateToISO8601UTCDateTimeMSString(d, true));
-        assertEquals(
-                "1998-10-30T15:30:00.010Z",
-                dateToISO8601UTCDateTimeMSFString(d, true));
-        
-        d = df.parse("AD 1998-10-30 19:30:00:001 +0400");
-        assertEquals(
-                "15:30:00.001Z",
-                dateToISO8601UTCTimeMSString(d, true));
-        assertEquals(
-                "15:30:00.001Z",
-                dateToISO8601UTCTimeMSFString(d, true));
-        assertEquals(
-                "1998-10-30T15:30:00.001Z",
-                dateToISO8601UTCDateTimeMSString(d, true));
-        assertEquals(
-                "1998-10-30T15:30:00.001Z",
-                dateToISO8601UTCDateTimeMSFString(d, true));
-    }
-
-    public void testXSFormatISODeviations() throws ParseException, UnrecognizedTimeZoneException {
-        Date dsum = df.parse("AD 2010-05-09 20:00:00:0 UTC");
-        Date dwin = df.parse("AD 2010-01-01 20:00:00:0 UTC");
-        
-        TimeZone tzRome = _DateUtil.getTimeZone("Europe/Rome");
-        
-        assertEquals(
-                "2010-01-01T21:00:00+01:00",
-                _DateUtil.dateToXSString(dwin, true, true, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory));
-        assertEquals(
-                "2010-05-09T22:00:00+02:00",
-                _DateUtil.dateToXSString(dsum, true, true, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory));
-        assertEquals(
-                "2010-01-01+01:00",  // ISO doesn't allow date-only with TZ
-                _DateUtil.dateToXSString(dwin, true, false, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory));
-        assertEquals(
-                "2010-05-09+02:00",  // ISO doesn't allow date-only with TZ
-                _DateUtil.dateToXSString(dsum, true, false, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory));
-        assertEquals(
-                "21:00:00+01:00",
-                _DateUtil.dateToXSString(dwin, false, true, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory));
-        assertEquals(
-                "22:00:00+02:00",
-                _DateUtil.dateToXSString(dsum, false, true, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory));
-        
-        assertEquals(
-                "-1-02-29T06:15:24Z",  // ISO uses 0 for BC 1
-                _DateUtil.dateToXSString(
-                        df.parse("BC 0001-03-02 09:15:24:0 +0300"),
-                        true, true, true, _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC, calendarFactory));
-        assertEquals(
-                "-2-02-28T06:15:24Z",  // ISO uses -1 for BC 2
-                _DateUtil.dateToXSString(
-                        df.parse("BC 2-03-02 09:15:24:0 +0300"),
-                        true, true, true, _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC, calendarFactory));
-    }
-    
-    private String dateToISO8601DateTimeString(
-            Date date, TimeZone tz) {
-        return dateToISO8601String(date, true, true, true,
-                _DateUtil.ACCURACY_SECONDS, tz);
-    }
-    
-    private String dateToISO8601UTCDateTimeString(
-            Date date, boolean offsetPart) {
-        return dateToISO8601String(date, true, true, offsetPart,
-                _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC);
-    }
-
-    private String dateToISO8601UTCDateTimeMSString(
-            Date date, boolean offsetPart) {
-        return dateToISO8601String(date, true, true, offsetPart,
-                _DateUtil.ACCURACY_MILLISECONDS, _DateUtil.UTC);
-    }
-
-    private String dateToISO8601UTCDateTimeMSFString(
-            Date date, boolean offsetPart) {
-        return dateToISO8601String(date, true, true, offsetPart,
-                _DateUtil.ACCURACY_MILLISECONDS_FORCED, _DateUtil.UTC);
-    }
-        
-    private String dateToISO8601DateString(Date date, TimeZone tz) {
-        return dateToISO8601String(date, true, false, false,
-                _DateUtil.ACCURACY_SECONDS, tz);
-    }
-
-    private String dateToISO8601UTCDateString(Date date) {
-        return dateToISO8601String(date, true, false, false,
-                _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC);
-    }
-    
-    private String dateToISO8601TimeString(
-            Date date, TimeZone tz) {
-        return dateToISO8601String(date, false, true, true,
-                _DateUtil.ACCURACY_SECONDS, tz);
-    }
-    
-    private String dateToISO8601UTCTimeString(
-            Date date, boolean offsetPart) {
-        return dateToISO8601String(date, false, true, offsetPart,
-                _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC);
-    }
-
-    private String dateToISO8601UTCTimeMSString(
-            Date date, boolean offsetPart) {
-        return dateToISO8601String(date, false, true, offsetPart,
-                _DateUtil.ACCURACY_MILLISECONDS, _DateUtil.UTC);
-    }
-
-    private String dateToISO8601UTCTimeMSFString(
-            Date date, boolean offsetPart) {
-        return dateToISO8601String(date, false, true, offsetPart,
-                _DateUtil.ACCURACY_MILLISECONDS_FORCED, _DateUtil.UTC);
-    }
-    
-    private String dateToISO8601String(
-            Date date,
-            boolean datePart, boolean timePart, boolean offsetPart,
-            int accuracy,
-            TimeZone timeZone) {
-        return _DateUtil.dateToISO8601String(
-                date,
-                datePart, timePart, offsetPart,
-                accuracy,
-                timeZone,
-                calendarFactory);        
-    }
-    
-    public void testParseDate() throws DateParseException {
-        assertDateParsing(
-                "AD 1998-10-29 20:00:00:0 +0000",
-                null,
-                "1998-10-30+04:00", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 1998-10-30 02:00:00:0 +0000",
-                null,
-                "1998-10-30-02:00", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 1998-10-30 02:00:00:0 +0000",
-                "1998-10-30", _DateUtil.parseXSTimeZone("-02:00"));
-        assertDateParsing(
-                null,
-                "AD 1998-10-30 02:00:00:0 +0000",
-                "19981030", _DateUtil.parseXSTimeZone("-02:00"));
-        assertDateParsing(
-                "AD 1998-10-30 00:00:00:0 +0000",
-                null,
-                "1998-10-30Z", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 1998-10-30 00:00:00:0 +0000",
-                "1998-10-30", _DateUtil.UTC);
-        assertDateParsing(
-                null,
-                "AD 1998-10-30 00:00:00:0 +0000",
-                "19981030", _DateUtil.UTC);
-
-        assertDateParsing(
-                "AD 1998-10-29 20:00:00:0 +0000",
-                null,
-                "1998-10-30+04:00", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 1998-10-30 04:00:00:0 +0000",
-                null,
-                "1998-10-30-04:00", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 1998-10-30 00:00:00:0 +0000",
-                null,
-                "1998-10-30Z", _DateUtil.UTC);
-        
-        try {
-            // XS doesn't have year 0
-            assertDateParsing(
-                    "BC 0000-02-05 00:00:00:0 +0000",
-                    null,
-                    "0000-02-03Z", _DateUtil.UTC);
-            fail();
-        } catch (DateParseException e) {
-            echo(e);
-        }
-        assertDateParsing(
-                null,
-                "BC 0001-02-05 00:00:00:0 +0000",
-                "0000-02-03", _DateUtil.UTC);
-        assertDateParsing(
-                null,
-                "BC 0001-02-05 00:00:00:0 +0000",
-                "00000203", _DateUtil.UTC);
-        
-        assertDateParsing(
-                "BC 0001-02-05 00:00:00:0 +0000",  // Julian
-                "BC 0002-02-05 00:00:00:0 +0000",  // Julian
-                "-0001-02-03", _DateUtil.UTC);  // Proleptic Gregorian
-        assertDateParsing(
-                null,
-                "BC 0002-02-05 00:00:00:0 +0000",  // Julian
-                "-00010203", _DateUtil.UTC);  // Proleptic Gregorian
-
-        assertDateParsing(
-                "AD 0001-02-05 00:00:00:0 +0000",  // Julian
-                null,
-                "0001-02-03Z", _DateUtil.UTC);  // Proleptic Gregorian
-        assertDateParsing(
-                "AD 0001-02-05 00:00:00:0 +0000",  // Julian
-                "0001-02-03", _DateUtil.UTC);  // Proleptic Gregorian
-        assertDateParsing(
-                null,
-                "AD 0001-02-05 00:00:00:0 +0000",  // Julian
-                "00010203", _DateUtil.UTC);  // Proleptic Gregorian
-        assertDateParsing(
-                "AD 1001-12-07 00:00:00:0 +0000",  // Julian
-                null,
-                "1001-12-13Z", _DateUtil.UTC);  // Proleptic Gregorian
-        assertDateParsing(
-                "AD 1001-12-07 00:00:00:0 +0000",  // Julian
-                "1001-12-13", _DateUtil.UTC);  // Proleptic Gregorian
-        
-        assertDateParsing(
-                "AD 2006-12-31 00:00:00:0 +0000",
-                null,
-                "2006-12-31Z", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 2006-12-31 00:00:00:0 +0000",
-                "2006-12-31", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 2006-01-01 00:00:00:0 +0000",
-                null,
-                "2006-01-01Z", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 2006-01-01 00:00:00:0 +0000",
-                "2006-01-01", _DateUtil.UTC);
-        assertDateParsing(
-                "AD 12006-01-01 00:00:00:0 +0000",
-                "12006-01-01", _DateUtil.UTC);
-        assertDateParsing(
-                null,
-                "AD 12006-01-01 00:00:00:0 +0000",
-                "120060101", _DateUtil.UTC);
-    }
-
-    public void testParseDateMalformed() {
-        assertDateMalformed("1998-10-30x");
-        assertDateMalformed("+1998-10-30");
-        assertDateMalformed("1998-10-");
-        assertDateMalformed("1998-1-30");
-        assertDateMalformed("1998-10-30+01");
-        assertDateMalformed("1998-00-01");
-        assertDateMalformed("1998-13-01");
-        assertDateMalformed("1998-10-00");
-        assertDateMalformed("1998-10-32");
-        assertDateMalformed("1998-02-31");
-        
-        assertISO8601DateMalformed("2100103");
-        assertISO8601DateMalformed("210-01-03");
-        assertISO8601DateMalformed("2012-0301");
-        assertISO8601DateMalformed("201203-01");
-        assertISO8601DateMalformed("2012-01-01+01:00");
-    }
-    
-    public void testParseTime() throws DateParseException {
-        assertTimeParsing(
-                "AD 1970-01-01 17:30:05:0 +0000",
-                "17:30:05", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 17:30:05:0 +0000",
-                "173005", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 07:30:00:100 +0000",
-                "07:30:00.1", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 07:30:00:120 +0000",
-                "07:30:00.12", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 07:30:00:123 +0000",
-                "07:30:00.123", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 07:30:00:123 +0000",
-                "07:30:00.1235", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 07:30:00:123 +0000",
-                "07:30:00.12346", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 07:30:00:123 +0000",
-                "073000.12346", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 07:30:00:123 +0000",
-                "073000,12346", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 07:30:00:120 +0000",
-                "07:30:00.12", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 07:30:00:500 +0000",
-                "07:30:00.5", _DateUtil.UTC);
-
-        assertTimeParsing(
-                "AD 1970-01-01 16:30:05:0 +0000",
-                "17:30:05+01:00", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 16:30:05:0 +0000",
-                "173005+01", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 19:00:05:0 +0000",
-                "17:30:05-01:30", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 19:00:05:0 +0000",
-                "173005-0130", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-01 16:30:05:500 +0000",
-                "17:30:05.5+01:00", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 16:30:05:500 +0000",
-                "173005.5+0100", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 16:30:05:500 +0000",
-                "173005.5+01", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 16:00:00:0 +0000",
-                "170000+01", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 16:00:00:0 +0000",
-                "1700+01", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-01 16:00:00:0 +0000",
-                "17+01", _DateUtil.UTC);
-        
-        assertTimeParsing(
-                "AD 1970-01-01 00:00:00:0 +0000",
-                "00:00:00", _DateUtil.UTC);
-        assertTimeParsing(
-                "AD 1970-01-02 00:00:00:0 +0000",
-                "24:00:00", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-02 00:00:00:0 +0000",
-                "240000", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-02 00:00:00:0 +0000",
-                "2400", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-02 00:00:00:0 +0000",
-                "24:00", _DateUtil.UTC);
-        assertTimeParsing(
-                null,
-                "AD 1970-01-02 00:00:00:0 +0000",
-                "24", _DateUtil.UTC);
-        
-        assertTimeParsing(
-                "AD 1970-01-01 23:59:59:999 +0000",
-                "23:59:59.999", _DateUtil.UTC);
-    }
-
-    public void testParseTimeMalformed() {
-        assertTimeMalformed("00:0000");
-        assertTimeMalformed("00:00:00-01:60");
-        assertTimeMalformed("24:00:01");
-        assertTimeMalformed("00:00:61");
-        assertTimeMalformed("00:60:00");
-        assertTimeMalformed("25:00:00");
-        assertTimeMalformed("2:00:00");
-        assertTimeMalformed("02:0:00");
-        assertTimeMalformed("02:00:0");
-        
-        assertISO8601TimeMalformed("1010101");
-        assertISO8601TimeMalformed("10101");
-        assertISO8601TimeMalformed("101");
-        assertISO8601TimeMalformed("1");
-        assertISO8601TimeMalformed("101010-1");
-        assertISO8601TimeMalformed("101010-100");
-        assertISO8601TimeMalformed("101010-10000");
-        assertISO8601TimeMalformed("101010+1");
-        assertISO8601TimeMalformed("101010+100");
-        assertISO8601TimeMalformed("101010+10000");
-    }
-    
-    public void testParseDateTime() throws DateParseException {
-        assertDateTimeParsing( 
-                "AD 1998-10-30 11:30:00:0 +0000",
-                "1998-10-30T15:30:00+04:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                null,
-                "AD 1998-10-30 11:30:00:0 +0000",
-                "19981030T153000+0400", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 11:30:00:500 +0000",
-                "1998-10-30T15:30:00.5+04:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 15:30:00:0 +0000",
-                "1998-10-30T15:30:00Z", _DateUtil.UTC);
-        assertDateTimeParsing(
-                null,
-                "AD 1998-10-30 15:30:00:0 +0000",
-                "19981030T1530Z", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 15:30:00:500 +0000",
-                "1998-10-30T15:30:00.5Z", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 11:30:00:0 +0000",
-                "1998-10-30T15:30:00+04:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 15:30:00:0 +0000",
-                "1998-10-30T15:30:00Z", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 15:30:00:0 +0000",
-                "1998-10-30T15:30:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                null,
-                "AD 1998-10-30 15:30:00:0 +0000",
-                "1998-10-30T15:30", _DateUtil.UTC);
-        
-        assertDateTimeParsing(
-                "AD 1998-10-29 20:00:00:0 +0000",
-                "1998-10-30T00:00:00+04:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 02:00:00:0 +0000",
-                "1998-10-30T00:00:00-02:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 00:00:00:0 +0000",
-                "1998-10-30T00:00:00Z", _DateUtil.UTC);
-
-        assertDateTimeParsing(
-                "AD 1998-10-29 20:00:00:0 +0000",
-                "1998-10-30T00:00:00+04:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1998-10-30 00:00:00:0 +0000",
-                "1998-10-30T00:00:00Z", _DateUtil.UTC);
-        assertDateTimeParsing(
-                null,
-                "AD 1998-10-30 00:00:00:0 +0000",
-                "1998-10-30T00:00Z", _DateUtil.UTC);
-        assertDateTimeParsing(
-                null,
-                "AD 1998-10-30 00:00:00:0 +0000",
-                "1998-10-30T00:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                null,
-                "AD 1998-10-30 00:00:00:0 +0000",
-                "19981030T00Z", _DateUtil.UTC);
-        
-        // BC years
-        try {
-            assertDateTimeParsing(
-                        "",
-                        null,
-                        "0000-02-03T00:00:00Z", _DateUtil.UTC);
-            fail();
-        } catch (DateParseException e) {
-            echo(e);
-        }
-        assertDateTimeParsing(
-                null,
-                "BC 0001-02-05 00:00:00:0 +0000",
-                "0000-02-03T00:00:00Z", _DateUtil.UTC);
-        
-        assertDateTimeParsing(
-                "BC 0001-02-05 00:00:00:0 +0000",  // Julian
-                "BC 0002-02-05 00:00:00:0 +0000",  // Julian
-                "-0001-02-03T00:00:00Z", _DateUtil.UTC);  // Proleptic Gregorian
-
-        assertDateTimeParsing(
-                "AD 0001-02-05 00:00:00:0 +0000",  // Julian
-                "0001-02-03T00:00:00Z", _DateUtil.UTC);  // Proleptic Gregorian
-        assertDateTimeParsing(
-                "AD 1001-12-07 00:00:00:0 +0000",  // Julian
-                "1001-12-13T00:00:00Z", _DateUtil.UTC);  // Proleptic Gregorian
-        assertDateTimeParsing(
-                "AD 11001-12-13 00:00:00:0 +0000",
-                "11001-12-13T00:00:00Z", _DateUtil.UTC);
-        assertDateTimeParsing(
-                null,
-                "AD 11001-12-13 00:00:00:0 +0000",
-                "110011213T00Z", _DateUtil.UTC);
-        
-        assertDateTimeParsing(
-                "AD 2006-12-31 00:00:00:0 +0000",
-                "2006-12-31T00:00:00Z", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 2006-01-01 00:00:00:0 +0000",
-                "2006-01-01T00:00:00Z", _DateUtil.UTC);
-        
-        assertDateTimeParsing(
-                "AD 1970-01-01 07:30:00:123 +0000",
-                "1970-01-01T07:30:00.123", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1970-01-01 07:30:00:123 +0000",
-                "1970-01-01T07:30:00.1235", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1970-01-01 07:30:00:123 +0000",
-                "1970-01-01T07:30:00.12346", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1970-01-01 07:30:00:120 +0000",
-                "1970-01-01T07:30:00.12", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1970-01-01 07:30:00:500 +0000",
-                "1970-01-01T07:30:00.5", _DateUtil.UTC);
-
-        assertDateTimeParsing(
-                "AD 1970-01-01 16:30:05:0 +0000",
-                "1970-01-01T17:30:05+01:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1970-01-01 16:30:05:500 +0000",
-                "1970-01-01T17:30:05.5+01:00", _DateUtil.UTC);
-        
-        assertDateTimeParsing(
-                "AD 1970-01-01 00:00:00:0 +0000",
-                "1970-01-01T00:00:00", _DateUtil.UTC);
-        assertDateTimeParsing(
-                "AD 1970-01-02 00:00:00:0 +0000",
-                "1970-01-01T24:00:00", _DateUtil.UTC);
-        
-        assertDateTimeParsing(
-                "AD 1970-01-01 23:59:59:999 +0000",
-                "1970-01-01T23:59:59.999", _DateUtil.UTC);
-    }
-
-    public void testParseDateTimeMalformed() throws DateParseException {
-        assertDateTimeMalformed("1998-00-01T00:00:00");
-        assertDateTimeMalformed("1998-13-01T00:00:00");
-        assertDateTimeMalformed("1998-10-00T00:00:00");
-        assertDateTimeMalformed("1998-10-32T00:00:00");
-        assertDateTimeMalformed("1998-02-31T00:00:00");
-        assertDateTimeMalformed("1970-01-02T24:00:01");
-        assertDateTimeMalformed("1970-01-01T00:00:61");
-        assertDateTimeMalformed("1970-01-01T00:60:00");
-        assertDateTimeMalformed("1970-01-01T25:00:00");
-        
-        assertISO8601DateTimeMalformed("197-01-01T20:00:00");
-    }
-    
-    public void testParseXSTimeZone() throws DateParseException {
-        assertEquals(0,
-                _DateUtil.parseXSTimeZone("Z").getOffset(0));
-        assertEquals(0,
-                _DateUtil.parseXSTimeZone("-00:00").getOffset(0));
-        assertEquals(0,
-                _DateUtil.parseXSTimeZone("+00:00").getOffset(0));
-        assertEquals(90 * 60 * 1000,
-                _DateUtil.parseXSTimeZone("+01:30").getOffset(0));
-        assertEquals(-4 * 60 * 60 * 1000,
-                _DateUtil.parseXSTimeZone("-04:00").getOffset(0));
-        assertEquals(((-23 * 60) - 59) * 60 * 1000,
-                _DateUtil.parseXSTimeZone("-23:59").getOffset(0));
-        assertEquals(((23 * 60) + 59) * 60 * 1000,
-                _DateUtil.parseXSTimeZone("+23:59").getOffset(0));
-    }
-
-    public void testParseXSTimeZoneWrong() {
-        try {
-            _DateUtil.parseXSTimeZone("04:00").getOffset(0);
-            fail();
-        } catch (DateParseException e) {
-            echo(e);
-        }
-        try {
-            _DateUtil.parseXSTimeZone("-04:00x").getOffset(0);
-            fail();
-        } catch (DateParseException e) {
-            echo(e);
-        }
-        try {
-            _DateUtil.parseXSTimeZone("-04").getOffset(0);
-            fail();
-        } catch (DateParseException e) {
-            echo(e);
-        }
-        try {
-            _DateUtil.parseXSTimeZone("+24:00").getOffset(0);
-            fail();
-        } catch (DateParseException e) {
-            echo(e);
-        }
-        try {
-            _DateUtil.parseXSTimeZone("-24:00").getOffset(0);
-            fail();
-        } catch (DateParseException e) {
-            echo(e);
-        }
-        try {
-            _DateUtil.parseXSTimeZone("-01:60").getOffset(0);
-            fail();
-        } catch (DateParseException e) {
-            echo(e);
-        }
-    }
-    
-    public void testParseXSDateTimeFTLAndJavax() throws DateParseException {
-        // Explicit time zone:
-        assertJavaxAndFTLXSDateTimesSame("2014-01-01T13:35:08Z");
-        assertJavaxAndFTLXSDateTimesSame("2014-01-01T13:35:08+02:00");
-        
-        // Default time zone:
-        assertJavaxAndFTLXSDateTimesSame("2014-01-01T13:35:08"); // winter
-        assertJavaxAndFTLXSDateTimesSame("2014-07-01T13:35:08"); // summer
-        
-        // Proleptic Gregorian
-        assertJavaxAndFTLXSDateTimesSame("1500-01-01T13:35:08Z");
-        assertJavaxAndFTLXSDateTimesSame("0200-01-01T13:35:08Z");
-        assertJavaxAndFTLXSDateTimesSame("0001-01-01T00:00:00+05:00");
-        
-        // BC
-        assertJavaxAndFTLXSDateTimesSame("0001-01-01T13:35:08Z");
-        assertJavaxAndFTLXSDateTimesSame("-0001-01-01T13:35:08Z");
-        
-        // Hour 24
-        assertJavaxAndFTLXSDateTimesSame("2014-01-01T23:59:59");
-        if (isAtLeastJava6()) { // Java 5 has broken parser that doesn't allow 24.
-            assertJavaxAndFTLXSDateTimesSame("2014-01-31T24:00:00");
-            assertJavaxAndFTLXSDateTimesSame("2014-01-01T24:00:00");
-        }
-        assertJavaxAndFTLXSDateTimesSame("2014-01-02T00:00:00");  // same as the previous
-        assertJavaxAndFTLXSDateTimesSame("2014-02-01T00:00:00");  // same as the previous
-        
-        // Under ms
-        assertJavaxAndFTLXSDateTimesSame("2014-01-01T23:59:59.123456789");
-        assertJavaxAndFTLXSDateTimesSame("2014-01-01T23:59:59.1235");
-    }
-    
-    private boolean isAtLeastJava6() {
-        try {
-            Class.forName("java.lang.management.LockInfo");
-        } catch (ClassNotFoundException e) {
-            return false;
-        }
-        return true;
-    }
-
-    private final DatatypeFactory datetypeFactory;
-    {
-        try {
-            datetypeFactory = DatatypeFactory.newInstance();
-        } catch (DatatypeConfigurationException e) {
-            throw new RuntimeException(e);
-        } 
-    }
-    
-    private void assertJavaxAndFTLXSDateTimesSame(String s) throws DateParseException {
-        XMLGregorianCalendar xgc = datetypeFactory.newXMLGregorianCalendar(s);
-        Date javaxDate = xgc.toGregorianCalendar().getTime();
-        Date ftlDate = _DateUtil.parseXSDateTime(s, TimeZone.getDefault(), cf2dc);
-        assertEquals(javaxDate, ftlDate);
-    }
-
-    private void assertDateParsing(String expected, String parsed, TimeZone tz) throws DateParseException {
-        assertDateParsing(expected, expected, parsed, tz);
-    }
-
-    private void assertDateParsing(String expectedXS, String expectedISO8601, String parsed, TimeZone tz)
-            throws DateParseException {
-        if (expectedXS != null) {
-            assertEquals(
-                    expectedXS,
-                    df.format(_DateUtil.parseXSDate(parsed, tz, cf2dc)));
-        }
-        if (expectedISO8601 != null) {
-            assertEquals(
-                    expectedISO8601,
-                    df.format(_DateUtil.parseISO8601Date(parsed, tz, cf2dc)));
-        }
-    }
-
-    private void assertDateTimeParsing(String expected, String parsed, TimeZone tz) throws DateParseException {
-        assertDateTimeParsing(expected, expected, parsed, tz);
-    }
-
-    private void assertDateTimeParsing(String expectedXS, String expectedISO8601, String parsed, TimeZone tz)
-            throws DateParseException {
-        if (expectedXS != null) {
-            assertEquals(
-                    expectedXS,
-                    df.format(_DateUtil.parseXSDateTime(parsed, tz, cf2dc)));
-        }
-        if (expectedISO8601 != null) {
-            assertEquals(
-                    expectedISO8601,
-                    df.format(_DateUtil.parseISO8601DateTime(parsed, tz, cf2dc)));
-        }
-    }
-
-    private void assertTimeParsing(String expected, String parsed, TimeZone tz) throws DateParseException {
-        assertTimeParsing(expected, expected, parsed, tz);
-    }
-
-    private void assertTimeParsing(String expectedXS, String expectedISO8601, String parsed, TimeZone tz)
-            throws DateParseException {
-        if (expectedXS != null) {
-            assertEquals(
-                    expectedXS,
-                    df.format(_DateUtil.parseXSTime(parsed, tz, cf2dc)));
-        }
-        if (expectedISO8601 != null) {
-            assertEquals(
-                    expectedISO8601,
-                    df.format(_DateUtil.parseISO8601Time(parsed, tz, cf2dc)));
-        }
-    }
-    
-    private void assertDateMalformed(String parsed) {
-        try {
-            _DateUtil.parseXSDate(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-        try {
-            _DateUtil.parseISO8601Date(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-    }
-
-    private void assertTimeMalformed(String parsed) {
-        try {
-            _DateUtil.parseXSTime(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-        try {
-            _DateUtil.parseISO8601Time(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-    }
-
-    private void assertDateTimeMalformed(String parsed) {
-        try {
-            _DateUtil.parseXSDateTime(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-        try {
-            _DateUtil.parseISO8601DateTime(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-    }
-
-    private void assertISO8601DateMalformed(String parsed) {
-        try {
-            _DateUtil.parseISO8601Date(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-    }
-    
-    private void assertISO8601TimeMalformed(String parsed) {
-        try {
-            _DateUtil.parseISO8601Time(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-    }
-    
-    private void assertISO8601DateTimeMalformed(String parsed) {
-        try {
-            _DateUtil.parseISO8601DateTime(parsed, _DateUtil.UTC, cf2dc);
-            fail();
-        } catch (DateParseException e) {
-            // Expected
-            echo(e);
-        }
-    }
-    
-    private void echo(@SuppressWarnings("unused") DateParseException e) {
-        // System.out.println(e);
-    }
-
-}
\ No newline at end of file