http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/overloaded-methods.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/overloaded-methods.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/overloaded-methods.ftl
deleted file mode 100644
index 329d041..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/overloaded-methods.ftl
+++ /dev/null
@@ -1,411 +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.
--->
-
-<@assertEquals actual=obj.mStringArrayVsListPreference(obj.javaStringList) 
expected="mStringArrayVsListPreference(List [a, b])" />
-<@assertEquals actual=obj.mStringArrayVsListPreference(obj.javaStringArray) 
expected="mStringArrayVsListPreference(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVsListPreference(obj.javaObjectArray) 
expected="mStringArrayVsListPreference(List [a, b])" />
-
-<#-- Check if non-overloaded calls still work; they share some code with 
overloaded methods: -->
-<@assertEquals actual=obj.mIntArrayNonOverloaded([1, 2, 3]) 
expected="mIntArrayNonOverloaded(int[] [1, 2, 3])" />
-<@assertEquals actual=obj.mIntegerArrayNonOverloaded([1, 2, 3]) 
expected="mIntegerArrayNonOverloaded(Integer[] [1, 2, 3])" />
-<@assertEquals actual=obj.mIntegerListNonOverloaded([1, 2, 3]) 
expected="mIntegerListNonOverloaded(List<Integer> [1, 2, 3])" />
-<@assertEquals actual=obj.mStringListNonOverloaded(['a', 'b', 'c']) 
expected="mStringListNonOverloaded(List<String> [a, b, c])" />
-<@assertEquals actual=obj.mStringListNonOverloaded(obj.javaStringList) 
expected="mStringListNonOverloaded(List<String> [a, b])" />
-<@assertEquals actual=obj.mStringListNonOverloaded(obj.javaStringArray) 
expected="mStringListNonOverloaded(List<String> [a, b])" />
-<@assertEquals actual=obj.mStringArrayNonOverloaded(['a', 'b', 'c']) 
expected="mStringArrayNonOverloaded(String[] [a, b, c])" />
-<@assertEquals actual=obj.mStringArrayNonOverloaded(obj.javaStringList) 
expected="mStringArrayNonOverloaded(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayNonOverloaded(obj.javaStringArray) 
expected="mStringArrayNonOverloaded(String[] [a, b])" />
-<@assertEquals actual=obj.mObjectListNonOverloaded(['a', 'b', 3]) 
expected="mObjectListNonOverloaded(List<Object> [a, b, 3])" />
-<@assertEquals actual=obj.mObjectListNonOverloaded(obj.javaStringList) 
expected="mObjectListNonOverloaded(List<Object> [a, b])" />
-<@assertEquals actual=obj.mObjectListNonOverloaded(obj.javaStringArray) 
expected="mObjectListNonOverloaded(List<Object> [a, b])" />
-<@assertEquals actual=obj.mObjectArrayNonOverloaded(['a', 'b', 3]) 
expected="mObjectArrayNonOverloaded(Object[] [a, b, 3])" />
-<@assertEquals actual=obj.mObjectArrayNonOverloaded(obj.javaStringList) 
expected="mObjectArrayNonOverloaded(Object[] [a, b])" />
-<@assertEquals actual=obj.mObjectArrayNonOverloaded(obj.javaStringArray) 
expected="mObjectArrayNonOverloaded(Object[] [a, b])" />
-
-<@assertEquals actual=obj.mStringArrayVsListPreference(obj.javaStringArray) 
expected="mStringArrayVsListPreference(String[] [a, b])" />
-
-<@assertEquals actual=obj.mStringArrayVarargsNonOverloaded('a', 'b') 
expected="mStringArrayVarargsNonOverloaded(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsNonOverloaded(['a', 'b']) 
expected="mStringArrayVarargsNonOverloaded(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsNonOverloaded(obj.javaStringList) 
expected="mStringArrayVarargsNonOverloaded(String[] [a, b])" />
-<@assertEquals 
actual=obj.mStringArrayVarargsNonOverloaded(obj.javaStringArray) 
expected="mStringArrayVarargsNonOverloaded(String[] [a, b])" />
-
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded1('a', 'b') 
expected="mStringArrayVarargsOverloaded1(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded1(['a', 'b']) 
expected="mStringArrayVarargsOverloaded1(List [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded1(obj.javaStringList) 
expected="mStringArrayVarargsOverloaded1(List [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded1(obj.javaStringArray) 
expected="mStringArrayVarargsOverloaded1(String[] [a, b])" />
-
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded2('a', 'b') 
expected="mStringArrayVarargsOverloaded2(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded2('a') 
expected="mStringArrayVarargsOverloaded2(String a)" />
-
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded3(['a']) 
expected="mStringArrayVarargsOverloaded3(String[] [a])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded3(['a', 'b']) 
expected="mStringArrayVarargsOverloaded3(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded3(['a', 'b', 'c']) 
expected="mStringArrayVarargsOverloaded3(String[] [a, b, c])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded3('a') 
expected="mStringArrayVarargsOverloaded3(String[] [a])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded3('a', 'b') 
expected="mStringArrayVarargsOverloaded3(String a, String b)" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded3('a', 'b', 'c') 
expected="mStringArrayVarargsOverloaded3(String[] [a, b, c])" />
-
-<@assertEquals actual=obj.mListOrString(['a', 'b']) 
expected="mListOrString(List [a, b])" />
-<@assertEquals actual=obj.mListOrString('a') expected="mListOrString(String 
a)" />
-<@assertEquals actual=obj.mListListOrString([['a'], 'b', 3]) 
expected="mListListOrString(List [[a], b, 3])" />
-<@assertEquals actual=obj.mListListOrString('s') 
expected="mListListOrString(String s)" />
-
-<#-- Because the fixed arg interpretations are ambiguous, it only considers 
the vararg interpretations:  -->
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded4(['a', 'b', 'c']) 
expected="mStringArrayVarargsOverloaded4(List[] [[a, b, c]])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded4('a', 'b', 'c') 
expected="mStringArrayVarargsOverloaded4(String[] [a, b, c])" />
-
-<#-- Fixed arg solutions have priority: -->
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded4(obj.javaStringList) 
expected="mStringArrayVarargsOverloaded4(List[] [[a, b]])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded4(obj.javaStringArray) 
expected="mStringArrayVarargsOverloaded4(String[] [a, b])" />
-
-<#-- Choses between the vararg solutions: -->
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded4(obj.javaStringList, 
obj.javaStringList) expected="mStringArrayVarargsOverloaded4(List[] [[a, b], 
[a, b]])" />
-
-<#-- Until there's no overloading String->Character conversion work: -->
-<@assertEquals actual=obj.mCharNonOverloaded('c') 
expected="mCharNonOverloaded(char c)" />
-<@assertEquals actual=obj.mCharNonOverloaded(obj.javaString) 
expected="mCharNonOverloaded(char s)" />
-<@assertEquals actual=obj.mCharacterNonOverloaded('c') 
expected="mCharacterNonOverloaded(Character c)" />
-<@assertEquals actual=obj.mCharacterNonOverloaded(obj.javaString) 
expected="mCharacterNonOverloaded(Character s)" />
-
-<@assertEquals actual=obj.mCharOrStringOverloaded('s', 1) 
expected="mCharOrStringOverloaded(String s, int 1)" />
-<@assertEquals actual=obj.mCharacterOrStringOverloaded('s', 1) 
expected="mCharacterOrStringOverloaded(String s, int 1)" />
-<@assertEquals actual=obj.mCharOrStringOverloaded2('ss') 
expected="mCharOrStringOverloaded2(String ss)" />
-<@assertEquals actual=obj.mCharacterOrStringOverloaded2('ss') 
expected="mCharacterOrStringOverloaded2(String ss)" />
-
-<@assertEquals actual=obj.mVarargs('a', obj.getNnS('b'), obj.getNnS('c')) 
expected='mVarargs(String... a1 = abc)' />
-
-<@assertEquals actual=obj.mNull1(null) expected="mNull1(String a1 = null)" />
-<@assertEquals actual=obj.mNull1(123) expected="mNull1(int a1 = 123)" />
-<@assertEquals actual=obj.mNull2(null) expected="mNull2(String a1 = null)" />
-<@assertEquals actual=obj.mVarargs('a', null) expected="mVarargs(String... a1 
= anull)" />
-<@assertEquals actual=obj.mVarargs(null, 'a') expected="mVarargs(File a1, 
String... a2)" />
-<@assertEquals actual=obj.mSpecificity('a', 'b') expected="mSpecificity(String 
a1, Object a2)" />
-
-<@assertEquals actual=obj.mChar('a') expected='mChar(char a1 = a)' />
-<@assertEquals actual=obj.mBoolean(true) expected="mBoolean(boolean a1 = 
true)" />
-<@assertEquals actual=obj.mBoolean(null) expected="mBoolean(Boolean a1 = 
null)" />
-
-<@assertEquals actual=obj.mIntNonOverloaded(123?long) expected=123 />
-<@assertEquals actual=obj.mIntNonOverloaded(123) expected=123 />
-<@assertEquals actual=obj.mIntNonOverloaded(123.5) expected=123 />
-<@assertEquals actual=obj.mIntNonOverloaded(2147483648) expected=-2147483648 
/> <#-- overflow -->
-<@assertEquals actual=obj.mNumBoxedVSBoxed(123.5) 
expected='mNumBoxedVSBoxed(Long a1 = 123)' />
-<@assertEquals actual=obj.mNumBoxedVSBoxed(123?int) 
expected='mNumBoxedVSBoxed(Long a1 = 123)' />
-<@assertEquals actual=obj.mNumBoxedVSBoxed(123?long) 
expected="mNumBoxedVSBoxed(Long a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedVSBoxed(123?short) 
expected="mNumBoxedVSBoxed(Short a1 = 123)" />
-<@assertEquals 
-    actual=obj.mNumUnambigous(2147483648) expected="mNumUnambigous(Integer a1 
= -2147483648)" /> <#-- overflow -->
-
-<@assertEquals actual=obj.mIntPrimVSBoxed(123?int) 
expected="mIntPrimVSBoxed(int a1 = 123)" />
-<@assertEquals actual=obj.mIntPrimVSBoxed(123?short) 
expected="mIntPrimVSBoxed(int a1 = 123)" />
-<@assertEquals actual=obj.mIntPrimVSBoxed(123) expected="mIntPrimVSBoxed(int 
a1 = 123)" />
-<#-- This doesn't fail as 123L can be converted to int without loss: -->
-<@assertEquals actual=obj.mIntPrimVSBoxed(123?long) 
expected="mIntPrimVSBoxed(int a1 = 123)" />
-
-<@assertEquals actual=obj.mNumPrimVSPrim(123?short) 
expected="mNumPrimVSPrim(short a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimVSPrim(123?int) 
expected="mNumPrimVSPrim(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimVSPrim(123?long) 
expected="mNumPrimVSPrim(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimVSPrim(123?double) 
expected="mNumPrimVSPrim(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimVSPrim(123456) expected="mNumPrimVSPrim(long 
a1 = 123456)" />
-
-<@assertEquals actual=obj.mNumPrimAll(123?byte) expected="mNumPrimAll(byte a1 
= 123)" />
-<@assertEquals actual=obj.mNumPrimAll(123?short) expected="mNumPrimAll(short 
a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimAll(123?int) expected="mNumPrimAll(int a1 = 
123)" />
-<@assertEquals actual=obj.mNumPrimAll(123?long) expected="mNumPrimAll(long a1 
= 123)" />
-<@assertEquals actual=obj.mNumPrimAll(123?float) expected="mNumPrimAll(float 
a1 = 123.0)" />
-<@assertEquals actual=obj.mNumPrimAll(123?double) expected="mNumPrimAll(double 
a1 = 123.0)" />
-<@assertEquals actual=obj.mNumPrimAll(123) expected="mNumPrimAll(BigDecimal a1 
= 123)" />
-<@assertEquals actual=obj.mNumPrimAll(obj.bigInteger(123)) 
expected="mNumPrimAll(BigInteger a1 = 123)" />
-
-<@assertEquals actual=obj.mNumBoxedAll(123?byte) expected="mNumBoxedAll(Byte 
a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll(123?short) expected="mNumBoxedAll(Short 
a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll(123?int) expected="mNumBoxedAll(Integer 
a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll(123?long) expected="mNumBoxedAll(Long 
a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll(123?float) expected="mNumBoxedAll(Float 
a1 = 123.0)" />
-<@assertEquals actual=obj.mNumBoxedAll(123?double) 
expected="mNumBoxedAll(Double a1 = 123.0)" />
-<@assertEquals actual=obj.mNumBoxedAll(123) expected="mNumBoxedAll(BigDecimal 
a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll(obj.bigInteger(123)) 
expected="mNumBoxedAll(BigInteger a1 = 123)" />
-
-<@assertEquals actual=obj.mNumPrimAll2nd(123?byte) 
expected="mNumPrimAll2nd(short a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimAll2nd(123?short) 
expected="mNumPrimAll2nd(short a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimAll2nd(123?int) 
expected="mNumPrimAll2nd(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimAll2nd(123?long) 
expected="mNumPrimAll2nd(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimAll2nd(123?float) 
expected="mNumPrimAll2nd(double a1 = 123.0)" />
-<@assertEquals actual=obj.mNumPrimAll2nd(123?double) 
expected="mNumPrimAll2nd(double a1 = 123.0)" />
-
-<@assertEquals actual=obj.mNumBoxedAll2nd(123?byte) 
expected="mNumBoxedAll2nd(Short a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll2nd(123?short) 
expected="mNumBoxedAll2nd(Short a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll2nd(123?int) 
expected="mNumBoxedAll2nd(Long a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll2nd(123?long) 
expected="mNumBoxedAll2nd(Long a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedAll2nd(123?float) 
expected="mNumBoxedAll2nd(Double a1 = 123.0)" />
-<@assertEquals actual=obj.mNumBoxedAll2nd(123?double) 
expected="mNumBoxedAll2nd(Double a1 = 123.0)" />
- 
-<@assertEquals actual=obj.mNumPrimFallbackToNumber(123?int) 
expected="mNumPrimFallbackToNumber(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimFallbackToNumber(123?long) 
expected="mNumPrimFallbackToNumber(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimFallbackToNumber(123?double) 
expected="mNumPrimFallbackToNumber(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimFallbackToNumber(123.5?double) 
expected="mNumPrimFallbackToNumber(Number a1 = 123.5)" />
-<@assertEquals actual=obj.mNumPrimFallbackToNumber(123) 
expected="mNumPrimFallbackToNumber(long a1 = 123)" />
-<@assertEquals actual=obj.mNumPrimFallbackToNumber(obj.bigInteger(123)) 
expected="mNumPrimFallbackToNumber(long a1 = 123)" />
-<@assertEquals 
actual=obj.mNumPrimFallbackToNumber(obj.bigInteger(9223372036854775808))
-    expected="mNumPrimFallbackToNumber(Number a1 = 9223372036854775808)" />
-<@assertEquals actual=obj.mNumPrimFallbackToNumber(obj.rational(246, 2)) 
expected="mNumPrimFallbackToNumber(Number a1 = 246/2)" />
-<@assertEquals actual=obj.mNumPrimFallbackToNumber('x') 
expected="mNumPrimFallbackToNumber(Object a1 = x)" />
-
-<@assertEquals actual=obj.mNumBoxedFallbackToNumber(123?int) 
expected="mNumBoxedFallbackToNumber(Long a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedFallbackToNumber(123?long) 
expected="mNumBoxedFallbackToNumber(Long a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedFallbackToNumber(123?double) 
expected="mNumBoxedFallbackToNumber(Long a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedFallbackToNumber(123.5?double) 
expected="mNumBoxedFallbackToNumber(Number a1 = 123.5)" />
-<@assertEquals actual=obj.mNumBoxedFallbackToNumber(123) 
expected="mNumBoxedFallbackToNumber(Long a1 = 123)" />
-<@assertEquals actual=obj.mNumBoxedFallbackToNumber(obj.bigInteger(123)) 
expected="mNumBoxedFallbackToNumber(Long a1 = 123)" />
-<@assertEquals 
actual=obj.mNumBoxedFallbackToNumber(obj.bigInteger(9223372036854775808))
-    expected="mNumBoxedFallbackToNumber(Number a1 = 9223372036854775808)" />
-<@assertEquals actual=obj.mNumBoxedFallbackToNumber(obj.rational(246, 2)) 
expected="mNumBoxedFallbackToNumber(Number a1 = 246/2)" />
-<@assertEquals actual=obj.mNumBoxedFallbackToNumber('x') 
expected="mNumBoxedFallbackToNumber(Object a1 = x)" />
-
-<@assertEquals actual=obj.mDecimalLoss(1.5) expected="mDecimalLoss(double a1 = 
1.5)" />
-<@assertEquals actual=obj.mDecimalLoss(1.5?double) 
expected="mDecimalLoss(double a1 = 1.5)" />
-
-<@assertEquals actual=obj.mNumConversionLoses1(1?double, '', '') 
expected="Number 1.0 java.lang.Double" />
-<@assertEquals actual=obj.mNumConversionLoses1(1?short, '', '') 
expected="Number 1 java.lang.Short" />
-<@assertEquals actual=obj.mNumConversionLoses1(1?long, '', '') 
expected="Number 1 java.lang.Long" />
-<@assertEquals actual=obj.mNumConversionLoses2(1?double, '', '') 
expected="Number 1.0 java.lang.Double" />
-<@assertEquals actual=obj.mNumConversionLoses2(1?short, '', '') 
expected="Number 1 java.lang.Short" />
-<@assertEquals actual=obj.mNumConversionLoses2(1?long, '', '') 
expected="Number 1 java.lang.Long" />
-<@assertEquals actual=obj.mNumConversionLoses3(1?double, '', '') 
expected="Serializable 1.0 java.lang.Double" />
-<@assertEquals actual=obj.mNumConversionLoses3(1?int, '', '') 
expected="Serializable 1 java.lang.Integer" />
-<@assertEquals actual=obj.mNumConversionLoses3(1?short, '', '') 
expected="Serializable 1 java.lang.Short" />
-<@assertEquals actual=obj.mNumConversionLoses3(1?long, '', '') 
expected="Serializable 1 java.lang.Long" />
-
-<#-- BigDecimal-to-int is preferred over to-long for BC and user expectations: 
-->
-<@assertEquals actual=obj.nIntAndLong(1) expected="nIntAndLong(int 1)" />
-<@assertEquals actual=obj.nIntAndLong(1?long) expected="nIntAndLong(long 1)" />
-<#-- BigDecimal-to-short is, however unfavored due to the higher chance of 
overflow: -->
-<@assertEquals actual=obj.nIntAndShort(1) expected="nIntAndShort(int 1)" />
-<@assertEquals actual=obj.nIntAndShort(1?short) expected="nIntAndShort(short 
1)" />
-<@assertEquals actual=obj.nLongAndShort(1) expected="nLongAndShort(long 1)" />
-<@assertEquals actual=obj.nLongAndShort(1?short) expected="nLongAndShort(short 
1)" />
-
-<@assertEquals actual=obj.varargs1(null, 1, 2, 3.5) expected='varargs1(String 
s = null, double... xs = [1.0, 2.0, 3.5])' />
-<@assertEquals actual=obj.varargs1(null, 1, 2.5, 3) expected='varargs1(String 
s = null, double... xs = [1.0, 2.5, 3.0])' />
-<@assertEquals actual=obj.varargs1(null, 1.5, 2, 3) expected='varargs1(String 
s = null, double... xs = [1.5, 2.0, 3.0])' />
-<@assertEquals actual=obj.varargs1(null, 1, 2, 'c') expected='varargs1(String 
s = null, Object... xs = [1, 2, c])' />
-<@assertEquals actual=obj.varargs1(null, 1, 'b', 3) expected='varargs1(String 
s = null, Object... xs = [1, b, 3])' />
-<@assertEquals actual=obj.varargs1(null, 'a', 2, 3) expected='varargs1(String 
s = null, Object... xs = [a, 2, 3])' />
-<@assertEquals actual=obj.varargs1('s', 1, 2, 3) expected='varargs1(String s = 
"s", int... xs = [1, 2, 3])' />
-<@assertEquals actual=obj.varargs1('s', 1.1, 2.1, 3.1) 
expected='varargs1(String s = "s", double... xs = [1.1, 2.1, 3.1])' />
-<@assertEquals actual=obj.varargs1('s', 'a', 'b', 'c') 
expected='varargs1(String s = "s", Object... xs = [a, b, c])' />
-<@assertEquals actual=obj.varargs1(null, 1, 2, 3) expected='varargs1(String s 
= null, int... xs = [1, 2, 3])' />
-<@assertEquals actual=obj.varargs1(null, 1.1, 2.1, 3.1) 
expected='varargs1(String s = null, double... xs = [1.1, 2.1, 3.1])' />
-<@assertEquals actual=obj.varargs1(null, 'a', 'b', 'c') 
expected='varargs1(String s = null, Object... xs = [a, b, c])' />
-<@assertEquals actual=obj.varargs1(null, 1, 2, 3?double) 
expected='varargs1(String s = null, int... xs = [1, 2, 3])' />
-<@assertEquals actual=obj.varargs1(null, 1, 2?double, 3?double) 
expected='varargs1(String s = null, double... xs = [1.0, 2.0, 3.0])' />
-<@assertEquals actual=obj.varargs1(null, 1, 2?float, 3?float) 
expected='varargs1(String s = null, double... xs = [1.0, 2.0, 3.0])' />
-<@assertEquals actual=obj.varargs1(null, 1?double, 2?byte, 3?byte) 
expected='varargs1(String s = null, int... xs = [1, 2, 3])' />
-<@assertEquals actual=obj.varargs1(0, 1, 2, 3) expected='varargs1(Object s = 
0, Object... xs = [1, 2, 3])' />
-<@assertEquals actual=obj.varargs1('s') expected='varargs1(String s = "s", 
int... xs = [])' />
-
-<@assertEquals actual=obj.varargs2(1, 2.5, 3) expected='varargs2(double... xs 
= [1.0, 2.5, 3.0])' />
-<@assertEquals actual=obj.varargs2(1, 2.5?double, 3) 
expected='varargs2(double... xs = [1.0, 2.5, 3.0])' />
-<@assertEquals actual=obj.varargs2(1?int, 2.5?double, 3) 
expected='varargs2(double... xs = [1.0, 2.5, 3.0])' />
-<@assertEquals actual=obj.varargs2(1?long, 2.5?double, 3) 
expected='varargs2(double... xs = [1.0, 2.5, 3.0])' />
-<@assertEquals actual=obj.varargs2(1?long, 2?double, 3) 
expected='varargs2(int... xs = [1, 2, 3])' />
-
-<@assertEquals actual=obj.varargs3(1, 2, 3) expected='varargs3(Comparable... 
xs = [1, 2, 3])' />
-<@assertEquals actual=obj.varargs3('a', 'b', 'c') expected='varargs3(String... 
xs = [a, b, c])' />
-<@assertEquals actual=obj.varargs3(1, 'b', 'c') 
expected='varargs3(Comparable... xs = [1, b, c])' />
-<@assertEquals actual=obj.varargs3('a', 'b', 3) 
expected='varargs3(Comparable... xs = [a, b, 3])' />
-<@assertEquals actual=obj.varargs3('a', [], 3) expected='varargs3(Object... xs 
= [a, [], 3])' />
-<@assertEquals actual=obj.varargs3(null, 'b', null) 
expected='varargs3(String... xs = [null, b, null])' />
-<@assertEquals actual=obj.varargs3(null, 2, null) 
expected='varargs3(Comparable... xs = [null, 2, null])' />
-<@assertEquals actual=obj.varargs3(null, [], null) 
expected='varargs3(Object... xs = [null, [], null])' />
-<@assertEquals actual=obj.varargs3(null, null, null) 
expected='varargs3(String... xs = [null, null, null])' />
-<@assertEquals actual=obj.varargs3() expected='varargs3(String... xs = [])' />
-
-<@assertEquals actual=obj.varargs4(null) expected='varargs4(Integer... xs = 
[null])' />
-<@assertEquals actual=obj.varargs4(null, null, null) 
expected='varargs4(Integer... xs = [null, null, null])' />
-<@assertEquals actual=obj.varargs4(1, null, 2) expected='varargs4(Integer... 
xs = [1, null, 2])' />
-<@assertEquals actual=obj.varargs4(1) expected='varargs4(int... xs = [1])' />
-<@assertEquals actual=obj.varargs4(1, 2, 3) expected='varargs4(int... xs = [1, 
2, 3])' />
-
-<@assertEquals actual=obj.varargs5(1, 2, 3, 4, 5) expected='varargs5(int a1 = 
1, int a2 = 2, int a3 = 3, int... xs = [4, 5])' />
-<@assertEquals actual=obj.varargs5(1, 2, 3, 4) expected='varargs5(int a1 = 1, 
int a2 = 2, int a3 = 3, int... xs = [4])' />
-<@assertEquals actual=obj.varargs5(1, 2, 3) expected='varargs5(int a1 = 1, int 
a2 = 2, int a3 = 3, int... xs = [])' />
-<@assertEquals actual=obj.varargs5(1, 2) expected='varargs5(int a1 = 1, int a2 
= 2, int... xs = [])' />
-<@assertEquals actual=obj.varargs5(1) expected='varargs5(int a1 = 1, int... xs 
= [])' />
-<@assertEquals actual=obj.varargs5() expected='varargs5(int... xs = [])' />
-
-<@assertEquals actual=obj.varargs6('s', 2) expected='varargs6(String a1 = s, 
int... xs = [2])' />
-<@assertEquals actual=obj.varargs6('s') expected='varargs6(String a1 = s, 
int... xs = [])' />
-<@assertEquals actual=obj.varargs6(1, 2) expected='varargs6(Object a1 = 1, int 
a2 = 2, int... xs = [])' />
-<@assertFails message="no compatible overloaded">${obj.varargs6(1)}</@>
-
-<@assertEquals actual=obj.varargs7(1?int, 2?int) expected='varargs7(int... xs 
= [1, 2])' />
-<@assertEquals actual=obj.varargs7(1?short, 2?int) expected='varargs7(short a1 
= 1, int... xs = [2])' />
-
-<#-- Tests that a pre-2.3.21 bug is fixed now: -->
-<@assertEquals actual=obj.mVarargsIgnoredTail(1, 2, 3) 
expected='mVarargsIgnoredTail(int... is = [1, 2, 3])' />
-<@assertEquals actual=obj.mVarargsIgnoredTail(1, 2, 3.5) 
expected='mVarargsIgnoredTail(int i = 1, double... ds = [2.0, 3.5])' />
-
-<@assertEquals actual=obj.mNullAmbiguous('a') expected='mNullAmbiguous(String 
s = a)' />
-<@assertEquals actual=obj.mNullAmbiguous(123) expected='mNullAmbiguous(int i = 
123)' />
-<@assertEquals actual=obj.mNullAmbiguous(1.9) expected='mNullAmbiguous(int i = 
1)' />
-<@assertEquals actual=obj.mNullAmbiguous(1?double) 
expected='mNullAmbiguous(int i = 1)' />
-<@assertFails message="no compatible 
overloaded">${obj.mNullAmbiguous(1.9?double)}</@>
-<@assertFails message="multiple compatible 
overloaded">${obj.mNullAmbiguous(null)}</@>
-
-<@assertFails message="multiple compatible 
overloaded">${obj.mNullAmbiguous2(null)}</@>
-
-<@assertEquals actual=obj.mNullNonAmbiguous(null) 
expected='mNullNonAmbiguous(String s = null)' />
-
-<#-- The primitive int-s will win twice, but then String wins over Object, 
which is stronger: -->
-<@assertEquals actual=obj.mLowRankWins(1, 2, 'a') 
expected='mLowRankWins(Integer x = 1, Integer y = 2, String s = a)' />
-
-<@assertEquals actual=obj.mRareWrappings(obj.file, obj.adaptedNumber, 
obj.adaptedNumber, obj.adaptedNumber, obj.stringWrappedAsBoolean)
-               expected='mRareWrappings(File f = file, double d1 = 123.0002, 
Double d2 = 123.0002, double d3 = 123.0002, b = true)' />
-<@assertEquals actual=obj.mRareWrappings(obj.stringWrappedAsBoolean, 
obj.adaptedNumber, obj.adaptedNumber, obj.adaptedNumber, 
obj.stringAdaptedToBoolean)
-               expected='mRareWrappings(String s = yes, double d1 = 123.0002, 
Double d2 = 123.0002, double d3 = 123.0002, b = true)' />
-<@assertEquals actual=obj.mRareWrappings(obj.stringAdaptedToBoolean2, 
obj.wrapperNumber, obj.wrapperNumber, obj.wrapperNumber, 
obj.stringAdaptedToBoolean2)
-               expected='mRareWrappings(String s = yes, double d1 = 123.0001, 
Double d2 = 123.0001, double d3 = 123.0001, b = true)' />
-<@assertEquals actual=obj.mRareWrappings(obj.booleanWrappedAsAnotherBoolean, 
0, 0, 0, obj.booleanWrappedAsAnotherBoolean)
-               expected='mRareWrappings(Object o = true, double d1 = 0.0, 
Double d2 = 0.0, double d3 = 0.0, b = true)' />
-<@assertEquals actual=obj.mRareWrappings(obj.adaptedNumber, 0, 0, 0, 
!obj.booleanWrappedAsAnotherBoolean)
-               expected='mRareWrappings(Object o = 124, double d1 = 0.0, 
Double d2 = 0.0, double d3 = 0.0, b = true)' />
-<@assertEquals actual=obj.mRareWrappings(obj.booleanWrappedAsAnotherBoolean, 
0, 0, 0, !obj.stringAdaptedToBoolean)
-               expected='mRareWrappings(Object o = true, double d1 = 0.0, 
Double d2 = 0.0, double d3 = 0.0, b = true)' />
-               
-<@assertEquals actual=obj.mRareWrappings2(obj.adaptedNumber) 
expected='mRareWrappings2(byte b = 124)' />
-
-<#-- Test for List VS array problems due to too vague hinting: -->
-
-<@assertEquals actual=obj.mSeqToArrayNonOverloaded(['a', 'b'], 'c') 
expected='mSeqToArrayNonOverloaded(String[] [a, b], String c)' />
-
-<@assertEquals actual=obj.mSeqToArrayGoodHint(['a', 'b'], 'c') 
expected='mSeqToArrayGoodHint(String[] [a, b], String c)' />
-<@assertEquals actual=obj.mSeqToArrayGoodHint(['a', 'b'], 3) 
expected='mSeqToArrayGoodHint(String[] [a, b], int 3)' />
-
-<@assertEquals actual=obj.mSeqToArrayGoodHint2(['a', 'b'], 'c') 
expected='mSeqToArrayGoodHint2(String[] [a, b], String c)' />
-<@assertEquals actual=obj.mSeqToArrayGoodHint2('a') 
expected='mSeqToArrayGoodHint2(String a)' />
-
-<@assertEquals actual=obj.mSeqToArrayPoorHint(['a', 'b'], 'c') 
expected='mSeqToArrayPoorHint(String[] [a, b], String c)' />
-<@assertEquals actual=obj.mSeqToArrayPoorHint('a', 2) 
expected='mSeqToArrayPoorHint(String a, int 2)' />
-
-<@assertEquals actual=obj.mSeqToArrayPoorHint2(['a', 'b']) 
expected='mSeqToArrayPoorHint2(String[] [a, b])' />
-<@assertEquals actual=obj.mSeqToArrayPoorHint2('a') 
expected='mSeqToArrayPoorHint2(String a)' />
-
-<@assertFails message="multiple compatible overloaded"><@assertEquals 
actual=obj.mSeqToArrayPoorHint3(['a', 'b']) 
expected='mSeqToArrayPoorHint3(String[] [a, b])' /></@>
-<@assertFails message="multiple compatible overloaded"><@assertEquals 
actual=obj.mSeqToArrayPoorHint3([1, 2]) expected='mSeqToArrayPoorHint3(int[] 
[a, b])' /></@>
-
-<@assertEquals actual=obj.mStringArrayVsListPreference(['a', 'b']) 
expected="mStringArrayVsListPreference(List [a, b])" />
-<@assertEquals actual=obj.mStringArrayVsListPreference(obj.javaObjectArray) 
expected="mStringArrayVsListPreference(List [a, b])" />
-<@assertEquals actual=obj.mStringArrayVsObjectArrayPreference(['a', 'b']) 
expected="mStringArrayVsObjectArrayPreference(Object[] [a, b])" />
-<@assertEquals actual=obj.mIntArrayVsIntegerArrayPreference([1, 2]) 
expected="mIntArrayVsIntegerArrayPreference(Integer[] [1, 2])" />
-
-<@assertEquals 
actual=obj.mStringArrayVsObjectArrayPreference(obj.javaStringArray) 
expected="mStringArrayVsObjectArrayPreference(String[] [a, b])" />
-<@assertFails message="no compatible 
overloaded">${obj.mStringArrayVsObjectArrayPreference(obj.javaIntArray)}</@>
-<@assertEquals 
actual=obj.mStringArrayVsObjectArrayPreference(obj.javaIntegerArray) 
expected="mStringArrayVsObjectArrayPreference(Object[] [11, 22])" />
-
-<@assertEquals actual=obj.mIntegerArrayOverloaded([1, 2], 3) 
expected="mIntegerArrayOverloaded(Integer[] [1, 2], int 3)" />
-<@assertEquals actual=obj.mIntegerArrayOverloaded([1?byte, 2?byte], 3) 
expected="mIntegerArrayOverloaded(Integer[] [1, 2], int 3)" />
-<@assertEquals actual=obj.mIntegerArrayOverloaded(obj.javaIntegerList, 3) 
expected="mIntegerArrayOverloaded(Integer[] [1, 2], int 3)" />
-<@assertEquals actual=obj.mIntegerArrayOverloaded(obj.javaByteList, 3) 
expected="mIntegerArrayOverloaded(Integer[] [1, 2], int 3)" />
-
-<@assertEquals actual=obj.mStringArrayOverloaded(['a', 'b'], 3) 
expected="mStringArrayOverloaded(String[] [a, b], int 3)" />
-<@assertEquals actual=obj.mStringArrayOverloaded(obj.javaStringList, 3) 
expected="mStringArrayOverloaded(String[] [a, b], int 3)" />
-<@assertEquals actual=obj.mStringArrayOverloaded(obj.javaCharacterList, 3) 
expected="mStringArrayOverloaded(String[] [c, C], int 3)" />
-<@assertFails message="Failed to convert 
sequence">${obj.mStringArrayOverloaded([1, 2], 3)}</@>
-<@assertFails message="Failed to 
convert">${obj.mStringArrayOverloaded(obj.javaIntegerList, 3)}</@>
-
-<@assertEquals actual=obj.mCharArrayOverloaded(['a', 'b'], 3) 
expected="mCharArrayOverloaded(char[] [a, b], int 3)" />
-<@assertEquals actual=obj.mCharArrayOverloaded(obj.javaCharacterList, 3) 
expected="mCharArrayOverloaded(char[] [c, C], int 3)" />
-<@assertEquals actual=obj.mCharArrayOverloaded(obj.javaStringList, 3) 
expected="mCharArrayOverloaded(char[] [a, b], int 3)" />
-<@assertFails message="Failed to convert 
sequence">${obj.mCharArrayOverloaded(['aa', 'bb'], 3)}</@>
-<@assertFails message="Failed to 
convert">${obj.mCharArrayOverloaded(obj.javaString2List, 3)}</@>
-<@assertEquals actual=obj.mCharArrayOverloaded(['a', 'b'], 's') 
expected="mCharArrayOverloaded(Character[] [a, b], String s)" />
-<@assertEquals actual=obj.mCharArrayOverloaded(obj.javaCharacterList, 's') 
expected="mCharArrayOverloaded(Character[] [c, C], String s)" />
-<@assertEquals actual=obj.mCharArrayOverloaded(obj.javaStringList, 's') 
expected="mCharArrayOverloaded(Character[] [a, b], String s)" />
-<@assertFails message="Failed to convert 
sequence">${obj.mCharArrayOverloaded(['aa', 'bb'], 's')}</@>
-<@assertFails message="Failed to 
convert">${obj.mCharArrayOverloaded(obj.javaString2List, 's')}</@>
-
-<@assertEquals actual=obj.mStringArrayArrayOverloaded([['a', 'b'], ['c']], 3) 
expected="mStringArrayArrayOverloaded(String[][] [[a, b], [c]], int 3)" />
-<@assertEquals actual=obj.mStringArrayArrayOverloaded(obj.javaStringListList, 
3) expected="mStringArrayArrayOverloaded(String[][] [[a, b], [c]], int 3)" />
-<@assertEquals 
actual=obj.mStringArrayArrayOverloaded(obj.javaStringSequenceList, 3) 
expected="mStringArrayArrayOverloaded(String[][] [[a, b], [c]], int 3)" />
-<@assertFails message="Failed to 
convert">${obj.mStringArrayArrayOverloaded(obj.javaStringList, 3)}</@>
-<@assertFails message="Failed to 
convert">${obj.mStringArrayArrayOverloaded(obj.javaIntegerListList, 3)}</@>
-<@assertEquals actual=obj.mIntArrayArrayOverloaded(obj.javaListOfIntArrays) 
expected="mIntArrayArrayOverloaded([[1, 2, 3], [], [4]])" />
-<@assertEquals actual=obj.mArrayOfListsOverloaded(obj.javaListOfIntArrays) 
expected="mArrayOfListsOverloaded([[1, 2, 3], [], [4]])" />
-<@assertEquals actual=obj.mIntArrayArrayNonOverloaded(obj.javaListOfIntArrays) 
expected="mIntArrayArrayNonOverloaded([[1, 2, 3], [], [4]])" />
-<@assertEquals actual=obj.mArrayOfListsNonOverloaded(obj.javaListOfIntArrays) 
expected="mArrayOfListsNonOverloaded([[1, 2, 3], [], [4]])" />
-
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded2(['a', 'b']) 
expected="mStringArrayVarargsOverloaded2(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded2(obj.javaStringList) 
expected="mStringArrayVarargsOverloaded2(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded2(obj.javaStringArray) 
expected="mStringArrayVarargsOverloaded2(String[] [a, b])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded2(['a']) 
expected="mStringArrayVarargsOverloaded2(String[] [a])" />
-
-<#-- Situations that lead to array-to-List conversion: -->
-<@assertEquals actual=obj.mListOrString(obj.javaStringArray) 
expected="mListOrString(List [a, b])" />
-<@assertEquals actual=obj.mListOrString(obj.javaEmptyStringArray) 
expected="mListOrString(List [])" />
-<@assertEquals actual=obj.mListOrString(obj.javaIntArray) 
expected="mListOrString(List [11, 22])" />
-<@assertEquals actual=obj.mListListOrString(obj.javaStringArrayArray) 
expected="mListListOrString(List [[a, b], [], [c]])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded4(obj.javaStringArray, 
obj.javaStringArray) expected="mStringArrayVarargsOverloaded4(List[] [[a, b], 
[a, b]])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded4(obj.javaStringList, 
obj.javaStringArray) expected="mStringArrayVarargsOverloaded4(List[] [[a, b], 
[a, b]])" />
-<@assertEquals actual=obj.mStringArrayVarargsOverloaded4(obj.javaStringArray, 
obj.javaStringList) expected="mStringArrayVarargsOverloaded4(List[] [[a, b], 
[a, b]])" />
-
-<@assertEquals actual=obj.mMapOrBoolean(obj.hashAndScalarModel) 
expected="mMapOrBoolean(Map {})" />
-<@assertEquals actual=obj.mMapOrBoolean(obj.booleanAndScalarModel) 
expected="mMapOrBoolean(boolean true)" />
-<@assertEquals actual=obj.mMapOrBoolean(obj.allModels) 
expected="mMapOrBoolean(boolean true)" />
-
-<@assertEquals actual=obj.mMapOrBooleanVarargs(obj.hashAndScalarModel) 
expected="mMapOrBooleanVarargs(Map... [{}])" />
-<@assertEquals actual=obj.mMapOrBooleanVarargs(obj.hashAndScalarModel, 
obj.hashAndScalarModel) expected="mMapOrBooleanVarargs(Map... [{}, {}])" />
-<@assertEquals actual=obj.mMapOrBooleanVarargs(obj.allModels) 
expected="mMapOrBooleanVarargs(boolean... [true])" />
-<@assertEquals actual=obj.mMapOrBooleanVarargs(obj.allModels, obj.allModels) 
expected="mMapOrBooleanVarargs(boolean... [true, true])" />
-
-<@assertEquals actual=obj.mMapOrBooleanFixedAndVarargs(obj.hashAndScalarModel) 
expected="mMapOrBooleanFixedAndVarargs(Map {})" />
-<@assertEquals actual=obj.mMapOrBooleanFixedAndVarargs(obj.hashAndScalarModel, 
obj.hashAndScalarModel) expected="mMapOrBooleanFixedAndVarargs(Map... [{}, 
{}])" />
-<@assertEquals actual=obj.mMapOrBooleanFixedAndVarargs(obj.hashAndScalarModel, 
obj.hashAndScalarModel, obj.hashAndScalarModel) 
expected="mMapOrBooleanFixedAndVarargs(Map... [{}, {}, {}])" />
-<@assertEquals actual=obj.mMapOrBooleanFixedAndVarargs(obj.allModels) 
expected="mMapOrBooleanFixedAndVarargs(boolean true)" />
-<@assertEquals actual=obj.mMapOrBooleanFixedAndVarargs(obj.allModels, 
obj.allModels) expected="mMapOrBooleanFixedAndVarargs(boolean... [true, true])" 
/>
-<@assertEquals actual=obj.mMapOrBooleanFixedAndVarargs(obj.allModels, 
obj.allModels, obj.allModels) expected="mMapOrBooleanFixedAndVarargs(boolean... 
[true, true, true])" />
-
-<@assertEquals actual=obj.mNumberOrArray(obj.allModels) 
expected="mNumberOrArray(Number 1)" />
-<@assertEquals actual=obj.mNumberOrArray([obj.allModels]) 
expected="mNumberOrArray(Object[] [1])" />
-<@assertEquals actual=obj.mIntOrArray(obj.allModels) expected="mIntOrArray(int 
1)" />
-<@assertEquals actual=obj.mDateOrArray(obj.allModels) 
expected="mDateOrArray(Date 0)" />
-<@assertEquals actual=obj.mStringOrArray(obj.allModels) 
expected="mStringOrArray(String s)" />
-<@assertEquals actual=obj.mBooleanOrArray(obj.allModels) 
expected="mBooleanOrArray(boolean true)" />
-<@assertEquals actual=obj.mMapOrArray(obj.allModels) expected="mMapOrArray(Map 
{})" />
-<@assertEquals actual=obj.mListOrArray(obj.allModels) 
expected="mListOrArray(List [])" />
-<@assertEquals actual=obj.mSetOrArray(obj.allModels) expected="mSetOrArray(Set 
[])" />
-
-<@assertEquals actual=obj.mCharOrCharacterOverloaded('c') 
expected="mCharOrCharacterOverloaded(char c)" />
-<@assertEquals actual=obj.mCharOrCharacterOverloaded(obj.javaString) 
expected="mCharOrCharacterOverloaded(char s)" />
-<@assertEquals actual=obj.mCharOrCharacterOverloaded(null) 
expected="mCharOrCharacterOverloaded(Character null)" />
-
-<@assertEquals actual=obj.mCharOrBooleanOverloaded('c') 
expected="mCharOrBooleanOverloaded(char c)" />
-<@assertEquals actual=obj.mCharOrBooleanOverloaded(true) 
expected="mCharOrBooleanOverloaded(boolean true)" />
-
-<@assertEquals actual=obj.mCharOrStringOverloaded('c', true) 
expected="mCharOrStringOverloaded(char c, boolean true)" />
-<@assertEquals actual=obj.mCharacterOrStringOverloaded('c', true) 
expected="mCharacterOrStringOverloaded(Character c, boolean true)" />
-
-<@assertEquals actual=obj.mCharOrStringOverloaded2('c') 
expected="mCharOrStringOverloaded2(char c)" />
-<@assertEquals actual=obj.mCharacterOrStringOverloaded2('c') 
expected="mCharacterOrStringOverloaded2(Character c)" />
-<@assertEquals actual=obj.mCharOrStringOverloaded2('ss') 
expected="mCharOrStringOverloaded2(String ss)" />
-<@assertEquals actual=obj.mCharacterOrStringOverloaded2('ss') 
expected="mCharacterOrStringOverloaded2(String ss)" />
-
-<#-- The exmple given in bug report 363 -->
-<#assign theMap = {'name':'Billy', 'lastName', 'Pilgrim'} />
-<@assertEquals actual=obj.bugReport363(theMap, []) expected="Executed: 
testMethod(Map fields, List listField) on input: fields={name=Billy, 
lastName=Pilgrim} and listField=[]" />
-<@assertEquals actual=obj.bugReport363(theMap, null) expected="Executed: 
testMethod(Map fields, List listField) on input: fields={name=Billy, 
lastName=Pilgrim} and listField=null" />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/precedence.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/precedence.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/precedence.ftl
deleted file mode 100644
index 472b076..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/precedence.ftl
+++ /dev/null
@@ -1,61 +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.
--->
-<html>
-<head>
-<title>FreeMarker: Operator Precedence Test</title>
-</head>
-<body>
-<#assign patate1 = "test">
-<#assign patate2 = "test">
-<#assign patate3 = "test">
-
-<#if patate1 == patate2 && patate2 == patate3>
-@@@@@@@@@@@
-</#if>
-
-<br />
-<br />
-
-<#if patate1?exists && patate2 == patate3>
-##########
-</#if>
-
-<br />
-<br />
-
-<#if patate2 == patate2 && (patate2==patate2)>
-&&&&&&&&&&&
-</#if>
-
-<br />
-<br />
-
-<#if (patate2 == patate2) && (patate2==patate2)>
-!!!!!!!!!!!
-</#if>
-
-<br />
-<br />
-
-<#if (patate2 == patate2) && patate2==patate2>
-$$$$$$$$$$$
-</#if>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/range-common.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/range-common.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/range-common.ftl
deleted file mode 100644
index 142435b..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/range-common.ftl
+++ /dev/null
@@ -1,314 +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.
--->
-<#-- A version of "?join" that fails at null-s in the sequence: -->
-<#function join seq sep=''>
-  <#local r = "">
-  <#list seq as i>
-    <#local r = r + i>
-    <#if i_has_next>
-      <#local r = r + sep>
-    </#if>
-  </#list>
-  <#return r>
-</#function>
-
-<#----------------------->
-<#-- Range expressions -->
-
-<@assertEquals actual=join(1..2, ' ') expected="1 2" />
-<@assertEquals actual=join(1..1, ' ') expected="1" />
-<@assertEquals actual=join(1..0, ' ') expected="1 0" />
-<@assertEquals actual=join(1..-1, ' ') expected="1 0 -1" />
-<@assertEquals actual=join(-1..-1, ' ') expected="-1" />
-<@assertEquals actual=join(-1..1, ' ') expected="-1 0 1" />
-
-<@assertEquals actual=join(1..<3, ' ') expected="1 2" />
-<@assertEquals actual=join(1..<2, ' ') expected="1" />
-<@assertEquals actual=join(1..<1, ' ') expected="" />
-<@assertEquals actual=join(1..<0, ' ') expected="1" />
-<@assertEquals actual=join(1..<-1, ' ') expected="1 0" />
-<@assertEquals actual=join(1..<-2, ' ') expected="1 0 -1" />
-<@assertEquals actual=join(-1..<0, ' ') expected="-1" />
-<@assertEquals actual=join(-1..<2, ' ') expected="-1 0 1" />
-
-<@assertEquals actual=join(1..!3, ' ') expected="1 2" />
-<@assertEquals actual=join(1..!2, ' ') expected="1" />
-<@assertEquals actual=join(1..!1, ' ') expected="" />
-<@assertEquals actual=join(1..!0, ' ') expected="1" />
-<@assertEquals actual=join(1..!-1, ' ') expected="1 0" />
-<@assertEquals actual=join(1..!-2, ' ') expected="1 0 -1" />
-<@assertEquals actual=join(-1..!0, ' ') expected="-1" />
-<@assertEquals actual=join(-1..!2, ' ') expected="-1 0 1" />
-
-<@assertEquals actual=join(1..*2, ' ') expected="1 2" />
-<@assertEquals actual=join(1..*1, ' ') expected="1" />
-<@assertEquals actual=join(1..*0, ' ') expected="" />
-<@assertEquals actual=join(1..*-1, ' ') expected="1" />
-<@assertEquals actual=join(1..*-2, ' ') expected="1 0" />
-<@assertEquals actual=join(1..*-3, ' ') expected="1 0 -1" />
-<@assertEquals actual=join(-1..*1, ' ') expected="-1" />
-<@assertEquals actual=join(-1..*3, ' ') expected="-1 0 1" />
-
-<@assertEquals actual=1 expected=(0..0)?size />
-<@assertEquals actual=1 expected=(1..1)?size />
-<@assertEquals actual=1 expected=(2..2)?size />
-<@assertEquals actual=2 expected=(0..1)?size />
-<@assertEquals actual=2 expected=(1..2)?size />
-<@assertEquals actual=2 expected=(2..3)?size />
-<@assertEquals actual=3 expected=(2..4)?size />
-<@assertEquals actual=2 expected=(1..0)?size />
-<@assertEquals actual=2 expected=(2..1)?size />
-<@assertEquals actual=2 expected=(3..2)?size />
-<@assertEquals actual=3 expected=(4..2)?size />
-
-<@assertEquals actual=0 expected=(0..<0)?size />
-<@assertEquals actual=0 expected=(1..<1)?size />
-<@assertEquals actual=0 expected=(2..<2)?size />
-<@assertEquals actual=1 expected=(0..<1)?size />
-<@assertEquals actual=1 expected=(1..<2)?size />
-<@assertEquals actual=1 expected=(2..<3)?size />
-<@assertEquals actual=2 expected=(2..<4)?size />
-<@assertEquals actual=1 expected=(1..<0)?size />
-<@assertEquals actual=1 expected=(2..<1)?size />
-<@assertEquals actual=1 expected=(3..<2)?size />
-<@assertEquals actual=2 expected=(4..<2)?size />
-
-<@assertEquals actual=0 expected=(0..*0)?size />
-<@assertEquals actual=0 expected=(1..*0)?size />
-<@assertEquals actual=0 expected=(2..*0)?size />
-<@assertEquals actual=1 expected=(0..*1)?size />
-<@assertEquals actual=1 expected=(1..*1)?size />
-<@assertEquals actual=1 expected=(2..*1)?size />
-<@assertEquals actual=2 expected=(2..*2)?size />
-<@assertEquals actual=1 expected=(0..*-1)?size />
-<@assertEquals actual=1 expected=(1..*-1)?size />
-<@assertEquals actual=1 expected=(2..*-1)?size />
-<@assertEquals actual=2 expected=(0..*-2)?size />
-<@assertEquals actual=2 expected=(1..*-2)?size />
-<@assertEquals actual=2 expected=(2..*-2)?size />
-
-
-<#--------------------->
-<#-- String slicing: -->
-
-<#assign s = 'abcd'>
-
-<@assertEquals actual=s[0..] expected="abcd" />
-<@assertEquals actual=s[1..] expected="bcd" />
-<@assertEquals actual=s[2..] expected="cd" />
-<@assertEquals actual=s[3..] expected="d" />
-<@assertEquals actual=s[4..] expected="" />
-<@assertFails message="5 is out of bounds">
-  <#assign _ = s[5..] />
-</@assertFails>
-<@assertFails message="6 is out of bounds">
-  <#assign _ = s[6..] />
-</@assertFails>
-
-<@assertEquals actual=s[1..2] expected="bc" />
-<@assertEquals actual=s[1..1] expected="b" />
-<@assertEquals actual=s[0..1] expected="ab" />
-<@assertEquals actual=s[0..0] expected="a" />
-<@assertFails message="4 is out of bounds">
-  <#assign _ = s[1..4] />
-</@assertFails>
-<@assertFails message="5 is out of bounds">
-  <#assign _ = s[1..5] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[-1..1] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[-2..1] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[0..-1] />
-</@assertFails>
-
-<@assertEquals actual=s[1..<3] expected="bc" />
-<@assertEquals actual=s[1..!3] expected="bc" />
-<@assertEquals actual=s[1..<2] expected="b" />
-<@assertEquals actual=s[1..<0] expected="b" />
-<@assertEquals actual=s[1..<1] expected="" />
-<@assertEquals actual=s[0..<0] expected="" />
-<@assertEquals actual=s[5..<5] expected="" />
-<@assertEquals actual=s[6..<6] expected="" />
-<@assertEquals actual=s[-5..<-5] expected="" />
-<@assertFails message="negative">
-  <#assign _ = s[-5..<1] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[2..<-4] />
-</@assertFails>
-<@assertFails message="decreasing">
-  <#assign _ = s[2..<0] />
-</@assertFails>
-
-<@assertEquals actual=s[1..*-1] expected="b" />
-<@assertEquals actual=s[1..*0] expected="" />
-<@assertEquals actual=s[1..*1] expected="b" />
-<@assertEquals actual=s[1..*2] expected="bc" />
-<@assertEquals actual=s[1..*3] expected="bcd" />
-<@assertEquals actual=s[1..*4] expected="bcd" />
-<@assertEquals actual=s[1..*5] expected="bcd" />
-<@assertEquals actual=s[4..*1] expected="" />
-<@assertEquals actual=s[5..*0] expected="" />
-<@assertEquals actual=s[6..*0] expected="" />
-<@assertEquals actual=s[-5..*0] expected="" />
-<@assertEquals actual=s[0..*0] expected="" />
-<@assertEquals actual=s[0..*-1] expected="a" />
-<@assertEquals actual=s[0..*-2] expected="a" />
-<@assertEquals actual=s[0..*-3] expected="a" />
-<@assertFails message="5 is out of bounds">
-  <#assign _ = s[5..*1] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[-1..*1] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[-2..*1] />
-</@assertFails>
-<@assertFails message="decreasing">
-  <#assign _ = s[1..*-2] />
-</@assertFails>
-<@assertFails message="decreasing">
-  <#assign _ = s[1..*-3] />
-</@assertFails>
-<@assertFails message="4 is out of bounds">
-  <#assign _ = s[4..*-1] />
-</@assertFails>
-
-<#-- Legacy string backward-range bug kept for compatibility: -->
-<@assertEquals actual=s[1..0] expected="" />
-<@assertEquals actual=s[2..1] expected="" />
-<@assertFails message="negative">
-  <@assertEquals actual=s[0..-1] expected="" />
-</@assertFails>
-<@assertFails message="decreasing">
-  <@assertEquals actual=s[3..1] expected="" />
-</@assertFails>
-<#-- But it isn't emulated for operators introduced after 2.3.20: -->
-<@assertFails message="decreasing">
-  <@assertEquals actual=s[3..<1] expected="" />
-</@assertFails>
-<@assertFails message="decreasing">
-  <@assertEquals actual=s[3..*-2] expected="" />
-</@assertFails>
-
-<#assign r = 1..2>
-<@assertEquals actual=s[r] expected="bc" />
-<#assign r = 2..1>
-<@assertEquals actual=s[r] expected="" />
-<#assign r = 1..<2>
-<@assertEquals actual=s[r] expected="b" />
-<#assign r = 2..<4>
-<@assertEquals actual=s[r] expected="cd" />
-<#assign r = 2..>
-<@assertEquals actual=s[r] expected="cd" />
-<#assign r = 1..*2>
-<@assertEquals actual=s[r] expected="bc" />
-
-<#----------------------->
-<#-- Sequence slicing: -->
-
-<#assign s = ['a', 'b', 'c', 'd']>
-
-<@assertEquals actual=join(s[0..]) expected="abcd" />
-<@assertEquals actual=join(s[1..]) expected="bcd" />
-<@assertEquals actual=join(s[2..]) expected="cd" />
-<@assertEquals actual=join(s[3..]) expected="d" />
-<@assertEquals actual=join(s[4..]) expected="" />
-<@assertFails message="5 is out of bounds">
-  <#assign _ = s[5..] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[-1..] />
-</@assertFails>
-
-<@assertEquals actual=join(s[1..2]) expected="bc" />
-<@assertEquals actual=join(s[1..1]) expected="b" />
-<@assertEquals actual=join(s[0..1]) expected="ab" />
-<@assertEquals actual=join(s[0..0]) expected="a" />
-<@assertFails message="5 is out of bounds">
-  <#assign _ = s[1..5] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[-1..0] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[0..-1] />
-</@assertFails>
-
-<@assertEquals actual=join(s[1..<3]) expected="bc" />
-<@assertEquals actual=join(s[1..!3]) expected="bc" />
-<@assertEquals actual=join(s[1..<2]) expected="b" />
-<@assertEquals actual=join(s[1..<0]) expected="b" />
-<@assertEquals actual=join(s[1..<1]) expected="" />
-<@assertEquals actual=join(s[0..<0]) expected="" />
-
-<@assertEquals actual=join(s[1..0]) expected="ba" />
-<@assertEquals actual=join(s[2..1]) expected="cb" />
-<@assertEquals actual=join(s[2..0]) expected="cba" />
-<@assertEquals actual=join(s[2..<0]) expected="cb" />
-<@assertEquals actual=join(s[1..<0]) expected="b" />
-<@assertEquals actual=join(s[0..<0]) expected="" />
-<@assertEquals actual=join(s[3..<1]) expected="dc" />
-<@assertEquals actual=join(s[2..<1]) expected="c" />
-<@assertEquals actual=join(s[1..<1]) expected="" />
-<@assertEquals actual=join(s[0..<1]) expected="a" />
-<@assertEquals actual=join(s[0..<0]) expected="" />
-<@assertEquals actual=join(s[5..<5]) expected="" />
-<@assertEquals actual=join(s[-5..<-5]) expected="" />
-
-<@assertEquals actual=join(s[0..*-4]) expected="a" />
-<@assertEquals actual=join(s[1..*-4]) expected="ba" />
-<@assertEquals actual=join(s[1..*-3]) expected="ba" />
-<@assertEquals actual=join(s[1..*-2]) expected="ba" />
-<@assertEquals actual=join(s[1..*-1]) expected="b" />
-<@assertEquals actual=join(s[1..*0]) expected="" />
-<@assertEquals actual=join(s[1..*1]) expected="b" />
-<@assertEquals actual=join(s[1..*2]) expected="bc" />
-<@assertEquals actual=join(s[1..*3]) expected="bcd" />
-<@assertEquals actual=join(s[1..*4]) expected="bcd" />
-<@assertEquals actual=join(s[1..*5]) expected="bcd" />
-<@assertEquals actual=join(s[0..*3]) expected="abc" />
-<@assertEquals actual=join(s[2..*3]) expected="cd" />
-<@assertEquals actual=join(s[3..*3]) expected="d" />
-<@assertEquals actual=join(s[4..*3]) expected="" />
-<@assertFails message="5 is out of bounds">
-  <#assign _ = s[5..*3] />
-</@assertFails>
-<@assertFails message="negative">
-  <#assign _ = s[-1..*2] />
-</@assertFails>
-
-<#assign r = 1..2>
-<@assertEquals actual=join(s[r]) expected="bc" />
-<#assign r = 2..0>
-<@assertEquals actual=join(s[r]) expected="cba" />
-<#assign r = 1..<2>
-<@assertEquals actual=join(s[r]) expected="b" />
-<#assign r = 2..<0>
-<@assertEquals actual=join(s[r]) expected="cb" />
-<#assign r = 2..>
-<@assertEquals actual=join(s[r]) expected="cd" />
-<#assign r = 1..*2>
-<@assertEquals actual=join(s[r]) expected="bc" />
-<#assign r = 1..*-9>
-<@assertEquals actual=join(s[r]) expected="ba" />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/range.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/range.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/range.ftl
deleted file mode 100644
index d2f5450..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/range.ftl
+++ /dev/null
@@ -1,50 +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.
--->
-<#include 'range-common.ftl'>
-
-<@assertEquals actual=(4..)?size expected=2147483647 />
-<@assertEquals actual=limitedJoin(4.., 3) expected="4, 5, 6, ..." />
-
-<@assertEquals actual=(4..)[0] expected=4 />
-<@assertEquals actual=(4..)[1] expected=5 />
-<@assertEquals actual=(4..)[1000000] expected=1000004 />
-<@assertFails message="out of bounds">
-       <@assertEquals actual=(4..)[-1] expected=5 />
-</@>
-
-<#assign r = 2147483646..>
-<@assertEquals actual=r?size expected=2147483647 />
-<@assertEquals actual=limitedJoin(r, 3) expected="2147483646, 2147483647, 
2147483648, ..." />
-<@assertEquals actual=r[100] expected=2147483746 />
-
-<#assign r = -2..>
-<@assertEquals actual=limitedJoin(r, 5) expected="-2, -1, 0, 1, 2, ..." />
-<@assertEquals actual=r[0] expected=-2 />
-<@assertEquals actual=r[1] expected=-1 />
-
-<#function limitedJoin range limit>
-       <#assign joined="">
-       <#list range as i>
-               <#assign joined = joined + i?c>
-               <#if i_has_next><#assign joined = joined + ', '></#if>
-               <#local limit = limit - 1>
-               <#if limit == 0><#assign joined = joined + "..."><#break></#if>
-       </#list>
-       <#return joined>
-</#function>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/recover.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/recover.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/recover.ftl
deleted file mode 100644
index f7dc437..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/recover.ftl
+++ /dev/null
@@ -1,47 +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.
--->
-<#attempt>
- <#assign sequence = ["Hello, World"]>
- ${sequence[0]}
-<#recover>
-  We should never get here.
-</#recover>
-<#attempt>
- Let's try to output an undefined variable: ${undefinedVariable}
-<#recover>
- Well, that did not work.<@assert test=.error?contains('undefinedVariable') />
- Now we nest another attempt/recover here:
- <#attempt>
-   ${sequence[1]}
- <#recover>
-   Oops...<@assert test=.error?contains('sequence[1]') />
-   Remember, freeMarker sequences are zero-based! ${sequence[0]}
- </#recover>
- Now we check the current error message.<@assert 
test=.error?contains('undefinedVariable') />
-</#recover>
-<#attempt>
-  <#include "nonexistent_template">
-<#recover>
-  The template is not currently available
-</#recover>
-<#attempt>
-  <#include "undefined.ftl">
-<#recover>
-  The included template had a problem.<@assert 
test=.error?contains('undefined_variable') />
-</#attempt>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/root.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/root.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/root.ftl
deleted file mode 100644
index e1bc7f3..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/root.ftl
+++ /dev/null
@@ -1,47 +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.
--->
-<html>
-<head>
-<title>FreeMarker: Root Lookup Test</title>
-</head>
-<body>
-
-<p>A simple test follows:</p>
-
-<p>${message}</p>
-
-<p>Access the same variable via the root variable (dot syntax):</p>
-
-<p>${.data_model.message}</p>
-
-<p>Access the same variable via the root variable (bracket syntax):</p>
-
-<p>${.data_model["message"]}</p>
-
-<p>Ensure that root lookups are unaffected by local variables:</p>
-
-<#macro test message>
-  ${.data_model.message}
-  ${message}
-</#macro>
-
-<@test message + " Part Deux" />
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/sequence-builtins.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/sequence-builtins.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/sequence-builtins.ftl
deleted file mode 100644
index e21bc2d..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/sequence-builtins.ftl
+++ /dev/null
@@ -1,360 +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.
--->
-<@noOutput>
-<#setting locale="en_US">
-<#setting number_format="0.#########">
-
-<#assign ls = []?sort>
-<#list ls as i>
-- ${i}
-</#list>
-<@assertEquals expected=0 actual=ls?size />
-<@assertEquals expected=3 actual=set?size />
-</@noOutput>
-Sorting scalars:
-----------------
-
-String order:
-<#assign ls = ["whale", "Barbara", "zeppelin", "aardvark", "beetroot"]?sort>
-<#list ls as i>
-- ${i}
-</#list>
-
-First: ${ls?first}
-Last: ${ls?last}
-Size ${ls?size}
-
-Numerical order:
-<#assign ls = [123?byte, 543, -324, -34?float, 0.11, 0, 111?int, 0.1?double, 
1, 5]?sort>
-<#list ls as i>
-- ${i}
-</#list>
-
-First: ${ls?first}
-Last: ${ls?last}
-Size ${ls?size}
-
-Date/time order:
-<#assign x = [
-        '08:05'?time('HH:mm'),
-        '18:00'?time('HH:mm'),
-        '06:05'?time('HH:mm'),
-        '08:15'?time('HH:mm')]>
-<#list x?sort as i>
-- ${i?string('HH:mm')}
-</#list>
-
-Boolean order:
-<#assign x = [
-        true,
-        false,
-        false,
-        true]>
-<#list x?sort as i>
-- ${i?string}
-</#list>
-
-
-Sorting hashes:
----------------
-
-<#assign ls = [
-  {"name":"whale", "weight":2000?short},
-  {"name":"Barbara", "weight":53},
-  {"name":"zeppelin", "weight":-200?float},
-  {"name":"aardvark", "weight":30?long},
-  {"name":"beetroot", "weight":0.3}
-]>
-Order by name:
-<#assign ls = ls?sort_by("name")>
-<#list ls as i>
-- ${i.name}: ${i.weight}
-</#list>
-
-Order by weight:
-<#assign ls = ls?sort_by("weight")>
-<#list ls as i>
-- ${i.name}: ${i.weight}
-</#list>
-
-Order by a.x.v:
-<#assign x = [
-        {"a": {"x": {"v": "qweqw", "w": "asd"}, "y": 
'1998-02-20'?date('yyyy-MM-dd')}},
-        {"a": {"x": {"v": "aqweqw", "w": "asd"}, "y": 
'1999-01-20'?date('yyyy-MM-dd')}},
-        {"a": {"x": {"v": "dfgdf", "w": "asd"}, "y": 
'1999-04-20'?date('yyyy-MM-dd')}},
-        {"a": {"x": {"v": "utyu", "w": "asd"}, "y": 
'1999-04-19'?date('yyyy-MM-dd')}}]>
-<#list x?sort_by(['a', 'x', 'v']) as i>
-- ${i.a.x.v}
-</#list>
-
-Order by a.y, which is a date:
-<#list x?sort_by(['a', 'y']) as i>
-- ${i.a.y?string('yyyy-MM-dd')}
-</#list>
-
-Reverse:
---------
-
-Order by weight desc:
-<#assign ls = ls?reverse>
-<#list ls as i>
-- ${i.name}: ${i.weight}
-</#list>
-
-Order by weight desc desc:
-<#assign ls = ls?reverse>
-<#list ls as i>
-- ${i.name}: ${i.weight}
-</#list>
-
-Order by weight desc desc desc:
-<#assign ls = ls?reverse>
-<#list ls as i>
-- ${i.name}: ${i.weight}
-</#list>
-
-Contains:
----------
-
-<#macro test></#macro>
-<#assign x = [1, "2", true, [1,2,3], {"a":1}, test, 
'1992-02-21'?date('yyyy-MM-dd')]>
-True:
-${x?seq_contains(1.0)?string}
-${x?seq_contains("2")?string}
-${x?seq_contains(true)?string}
-${x?seq_contains('1992-02-21'?date('yyyy-MM-dd'))?string}
-${abcSet?seq_contains("a")?string}
-${abcSet?seq_contains("b")?string}
-${abcSet?seq_contains("c")?string}
-
-False:
-${x?seq_contains("1")?string}
-${x?seq_contains(2)?string}
-${x?seq_contains(false)?string}
-${x?seq_contains('1992-02-22'?date('yyyy-MM-dd'))?string}
-${abcSet?seq_contains("A")?string}
-${abcSet?seq_contains(1)?string}
-${abcSet?seq_contains(true)?string}
-
-<#assign x = []>
-False: ${x?seq_contains(1)?string}
-
-Index_of:
----------
-
-<#assign x = [1, "2", true, [1,2,3], {"a":1}, test, 
'1992-02-21'?date('yyyy-MM-dd')]>
-0 = ${x?seq_index_of(1.0)}
-1 = ${x?seq_index_of("2")}
-2 = ${x?seq_index_of(true)}
-6 = ${x?seq_index_of('1992-02-21'?date('yyyy-MM-dd'))}
-0 = ${abcSet?seq_index_of("a")}
-1 = ${abcSet?seq_index_of("b")}
-2 = ${abcSet?seq_index_of("c")}
-
--1 = ${x?seq_index_of("1")}
--1 = ${x?seq_index_of(2)}
--1 = ${x?seq_index_of(false)}
--1 = ${x?seq_index_of('1992-02-22'?date('yyyy-MM-dd'))}
--1 = ${abcSet?seq_index_of("A")}
--1 = ${abcSet?seq_index_of(1)}
--1 = ${abcSet?seq_index_of(true)}
-
-<#assign x = []>
--1 = ${x?seq_index_of(1)}
-
-Last_index_of:
---------------
-
-<#assign x = [1, "2", true, [1,2,3], {"a":1}, test, 1, 
'1992-02-21'?date('yyyy-MM-dd')]>
-6 = ${x?seq_last_index_of(1.0)}
-1 = ${x?seq_last_index_of("2")}
-2 = ${x?seq_last_index_of(true)}
-7 = ${x?seq_last_index_of('1992-02-21'?date('yyyy-MM-dd'))}
--1 = ${x?seq_last_index_of("1")}
-0 = ${abcSet?seq_last_index_of("a")}
-1 = ${abcSet?seq_last_index_of("b")}
-2 = ${abcSet?seq_last_index_of("c")}
--1 = ${abcSet?seq_last_index_of("A")}
-
-Index_of and last_index_of with starting indices
-------------------------------------------------
-
-<#assign names = ["Joe", "Fred", "Joe", "Susan"]>
-seq_index_of "Joe":
-0 = ${names?seq_index_of("Joe", -2)}
-0 = ${names?seq_index_of("Joe", -1)}
-0 = ${names?seq_index_of("Joe", 0)}
-2 = ${names?seq_index_of("Joe", 1)}
-2 = ${names?seq_index_of("Joe", 2)}
--1 = ${names?seq_index_of("Joe", 3)}
--1 = ${names?seq_index_of("Joe", 4)}
- 
-seq_last_index_of "Joe":
--1 = ${names?seq_last_index_of("Joe", -2)}
--1 = ${names?seq_last_index_of("Joe", -1)}
-0 = ${names?seq_last_index_of("Joe", 0)}
-0 = ${names?seq_last_index_of("Joe", 1)}
-2 = ${names?seq_last_index_of("Joe", 2)}
-2 = ${names?seq_last_index_of("Joe", 3)}
-2 = ${names?seq_last_index_of("Joe", 4)}
- 
-seq_index_of "Susan":
-3 = ${names?seq_index_of("Susan", -2)}
-3 = ${names?seq_index_of("Susan", -1)}
-3 = ${names?seq_index_of("Susan", 0)}
-3 = ${names?seq_index_of("Susan", 1)}
-3 = ${names?seq_index_of("Susan", 2)}
-3 = ${names?seq_index_of("Susan", 3)}
--1 = ${names?seq_index_of("Susan", 4)}
- 
-seq_last_index_of "Susan":
--1 = ${names?seq_last_index_of("Susan", -2)}
--1 = ${names?seq_last_index_of("Susan", -1)}
--1 = ${names?seq_last_index_of("Susan", 0)}
--1 = ${names?seq_last_index_of("Susan", 1)}
--1 = ${names?seq_last_index_of("Susan", 2)}
-3 = ${names?seq_last_index_of("Susan", 3)}
-3 = ${names?seq_last_index_of("Susan", 4)}
-
-seq_index_of "a":
-0 = ${abcSet?seq_index_of("a", -2)}
-0 = ${abcSet?seq_index_of("a", -1)}
-0 = ${abcSet?seq_index_of("a", 0)}
--1 = ${abcSet?seq_index_of("a", 1)}
--1 = ${abcSet?seq_index_of("a", 2)}
--1 = ${abcSet?seq_index_of("a", 3)}
--1 = ${abcSet?seq_index_of("a", 4)}
-
-seq_index_of "b":
-1 = ${abcSet?seq_index_of("b", -2)}
-1 = ${abcSet?seq_index_of("b", -1)}
-1 = ${abcSet?seq_index_of("b", 0)}
-1 = ${abcSet?seq_index_of("b", 1)}
--1 = ${abcSet?seq_index_of("b", 2)}
--1 = ${abcSet?seq_index_of("b", 3)}
-
-seq_index_of "c":
-2 = ${abcSet?seq_index_of("c", -2)}
-2 = ${abcSet?seq_index_of("c", -1)}
-2 = ${abcSet?seq_index_of("c", 0)}
-2 = ${abcSet?seq_index_of("c", 1)}
-2 = ${abcSet?seq_index_of("c", 2)}
--1 = ${abcSet?seq_index_of("c", 3)}
- 
-seq_last_index_of "a":
--1 = ${abcSet?seq_last_index_of("a", -2)}
--1 = ${abcSet?seq_last_index_of("a", -1)}
-0 = ${abcSet?seq_last_index_of("a", 0)}
-0 = ${abcSet?seq_last_index_of("a", 1)}
-0 = ${abcSet?seq_last_index_of("a", 2)}
-0 = ${abcSet?seq_last_index_of("a", 3)}
-0 = ${abcSet?seq_last_index_of("a", 4)}
-
-seq_last_index_of "b":
--1 = ${abcSet?seq_last_index_of("b", -2)}
--1 = ${abcSet?seq_last_index_of("b", -1)}
--1 = ${abcSet?seq_last_index_of("b", 0)}
-1 = ${abcSet?seq_last_index_of("b", 1)}
-1 = ${abcSet?seq_last_index_of("b", 2)}
-1 = ${abcSet?seq_last_index_of("b", 3)}
-
-seq_last_index_of "c":
--1 = ${abcSet?seq_last_index_of("c", -2)}
--1 = ${abcSet?seq_last_index_of("c", -1)}
--1 = ${abcSet?seq_last_index_of("c", 0)}
--1 = ${abcSet?seq_last_index_of("c", 1)}
-2 = ${abcSet?seq_last_index_of("c", 2)}
-2 = ${abcSet?seq_last_index_of("c", 3)}
-
-Sequence builtins ignoring nulls
---------------------------------
-
-true = ${listWithNull?seq_contains('c')?string}
-2 = ${listWithNull?seq_index_of('c')}
-0 = ${listWithNull?seq_last_index_of('a')}
-
-These should throw exception, but for BC they don't:
-false = ${listWithNull?seq_contains(noSuchVar)?string}
--1 = ${listWithNull?seq_index_of(noSuchVar)}
--1 = ${listWithNull?seq_last_index_of(noSuchVar)}
-
-Sequence built-ins failing on date-type mismatch
-------------------------------------------------
-
-<#assign x = ['1992-02-21'?date('yyyy-MM-dd'), 'foo']>
-<@assertEquals actual=x?seq_index_of('foo') expected=1 />
-<@assertEquals actual=x?seq_index_of('1992-02-21'?date('yyyy-MM-dd')) 
expected=0 />
-<@assertFails message="dates of different types">
-  0 = ${x?seq_index_of('1992-02-21 00:00:00'?datetime('yyyy-MM-dd HH:mm:ss'))}
-</@>
-
-Chunk
------
-
-<#assign ls = ['a', 'b', 'c', 'd', 'e', 'f', 'g']>
-<#list ['NULL', '-'] as fill>
-  <#list [1, 2, 3, 4, 5, 10] as columns>
-    <@printTable ls, columns, fill />
-  </#list>
-</#list>
-<@printTable [1, 2, 3, 4, 5, 6, 7, 8, 9], 3, 'NULL' />
-<@printTable [1, 2, 3, 4, 5, 6, 7, 8, 9], 3, '-' />
-<@printTable [1], 3, 'NULL' />
-<@printTable [1], 3, '-' />
-<@printTable [], 3, 'NULL' />
-<@printTable [], 3, '-' />
-
-<#macro printTable ls columns fill>
-  columns = ${columns}, fill = ${fill}:<#lt>
-  <#if fill='NULL'>
-    <#local rows = ls?chunk(columns)>
-  <#else>
-    <#local rows = ls?chunk(columns, fill)>
-  </#if>
-  Rows: ${rows?size}
-  <#list rows as row>
-    <#list row as i>${i} </#list>  <-- Columns: ${row?size}
-  </#list>
-  
-</#macro>
-
-
-Join
-----
-
-<#assign xs = [1, "two", "three", 4]>
-- ${xs?join(", ")}
-- ${[]?join(", ")}
-- ${xs?join(", ", "(empty)", ".")}
-- ${[]?join(", ", "(empty)", ".")}
-- ${listWithNull?join(", ")}
-- ${listWithNull?join(", ", "(empty)")}
-- ${listWithNull?join(", ", "(empty)", ".")}
-- ${listWithNullsOnly?join(", ")}
-- ${listWithNullsOnly?join(", ", "(empty)")}
-- ${listWithNullsOnly?join(", ", "(empty)", ".")}
-- ${abcSet?join(", ", "(empty)", ".")}
-- ${abcCollection?join(", ", "(empty)", ".")}
-<@assertFails message="index 1">${['a', [], 'c']?join(", ", "(empty)", 
".")}</@>
-
-Misc
-----
-
-First of set 1: ${abcSet?first}
-First of set 2: ${abcSetNonSeq?first}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/setting.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/setting.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/setting.ftl
deleted file mode 100644
index 89f3e23..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/setting.ftl
+++ /dev/null
@@ -1,53 +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.
--->
-<#setting locale='de_DE'>
-<@assertEquals expected='de_DE' actual=.locale />
-<@assertEquals expected='de' actual=.lang />
-<@assertEquals expected='java.util.Locale "de_DE"' 
actual=javaObjectInfo.info(.locale_object) />
-
-<#setting number_format="'f'#">
-<@assertEquals expected='f1' actual=1?string />
-
-<#setting boolean_format="t,f">
-<@assertEquals expected='t' actual=true?string />
-
-<#setting date_format="'df'">
-<@assertEquals expected='df' actual=.now?date?string />
-
-<#setting time_format="'tf'">
-<@assertEquals expected='tf' actual=.now?time?string />
-
-<#setting datetime_format="'dtf'">
-<@assertEquals expected='dtf' actual=.now?string />
-
-<#setting time_zone='GMT+00'>
-<#assign t1='2000'?datetime('yyyy')>
-<#setting time_zone='GMT+01'>
-<#assign t2='2000'?datetime('yyyy')>
-<@assertEquals expected=1000*60*60 actual=t1?long-t2?long />
-
-<#setting sql_date_and_time_time_zone='GMT+01'>
-
-<#setting url_escaping_charset='ISO-8859-1'>
-<@assertEquals expected='%E1' actual='á'?url />
-<#setting url_escaping_charset='UTF-8'>
-<@assertEquals expected='%C3%A1' actual='á'?url />
-
-<#setting output_encoding="ISO-8859-2">
-<@assertEquals expected="ISO-8859-2" actual=.output_encoding />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/simplehash-char-key.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/simplehash-char-key.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/simplehash-char-key.ftl
deleted file mode 100644
index 07a3f1e..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/simplehash-char-key.ftl
+++ /dev/null
@@ -1,44 +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.
--->
-<@assertEquals expected="string" actual=mStringC.c />
-<@assertEquals expected=1 actual=mStringC?keys?size />
-<@assertEquals expected="null" actual=mStringC.d!'null' />
-<@assertEquals expected=1 actual=mStringC?keys?size />
-
-<@assertEquals expected="null" actual=mStringCNull.c!'null' />
-<@assertEquals expected=1 actual=mStringCNull?keys?size />
-<@assertEquals expected="null" actual=mStringCNull.d!'null' />
-<@assertEquals expected=1 actual=mStringCNull?keys?size />
-
-<@assertEquals expected="char" actual=mCharC.c />
-<@assertEquals expected=1 actual=mCharC?keys?size />
-<@assertEquals expected="null" actual=mCharC.d!'null' />
-<@assertEquals expected=1 actual=mCharC?keys?size />
-
-<@assertEquals expected="null" actual=mCharCNull.c!'null' />
-<@assertEquals expected=1 actual=mCharCNull?keys?size />
-<@assertEquals expected="null" actual=mCharCNull.d!'null' />
-<@assertEquals expected=1 actual=mCharCNull?keys?size />
-
-<@assertEquals expected="char" actual=mMixed.c />
-<@assertEquals expected="string" actual=mMixed.s />
-<@assertEquals expected="string2" actual=mMixed.s2 />
-<@assertEquals expected="null" actual=mMixed.s2n!'null' />
-<@assertEquals expected="null" actual=mMixed.wrong!'null' />
-<@assertEquals expected=4 actual=mMixed?keys?size />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/specialvars.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/specialvars.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/specialvars.ftl
deleted file mode 100644
index 50416c9..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/specialvars.ftl
+++ /dev/null
@@ -1,38 +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.
--->
-<#-- Mostly just checks if the expressions doesn't fail -->
-<#assign works = .data_model>
-<#attempt>
-  ${noSuchVariableExists}
-<#recover>
-  <#assign works = .error>
-</#attempt>
-<#assign works = .globals>
-${.lang} == en
-${.locale} == en_US
-<#assign works = .locals!>
-<#assign works = .main>
-<#assign works = .node!>
-${.output_encoding?lower_case} == utf-8
-${.template_name} == specialvars.ftl
-${.url_escaping_charset?lower_case} == iso-8859-1
-<#assign foo = "x">
-${.vars['foo']} == x
-<#assign works = .version>
-${.now?is_datetime?c} == true
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtin-coercion.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtin-coercion.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtin-coercion.ftl
deleted file mode 100644
index 5d2e094..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtin-coercion.ftl
+++ /dev/null
@@ -1,34 +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.
--->
-Was broken 2.3.19:
-<#setting number_format="0.#">
-<@assert test=1232?contains('2') />
-<@assert test=1232?index_of('2') == 1 />
-<@assert test=1232?last_index_of('2') == 3 />
-<@assert test=1232?left_pad(6) == '  1232' /><@assert test=1232?left_pad(6, 
'0') == '001232' />
-<@assert test=1232?right_pad(6) == '1232  ' /><@assert test=1232?right_pad(6, 
'0') == '123200' />
-<@assert test=1232?matches('[1-3]+') />
-<@assert test=1232?replace('2', 'z') == '1z3z' />
-<@assert test=1232?replace('2', 'z', 'r') == '1z3z' />
-<@assert test=1232?split('2')[1] == '3' /><@assert test=1232?split('2')[2] == 
'' />
-<@assert test=1232?split('2', 'r')[1] == '3' />
-
-Was no broken in 2.3.19:
-<@assert test=1232?starts_with('12') />
-<@assert test=1232?ends_with('32') />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/4b75ea93/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins-regexps-matches.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins-regexps-matches.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins-regexps-matches.ftl
deleted file mode 100644
index 201f404..0000000
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins-regexps-matches.ftl
+++ /dev/null
@@ -1,118 +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.
--->
-<#assign input>
-L16
-L27
-L38
-L49
-</#assign>
-
-List mode:
-<#assign matches = input?matches(".+") >
-Size: ${matches?size}
-<#list 0..<matches?size as i>[${matches[i]}]</#list>
-<#list matches as m>[${m}]</#list>
-
-Iterator mode:
-<#assign matches = input?matches(".+") >
-<#list matches as m>[${m}]</#list>
-<#list matches as m>[${m}(${matches?join(', ')})]</#list>
-<#list matches as m>[${m}]</#list>
-
-Iterator mode changes to list mode:
-<#assign matches = input?matches(".+") >
-<#list matches as m>[${m}]/${matches?size}</#list>
-<#list matches as m>[${m}]</#list>
-
-Iterator mode changes to list mode 2:
-<#assign matches = input?matches(".+") >
-<#list matches as m>[${m}]</#list>
-<#list matches as m>[${m}]/${matches?size}<#t></#list>
-
-List mode with embedded iteration:
-<#assign matches = input?matches(".+") >
-<#list 0..<matches?size as i>[${matches[i]}(${matches?join(', ')})]</#list>
-
-Entire input match:
-<#assign matches = input?matches(r".*(\d)(\d)") >
-<#assign firstGS = false>
-<#list matches as m>
-- M: ${m}
-    <#if firstGS?is_boolean>
-      <#assign firstGS = m?groups>
-    </#if>
-    <#list m?groups as g>
-    - G: ${g}
-    </#list>
-</#list>
-firstGS was: ${firstGS?join(', ')}
-
-Entire input match 2:
-<#assign match = "x12"?matches(r"x(\d)(\d)") >
-Matches: ${match?c}
-<#list match?groups as g>
-- G: ${g}
-</#list>
-As list:
-<#list match as m>
-- M: ${m}
-  <#list m?groups as g>
-    - G: ${g}
-  </#list>
-</#list>
-Groups again:
-<#list match?groups as g>
-- G: ${g}
-</#list>
-
-Entire input match 3:
-<#assign match = "x12"?matches(r"y(\d)(\d)") >
-Matches: ${match?c}
-<@assertEquals expected=3 actual=match?groups?size />
-<@assertEquals expected=0 actual=match?size />
-
-Entire input match 4:
-<#assign match = "x12"?matches(r"x(\d)(\d)") >
-Matches: ${match?c}
-<#assign gs = match?groups>
-<@assertEquals expected=3 actual=gs?size />
-<@assertEquals expected=1 actual=match?size />
-- G: ${gs[0]}
-- G: ${match?groups[1]}
-- G: ${gs[2]}
-
-Substring match nested into entire input match:
-<#assign match = "x12"?matches(r"x(\d)(\d)") >
-<#list match?groups as g>
-- G: ${g} (<#list match as m>[${m}{${m?groups?join(', ')}}]</#list>)
-</#list>
-
-Different entire input and substring matches:
-<#assign match = "123"?matches(r"(\d+?)") >
-${match?groups?join(", ")}
-<#list match as m>
-- M: ${m} (Gs: ${m?groups?join(", ")})
-</#list>
-
-Different entire input and substring matches 2:
-<#assign match = "123"?matches(r"\d+?") >
-${match?groups?join(", ")}
-<#list match as m>
-- M: ${m} (Gs: ${m?groups?join(", ")})
-</#list>
\ No newline at end of file

Reply via email to