http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/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 b6bf7e5..add7f44 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
@@ -26,7 +26,7 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateCallableModel;
 import org.apache.freemarker.core.model.TemplateHashModelEx2;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.util.TemplateLanguageUtils;
 import org.apache.freemarker.core.util._StringUtils;
@@ -63,8 +63,8 @@ public abstract class TestTemplateCallableModel implements 
TemplateCallableModel
             sb.append("null");
         } else if (value instanceof TemplateNumberModel) {
             sb.append(((TemplateNumberModel) value).getAsNumber().toString());
-        } else if (value instanceof TemplateScalarModel) {
-            
sb.append(TemplateLanguageUtils.toStringLiteral(((TemplateScalarModel) 
value).getAsString()));
+        } else if (value instanceof TemplateStringModel) {
+            
sb.append(TemplateLanguageUtils.toStringLiteral(((TemplateStringModel) 
value).getAsString()));
         } else if (value instanceof TemplateSequenceModel) {
             int len = ((TemplateSequenceModel) value).size();
             sb.append('[');

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNamedParamsFunction.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNamedParamsFunction.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNamedParamsFunction.java
index b866034..f4e4c3b 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNamedParamsFunction.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNamedParamsFunction.java
@@ -25,7 +25,7 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util.StringToIndexMap;
 
 public class TwoNamedParamsFunction extends TestTemplateCallableModel 
implements TemplateFunctionModel {
@@ -60,7 +60,7 @@ public class TwoNamedParamsFunction extends 
TestTemplateCallableModel implements
         printParam(N2_ARG_NAME, args[N2_ARG_IDX], sb);
         sb.append(")");
 
-        return new SimpleScalar(sb.toString());
+        return new SimpleString(sb.toString());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoPositionalParamsFunction.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoPositionalParamsFunction.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoPositionalParamsFunction.java
index cfce364..3954a33 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoPositionalParamsFunction.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoPositionalParamsFunction.java
@@ -25,7 +25,7 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 public class TwoPositionalParamsFunction extends TestTemplateCallableModel 
implements TemplateFunctionModel {
 
@@ -48,7 +48,7 @@ public class TwoPositionalParamsFunction extends 
TestTemplateCallableModel imple
         printParam("p2", args[1], sb);
         sb.append(")");
 
-        return new SimpleScalar(sb.toString());
+        return new SimpleString(sb.toString());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/boolean.txt
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/boolean.txt
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/boolean.txt
index 8dc1290..db589bb 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/boolean.txt
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/boolean.txt
@@ -27,7 +27,7 @@
 <p>Hello, world!</p>
 
 
-<p>Now perform scalar boolean tests:</p>
+<p>Now perform boolean tests:</p>
 
 <p>
     b is true.<br />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/logging.txt
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/logging.txt
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/logging.txt
index 4fa6b2a..f668edf 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/logging.txt
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/logging.txt
@@ -24,4 +24,5 @@
 
 A simple test follows:
 
-ERROR [org.apache.freemarker.core.Template]: message is not a 
TemplateHashModel, it's a freemarker.template.SimpleScalar.
+ERROR [org.apache.freemarker.core.Template]: message is not a 
TemplateHashModel, it's a freemarker.template.SimpleString
+.

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/multimodels.txt
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/multimodels.txt
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/multimodels.txt
index 54ec68d..18affaa 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/multimodels.txt
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/multimodels.txt
@@ -25,7 +25,7 @@
 <p>Let's begin with a simple model:</p>
 <p>Hello, world!</p>
 
-<p>Cool, now get into the first model. This implements a scalar, list, and
+<p>Cool, now get into the first model. This implements a string, list, and
 hash as a single class. Let's try some tests...</p>
 
 <p>MultiModel1 as a string!</p>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/sequence-builtins.txt
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/sequence-builtins.txt
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/sequence-builtins.txt
index 4f7796a..f99d2aa 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/sequence-builtins.txt
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/sequence-builtins.txt
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-Sorting scalars:
+Sorting strings:
 ----------------
 
 String order:

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/boolean.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/boolean.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/boolean.ftl
index 3d70cc5..ae2c399 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/boolean.ftl
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/boolean.ftl
@@ -28,7 +28,7 @@
 
 <#assign b=true>
 
-<p>Now perform scalar boolean tests:</p>
+<p>Now perform boolean tests:</p>
 
 <p><#if b>
     b is true.<br />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl
index 8ece40d..f2dc1cb 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl
@@ -132,7 +132,7 @@
 
 <@assertEquals actual=d?iso(javaUTC) expected="2010-05-15T20:38:05Z" />
 <@assertEquals actual=d?iso(javaGMT02) expected="2010-05-15T22:38:05+02:00" />
-<@assertEquals actual=d?iso(adaptedToStringScalar) 
expected="2010-05-15T22:38:05+02:00" />
+<@assertEquals actual=d?iso(adaptedToString) 
expected="2010-05-15T22:38:05+02:00" />
 
 <#assign d = "12:00:00:1 +0000"?time("HH:mm:ss:S Z")>
 <@assertEquals actual=d?isoUtcMs expected="12:00:00.001Z" />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/multimodels.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/multimodels.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/multimodels.ftl
index f356386..23089c0 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/multimodels.ftl
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/multimodels.ftl
@@ -25,7 +25,7 @@
 <p>Let's begin with a simple model:</p>
 <p>${message}</p>
 
-<p>Cool, now get into the first model. This implements a scalar, list, and
+<p>Cool, now get into the first model. This implements a string, list, and
 hash as a single class. Let's try some tests...</p>
 
 <p>${data}</p>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/overloaded-methods.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/overloaded-methods.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/overloaded-methods.ftl
index 329d041..5ab87c9 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/overloaded-methods.ftl
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/overloaded-methods.ftl
@@ -364,18 +364,18 @@
 <@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.hashAndStringModel) 
expected="mMapOrBoolean(Map {})" />
+<@assertEquals actual=obj.mMapOrBoolean(obj.booleanAndStringModel) 
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.hashAndStringModel) 
expected="mMapOrBooleanVarargs(Map... [{}])" />
+<@assertEquals actual=obj.mMapOrBooleanVarargs(obj.hashAndStringModel, 
obj.hashAndStringModel) 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.hashAndStringModel) 
expected="mMapOrBooleanFixedAndVarargs(Map {})" />
+<@assertEquals actual=obj.mMapOrBooleanFixedAndVarargs(obj.hashAndStringModel, 
obj.hashAndStringModel) expected="mMapOrBooleanFixedAndVarargs(Map... [{}, 
{}])" />
+<@assertEquals actual=obj.mMapOrBooleanFixedAndVarargs(obj.hashAndStringModel, 
obj.hashAndStringModel, obj.hashAndStringModel) 
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])" />

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl
 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl
index 7eb3453..b8cb070 100644
--- 
a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl
+++ 
b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl
@@ -27,7 +27,7 @@
 <@assertEquals expected=0 actual=ls?size />
 <@assertEquals expected=3 actual=set?size />
 </@noOutput>
-Sorting scalars:
+Sorting strings:
 ----------------
 
 String order:

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirCapturingAssignment.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirCapturingAssignment.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirCapturingAssignment.java
index d99a71d..6fc4c5f 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirCapturingAssignment.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirCapturingAssignment.java
@@ -23,7 +23,7 @@ import java.io.IOException;
 import java.io.StringWriter;
 
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.outputformat.MarkupOutputFormat;
 import org.apache.freemarker.core.util.BugException;
 
@@ -75,7 +75,7 @@ final class ASTDirCapturingAssignment extends ASTDirective {
     }
 
     private TemplateModel capturedStringToModel(String s) throws 
TemplateException {
-        return markupOutputFormat == null ? new SimpleScalar(s) : 
markupOutputFormat.fromMarkup(s);
+        return markupOutputFormat == null ? new SimpleString(s) : 
markupOutputFormat.fromMarkup(s);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirList.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirList.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirList.java
index 2182a5c..b795ca1 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirList.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirList.java
@@ -32,7 +32,7 @@ import 
org.apache.freemarker.core.model.TemplateHashModelEx2.KeyValuePair;
 import 
org.apache.freemarker.core.model.TemplateHashModelEx2.KeyValuePairIterator;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelIterator;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
 import org.apache.freemarker.core.util._StringUtils;
@@ -360,7 +360,7 @@ final class ASTDirList extends ASTDirective {
                             try {
                                 do {
                                     nestedContentParam = keysIter.next();
-                                    if (!(nestedContentParam instanceof 
TemplateScalarModel)) {
+                                    if (!(nestedContentParam instanceof 
TemplateStringModel)) {
                                         throw new TemplateException(env,
                                                 new _ErrorDescriptionBuilder(
                                                         "When listing 
key-value pairs of traditional hash "
@@ -376,7 +376,7 @@ final class ASTDirList extends ASTDirective {
                                                                 new 
_DelayedShortClassName(TemplateHashModelEx2.class),
                                                                 ", which leads 
to this restriction."));
                                     }
-                                    nestedContentParam2 = 
listedHash.get(((TemplateScalarModel) nestedContentParam)
+                                    nestedContentParam2 = 
listedHash.get(((TemplateStringModel) nestedContentParam)
                                             .getAsString());
                                     hasNext = keysIter.hasNext();
                                     env.visit(childBuffer);

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirRecurse.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirRecurse.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirRecurse.java
index 7fe528b..1904edc 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirRecurse.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirRecurse.java
@@ -24,7 +24,7 @@ import java.io.IOException;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNodeModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 
 
@@ -50,7 +50,7 @@ final class ASTDirRecurse extends ASTDirective {
         
         TemplateModel nss = namespaces == null ? null : namespaces.eval(env);
         if (namespaces instanceof ASTExpStringLiteral) {
-            nss = env.importLib(((TemplateScalarModel) nss).getAsString(), 
null);
+            nss = env.importLib(((TemplateStringModel) nss).getAsString(), 
null);
         } else if (namespaces instanceof ASTExpListLiteral) {
             nss = ((ASTExpListLiteral) 
namespaces).evaluateStringsToNamespaces(env);
         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java
index d536779..953fa7f 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java
@@ -24,7 +24,7 @@ import java.util.Set;
 import org.apache.freemarker.core.model.TemplateBooleanModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.util._SortedArraySet;
 import org.apache.freemarker.core.util._StringUtils;
 
@@ -107,8 +107,8 @@ final class ASTDirSetting extends ASTDirective {
     ASTElement[] accept(Environment env) throws TemplateException {
         TemplateModel mval = value.eval(env);
         String strval;
-        if (mval instanceof TemplateScalarModel) {
-            strval = ((TemplateScalarModel) mval).getAsString();
+        if (mval instanceof TemplateStringModel) {
+            strval = ((TemplateStringModel) mval).getAsString();
         } else if (mval instanceof TemplateBooleanModel) {
             strval = ((TemplateBooleanModel) mval).getAsBoolean() ? "true" : 
"false";
         } else if (mval instanceof TemplateNumberModel) {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirVisit.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirVisit.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirVisit.java
index b7438a0..d2a6e4d 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirVisit.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirVisit.java
@@ -23,7 +23,7 @@ import java.io.IOException;
 
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNodeModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 
 
@@ -48,7 +48,7 @@ final class ASTDirVisit extends ASTDirective {
         
         TemplateModel nss = namespaces == null ? null : namespaces.eval(env);
         if (namespaces instanceof ASTExpStringLiteral) {
-            nss = env.importLib(((TemplateScalarModel) nss).getAsString(), 
null);
+            nss = env.importLib(((TemplateStringModel) nss).getAsString(), 
null);
         } else if (namespaces instanceof ASTExpListLiteral) {
             nss = ((ASTExpListLiteral) 
namespaces).evaluateStringsToNamespaces(env);
         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java
index 6667dd3..a076d7e 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java
@@ -30,11 +30,11 @@ import 
org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelIterator;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.CollectionAndSequence;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 /**
  * AST expression node: binary {@code +} operator. Note that this is treated 
separately from the other 4 arithmetic
@@ -95,7 +95,7 @@ final class ASTExpAddOrConcat extends ASTExpression {
 
             if (leftOMOrStr instanceof String) {
                 if (rightOMOrStr instanceof String) {
-                    return new SimpleScalar(((String) 
leftOMOrStr).concat((String) rightOMOrStr));
+                    return new SimpleString(((String) 
leftOMOrStr).concat((String) rightOMOrStr));
                 } else { // rightOMOrStr instanceof TemplateMarkupOutputModel
                     TemplateMarkupOutputModel<?> rightMO = 
(TemplateMarkupOutputModel<?>) rightOMOrStr;
                     return _EvalUtils.concatMarkupOutputs(parent,
@@ -275,7 +275,7 @@ final class ASTExpAddOrConcat extends ASTExpression {
         throws TemplateException {
             TemplateModelIterator it = hash.keys().iterator();
             while (it.hasNext()) {
-                TemplateScalarModel tsm = (TemplateScalarModel) it.next();
+                TemplateStringModel tsm = (TemplateStringModel) it.next();
                 if (set.add(tsm.getAsString())) {
                     // The first occurence of the key decides the index;
                     // this is consisten with stuff like 
java.util.LinkedHashSet.
@@ -292,7 +292,7 @@ final class ASTExpAddOrConcat extends ASTExpression {
             
                 int ln = keys.size();
                 for (int i  = 0; i < ln; i++) {
-                    seq.add(get(((TemplateScalarModel) 
keys.get(i)).getAsString()));
+                    seq.add(get(((TemplateStringModel) 
keys.get(i)).getAsString()));
                 }
                 values = new CollectionAndSequence(seq);
             }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java
index e8a115c..6ca8b9e 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java
@@ -27,7 +27,7 @@ import org.apache.freemarker.core.model.TemplateDateModel;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.impl.SimpleDate;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util._SortedArraySet;
 import org.apache.freemarker.core.util._StringUtils;
 
@@ -154,45 +154,45 @@ final class ASTExpBuiltInVariable extends ASTExpression {
             return new VarsHash(env);
         }
         if (name == LOCALE) {
-            return new SimpleScalar(env.getLocale().toString());
+            return new SimpleString(env.getLocale().toString());
         }
         if (name == LOCALE_OBJECT) {
             return env.getObjectWrapper().wrap(env.getLocale());
         }
         if (name == LANG) {
-            return new SimpleScalar(env.getLocale().getLanguage());
+            return new SimpleString(env.getLocale().getLanguage());
         }
         if (name == NODE) {
             return env.getCurrentVisitorNode();
         }
         if (name == MAIN_TEMPLATE_NAME) {
-            return 
SimpleScalar.newInstanceOrNull(env.getMainTemplate().getLookupName());
+            return 
SimpleString.newInstanceOrNull(env.getMainTemplate().getLookupName());
         }
         if (name == CURRENT_TEMPLATE_NAME) {
-            return 
SimpleScalar.newInstanceOrNull(env.getCurrentTemplate().getLookupName());
+            return 
SimpleString.newInstanceOrNull(env.getCurrentTemplate().getLookupName());
         }
         if (name == PASS) {
             return ASTDirMacroOrFunction.PASS_MACRO;
         }
         if (name == OUTPUT_ENCODING) {
             Charset encoding = env.getOutputEncoding();
-            return encoding != null ? new SimpleScalar(encoding.name()) : null;
+            return encoding != null ? new SimpleString(encoding.name()) : null;
         }
         if (name == URL_ESCAPING_CHARSET) {
             Charset charset = env.getURLEscapingCharset();
-            return charset != null ? new SimpleScalar(charset.name()) : null;
+            return charset != null ? new SimpleString(charset.name()) : null;
         }
         if (name == ERROR) {
-            return new SimpleScalar(env.getCurrentRecoveredErrorMessage());
+            return new SimpleString(env.getCurrentRecoveredErrorMessage());
         }
         if (name == NOW) {
             return new SimpleDate(new Date(), TemplateDateModel.DATE_TIME);
         }
         if (name == VERSION) {
-            return new SimpleScalar(Configuration.getVersion().toString());
+            return new SimpleString(Configuration.getVersion().toString());
         }
         if (name == INCOMPATIBLE_IMPROVEMENTS) {
-            return new 
SimpleScalar(env.getConfiguration().getIncompatibleImprovements().toString());
+            return new 
SimpleString(env.getConfiguration().getIncompatibleImprovements().toString());
         }
         
         throw new TemplateException(this,

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java
index fe1e842..6e892c9 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java
@@ -23,14 +23,14 @@ package org.apache.freemarker.core;
 import org.apache.freemarker.core.model.TemplateCollectionModel;
 import org.apache.freemarker.core.model.TemplateHashModelEx;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 
 /** {@code exp!defExp}, {@code (exp)!defExp} and the same two with {@code 
(exp)!}. */
 class ASTExpDefault extends ASTExpression {
        
        static private class EmptyStringAndSequence
-         implements TemplateScalarModel, TemplateSequenceModel, 
TemplateHashModelEx {
+         implements TemplateStringModel, TemplateSequenceModel, 
TemplateHashModelEx {
                @Override
         public String getAsString() {
                        return "";

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
index 658be00..63e2ea2 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
@@ -22,9 +22,9 @@ package org.apache.freemarker.core;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 /**
  * AST expression node: {@code target[keyExpression]}, where, in FM 2.3, 
{@code keyExpression} can be string, a number
@@ -51,8 +51,8 @@ final class ASTExpDynamicKeyName extends ASTExpression {
             int index = keyExpression.modelToNumber(keyModel, env).intValue();
             return dealWithNumericalKey(targetModel, index, env);
         }
-        if (keyModel instanceof TemplateScalarModel) {
-            String key = _EvalUtils.modelToString((TemplateScalarModel) 
keyModel, keyExpression);
+        if (keyModel instanceof TemplateStringModel) {
+            String key = _EvalUtils.modelToString((TemplateStringModel) 
keyModel, keyExpression);
             return dealWithStringKey(targetModel, key, env);
         }
         if (keyModel instanceof RangeModel) {
@@ -60,7 +60,7 @@ final class ASTExpDynamicKeyName extends ASTExpression {
         }
         throw MessageUtils.newUnexpectedOperandTypeException(keyExpression, 
keyModel,
                 "number, range, or string",
-                new Class[] { TemplateNumberModel.class, 
TemplateScalarModel.class, ASTExpRange.class },
+                new Class[] { TemplateNumberModel.class, 
TemplateStringModel.class, ASTExpRange.class },
                 null, env);
     }
 
@@ -105,7 +105,7 @@ final class ASTExpDynamicKeyName extends ASTExpression {
                     env);
         }
         try {
-            return new SimpleScalar(s.substring(index, index + 1));
+            return new SimpleString(s.substring(index, index + 1));
         } catch (IndexOutOfBoundsException e) {
             if (index < 0) {
                 throw new TemplateException("Negative index not allowed: ", 
Integer.valueOf(index));
@@ -237,12 +237,12 @@ final class ASTExpDynamicKeyName extends ASTExpression {
                 exclEndIdx = firstIdx + resultSize;
             }
             
-            return new SimpleScalar(targetStr.substring(firstIdx, exclEndIdx));
+            return new SimpleString(targetStr.substring(firstIdx, exclEndIdx));
         }
     }
 
     private TemplateModel emptyResult(boolean seq) {
-        return seq ? TemplateSequenceModel.EMPTY_SEQUENCE : 
TemplateScalarModel.EMPTY_STRING;
+        return seq ? TemplateSequenceModel.EMPTY_SEQUENCE : 
TemplateStringModel.EMPTY_STRING;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java
index 194ccef..c93483c 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java
@@ -24,15 +24,15 @@ import java.util.List;
 
 import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.TemplateStringModel;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.outputformat.OutputFormat;
 import org.apache.freemarker.core.util.TemplateLanguageUtils;
 
 /**
  * AST expression node: string literal
  */
-final class ASTExpStringLiteral extends ASTExpression implements 
TemplateScalarModel {
+final class ASTExpStringLiteral extends ASTExpression implements 
TemplateStringModel {
     
     private final String value;
     
@@ -87,7 +87,7 @@ final class ASTExpStringLiteral extends ASTExpression 
implements TemplateScalarM
     @Override
     TemplateModel _eval(Environment env) throws TemplateException {
         if (dynamicValue == null) {
-            return new SimpleScalar(value);
+            return new SimpleString(value);
         } else {
             // This should behave like concatenating the values with `+`. 
Thus, an interpolated expression that
             // returns markup promotes the result of the whole expression to 
markup.
@@ -128,8 +128,8 @@ final class ASTExpStringLiteral extends ASTExpression 
implements TemplateScalarM
                 }
             } // for each part
             return markupResult != null ? markupResult
-                    : plainTextResult != null ? new 
SimpleScalar(plainTextResult.toString())
-                    : SimpleScalar.EMPTY_STRING;
+                    : plainTextResult != null ? new 
SimpleString(plainTextResult.toString())
+                    : SimpleString.EMPTY_STRING;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpression.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpression.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpression.java
index fcd199c..6b6d5e2 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpression.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpression.java
@@ -26,7 +26,7 @@ import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.BeanModel;
 
@@ -179,8 +179,8 @@ abstract class ASTExpression extends ASTNode {
             return ((BeanModel) model).isEmpty();
         } else if (model instanceof TemplateSequenceModel) {
             return ((TemplateSequenceModel) model).size() == 0;
-        } else if (model instanceof TemplateScalarModel) {
-            String s = ((TemplateScalarModel) model).getAsString();
+        } else if (model instanceof TemplateStringModel) {
+            String s = ((TemplateStringModel) model).getAsString();
             return (s == null || s.length() == 0);
         } else if (model == null) {
             return true;

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java
index 6082a3d..96304a9 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java
@@ -20,7 +20,7 @@ package org.apache.freemarker.core;
 
 import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 
 /**
  * A string built-in whose usage is banned when auto-escaping with a 
markup-output format is active.
@@ -40,7 +40,7 @@ abstract class BuiltInForLegacyEscaping extends 
BuiltInBannedWhenAutoEscaping {
             if (mo.getOutputFormat().isLegacyBuiltInBypassed(key)) {
                 return mo;
             }
-            throw MessageUtils.newUnexpectedOperandTypeException(target, tm, 
TemplateScalarModel.class, env);
+            throw MessageUtils.newUnexpectedOperandTypeException(target, tm, 
TemplateStringModel.class, env);
         }
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
index f69cfe9..8390a01 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
@@ -29,9 +29,9 @@ import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateDateModel;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.impl.SimpleDate;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util.UnrecognizedTimeZoneException;
 import org.apache.freemarker.core.util._DateUtils;
 
@@ -94,8 +94,8 @@ class BuiltInsForDates {
                                 .getAdaptedObject(TimeZone.class))
                             instanceof TimeZone) {
                     tzArg = (TimeZone) adaptedObj;
-                } else if (tzArgTM instanceof TemplateScalarModel) {
-                    String tzName = 
_EvalUtils.modelToString((TemplateScalarModel) tzArgTM, null);
+                } else if (tzArgTM instanceof TemplateStringModel) {
+                    String tzName = 
_EvalUtils.modelToString((TemplateStringModel) tzArgTM, null);
                     try {
                         tzArg = _DateUtils.getTimeZone(tzName);
                     } catch (UnrecognizedTimeZoneException e) {
@@ -106,11 +106,11 @@ class BuiltInsForDates {
                 } else {
                     throw newArgumentValueTypeException(
                             tzArgTM, 0,
-                            new Class[] { TemplateScalarModel.class }, "string 
or java.util.TimeZone",
+                            new Class[] { TemplateStringModel.class }, "string 
or java.util.TimeZone",
                             this, true);
                 }
 
-                return new SimpleScalar(_DateUtils.dateToISO8601String(
+                return new SimpleString(_DateUtils.dateToISO8601String(
                         date,
                         dateType != TemplateDateModel.TIME,
                         dateType != TemplateDateModel.DATE,
@@ -159,7 +159,7 @@ class BuiltInsForDates {
                 Date date, int dateType, Environment env)
         throws TemplateException {
             checkDateTypeNotUnknown(dateType);
-            return new SimpleScalar(_DateUtils.dateToISO8601String(
+            return new SimpleString(_DateUtils.dateToISO8601String(
                     date,
                     dateType != TemplateDateModel.TIME,
                     dateType != TemplateDateModel.DATE,

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMarkupOutputs.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMarkupOutputs.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMarkupOutputs.java
index 7d3c20e..6f0df4f 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMarkupOutputs.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMarkupOutputs.java
@@ -21,7 +21,7 @@ package org.apache.freemarker.core;
 
 import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 /**
  * A holder for builtins that operate exclusively on markup output left-hand 
value.
@@ -32,7 +32,7 @@ class BuiltInsForMarkupOutputs {
 
         @Override
         protected TemplateModel calculateResult(TemplateMarkupOutputModel 
model) throws TemplateException {
-            return new 
SimpleScalar(model.getOutputFormat().getMarkupString(model));
+            return new 
SimpleString(model.getOutputFormat().getMarkupString(model));
         }
         
     }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
index 159c284..d1f9761 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
@@ -37,11 +37,11 @@ import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelWithAPISupport;
 import org.apache.freemarker.core.model.TemplateNodeModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.SimpleDate;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util.BugException;
 import org.apache.freemarker.core.util.CallableUtils;
 import org.apache.freemarker.core.valueformat.TemplateDateFormat;
@@ -61,7 +61,7 @@ class BuiltInsForMultipleTypes {
             if (model instanceof TemplateNumberModel) {
                 return formatNumber(env, model);
             } else if (model instanceof TemplateBooleanModel) {
-                return new SimpleScalar(((TemplateBooleanModel) 
model).getAsBoolean()
+                return new SimpleString(((TemplateBooleanModel) 
model).getAsBoolean()
                         ? TemplateBooleanFormat.C_TRUE : 
TemplateBooleanFormat.C_FALSE);
             } else {
                 throw MessageUtils.newUnexpectedOperandTypeException(
@@ -76,34 +76,34 @@ class BuiltInsForMultipleTypes {
             Number num = _EvalUtils.modelToNumber((TemplateNumberModel) model, 
target);
             if (num instanceof Integer || num instanceof Long) {
                 // Accelerate these fairly common cases
-                return new SimpleScalar(num.toString());
+                return new SimpleString(num.toString());
             } else if (num instanceof Double) {
                 double n = num.doubleValue();
                 if (n == Double.POSITIVE_INFINITY) {
-                    return new SimpleScalar("INF");
+                    return new SimpleString("INF");
                 }
                 if (n == Double.NEGATIVE_INFINITY) {
-                    return new SimpleScalar("-INF");
+                    return new SimpleString("-INF");
                 }
                 if (Double.isNaN(n)) {
-                    return new SimpleScalar("NaN");
+                    return new SimpleString("NaN");
                 }
                 // Deliberately falls through
             } else if (num instanceof Float) {
                 float n = num.floatValue();
                 if (n == Float.POSITIVE_INFINITY) {
-                    return new SimpleScalar("INF");
+                    return new SimpleString("INF");
                 }
                 if (n == Float.NEGATIVE_INFINITY) {
-                    return new SimpleScalar("-INF");
+                    return new SimpleString("-INF");
                 }
                 if (Float.isNaN(n)) {
-                    return new SimpleScalar("NaN");
+                    return new SimpleString("NaN");
                 }
                 // Deliberately falls through
             }
         
-            return new SimpleScalar(env.getCNumberFormat().format(num));
+            return new SimpleString(env.getCNumberFormat().format(num));
         }
         
     }
@@ -409,7 +409,7 @@ class BuiltInsForMultipleTypes {
         TemplateModel _eval(Environment env) throws TemplateException {
             TemplateModel tm = target.eval(env);
             target.assertNonNull(tm, env);
-            return (tm instanceof TemplateScalarModel) ?
+            return (tm instanceof TemplateStringModel) ?
                 TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
         }
     }
@@ -459,7 +459,7 @@ class BuiltInsForMultipleTypes {
     static class stringBI extends ASTExpBuiltIn {
         
         private class BooleanFormatter extends BuiltInCallableImpl
-                implements TemplateScalarModel, TemplateFunctionModel {
+                implements TemplateStringModel, TemplateFunctionModel {
             private final TemplateBooleanModel bool;
             private final Environment env;
             
@@ -473,7 +473,7 @@ class BuiltInsForMultipleTypes {
                     throws TemplateException {
                 int argIdx = bool.getAsBoolean() ? 0 : 1;
                 TemplateModel result = args[argIdx];
-                if (!(result instanceof TemplateScalarModel)) {
+                if (!(result instanceof TemplateStringModel)) {
                     // Cause usual type exception
                     CallableUtils.castArgumentValueToString(
                             result, argIdx, false, null, this, true);
@@ -489,8 +489,8 @@ class BuiltInsForMultipleTypes {
             @Override
             public String getAsString() throws TemplateException {
                 // Boolean should have come first... but that change would be 
non-BC. 
-                if (bool instanceof TemplateScalarModel) {
-                    return ((TemplateScalarModel) bool).getAsString();
+                if (bool instanceof TemplateStringModel) {
+                    return ((TemplateStringModel) bool).getAsString();
                 } else {
                     return env.formatBoolean(bool.getAsBoolean(), true);
                 }
@@ -498,7 +498,7 @@ class BuiltInsForMultipleTypes {
         }
     
         private class DateFormatter extends BuiltInCallableImpl
-                implements TemplateScalarModel, TemplateHashModel, 
TemplateFunctionModel {
+                implements TemplateStringModel, TemplateHashModel, 
TemplateFunctionModel {
             private final TemplateDateModel dateModel;
             private final Environment env;
             private final TemplateDateFormat defaultFormat;
@@ -533,7 +533,7 @@ class BuiltInsForMultipleTypes {
             }
 
             private TemplateModel formatWith(String key) throws 
TemplateException {
-                return new SimpleScalar(env.formatDateToPlainText(dateModel, 
key, target, stringBI.this));
+                return new SimpleString(env.formatDateToPlainText(dateModel, 
key, target, stringBI.this));
             }
             
             @Override
@@ -563,7 +563,7 @@ class BuiltInsForMultipleTypes {
         }
         
         private class NumberFormatter extends BuiltInCallableImpl
-                implements TemplateScalarModel, TemplateHashModel, 
TemplateFunctionModel {
+                implements TemplateStringModel, TemplateHashModel, 
TemplateFunctionModel {
             private final TemplateNumberModel numberModel;
             private final Number number;
             private final Environment env;
@@ -596,7 +596,7 @@ class BuiltInsForMultipleTypes {
 
                 String result = env.formatNumberToPlainText(numberModel, 
format, target);
 
-                return new SimpleScalar(result);
+                return new SimpleString(result);
             }
             
             @Override
@@ -621,19 +621,19 @@ class BuiltInsForMultipleTypes {
             } else if (model instanceof TemplateDateModel) {
                 TemplateDateModel dm = (TemplateDateModel) model;
                 return new DateFormatter(dm, env);
-            } else if (model instanceof SimpleScalar) {
+            } else if (model instanceof SimpleString) {
                 return model;
             } else if (model instanceof TemplateBooleanModel) {
                 return new BooleanFormatter((TemplateBooleanModel) model, env);
-            } else if (model instanceof TemplateScalarModel) {
-                return new SimpleScalar(((TemplateScalarModel) 
model).getAsString());
+            } else if (model instanceof TemplateStringModel) {
+                return new SimpleString(((TemplateStringModel) 
model).getAsString());
             } else {
                 throw MessageUtils.newUnexpectedOperandTypeException(
                         target, model,
                         "number, date, boolean or string",
                         new Class[] {
                             TemplateNumberModel.class, 
TemplateDateModel.class, TemplateBooleanModel.class,
-                            TemplateScalarModel.class
+                            TemplateStringModel.class
                         },
                         null, env);
             }
@@ -651,7 +651,7 @@ class BuiltInsForMultipleTypes {
             if (model instanceof TemplateNumberModel) {
                 return formatNumber(env, model);
             } else if (model instanceof TemplateBooleanModel) {
-                return new SimpleScalar(((TemplateBooleanModel) 
model).getAsBoolean()
+                return new SimpleString(((TemplateBooleanModel) 
model).getAsBoolean()
                         ? TemplateBooleanFormat.C_TRUE : 
TemplateBooleanFormat.C_FALSE);
             } else {
                 throw MessageUtils.newUnexpectedOperandTypeException(

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
index 3767523..a018c87 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
@@ -24,7 +24,7 @@ import org.apache.freemarker.core.model.TemplateBooleanModel;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util.CallableUtils;
 
 
@@ -106,8 +106,8 @@ class BuiltInsForNestedContentParameters {
     
     static class item_parityBI extends BuiltInForNestedContentParameter {
         
-        private static final SimpleScalar ODD = new SimpleScalar("odd");
-        private static final SimpleScalar EVEN = new SimpleScalar("even");
+        private static final SimpleString ODD = new SimpleString("odd");
+        private static final SimpleString EVEN = new SimpleString("even");
 
         @Override
         TemplateModel calculateResult(IterationContext iterCtx, Environment 
env) throws TemplateException {
@@ -118,8 +118,8 @@ class BuiltInsForNestedContentParameters {
 
     static class item_parity_capBI extends BuiltInForNestedContentParameter {
         
-        private static final SimpleScalar ODD = new SimpleScalar("Odd");
-        private static final SimpleScalar EVEN = new SimpleScalar("Even");
+        private static final SimpleString ODD = new SimpleString("Odd");
+        private static final SimpleString EVEN = new SimpleString("Even");
 
         @Override
         TemplateModel calculateResult(IterationContext iterCtx, Environment 
env) throws TemplateException {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
index 178c0e2..b660a40 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
@@ -26,7 +26,7 @@ import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNodeModel;
 import org.apache.freemarker.core.model.TemplateNodeModelEx;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util._StringUtils;
 
 /**
@@ -116,7 +116,7 @@ class BuiltInsForNodes {
     static class node_nameBI extends BuiltInForNode {
        @Override
     TemplateModel calculateResult(TemplateNodeModel nodeModel, Environment 
env) throws TemplateException {
-            return new SimpleScalar(nodeModel.getNodeName());
+            return new SimpleString(nodeModel.getNodeName());
        }
     }
     
@@ -125,14 +125,14 @@ class BuiltInsForNodes {
         @Override
         TemplateModel calculateResult(TemplateNodeModel nodeModel, Environment 
env) throws TemplateException {
             String nsURI = nodeModel.getNodeNamespace();
-            return nsURI == null ? null : new SimpleScalar(nsURI);
+            return nsURI == null ? null : new SimpleString(nsURI);
         }
     }
     
     static class node_typeBI extends BuiltInForNode {
        @Override
     TemplateModel calculateResult(TemplateNodeModel nodeModel, Environment 
env) throws TemplateException {
-            return new SimpleScalar(nodeModel.getNodeType());
+            return new SimpleString(nodeModel.getNodeType());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java
index 447a644..ac3eb54 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java
@@ -29,7 +29,7 @@ import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
 import org.apache.freemarker.core.model.impl.SimpleDate;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util._NumberUtils;
 import org.apache.freemarker.core.util._StringUtils;
 
@@ -54,7 +54,7 @@ class BuiltInsForNumbers {
                 throw new TemplateException(target,
                         "The left side operand of to ?", key, " must be at 
least 1, but was ", Integer.valueOf(n), ".");
             }
-            return new SimpleScalar(toABC(n));
+            return new SimpleString(toABC(n));
         }
 
         protected abstract String toABC(int n);

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
index d0fa358..e36d767 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
@@ -38,11 +38,11 @@ import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelIterator;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.CollectionAndSequence;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.model.impl.TemplateModelListSequence;
 import org.apache.freemarker.core.util.BugException;
 import org.apache.freemarker.core.util._StringUtils;
@@ -236,7 +236,7 @@ class BuiltInsForSequences {
                 } else {
                     if (whenEmpty != null) sb.append(whenEmpty);
                 }
-                return new SimpleScalar(sb.toString());
+                return new SimpleString(sb.toString());
             }
 
             @Override
@@ -571,21 +571,21 @@ class BuiltInsForSequences {
                     throws TemplateException {
                 String[] subvars;
                 TemplateModel obj = args[0];
-                if (obj instanceof TemplateScalarModel) {
-                    subvars = new String[] { ((TemplateScalarModel) 
obj).getAsString() };
+                if (obj instanceof TemplateStringModel) {
+                    subvars = new String[] { ((TemplateStringModel) 
obj).getAsString() };
                 } else if (obj instanceof TemplateSequenceModel) {
                     TemplateSequenceModel seq = (TemplateSequenceModel) obj;
                     int ln = seq.size();
                     subvars = new String[ln];
                     for (int i = 0; i < ln; i++) {
                         TemplateModel item = seq.get(i);
-                        if (!(item instanceof  TemplateScalarModel)) {
+                        if (!(item instanceof TemplateStringModel)) {
                             throw new TemplateException(
                                     "The argument to ?", key, "(key), when 
it's a sequence, must be a "
                                     + "sequence of strings, but the item at 
index ", i,
                                     " is not a string.");
                         }
-                        subvars[i] = ((TemplateScalarModel) 
item).getAsString();
+                        subvars[i] = ((TemplateStringModel) 
item).getAsString();
                     }
                 } else {
                     throw new TemplateException(
@@ -750,7 +750,7 @@ class BuiltInsForSequences {
                 } // for each key
                 
                 if (keyType == KEY_TYPE_NOT_YET_DETECTED) {
-                    if (key instanceof TemplateScalarModel) {
+                    if (key instanceof TemplateStringModel) {
                         keyType = KEY_TYPE_STRING;
                         keyComparator = new LexicalKVPComparator(
                                 
Environment.getCurrentEnvironment().getCollator());
@@ -775,10 +775,10 @@ class BuiltInsForSequences {
                     case KEY_TYPE_STRING:
                         try {
                             res.add(new KVP(
-                                    ((TemplateScalarModel) key).getAsString(),
+                                    ((TemplateStringModel) key).getAsString(),
                                     item));
                         } catch (ClassCastException e) {
-                            if (!(key instanceof TemplateScalarModel)) {
+                            if (!(key instanceof TemplateStringModel)) {
                                 throw newInconsistentSortKeyTypeException(
                                         keyNamesLn, "string", "strings", i, 
key);
                             } else {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsBasic.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsBasic.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsBasic.java
index 91eac72..bbdb18f 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsBasic.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsBasic.java
@@ -30,9 +30,9 @@ import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateBooleanModel;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util.CallableUtils;
 import org.apache.freemarker.core.util._StringUtils;
 
@@ -51,21 +51,21 @@ class BuiltInsForStringsBasic {
                 b.setCharAt(i, Character.toUpperCase(s.charAt(i)));
                 s = b.toString();
             }
-            return new SimpleScalar(s);
+            return new SimpleString(s);
         }
     }
 
     static class capitalizeBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.capitalize(s));
+            return new SimpleString(_StringUtils.capitalize(s));
         }
     }
 
     static class chop_linebreakBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.chomp(s));
+            return new SimpleString(_StringUtils.chomp(s));
         }
     }
 
@@ -140,7 +140,7 @@ class BuiltInsForStringsBasic {
             public TemplateModel execute(TemplateModel[] args, CallPlace 
callPlace, Environment env)
                     throws TemplateException {
                 String suffix = getStringArgument(args, 0, this);
-                return new SimpleScalar(s.endsWith(suffix) ? s : s + suffix);
+                return new SimpleString(s.endsWith(suffix) ? s : s + suffix);
             }
 
             @Override
@@ -199,7 +199,7 @@ class BuiltInsForStringsBasic {
                     startsWithPrefix = s.startsWith(checkedPrefix);
                     addedPrefix = checkedPrefix;
                 }
-                return new SimpleScalar(startsWithPrefix ? s : addedPrefix + 
s);
+                return new SimpleString(startsWithPrefix ? s : addedPrefix + 
s);
             }
 
             @Override
@@ -293,7 +293,7 @@ class BuiltInsForStringsBasic {
                         startIndex = -1;
                     }
                 }
-                return startIndex == -1 ? TemplateScalarModel.EMPTY_STRING : 
new SimpleScalar(s.substring(startIndex));
+                return startIndex == -1 ? TemplateStringModel.EMPTY_STRING : 
new SimpleString(s.substring(startIndex));
             }
 
             @Override
@@ -351,7 +351,7 @@ class BuiltInsForStringsBasic {
                         }
                     }
                 }
-                return startIndex == -1 ? TemplateScalarModel.EMPTY_STRING : 
new SimpleScalar(s.substring(startIndex));
+                return startIndex == -1 ? TemplateStringModel.EMPTY_STRING : 
new SimpleString(s.substring(startIndex));
             }
 
             @Override
@@ -400,7 +400,7 @@ class BuiltInsForStringsBasic {
                         stopIndex = -1;
                     }
                 }
-                return stopIndex == -1 ? new SimpleScalar(s) : new 
SimpleScalar(s.substring(0, stopIndex));
+                return stopIndex == -1 ? new SimpleString(s) : new 
SimpleString(s.substring(0, stopIndex));
             }
 
             @Override
@@ -456,7 +456,7 @@ class BuiltInsForStringsBasic {
                         }
                     }
                 }
-                return stopIndex == -1 ? new SimpleScalar(s) : new 
SimpleScalar(s.substring(0, stopIndex));
+                return stopIndex == -1 ? new SimpleString(s) : new 
SimpleString(s.substring(0, stopIndex));
             }
 
             @Override
@@ -484,7 +484,7 @@ class BuiltInsForStringsBasic {
     static class lower_caseBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(s.toLowerCase(env.getLocale()));
+            return new SimpleString(s.toLowerCase(env.getLocale()));
         }
     }    
 
@@ -506,7 +506,7 @@ class BuiltInsForStringsBasic {
                 String filling = getOptionalStringArgument(args, 1, this);
                 if (filling != null) {
                     try {
-                        return new SimpleScalar(
+                        return new SimpleString(
                                 leftPadder
                                         ? _StringUtils.leftPad(s, width, 
filling)
                                         : _StringUtils.rightPad(s, width, 
filling));
@@ -520,7 +520,7 @@ class BuiltInsForStringsBasic {
                         }
                     }
                 } else {
-                    return new SimpleScalar(leftPadder ? 
_StringUtils.leftPad(s, width) : _StringUtils.rightPad(s, width));
+                    return new SimpleString(leftPadder ? 
_StringUtils.leftPad(s, width) : _StringUtils.rightPad(s, width));
                 }
             }
 
@@ -555,7 +555,7 @@ class BuiltInsForStringsBasic {
             public TemplateModel execute(TemplateModel[] args, CallPlace 
callPlace, Environment env)
                     throws TemplateException {
                 String prefix = getStringArgument(args, 0, this);
-                return new SimpleScalar(s.startsWith(prefix) ? 
s.substring(prefix.length()) : s);
+                return new SimpleString(s.startsWith(prefix) ? 
s.substring(prefix.length()) : s);
             }
 
             @Override
@@ -583,7 +583,7 @@ class BuiltInsForStringsBasic {
             public TemplateModel execute(TemplateModel[] args, CallPlace 
callPlace, Environment env)
                     throws TemplateException {
                 String suffix = getStringArgument(args, 0, this);
-                return new SimpleScalar(s.endsWith(suffix) ? s.substring(0, 
s.length() - suffix.length()) : s);
+                return new SimpleString(s.endsWith(suffix) ? s.substring(0, 
s.length() - suffix.length()) : s);
             }
 
             @Override
@@ -710,9 +710,9 @@ class BuiltInsForStringsBasic {
                                 + ", shouldn't be greater than the end index 
argument, " + endIdx + ".",
                                 this);
                     }
-                    return new SimpleScalar(s.substring(beginIdx, endIdx));
+                    return new SimpleString(s.substring(beginIdx, endIdx));
                 } else {
-                    return new SimpleScalar(s.substring(beginIdx));
+                    return new SimpleString(s.substring(beginIdx));
                 }
             }
 
@@ -741,7 +741,7 @@ class BuiltInsForStringsBasic {
     static class trimBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(s.trim());
+            return new SimpleString(s.trim());
         }
     }
 
@@ -758,14 +758,14 @@ class BuiltInsForStringsBasic {
                 b.setCharAt(i, Character.toLowerCase(s.charAt(i)));
                 s = b.toString();
             }
-            return new SimpleScalar(s);
+            return new SimpleString(s);
         }
     }
 
     static class upper_caseBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(s.toUpperCase(env.getLocale()));
+            return new SimpleString(s.toUpperCase(env.getLocale()));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsEncoding.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsEncoding.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsEncoding.java
index e36572c..9a51dfb 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsEncoding.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsEncoding.java
@@ -28,8 +28,8 @@ import java.nio.charset.UnsupportedCharsetException;
 import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.TemplateStringModel;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util._StringUtils;
 
 class BuiltInsForStringsEncoding {
@@ -38,7 +38,7 @@ class BuiltInsForStringsEncoding {
         
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.XHTMLEnc(s));
+            return new SimpleString(_StringUtils.XHTMLEnc(s));
         }
         
     }
@@ -46,28 +46,28 @@ class BuiltInsForStringsEncoding {
     static class j_stringBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.javaStringEnc(s));
+            return new SimpleString(_StringUtils.javaStringEnc(s));
         }
     }
 
     static class js_stringBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.javaScriptStringEnc(s));
+            return new SimpleString(_StringUtils.javaScriptStringEnc(s));
         }
     }
 
     static class json_stringBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.jsonStringEnc(s));
+            return new SimpleString(_StringUtils.jsonStringEnc(s));
         }
     }
 
     static class rtfBI extends BuiltInForLegacyEscaping {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.RTFEnc(s));
+            return new SimpleString(_StringUtils.RTFEnc(s));
         }
     }
 
@@ -118,21 +118,21 @@ class BuiltInsForStringsEncoding {
     static class xhtmlBI extends BuiltInForLegacyEscaping {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.XHTMLEnc(s));
+            return new SimpleString(_StringUtils.XHTMLEnc(s));
         }
     }
 
     static class xmlBI extends BuiltInForLegacyEscaping {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(_StringUtils.XMLEnc(s));
+            return new SimpleString(_StringUtils.XMLEnc(s));
         }
     }
 
     // Can't be instantiated
     private BuiltInsForStringsEncoding() { }
 
-    static abstract class AbstractUrlBIResult implements TemplateScalarModel, 
TemplateFunctionModel,
+    static abstract class AbstractUrlBIResult implements TemplateStringModel, 
TemplateFunctionModel,
             ASTExpBuiltIn.BuiltInCallable {
         
         protected final ASTExpBuiltIn parent;
@@ -160,7 +160,7 @@ class BuiltInsForStringsEncoding {
                     throw new TemplateException(e, "Wrong charset name, or 
charset is unsupported by the runtime "
                             + "environment: " + 
_StringUtils.jQuote(charsetName));
                 }
-                return new SimpleScalar(encodeWithCharset(charset));
+                return new SimpleString(encodeWithCharset(charset));
             } catch (Exception e) {
                 throw new TemplateException(e, "Failed to execute URL 
encoding.");
             }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java
index 6280c68..d1c42cc 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java
@@ -29,7 +29,7 @@ import org.apache.freemarker.core.model.TemplateBooleanModel;
 import org.apache.freemarker.core.model.TemplateDirectiveModel;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.BeanModel;
 import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
@@ -117,8 +117,8 @@ class BuiltInsForStringsMisc {
     }
     
     /**
-     * A method that takes a parameter and evaluates it as a scalar,
-     * then treats that scalar as template source code and returns a
+     * A method that takes a parameter and evaluates it as a string,
+     * then treats that string as template source code and returns a
      * transform model that evaluates the template in place.
      * The template inherits the configuration and environment of the executing
      * template. By default, its name will be equal to 
@@ -134,8 +134,8 @@ class BuiltInsForStringsMisc {
          * 
          * <p>The built-in has two arguments:
          * the arguments passed to the method. It can receive at
-         * least one and at most two arguments, both must evaluate to a 
scalar. 
-         * The first scalar is interpreted as a template source code and a 
template
+         * least one and at most two arguments, both must evaluate to a string.
+         * The first string is interpreted as a template source code and a 
template
          * is built from it. The second (optional) is used to give the 
generated
          * template a name.
          * 
@@ -155,12 +155,12 @@ class BuiltInsForStringsMisc {
                     id = ((ASTExpression) new ASTExpDynamicKeyName(target, new 
ASTExpNumberLiteral(1))
                             
.copyLocationFrom(target)).evalAndCoerceToPlainText(env);
                 }
-            } else if (model instanceof TemplateScalarModel) {
+            } else if (model instanceof TemplateStringModel) {
                 sourceExpr = target;
             } else {
                 throw MessageUtils.newUnexpectedOperandTypeException(
                         target, model,
-                        "sequence or string", new Class[] { 
TemplateSequenceModel.class, TemplateScalarModel.class },
+                        "sequence or string", new Class[] { 
TemplateSequenceModel.class, TemplateStringModel.class },
                         null, env);
             }
             String templateSource = sourceExpr.evalAndCoerceToPlainText(env);

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsRegexp.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsRegexp.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsRegexp.java
index d885845..cb09e95 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsRegexp.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsRegexp.java
@@ -31,9 +31,9 @@ import 
org.apache.freemarker.core.model.TemplateCollectionModel;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelIterator;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util._StringUtils;
 
 
@@ -133,7 +133,7 @@ class BuiltInsForStringsRegexp {
                             ? matcher.replaceFirst(arg2)
                             : matcher.replaceAll(arg2);
                 }
-                return new SimpleScalar(result);
+                return new SimpleString(result);
             }
 
             @Override
@@ -154,7 +154,7 @@ class BuiltInsForStringsRegexp {
   
     static class RegexMatchModel 
     implements TemplateBooleanModel, TemplateCollectionModel, 
TemplateSequenceModel {
-        static class MatchWithGroups implements TemplateScalarModel {
+        static class MatchWithGroups implements TemplateStringModel {
             final String matchedInputPart;
             final String[] groups;
 
@@ -222,7 +222,7 @@ class BuiltInsForStringsRegexp {
                                 return null;
                             }
 
-                            return new 
SimpleScalar(firedEntireInputMatcher.group(i));
+                            return new 
SimpleString(firedEntireInputMatcher.group(i));
                         } catch (Exception e) {
                             throw new TemplateException("Failed to read 
regular expression match group", e);
                         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
index e899ab2..c0af937 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
@@ -59,7 +59,7 @@ import org.apache.freemarker.core.model.TemplateModelIterator;
 import org.apache.freemarker.core.model.TemplateModelWithOriginName;
 import org.apache.freemarker.core.model.TemplateNodeModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.SimpleHash;
 import 
org.apache.freemarker.core.templateresolver.MalformedTemplateNameException;
@@ -594,8 +594,8 @@ public final class Environment extends 
MutableProcessingConfiguration<Environmen
                     // // TemplateNodeModel somehow.
 
                     // If the node's type is 'text', we just output it.
-                    if ((nodeType.equals("text") && node instanceof 
TemplateScalarModel)) {
-                        out.write(((TemplateScalarModel) node).getAsString()); 
// TODO [FM3] Escaping?
+                    if ((nodeType.equals("text") && node instanceof 
TemplateStringModel)) {
+                        out.write(((TemplateStringModel) node).getAsString()); 
// TODO [FM3] Escaping?
                     } else if (nodeType.equals("document")) {
                         recurse(node, namespaces);
                     }
@@ -1954,18 +1954,18 @@ public final class Environment extends 
MutableProcessingConfiguration<Environmen
         if (rootDataModel instanceof TemplateHashModelEx) {
             TemplateModelIterator rootNames = ((TemplateHashModelEx) 
rootDataModel).keys().iterator();
             while (rootNames.hasNext()) {
-                set.add(((TemplateScalarModel) 
rootNames.next()).getAsString());
+                set.add(((TemplateStringModel) 
rootNames.next()).getAsString());
             }
         }
 
         // globals
         for (TemplateModelIterator tmi = globalNamespace.keys().iterator(); 
tmi.hasNext();) {
-            set.add(((TemplateScalarModel) tmi.next()).getAsString());
+            set.add(((TemplateStringModel) tmi.next()).getAsString());
         }
 
         // current name-space
         for (TemplateModelIterator tmi = currentNamespace.keys().iterator(); 
tmi.hasNext();) {
-            set.add(((TemplateScalarModel) tmi.next()).getAsString());
+            set.add(((TemplateStringModel) tmi.next()).getAsString());
         }
 
         // locals and loop vars


Reply via email to