Marked most static utility classes as internal, and renamed them to start with 
"_" (for example StringUtils was renamed to _StringUtil, thus people won't 
accidentally use it when they wanted to autocomplete to Apache Commons 
StringUtil). Also moved over utlitiy methods to o.a.f.core.util.


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/a5d9575f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/a5d9575f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/a5d9575f

Branch: refs/heads/3
Commit: a5d9575f30bfdcbf27b4fbbb2516bc85f2c98c38
Parents: 4e2f451
Author: ddekany <[email protected]>
Authored: Fri Feb 17 12:54:50 2017 +0100
Committer: ddekany <[email protected]>
Committed: Fri Feb 17 15:05:40 2017 +0100

----------------------------------------------------------------------
 .../apache/freemarker/core/Configuration.java   |   50 +-
 .../org/apache/freemarker/core/Template.java    |    4 +-
 .../freemarker/core/TemplateException.java      |    6 +-
 .../core/TemplateExceptionHandler.java          |    4 +-
 .../org/apache/freemarker/core/Version.java     |    8 +-
 .../apache/freemarker/core/_TemplateAPI.java    |    4 +-
 .../ast/AliasTemplateDateFormatFactory.java     |    7 +-
 .../ast/AliasTemplateNumberFormatFactory.java   |    7 +-
 .../freemarker/core/ast/ArithmeticEngine.java   |   13 +-
 .../apache/freemarker/core/ast/Assignment.java  |    3 +-
 .../org/apache/freemarker/core/ast/BuiltIn.java |   60 +-
 .../freemarker/core/ast/BuiltInsForDates.java   |   10 +-
 .../freemarker/core/ast/BuiltInsForNumbers.java |   14 +-
 .../core/ast/BuiltInsForSequences.java          |    8 +-
 .../core/ast/BuiltInsForStringsBasic.java       |   14 +-
 .../core/ast/BuiltInsForStringsEncoding.java    |   26 +-
 .../core/ast/BuiltInsForStringsRegexp.java      |    4 +-
 .../freemarker/core/ast/BuiltinVariable.java    |    8 +-
 .../org/apache/freemarker/core/ast/Comment.java |    4 +-
 .../freemarker/core/ast/Configurable.java       |   57 +-
 .../freemarker/core/ast/DollarVariable.java     |    4 +-
 .../org/apache/freemarker/core/ast/Dot.java     |    3 +-
 .../freemarker/core/ast/DynamicKeyName.java     |    2 +-
 .../apache/freemarker/core/ast/Environment.java |   24 +-
 .../apache/freemarker/core/ast/EscapeBlock.java |    3 +-
 .../core/ast/ExtendedDecimalFormatParser.java   |    8 +-
 .../freemarker/core/ast/HTMLOutputFormat.java   |    8 +-
 .../core/ast/ISOLikeTemplateDateFormat.java     |   28 +-
 .../ast/ISOLikeTemplateDateFormatFactory.java   |    8 +-
 .../core/ast/ISOTemplateDateFormat.java         |   16 +-
 .../apache/freemarker/core/ast/Identifier.java  |    3 +-
 .../org/apache/freemarker/core/ast/Include.java |    6 +-
 .../org/apache/freemarker/core/ast/Items.java   |    5 +-
 .../freemarker/core/ast/IteratorBlock.java      |    7 +-
 .../apache/freemarker/core/ast/LibraryLoad.java |    3 +-
 .../org/apache/freemarker/core/ast/Macro.java   |    5 +-
 .../ast/MarkupOutputFormatBoundBuiltIn.java     |    4 +-
 .../apache/freemarker/core/ast/MessageUtil.java |    6 +-
 .../apache/freemarker/core/ast/MethodCall.java  |    4 +-
 .../ast/NestedContentNotSupportedException.java |    4 +-
 .../ast/NonSequenceOrCollectionException.java   |    4 +-
 .../freemarker/core/ast/NumericalOutput.java    |    4 +-
 .../core/ast/OptInTemplateClassResolver.java    |   18 +-
 .../freemarker/core/ast/OutputFormat.java       |    8 +-
 .../core/ast/OutputFormatBoundBuiltIn.java      |    4 +-
 .../freemarker/core/ast/ParseException.java     |   10 +-
 .../freemarker/core/ast/PropertySetting.java    |    8 +-
 .../freemarker/core/ast/RTFOutputFormat.java    |    8 +-
 .../freemarker/core/ast/RegexpHelper.java       |    4 +-
 .../freemarker/core/ast/StringLiteral.java      |    6 +-
 .../core/ast/TemplateClassResolver.java         |    6 +-
 .../core/ast/TemplateConfiguration.java         |    8 +-
 .../freemarker/core/ast/TemplateElement.java    |    1 +
 .../core/ast/TemplateElementArrayBuilder.java   |    4 +-
 .../apache/freemarker/core/ast/TextBlock.java   |   20 +-
 .../apache/freemarker/core/ast/UnifiedCall.java |   10 +-
 .../freemarker/core/ast/XHTMLOutputFormat.java  |    8 +-
 .../freemarker/core/ast/XMLOutputFormat.java    |    8 +-
 .../core/ast/XSTemplateDateFormat.java          |   16 +-
 .../freemarker/core/ast/_ArrayEnumeration.java  |   49 -
 .../freemarker/core/ast/_ArrayIterator.java     |   51 -
 .../apache/freemarker/core/ast/_CoreAPI.java    |    7 +-
 .../freemarker/core/ast/_CoreLocaleUtils.java   |   45 -
 .../freemarker/core/ast/_CoreStringUtils.java   |  125 -
 .../core/ast/_DelayedFTLTypeDescription.java    |    4 +-
 .../freemarker/core/ast/_DelayedJQuote.java     |    4 +-
 .../core/ast/_DelayedShortClassName.java        |    4 +-
 .../core/ast/_ErrorDescriptionBuilder.java      |   14 +-
 .../org/apache/freemarker/core/ast/_Java8.java  |   32 -
 .../apache/freemarker/core/ast/_Java8Impl.java  |   39 -
 .../freemarker/core/ast/_JavaVersions.java      |   80 -
 ...ObjectBuilderSettingEvaluationException.java |    4 +-
 .../ast/_ObjectBuilderSettingEvaluator.java     |   37 +-
 .../freemarker/core/ast/_SortedArraySet.java    |   80 -
 .../core/ast/_TemplateModelException.java       |    4 +-
 .../core/ast/_UnmodifiableCompositeSet.java     |   95 -
 .../freemarker/core/ast/_UnmodifiableSet.java   |   47 -
 .../core/debug/impl/DebuggerServer.java         |    6 +-
 .../core/debug/impl/DebuggerService.java        |    4 +-
 .../apache/freemarker/core/model/Constants.java |  122 +
 .../core/model/ObjectWrapperWithAPISupport.java |   51 +
 .../core/model/RichObjectWrapper.java           |   38 +
 .../freemarker/core/model/TemplateModel.java    |    4 +-
 .../core/model/TemplateModelWithAPISupport.java |    2 -
 .../core/model/impl/DefaultIterableAdapter.java |    2 +-
 .../core/model/impl/DefaultListAdapter.java     |    4 +-
 .../core/model/impl/DefaultMapAdapter.java      |    2 +-
 .../impl/DefaultNonListCollectionAdapter.java   |    2 +-
 .../core/model/impl/SimpleSequence.java         |   11 +-
 .../core/model/impl/_StaticObjectWrappers.java  |    4 +-
 .../core/model/impl/beans/ArgumentTypes.java    |   20 +-
 .../core/model/impl/beans/BeanModel.java        |    4 +-
 .../core/model/impl/beans/BeansWrapper.java     |   22 +-
 .../impl/beans/ClassBasedModelFactory.java      |    4 +-
 .../model/impl/beans/ClassIntrospector.java     |    4 +-
 .../model/impl/beans/OverloadedMethods.java     |    8 +-
 .../impl/beans/OverloadedMethodsSubset.java     |   10 +-
 .../model/impl/beans/OverloadedNumberUtil.java  |   10 +-
 .../core/model/impl/beans/SimpleMapModel.java   |    2 +-
 .../core/model/impl/beans/SimpleMethod.java     |    6 +-
 .../model/impl/beans/SimpleMethodModel.java     |    4 +-
 .../core/model/impl/beans/UnsafeMethods.java    |    6 +-
 .../core/model/impl/beans/_BeansAPI.java        |    6 +-
 .../core/model/impl/beans/_MethodUtil.java      |   12 +-
 .../core/model/impl/dom/NodeOutputter.java      |    8 +-
 .../templateresolver/FileNameGlobMatcher.java   |    6 +-
 .../FirstMatchTemplateConfigurationFactory.java |    4 +-
 .../MalformedTemplateNameException.java         |    4 +-
 .../core/templateresolver/PathGlobMatcher.java  |    8 +-
 .../core/templateresolver/PathRegexMatcher.java |    4 +-
 .../templateresolver/TemplateLoadingResult.java |   10 +-
 .../impl/ByteArrayTemplateLoader.java           |    4 +-
 .../impl/ClassTemplateLoader.java               |   14 +-
 .../impl/DefaultTemplateNameFormat.java         |    4 +-
 .../impl/DefaultTemplateResolver.java           |   30 +-
 .../impl/FileTemplateLoader.java                |   10 +-
 .../impl/MultiTemplateLoader.java               |    4 +-
 .../impl/StringTemplateLoader.java              |    4 +-
 ...TemplateLoaderBasedTemplateLookupResult.java |    6 +-
 .../impl/URLTemplateLoadingSource.java          |    4 +-
 .../apache/freemarker/core/util/ClassUtil.java  |  385 ---
 .../freemarker/core/util/CollectionUtils.java   |   36 -
 .../apache/freemarker/core/util/Constants.java  |  122 -
 .../freemarker/core/util/DOMNodeModel.java      |  267 ---
 .../apache/freemarker/core/util/DateUtil.java   |  911 --------
 .../apache/freemarker/core/util/HtmlEscape.java |    1 +
 .../freemarker/core/util/NormalizeNewlines.java |    1 +
 .../core/util/NullArgumentException.java        |   59 -
 .../apache/freemarker/core/util/NullWriter.java |   90 -
 .../apache/freemarker/core/util/NumberUtil.java |  170 --
 .../core/util/ObjectWrapperWithAPISupport.java  |   51 -
 .../freemarker/core/util/OptimizerUtil.java     |   97 -
 .../freemarker/core/util/RichObjectWrapper.java |   37 -
 .../freemarker/core/util/SecurityUtilities.java |   87 -
 .../freemarker/core/util/StandardCompress.java  |    1 +
 .../apache/freemarker/core/util/StringUtil.java | 2126 -----------------
 .../util/UnrecognizedTimeZoneException.java     |    2 +-
 .../apache/freemarker/core/util/XmlEscape.java  |    1 +
 .../freemarker/core/util/_ArrayEnumeration.java |   49 +
 .../freemarker/core/util/_ArrayIterator.java    |   51 +
 .../apache/freemarker/core/util/_ClassUtil.java |  385 +++
 .../freemarker/core/util/_CollectionUtil.java   |   36 +
 .../apache/freemarker/core/util/_DateUtil.java  |  912 ++++++++
 .../org/apache/freemarker/core/util/_Java8.java |   32 +
 .../apache/freemarker/core/util/_Java8Impl.java |   39 +
 .../freemarker/core/util/_JavaVersions.java     |   79 +
 .../freemarker/core/util/_LocaleUtil.java       |   45 +
 .../core/util/_NullArgumentException.java       |   59 +
 .../freemarker/core/util/_NullWriter.java       |   90 +
 .../freemarker/core/util/_NumberUtil.java       |  205 ++
 .../freemarker/core/util/_SecurityUtil.java     |   87 +
 .../freemarker/core/util/_SortedArraySet.java   |   80 +
 .../freemarker/core/util/_StringUtil.java       | 2198 ++++++++++++++++++
 .../core/util/_UnmodifiableCompositeSet.java    |   97 +
 .../freemarker/core/util/_UnmodifiableSet.java  |   47 +
 .../freemarker/servlet/FreemarkerServlet.java   |   44 +-
 .../freemarker/servlet/InitParamParser.java     |    6 +-
 .../servlet/WebAppTemplateLoader.java           |   22 +-
 .../jsp/CustomTagAndELFunctionCombiner.java     |    4 +-
 .../jsp/FreeMarkerJspApplicationContext.java    |    4 +-
 .../freemarker/servlet/jsp/JspTagModelBase.java |    4 +-
 .../servlet/jsp/JspWriterAdapter.java           |    4 +-
 .../freemarker/servlet/jsp/TaglibFactory.java   |   74 +-
 .../servlet/jsp/TaglibMethodUtil.java           |   10 +-
 .../servlet/jsp/_FreeMarkerPageContext21.java   |    4 +-
 src/main/javacc/FTL.jj                          |   22 +-
 src/manual/en_US/FM3-CHANGE-LOG.txt             |    5 +-
 .../freemarker/core/ConfigurationTest.java      |   36 +-
 .../freemarker/core/CustomAttributeTest.java    |    6 +-
 .../apache/freemarker/core/ExceptionTest.java   |    7 +-
 .../core/MistakenlyPublicImportAPIsTest.java    |    9 +-
 .../core/MistakenlyPublicMacroAPIsTest.java     |    7 +-
 .../apache/freemarker/core/ast/ASTPrinter.java  |   18 +-
 .../org/apache/freemarker/core/ast/ASTTest.java |    4 +-
 .../ast/BaseNTemplateNumberFormatFactory.java   |   10 +-
 .../freemarker/core/ast/CamelCaseTest.java      |    8 +-
 .../freemarker/core/ast/ConfigurableTest.java   |   10 +-
 .../core/ast/CoreLocaleUtilsTest.java           |   22 +-
 .../core/ast/CustomHTMLOutputFormat.java        |    4 +-
 ...EpochMillisDivTemplateDateFormatFactory.java |    4 +-
 .../ast/HTMLISOTemplateDateFormatFactory.java   |   28 +-
 .../ast/HexTemplateNumberFormatFactory.java     |    4 +-
 .../core/ast/ParsingErrorMessagesTest.java      |    6 +-
 .../ast/PrintfGTemplateNumberFormatFactory.java |    4 +-
 .../freemarker/core/ast/SQLTimeZoneTest.java    |   10 +-
 .../core/ast/TagSyntaxVariationsTest.java       |    6 +-
 .../core/ast/TemplateConfigurationTest.java     |   16 +-
 .../ast/TemplateNameSpecialVariablesTest.java   |    6 +-
 .../core/ast/TheadInterruptingSupportTest.java  |    8 +-
 .../impl/beans/BeansWrapperReadOnlyTest.java    |    5 +-
 .../beans/ParameterListPreferabilityTest.java   |    6 +-
 .../freemarker/core/util/DateUtilTest.java      |  322 ++-
 .../freemarker/core/util/NumberUtilTest.java    |  108 +-
 .../freemarker/core/util/StringUtilTest.java    |  224 +-
 .../TemplateConfigurationExamples.java          |    4 +-
 .../jsp/taglibmembers/AttributeAccessorTag.java |    4 +-
 .../jsp/taglibmembers/AttributeInfoTag.java     |    8 +-
 .../servlet/jsp/taglibmembers/GetAndSetTag.java |    4 +-
 .../freemarker/test/ResourcesExtractor.java     |   14 +-
 .../apache/freemarker/test/TemplateTest.java    |    8 +-
 .../test/servlet/Model2TesterServlet.java       |    4 +-
 .../test/templatesuite/TemplateTestCase.java    |   26 +-
 .../test/templatesuite/TemplateTestSuite.java   |   14 +-
 .../templatesuite/models/JavaObjectInfo.java    |    4 +-
 .../test/templatesuite/models/Listables.java    |   12 -
 .../templatesuite/models/OverloadedMethods.java |    6 +-
 .../models/OverloadedMethods2.java              |    8 +-
 .../freemarker/test/util/AssertDirective.java   |    4 +-
 .../test/util/AssertEqualsDirective.java        |    4 +-
 .../test/util/AssertFailsDirective.java         |   20 +-
 .../test/util/BadParameterTypeException.java    |    6 +-
 .../freemarker/test/util/FileTestCase.java      |    4 +-
 .../util/MissingRequiredParameterException.java |    6 +-
 .../freemarker/test/util/NoOutputDirective.java |    4 +-
 .../util/UnsupportedParameterException.java     |    6 +-
 215 files changed, 5806 insertions(+), 6232 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/Configuration.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/Configuration.java 
b/src/main/java/org/apache/freemarker/core/Configuration.java
index ece7b3f..023ea8b 100644
--- a/src/main/java/org/apache/freemarker/core/Configuration.java
+++ b/src/main/java/org/apache/freemarker/core/Configuration.java
@@ -67,8 +67,7 @@ import org.apache.freemarker.core.ast._DelayedJQuote;
 import org.apache.freemarker.core.ast._MiscTemplateException;
 import org.apache.freemarker.core.ast._ObjectBuilderSettingEvaluator;
 import org.apache.freemarker.core.ast._SettingEvaluationEnvironment;
-import org.apache.freemarker.core.ast._SortedArraySet;
-import org.apache.freemarker.core.ast._UnmodifiableCompositeSet;
+import org.apache.freemarker.core.util._UnmodifiableCompositeSet;
 import org.apache.freemarker.core.model.ObjectWrapper;
 import org.apache.freemarker.core.model.TemplateHashModelEx;
 import org.apache.freemarker.core.model.TemplateModel;
@@ -105,15 +104,16 @@ import 
org.apache.freemarker.core.templateresolver.impl.MultiTemplateLoader;
 import org.apache.freemarker.core.templateresolver.impl.SoftCacheStorage;
 import org.apache.freemarker.core.templateresolver.impl.URLTemplateLoader;
 import org.apache.freemarker.core.util.CaptureOutput;
-import org.apache.freemarker.core.util.ClassUtil;
-import org.apache.freemarker.core.util.Constants;
+import org.apache.freemarker.core.util._ClassUtil;
+import org.apache.freemarker.core.model.Constants;
 import org.apache.freemarker.core.util.HtmlEscape;
 import org.apache.freemarker.core.util.NormalizeNewlines;
-import org.apache.freemarker.core.util.NullArgumentException;
-import org.apache.freemarker.core.util.SecurityUtilities;
+import org.apache.freemarker.core.util._NullArgumentException;
+import org.apache.freemarker.core.util._SecurityUtil;
 import org.apache.freemarker.core.util.StandardCompress;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 import org.apache.freemarker.core.util.XmlEscape;
+import org.apache.freemarker.core.util._SortedArraySet;
 
 /**
  * <b>The main entry point into the FreeMarker API</b>; encapsulates the 
configuration settings of FreeMarker,
@@ -531,7 +531,7 @@ public class Configuration extends Configurable implements 
Cloneable, ParserConf
      */
     private HashMap/*<String, Object>*/ rewrappableSharedVariables = null;
     
-    private String defaultEncoding = 
SecurityUtilities.getSystemProperty("file.encoding", "utf-8");
+    private String defaultEncoding = 
_SecurityUtil.getSystemProperty("file.encoding", "utf-8");
     private ConcurrentMap localeToCharsetMap = new ConcurrentHashMap();
     
     /**
@@ -842,7 +842,7 @@ public class Configuration extends Configurable implements 
Cloneable, ParserConf
         // - This way we avoid the error if FM isn't actually used
         checkFreeMarkerVersionClash();
         
-        NullArgumentException.check("incompatibleImprovements", 
incompatibleImprovements);
+        _NullArgumentException.check("incompatibleImprovements", 
incompatibleImprovements);
         this.incompatibleImprovements = incompatibleImprovements;
         
         createTemplateResolver();
@@ -1419,11 +1419,11 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
     public void setServletContextForTemplateLoading(Object servletContext, 
String path) {
         try {
             // Don't introduce linking-time dependency on servlets
-            final Class webappTemplateLoaderClass = ClassUtil.forName(
+            final Class webappTemplateLoaderClass = _ClassUtil.forName(
                     "org.apache.freemarker.servlet.WebAppTemplateLoader");
             
             // Don't introduce linking-time dependency on servlets
-            final Class servletContextClass = 
ClassUtil.forName("javax.servlet.ServletContext");
+            final Class servletContextClass = 
_ClassUtil.forName("javax.servlet.ServletContext");
             
             final Class[] constructorParamTypes;
             final Object[] constructorParams;
@@ -1825,7 +1825,7 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
      */
     public void setOutputFormat(OutputFormat outputFormat) {
         if (outputFormat == null) {
-            throw new NullArgumentException(
+            throw new _NullArgumentException(
                     "outputFormat",
                     "You may meant: " + 
UndefinedOutputFormat.class.getSimpleName() + ".INSTANCE");
         }
@@ -1915,7 +1915,7 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
             if (stdOF == null) {
                 StringBuilder sb = new StringBuilder();
                 sb.append("Unregistered output format name, ");
-                sb.append(StringUtil.jQuote(name));
+                sb.append(_StringUtil.jQuote(name));
                 sb.append(". The output formats registered in the 
Configuration are: ");
                 
                 Set<String> registeredNames = new TreeSet<String>();
@@ -1929,7 +1929,7 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
                     } else {
                         sb.append(", ");
                     }
-                    sb.append(StringUtil.jQuote(registeredName));
+                    sb.append(_StringUtil.jQuote(registeredName));
                 }
                 
                 throw new UnregisteredOutputFormatException(sb.toString());
@@ -1977,7 +1977,7 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
      * @since 2.3.24
      */
     public void setRegisteredCustomOutputFormats(Collection<? extends 
OutputFormat> registeredCustomOutputFormats) {
-        NullArgumentException.check(registeredCustomOutputFormats);
+        _NullArgumentException.check(registeredCustomOutputFormats);
         Map<String, OutputFormat> m = new LinkedHashMap<String, OutputFormat>(
                 registeredCustomOutputFormats.size() * 4 / 3, 1f);
         for (OutputFormat outputFormat : registeredCustomOutputFormats) {
@@ -2405,29 +2405,29 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
             TemplateLoader tl = getTemplateLoader();  
             String msg; 
             if (tl == null) {
-                msg = "Don't know where to load template " + 
StringUtil.jQuote(name)
+                msg = "Don't know where to load template " + 
_StringUtil.jQuote(name)
                       + " from because the \"template_loader\" FreeMarker "
                       + "setting wasn't set (Configuration.setTemplateLoader), 
so it's null.";
             } else {
                 final String missingTempNormName = 
maybeTemp.getMissingTemplateNormalizedName();
                 final String missingTempReason = 
maybeTemp.getMissingTemplateReason();
                 final TemplateLookupStrategy templateLookupStrategy = 
getTemplateLookupStrategy();
-                msg = "Template not found for name " + StringUtil.jQuote(name)
+                msg = "Template not found for name " + _StringUtil.jQuote(name)
                         + (missingTempNormName != null && name != null
                                 && 
!removeInitialSlash(name).equals(missingTempNormName)
-                                ? " (normalized: " + 
StringUtil.jQuote(missingTempNormName) + ")"
+                                ? " (normalized: " + 
_StringUtil.jQuote(missingTempNormName) + ")"
                                 : "")
                         + (customLookupCondition != null ? " and custom lookup 
condition "
-                        + StringUtil.jQuote(customLookupCondition) : "")
+                        + _StringUtil.jQuote(customLookupCondition) : "")
                         + "."
                         + (missingTempReason != null
                                 ? "\nReason given: " + 
ensureSentenceIsClosed(missingTempReason)
                                 : "")
                         + "\nThe name was interpreted by this TemplateLoader: "
-                        + StringUtil.tryToString(tl) + "."
+                        + _StringUtil.tryToString(tl) + "."
                         + 
(!isKnownNonConfusingLookupStrategy(templateLookupStrategy)
                                 ? "\n(Before that, the name was possibly 
changed by this lookup strategy: "
-                                  + 
StringUtil.tryToString(templateLookupStrategy) + ".)"
+                                  + 
_StringUtil.tryToString(templateLookupStrategy) + ".)"
                                 : "")
                         // Suspected reasons or warning:
                         + (!templateLoaderExplicitlySet
@@ -2797,10 +2797,10 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
             if (DEFAULT_ENCODING_KEY_SNAKE_CASE.equals(name) || 
DEFAULT_ENCODING_KEY_CAMEL_CASE.equals(name)) {
                 setDefaultEncoding(value);
             } else if (LOCALIZED_LOOKUP_KEY_SNAKE_CASE.equals(name) || 
LOCALIZED_LOOKUP_KEY_CAMEL_CASE.equals(name)) {
-                setLocalizedLookup(StringUtil.getYesNo(value));
+                setLocalizedLookup(_StringUtil.getYesNo(value));
             } else if (WHITESPACE_STRIPPING_KEY_SNAKE_CASE.equals(name)
                     || WHITESPACE_STRIPPING_KEY_CAMEL_CASE.equals(name)) {
-                setWhitespaceStripping(StringUtil.getYesNo(value));
+                setWhitespaceStripping(_StringUtil.getYesNo(value));
             } else if (AUTO_ESCAPING_POLICY_KEY_SNAKE_CASE.equals(name) || 
AUTO_ESCAPING_POLICY_KEY_CAMEL_CASE.equals(name)) {
                 if ("enable_if_default".equals(value) || 
"enableIfDefault".equals(value)) {
                     
setAutoEscapingPolicy(ENABLE_IF_DEFAULT_AUTO_ESCAPING_POLICY);
@@ -2835,7 +2835,7 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
                 if (value.equalsIgnoreCase(DEFAULT)) {
                     unsetRecognizeStandardFileExtensions();
                 } else {
-                    
setRecognizeStandardFileExtensions(StringUtil.getYesNo(value));
+                    
setRecognizeStandardFileExtensions(_StringUtil.getYesNo(value));
                 }
             } else if (CACHE_STORAGE_KEY_SNAKE_CASE.equals(name) || 
CACHE_STORAGE_KEY_CAMEL_CASE.equals(name)) {
                 if (value.equalsIgnoreCase(DEFAULT)) {
@@ -2843,7 +2843,7 @@ public class Configuration extends Configurable 
implements Cloneable, ParserConf
                 } if (value.indexOf('.') == -1) {
                     int strongSize = 0;
                     int softSize = 0;
-                    Map map = StringUtil.parseNameValuePairList(
+                    Map map = _StringUtil.parseNameValuePairList(
                             value, String.valueOf(Integer.MAX_VALUE));
                     Iterator it = map.entrySet().iterator();
                     while (it.hasNext()) {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/Template.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/Template.java 
b/src/main/java/org/apache/freemarker/core/Template.java
index 3ec414c..3ed02d0 100644
--- a/src/main/java/org/apache/freemarker/core/Template.java
+++ b/src/main/java/org/apache/freemarker/core/Template.java
@@ -60,7 +60,7 @@ import org.apache.freemarker.core.model.impl.SimpleHash;
 import org.apache.freemarker.core.templateresolver.TemplateLoader;
 import org.apache.freemarker.core.templateresolver.TemplateLookupStrategy;
 import 
org.apache.freemarker.core.templateresolver.impl.DefaultTemplateResolver;
-import org.apache.freemarker.core.util.NullArgumentException;
+import org.apache.freemarker.core.util._NullArgumentException;
 
 /**
  * <p>
@@ -255,7 +255,7 @@ public class Template extends Configurable {
            String encoding, TemplateSpecifiedEncodingHandler 
templateSpecifiedEncodingHandler) throws IOException {
         this(name, sourceName, cfg, customParserConfiguration);
        
-        NullArgumentException.check("templateSpecifiedEncodingHandler", 
templateSpecifiedEncodingHandler);
+        _NullArgumentException.check("templateSpecifiedEncodingHandler", 
templateSpecifiedEncodingHandler);
        
         this.setEncoding(encoding);
         LineTableBuilder ltbReader;

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/TemplateException.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/TemplateException.java 
b/src/main/java/org/apache/freemarker/core/TemplateException.java
index e0739e0..543aa37 100644
--- a/src/main/java/org/apache/freemarker/core/TemplateException.java
+++ b/src/main/java/org/apache/freemarker/core/TemplateException.java
@@ -35,7 +35,7 @@ import org.apache.freemarker.core.ast.TemplateElement;
 import org.apache.freemarker.core.ast.TemplateObject;
 import org.apache.freemarker.core.ast._CoreAPI;
 import org.apache.freemarker.core.ast._ErrorDescriptionBuilder;
-import org.apache.freemarker.core.util.CollectionUtils;
+import org.apache.freemarker.core.util._CollectionUtil;
 
 /**
  * Runtime exception in a template (as opposed to a parsing-time exception: 
{@link ParseException}).
@@ -401,8 +401,8 @@ public class TemplateException extends Exception {
                     if (causeCause == null) {
                         try {
                             // Reflection is used to prevent dependency on 
Servlet classes.
-                            Method m = 
getCause().getClass().getMethod("getRootCause", 
CollectionUtils.EMPTY_CLASS_ARRAY);
-                            Throwable rootCause = (Throwable) 
m.invoke(getCause(), CollectionUtils.EMPTY_OBJECT_ARRAY);
+                            Method m = 
getCause().getClass().getMethod("getRootCause", 
_CollectionUtil.EMPTY_CLASS_ARRAY);
+                            Throwable rootCause = (Throwable) 
m.invoke(getCause(), _CollectionUtil.EMPTY_OBJECT_ARRAY);
                             if (rootCause != null) {
                                 out.println("ServletException root cause: ");
                                 out.printStandardStackTrace(rootCause);

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java 
b/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
index da1addc..54a16b8 100644
--- a/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
+++ b/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
@@ -26,7 +26,7 @@ import java.io.Writer;
 import org.apache.freemarker.core.ast.Configurable;
 import org.apache.freemarker.core.ast.Environment;
 import org.apache.freemarker.core.ast.StopException;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * Used for the {@code template_exception_handler} configuration setting;
@@ -134,7 +134,7 @@ public interface TemplateExceptionHandler {
                     te.printStackTrace(stackPW, false, true, true);
                     stackPW.close();
                     pw.println();
-                    pw.println(StringUtil.XMLEncNQG(stackTraceSW.toString()));
+                    pw.println(_StringUtil.XMLEncNQG(stackTraceSW.toString()));
                     
                     pw.println("</pre></div></html>");
                     pw.flush();  // To commit the HTTP response

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/Version.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/Version.java 
b/src/main/java/org/apache/freemarker/core/Version.java
index 037f89b..f399fa4 100644
--- a/src/main/java/org/apache/freemarker/core/Version.java
+++ b/src/main/java/org/apache/freemarker/core/Version.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core;
 import java.io.Serializable;
 import java.util.Date;
 
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * Represents a version number plus the further qualifiers and build info. 
This is
@@ -73,14 +73,14 @@ public final class Version implements Serializable {
                 } else {
                     if (i == 0) {
                         throw new IllegalArgumentException(
-                                "The version number string " + 
StringUtil.jQuote(stringValue)
+                                "The version number string " + 
_StringUtil.jQuote(stringValue)
                                 + " doesn't start with a number.");
                     }
                     if (c == '.') {
                         char nextC = i + 1 >= stringValue.length() ? 0 : 
stringValue.charAt(i + 1);
                         if (nextC == '.') {
                             throw new IllegalArgumentException(
-                                    "The version number string " + 
StringUtil.jQuote(stringValue)
+                                    "The version number string " + 
_StringUtil.jQuote(stringValue)
                                     + " contains multiple dots after a 
number.");
                         }
                         if (partIdx == 2 || !isNumber(nextC)) {
@@ -102,7 +102,7 @@ public final class Version implements Serializable {
                     extraInfoTmp = extraInfoTmp.substring(1);
                     if (extraInfoTmp.length() == 0) {
                         throw new IllegalArgumentException(
-                            "The version number string " + 
StringUtil.jQuote(stringValue)
+                            "The version number string " + 
_StringUtil.jQuote(stringValue)
                             + " has an extra info section opened with \"" + 
firstChar + "\", but it's empty.");
                     }
                 }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/_TemplateAPI.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/_TemplateAPI.java 
b/src/main/java/org/apache/freemarker/core/_TemplateAPI.java
index 7e8d330..bf3ffb0 100644
--- a/src/main/java/org/apache/freemarker/core/_TemplateAPI.java
+++ b/src/main/java/org/apache/freemarker/core/_TemplateAPI.java
@@ -27,7 +27,7 @@ import org.apache.freemarker.core.ast.TemplateObject;
 import org.apache.freemarker.core.templateresolver.CacheStorage;
 import org.apache.freemarker.core.templateresolver.TemplateLookupStrategy;
 import org.apache.freemarker.core.templateresolver.TemplateNameFormat;
-import org.apache.freemarker.core.util.NullArgumentException;
+import org.apache.freemarker.core.util._NullArgumentException;
 
 /**
  * For internal use only; don't depend on this, there's no backward 
compatibility guarantee at all!
@@ -48,7 +48,7 @@ public class _TemplateAPI {
     public static final int VERSION_INT_2_4_0 = Version.intValueFor(2, 4, 0);
     
     public static void checkVersionNotNullAndSupported(Version 
incompatibleImprovements) {
-        NullArgumentException.check("incompatibleImprovements", 
incompatibleImprovements);
+        _NullArgumentException.check("incompatibleImprovements", 
incompatibleImprovements);
         int iciV = incompatibleImprovements.intValue();
         if (iciV > Configuration.getVersion().intValue()) {
             throw new IllegalArgumentException("The FreeMarker version 
requested by \"incompatibleImprovements\" was "

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/AliasTemplateDateFormatFactory.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/freemarker/core/ast/AliasTemplateDateFormatFactory.java
 
b/src/main/java/org/apache/freemarker/core/ast/AliasTemplateDateFormatFactory.java
index 0ae7ccd..dc0c510 100644
--- 
a/src/main/java/org/apache/freemarker/core/ast/AliasTemplateDateFormatFactory.java
+++ 
b/src/main/java/org/apache/freemarker/core/ast/AliasTemplateDateFormatFactory.java
@@ -22,7 +22,8 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.TimeZone;
 
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
+import org.apache.freemarker.core.util._LocaleUtil;
 
 /**
  * Creates an alias to another format, so that the format can be referred to 
with a simple name in the template, rather
@@ -72,7 +73,7 @@ public final class AliasTemplateDateFormatFactory extends 
TemplateDateFormatFact
                 Locale lookupLocale = locale;
                 targetFormatString = 
localizedTargetFormatStrings.get(lookupLocale);
                 while (targetFormatString == null
-                        && (lookupLocale = 
_CoreLocaleUtils.getLessSpecificLocale(lookupLocale)) != null) {
+                        && (lookupLocale = 
_LocaleUtil.getLessSpecificLocale(lookupLocale)) != null) {
                     targetFormatString = 
localizedTargetFormatStrings.get(lookupLocale);
                 }
             } else {
@@ -84,7 +85,7 @@ public final class AliasTemplateDateFormatFactory extends 
TemplateDateFormatFact
             return env.getTemplateDateFormat(targetFormatString, dateType, 
locale, timeZone, zonelessInput);
         } catch (TemplateValueFormatException e) {
             throw new AliasTargetTemplateValueFormatException("Failed to 
create format based on target format string,  "
-                    + StringUtil.jQuote(params) + ". Reason given: " + 
e.getMessage(), e);
+                    + _StringUtil.jQuote(params) + ". Reason given: " + 
e.getMessage(), e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/AliasTemplateNumberFormatFactory.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/freemarker/core/ast/AliasTemplateNumberFormatFactory.java
 
b/src/main/java/org/apache/freemarker/core/ast/AliasTemplateNumberFormatFactory.java
index 93cd083..6ee8026 100644
--- 
a/src/main/java/org/apache/freemarker/core/ast/AliasTemplateNumberFormatFactory.java
+++ 
b/src/main/java/org/apache/freemarker/core/ast/AliasTemplateNumberFormatFactory.java
@@ -21,7 +21,8 @@ package org.apache.freemarker.core.ast;
 import java.util.Locale;
 import java.util.Map;
 
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
+import org.apache.freemarker.core.util._LocaleUtil;
 
 /**
  * Creates an alias to another format, so that the format can be referred to 
with a simple name in the template, rather
@@ -71,7 +72,7 @@ public final class AliasTemplateNumberFormatFactory extends 
TemplateNumberFormat
                 Locale lookupLocale = locale;
                 targetFormatString = 
localizedTargetFormatStrings.get(lookupLocale);
                 while (targetFormatString == null
-                        && (lookupLocale = 
_CoreLocaleUtils.getLessSpecificLocale(lookupLocale)) != null) {
+                        && (lookupLocale = 
_LocaleUtil.getLessSpecificLocale(lookupLocale)) != null) {
                     targetFormatString = 
localizedTargetFormatStrings.get(lookupLocale);
                 }
             } else {
@@ -83,7 +84,7 @@ public final class AliasTemplateNumberFormatFactory extends 
TemplateNumberFormat
             return env.getTemplateNumberFormat(targetFormatString, locale);
         } catch (TemplateValueFormatException e) {
             throw new AliasTargetTemplateValueFormatException("Failed to 
create format based on target format string,  "
-                    + StringUtil.jQuote(params) + ". Reason given: " + 
e.getMessage(), e);
+                    + _StringUtil.jQuote(params) + ". Reason given: " + 
e.getMessage(), e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/ArithmeticEngine.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/ArithmeticEngine.java 
b/src/main/java/org/apache/freemarker/core/ast/ArithmeticEngine.java
index c8d6f37..b0fb358 100644
--- a/src/main/java/org/apache/freemarker/core/ast/ArithmeticEngine.java
+++ b/src/main/java/org/apache/freemarker/core/ast/ArithmeticEngine.java
@@ -25,9 +25,8 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.util.NumberUtil;
-import org.apache.freemarker.core.util.OptimizerUtil;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._NumberUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * Class to perform arithmetic operations.
@@ -117,8 +116,8 @@ public abstract class ArithmeticEngine {
             // We try to find the result based on the sign (+/-/0) first, 
because:
             // - It's much faster than converting to BigDecial, and comparing 
to 0 is the most common comparison.
             // - It doesn't require any type conversions, and thus things like 
"Infinity > 0" won't fail.
-            int firstSignum = NumberUtil.getSignum(first); 
-            int secondSignum = NumberUtil.getSignum(second);
+            int firstSignum = _NumberUtil.getSignum(first); 
+            int secondSignum = _NumberUtil.getSignum(second);
             if (firstSignum != secondSignum) {
                 return firstSignum < secondSignum ? -1 : (firstSignum > 
secondSignum ? 1 : 0); 
             } else if (firstSignum == 0 && secondSignum == 0) {
@@ -464,7 +463,7 @@ public abstract class ArithmeticEngine {
         @Override
         public Number toNumber(String s) {
             Number n = toBigDecimalOrDouble(s);
-            return n instanceof BigDecimal ? 
OptimizerUtil.optimizeNumberRepresentation(n) : n;
+            return n instanceof BigDecimal ? 
_NumberUtil.optimizeNumberRepresentation(n) : n;
         }
         
         private static Map createClassCodesMap() {
@@ -529,7 +528,7 @@ public abstract class ArithmeticEngine {
             return num instanceof BigDecimal ? (BigDecimal) num : new 
BigDecimal(num.toString());
         } catch (NumberFormatException e) {
             // The exception message is useless, so we add a new one:
-            throw new NumberFormatException("Can't parse this as BigDecimal 
number: " + StringUtil.jQuote(num));
+            throw new NumberFormatException("Can't parse this as BigDecimal 
number: " + _StringUtil.jQuote(num));
         }
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/Assignment.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/Assignment.java 
b/src/main/java/org/apache/freemarker/core/ast/Assignment.java
index e861a8e..bed2088 100644
--- a/src/main/java/org/apache/freemarker/core/ast/Assignment.java
+++ b/src/main/java/org/apache/freemarker/core/ast/Assignment.java
@@ -23,6 +23,7 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.ast.FMParserConstants;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * An instruction that makes a single assignment, like [#local x=1].
@@ -190,7 +191,7 @@ final class Assignment extends TemplateElement {
             buf.append(' ');
         }
         
-        
buf.append(_CoreStringUtils.toFTLTopLevelTragetIdentifier(variableName));
+        buf.append(_StringUtil.toFTLTopLevelTragetIdentifier(variableName));
         
         if (valueExp != null) {
             buf.append(' ');

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/BuiltIn.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/BuiltIn.java 
b/src/main/java/org/apache/freemarker/core/ast/BuiltIn.java
index 3c8fc42..c99438c 100644
--- a/src/main/java/org/apache/freemarker/core/ast/BuiltIn.java
+++ b/src/main/java/org/apache/freemarker/core/ast/BuiltIn.java
@@ -28,8 +28,6 @@ import java.util.Set;
 import java.util.TreeSet;
 
 import org.apache.freemarker.core.Configuration;
-import org.apache.freemarker.core.ast.FMParserTokenManager;
-import org.apache.freemarker.core.ast.Token;
 import org.apache.freemarker.core.ast.BuiltInsForDates.iso_BI;
 import org.apache.freemarker.core.ast.BuiltInsForDates.iso_utc_or_local_BI;
 import org.apache.freemarker.core.ast.BuiltInsForMarkupOutputs.markup_stringBI;
@@ -72,8 +70,8 @@ import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.model.TemplateNumberModel;
 import org.apache.freemarker.core.model.TemplateScalarModel;
-import org.apache.freemarker.core.util.DateUtil;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._DateUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * The {@code ?} operator used for things like {@code foo?upper_case}.
@@ -161,66 +159,66 @@ abstract class BuiltIn extends Expression implements 
Cloneable {
         putBI("is_transform", "isTransform", new 
BuiltInsForMultipleTypes.is_transformBI());
         
         putBI("iso_utc", "isoUtc", new iso_utc_or_local_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_SECONDS, /* useUTC 
= */ true));
+                /* showOffset = */ null, _DateUtil.ACCURACY_SECONDS, /* useUTC 
= */ true));
         putBI("iso_utc_fz", "isoUtcFZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.TRUE, DateUtil.ACCURACY_SECONDS, /* 
useUTC = */ true));
+                /* showOffset = */ Boolean.TRUE, _DateUtil.ACCURACY_SECONDS, 
/* useUTC = */ true));
         putBI("iso_utc_nz", "isoUtcNZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_SECONDS, 
/* useUTC = */ true));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_SECONDS, 
/* useUTC = */ true));
         
         putBI("iso_utc_ms", "isoUtcMs", new iso_utc_or_local_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_MILLISECONDS, /* 
useUTC = */ true));
+                /* showOffset = */ null, _DateUtil.ACCURACY_MILLISECONDS, /* 
useUTC = */ true));
         putBI("iso_utc_ms_nz", "isoUtcMsNZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.FALSE, 
DateUtil.ACCURACY_MILLISECONDS, /* useUTC = */ true));
+                /* showOffset = */ Boolean.FALSE, 
_DateUtil.ACCURACY_MILLISECONDS, /* useUTC = */ true));
         
         putBI("iso_utc_m", "isoUtcM", new iso_utc_or_local_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_MINUTES, /* useUTC 
= */ true));
+                /* showOffset = */ null, _DateUtil.ACCURACY_MINUTES, /* useUTC 
= */ true));
         putBI("iso_utc_m_nz", "isoUtcMNZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_MINUTES, 
/* useUTC = */ true));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_MINUTES, 
/* useUTC = */ true));
         
         putBI("iso_utc_h", "isoUtcH", new iso_utc_or_local_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_HOURS, /* useUTC = 
*/ true));
+                /* showOffset = */ null, _DateUtil.ACCURACY_HOURS, /* useUTC = 
*/ true));
         putBI("iso_utc_h_nz", "isoUtcHNZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_HOURS, /* 
useUTC = */ true));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_HOURS, /* 
useUTC = */ true));
         
         putBI("iso_local", "isoLocal", new iso_utc_or_local_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_SECONDS, /* useUTC 
= */ false));
+                /* showOffset = */ null, _DateUtil.ACCURACY_SECONDS, /* useUTC 
= */ false));
         putBI("iso_local_nz", "isoLocalNZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_SECONDS, 
/* useUTC = */ false));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_SECONDS, 
/* useUTC = */ false));
         
         putBI("iso_local_ms", "isoLocalMs", new iso_utc_or_local_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_MILLISECONDS, /* 
useUTC = */ false));
+                /* showOffset = */ null, _DateUtil.ACCURACY_MILLISECONDS, /* 
useUTC = */ false));
         putBI("iso_local_ms_nz", "isoLocalMsNZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.FALSE, 
DateUtil.ACCURACY_MILLISECONDS, /* useUTC = */ false));
+                /* showOffset = */ Boolean.FALSE, 
_DateUtil.ACCURACY_MILLISECONDS, /* useUTC = */ false));
         
         putBI("iso_local_m", "isoLocalM", new iso_utc_or_local_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_MINUTES, /* useUTC 
= */ false));
+                /* showOffset = */ null, _DateUtil.ACCURACY_MINUTES, /* useUTC 
= */ false));
         putBI("iso_local_m_nz", "isoLocalMNZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_MINUTES, 
/* useUTC = */ false));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_MINUTES, 
/* useUTC = */ false));
         
         putBI("iso_local_h", "isoLocalH", new iso_utc_or_local_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_HOURS, /* useUTC = 
*/ false));
+                /* showOffset = */ null, _DateUtil.ACCURACY_HOURS, /* useUTC = 
*/ false));
         putBI("iso_local_h_nz", "isoLocalHNZ", new iso_utc_or_local_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_HOURS, /* 
useUTC = */ false));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_HOURS, /* 
useUTC = */ false));
         
         putBI("iso", new iso_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_SECONDS));
+                /* showOffset = */ null, _DateUtil.ACCURACY_SECONDS));
         putBI("iso_nz", "isoNZ", new iso_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_SECONDS));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_SECONDS));
         
         putBI("iso_ms", "isoMs", new iso_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_MILLISECONDS));
+                /* showOffset = */ null, _DateUtil.ACCURACY_MILLISECONDS));
         putBI("iso_ms_nz", "isoMsNZ", new iso_BI(
-                /* showOffset = */ Boolean.FALSE, 
DateUtil.ACCURACY_MILLISECONDS));
+                /* showOffset = */ Boolean.FALSE, 
_DateUtil.ACCURACY_MILLISECONDS));
         
         putBI("iso_m", "isoM", new iso_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_MINUTES));
+                /* showOffset = */ null, _DateUtil.ACCURACY_MINUTES));
         putBI("iso_m_nz", "isoMNZ", new iso_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_MINUTES));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_MINUTES));
         
         putBI("iso_h", "isoH", new iso_BI(
-                /* showOffset = */ null, DateUtil.ACCURACY_HOURS));
+                /* showOffset = */ null, _DateUtil.ACCURACY_HOURS));
         putBI("iso_h_nz", "isoHNZ", new iso_BI(
-                /* showOffset = */ Boolean.FALSE, DateUtil.ACCURACY_HOURS));
+                /* showOffset = */ Boolean.FALSE, _DateUtil.ACCURACY_HOURS));
         
         putBI("j_string", "jString", new 
BuiltInsForStringsEncoding.j_stringBI());
         putBI("join", new BuiltInsForSequences.joinBI());
@@ -321,7 +319,7 @@ abstract class BuiltIn extends Expression implements 
Cloneable {
         String key = keyTk.image;
         BuiltIn bi = BUILT_INS_BY_NAME.get(key);
         if (bi == null) {
-            StringBuilder buf = new StringBuilder("Unknown built-in: 
").append(StringUtil.jQuote(key)).append(". ");
+            StringBuilder buf = new StringBuilder("Unknown built-in: 
").append(_StringUtil.jQuote(key)).append(". ");
             
             buf.append(
                     "Help (latest version): 
http://freemarker.org/docs/ref_builtins.html; "
@@ -342,7 +340,7 @@ abstract class BuiltIn extends Expression implements 
Cloneable {
             boolean first = true;
             for (Iterator it = names.iterator(); it.hasNext(); ) {
                 String correctName = (String) it.next();
-                int correctNameNamingConvetion = 
_CoreStringUtils.getIdentifierNamingConvention(correctName);
+                int correctNameNamingConvetion = 
_StringUtil.getIdentifierNamingConvention(correctName);
                 if (shownNamingConvention == 
Configuration.CAMEL_CASE_NAMING_CONVENTION 
                         ? correctNameNamingConvetion != 
Configuration.LEGACY_NAMING_CONVENTION
                         : correctNameNamingConvetion != 
Configuration.CAMEL_CASE_NAMING_CONVENTION) {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/BuiltInsForDates.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForDates.java 
b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForDates.java
index df9c188..54f45b4 100644
--- a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForDates.java
+++ b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForDates.java
@@ -33,7 +33,7 @@ import 
org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.model.TemplateScalarModel;
 import org.apache.freemarker.core.model.impl.SimpleDate;
 import org.apache.freemarker.core.model.impl.SimpleScalar;
-import org.apache.freemarker.core.util.DateUtil;
+import org.apache.freemarker.core.util._DateUtil;
 import org.apache.freemarker.core.util.UnrecognizedTimeZoneException;
 
 /**
@@ -103,7 +103,7 @@ class BuiltInsForDates {
                 } else if (tzArgTM instanceof TemplateScalarModel) {
                     String tzName = 
EvalUtil.modelToString((TemplateScalarModel) tzArgTM, null, null);
                     try {
-                        tzArg = DateUtil.getTimeZone(tzName);
+                        tzArg = _DateUtil.getTimeZone(tzName);
                     } catch (UnrecognizedTimeZoneException e) {
                         throw new _TemplateModelException(
                                 "The time zone string specified for ?", key,
@@ -115,7 +115,7 @@ class BuiltInsForDates {
                             "?" + key, 0, "string or java.util.TimeZone", 
tzArgTM);
                 }
                 
-                return new SimpleScalar(DateUtil.dateToISO8601String(
+                return new SimpleScalar(_DateUtil.dateToISO8601String(
                         date,
                         dateType != TemplateDateModel.TIME,
                         dateType != TemplateDateModel.DATE,
@@ -159,14 +159,14 @@ class BuiltInsForDates {
                 Date date, int dateType, Environment env)
         throws TemplateException {
             checkDateTypeNotUnknown(dateType);
-            return new SimpleScalar(DateUtil.dateToISO8601String(
+            return new SimpleScalar(_DateUtil.dateToISO8601String(
                     date,
                     dateType != TemplateDateModel.TIME,
                     dateType != TemplateDateModel.DATE,
                     shouldShowOffset(date, dateType, env),
                     accuracy,
                     useUTC
-                            ? DateUtil.UTC
+                            ? _DateUtil.UTC
                             : env.shouldUseSQLDTTZ(date.getClass())
                                     ? env.getSQLDateAndTimeTimeZone()
                                     : env.getTimeZone(),

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/BuiltInsForNumbers.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForNumbers.java 
b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForNumbers.java
index 33854c6..93f364f 100644
--- a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForNumbers.java
+++ b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForNumbers.java
@@ -32,8 +32,8 @@ 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.util.NumberUtil;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._NumberUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * A holder for builtins that operate exclusively on number left-hand value.
@@ -46,7 +46,7 @@ class BuiltInsForNumbers {
         TemplateModel calculateResult(Number num, TemplateModel model) throws 
TemplateModelException {
             final int n;
             try {
-                n = NumberUtil.toIntExact(num);
+                n = _NumberUtil.toIntExact(num);
             } catch (ArithmeticException e) {
                 throw new _TemplateModelException(target,
                         "The left side operand value isn't compatible with ?", 
key, ": ", e.getMessage());
@@ -67,7 +67,7 @@ class BuiltInsForNumbers {
 
         @Override
         protected String toABC(int n) {
-            return StringUtil.toLowerABC(n);
+            return _StringUtil.toLowerABC(n);
         }
         
     }
@@ -76,7 +76,7 @@ class BuiltInsForNumbers {
 
         @Override
         protected String toABC(int n) {
-            return StringUtil.toUpperABC(n);
+            return _StringUtil.toUpperABC(n);
         }
         
     }
@@ -203,7 +203,7 @@ class BuiltInsForNumbers {
     static class is_infiniteBI extends BuiltInForNumber {
         @Override
         TemplateModel calculateResult(Number num, TemplateModel model) throws 
TemplateModelException {
-            return NumberUtil.isInfinite(num) ? TemplateBooleanModel.TRUE : 
TemplateBooleanModel.FALSE;
+            return _NumberUtil.isInfinite(num) ? TemplateBooleanModel.TRUE : 
TemplateBooleanModel.FALSE;
         }
     }
 
@@ -211,7 +211,7 @@ class BuiltInsForNumbers {
     static class is_nanBI extends BuiltInForNumber {
         @Override
         TemplateModel calculateResult(Number num, TemplateModel model) throws 
TemplateModelException {
-            return NumberUtil.isNaN(num) ? TemplateBooleanModel.TRUE : 
TemplateBooleanModel.FALSE;
+            return _NumberUtil.isNaN(num) ? TemplateBooleanModel.TRUE : 
TemplateBooleanModel.FALSE;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/BuiltInsForSequences.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForSequences.java 
b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForSequences.java
index 2d9a34e..87a1555 100644
--- a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForSequences.java
+++ b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForSequences.java
@@ -43,8 +43,8 @@ import org.apache.freemarker.core.model.impl.SimpleNumber;
 import org.apache.freemarker.core.model.impl.SimpleScalar;
 import org.apache.freemarker.core.model.impl.TemplateModelListSequence;
 import org.apache.freemarker.core.model.impl.beans.CollectionModel;
-import org.apache.freemarker.core.util.Constants;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * A holder for builtins that operate exclusively on sequence or collection 
left-hand value.
@@ -686,7 +686,7 @@ class BuiltInsForSequences {
                                     startErrorMessage(keyNamesLn, i),
                                     (keyNameI == 0
                                             ? "Sequence items must be hashes 
when using ?sort_by. "
-                                            : "The " + 
StringUtil.jQuote(keyNames[keyNameI - 1])),
+                                            : "The " + 
_StringUtil.jQuote(keyNames[keyNameI - 1])),
                                     " subvariable is not a hash, so ?sort_by ",
                                     "can't proceed with getting the ",
                                     new _DelayedJQuote(keyNames[keyNameI]),
@@ -698,7 +698,7 @@ class BuiltInsForSequences {
                     if (key == null) {
                         throw new _TemplateModelException(
                                 startErrorMessage(keyNamesLn, i),
-                                "The " + 
StringUtil.jQuote(keyNames[keyNameI]), " subvariable was not found.");
+                                "The " + 
_StringUtil.jQuote(keyNames[keyNameI]), " subvariable was not found.");
                     }
                 } // for each key
                 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsBasic.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsBasic.java 
b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsBasic.java
index be88d0e..7c04050 100644
--- a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsBasic.java
+++ b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsBasic.java
@@ -35,7 +35,7 @@ import org.apache.freemarker.core.model.impl.SimpleNumber;
 import org.apache.freemarker.core.model.impl.SimpleScalar;
 import org.apache.freemarker.core.model.impl.SimpleSequence;
 import org.apache.freemarker.core.model.impl._StaticObjectWrappers;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 class BuiltInsForStringsBasic {
 
@@ -59,14 +59,14 @@ class BuiltInsForStringsBasic {
     static class capitalizeBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.capitalize(s));
+            return new SimpleScalar(_StringUtil.capitalize(s));
         }
     }
 
     static class chop_linebreakBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.chomp(s));
+            return new SimpleScalar(_StringUtil.chomp(s));
         }
     }
 
@@ -458,8 +458,8 @@ class BuiltInsForStringsBasic {
                     try {
                         return new SimpleScalar(
                                 leftPadder
-                                        ? StringUtil.leftPad(s, width, filling)
-                                        : StringUtil.rightPad(s, width, 
filling));
+                                        ? _StringUtil.leftPad(s, width, 
filling)
+                                        : _StringUtil.rightPad(s, width, 
filling));
                     } catch (IllegalArgumentException e) {
                         if (filling.length() == 0) {
                             throw new _TemplateModelException(
@@ -470,7 +470,7 @@ class BuiltInsForStringsBasic {
                         }
                     }
                 } else {
-                    return new SimpleScalar(leftPadder ? StringUtil.leftPad(s, 
width) : StringUtil.rightPad(s, width));
+                    return new SimpleScalar(leftPadder ? 
_StringUtil.leftPad(s, width) : _StringUtil.rightPad(s, width));
                 }
             }
         }
@@ -550,7 +550,7 @@ class BuiltInsForStringsBasic {
                 String[] result = null;
                 if ((flags & RegexpHelper.RE_FLAG_REGEXP) == 0) {
                     RegexpHelper.checkNonRegexpFlags("split", flags);
-                    result = StringUtil.split(s, splitString,
+                    result = _StringUtil.split(s, splitString,
                             (flags & RegexpHelper.RE_FLAG_CASE_INSENSITIVE) != 
0);
                 } else {
                     Pattern pattern = RegexpHelper.getPattern(splitString, 
(int) flags);

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsEncoding.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsEncoding.java 
b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsEncoding.java
index cf92612..82a6143 100644
--- 
a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsEncoding.java
+++ 
b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsEncoding.java
@@ -28,7 +28,7 @@ import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.model.TemplateScalarModel;
 import org.apache.freemarker.core.model.impl.SimpleScalar;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 class BuiltInsForStringsEncoding {
 
@@ -37,7 +37,7 @@ class BuiltInsForStringsEncoding {
         static class BIBeforeICI2d3d20 extends BuiltInForLegacyEscaping {
             @Override
             TemplateModel calculateResult(String s, Environment env) {
-                return new SimpleScalar(StringUtil.HTMLEnc(s));
+                return new SimpleScalar(_StringUtil.XMLEncNA(s));
             }
         }
         
@@ -45,13 +45,15 @@ class BuiltInsForStringsEncoding {
         
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.XHTMLEnc(s));
+            return new SimpleScalar(_StringUtil.XHTMLEnc(s));
         }
     
+        @Override
         public int getMinimumICIVersion() {
             return _TemplateAPI.VERSION_INT_2_3_20;
         }
     
+        @Override
         public Object getPreviousICIChainMember() {
             return prevICIObj;
         }
@@ -61,28 +63,28 @@ class BuiltInsForStringsEncoding {
     static class j_stringBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.javaStringEnc(s));
+            return new SimpleScalar(_StringUtil.javaStringEnc(s));
         }
     }
 
     static class js_stringBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.javaScriptStringEnc(s));
+            return new SimpleScalar(_StringUtil.javaScriptStringEnc(s));
         }
     }
 
     static class json_stringBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.jsonStringEnc(s));
+            return new SimpleScalar(_StringUtil.jsonStringEnc(s));
         }
     }
 
     static class rtfBI extends BuiltInForLegacyEscaping {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.RTFEnc(s));
+            return new SimpleScalar(_StringUtil.RTFEnc(s));
         }
     }
 
@@ -96,7 +98,7 @@ class BuiltInsForStringsEncoding {
     
             @Override
             protected String encodeWithCharset(String cs) throws 
UnsupportedEncodingException {
-                return StringUtil.URLEnc(targetAsString, cs);
+                return _StringUtil.URLEnc(targetAsString, cs);
             }
             
         }
@@ -118,7 +120,7 @@ class BuiltInsForStringsEncoding {
     
             @Override
             protected String encodeWithCharset(String cs) throws 
UnsupportedEncodingException {
-                return StringUtil.URLPathEnc(targetAsString, cs);
+                return _StringUtil.URLPathEnc(targetAsString, cs);
             }
             
         }
@@ -133,14 +135,14 @@ class BuiltInsForStringsEncoding {
     static class xhtmlBI extends BuiltInForLegacyEscaping {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.XHTMLEnc(s));
+            return new SimpleScalar(_StringUtil.XHTMLEnc(s));
         }
     }
 
     static class xmlBI extends BuiltInForLegacyEscaping {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
-            return new SimpleScalar(StringUtil.XMLEnc(s));
+            return new SimpleScalar(_StringUtil.XMLEnc(s));
         }
     }
 
@@ -163,6 +165,7 @@ class BuiltInsForStringsEncoding {
         
         protected abstract String encodeWithCharset(String cs) throws 
UnsupportedEncodingException;
     
+        @Override
         public Object exec(List args) throws TemplateModelException {
             parent.checkMethodArgCount(args.size(), 1);
             try {
@@ -172,6 +175,7 @@ class BuiltInsForStringsEncoding {
             }
         }
         
+        @Override
         public String getAsString() throws TemplateModelException {
             if (cachedResult == null) {
                 String cs = env.getEffectiveURLEscapingCharset();

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsRegexp.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsRegexp.java 
b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsRegexp.java
index e0388a6..d85950a 100644
--- a/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsRegexp.java
+++ b/src/main/java/org/apache/freemarker/core/ast/BuiltInsForStringsRegexp.java
@@ -35,7 +35,7 @@ import org.apache.freemarker.core.model.TemplateScalarModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.SimpleScalar;
 import org.apache.freemarker.core.model.impl.SimpleSequence;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 
 /**
@@ -109,7 +109,7 @@ class BuiltInsForStringsRegexp {
                 String result;
                 if ((flags & RegexpHelper.RE_FLAG_REGEXP) == 0) {
                     RegexpHelper.checkNonRegexpFlags("replace", flags);
-                    result = StringUtil.replace(s, arg1, arg2,
+                    result = _StringUtil.replace(s, arg1, arg2,
                             (flags & RegexpHelper.RE_FLAG_CASE_INSENSITIVE) != 
0,
                             (flags & RegexpHelper.RE_FLAG_FIRST_ONLY) != 0);
                 } else {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/BuiltinVariable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/BuiltinVariable.java 
b/src/main/java/org/apache/freemarker/core/ast/BuiltinVariable.java
index a617e12..8925001 100644
--- a/src/main/java/org/apache/freemarker/core/ast/BuiltinVariable.java
+++ b/src/main/java/org/apache/freemarker/core/ast/BuiltinVariable.java
@@ -33,7 +33,7 @@ import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelException;
 import org.apache.freemarker.core.model.impl.SimpleDate;
 import org.apache.freemarker.core.model.impl.SimpleScalar;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * A reference to a built-in identifier, such as .root
@@ -122,7 +122,7 @@ final class BuiltinVariable extends Expression {
         if (Arrays.binarySearch(SPEC_VAR_NAMES, name) < 0) {
             StringBuilder sb = new StringBuilder();
             sb.append("Unknown special variable name: ");
-            sb.append(StringUtil.jQuote(name)).append(".");
+            sb.append(_StringUtil.jQuote(name)).append(".");
             
             int shownNamingConvention;
             {
@@ -142,7 +142,7 @@ final class BuiltinVariable extends Expression {
                 }
                 if (correctName != null) {
                     sb.append(" You may meant: ");
-                    sb.append(StringUtil.jQuote(correctName)).append(".");
+                    sb.append(_StringUtil.jQuote(correctName)).append(".");
                 }
             }
             
@@ -150,7 +150,7 @@ final class BuiltinVariable extends Expression {
             boolean first = true;
             for (int i = 0; i < SPEC_VAR_NAMES.length; i++) {
                 final String correctName = SPEC_VAR_NAMES[i];
-                int correctNameNamingConvetion = 
_CoreStringUtils.getIdentifierNamingConvention(correctName);
+                int correctNameNamingConvetion = 
_StringUtil.getIdentifierNamingConvention(correctName);
                 if (shownNamingConvention == 
Configuration.CAMEL_CASE_NAMING_CONVENTION 
                         ? correctNameNamingConvetion != 
Configuration.LEGACY_NAMING_CONVENTION
                         : correctNameNamingConvetion != 
Configuration.CAMEL_CASE_NAMING_CONVENTION) {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/Comment.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/Comment.java 
b/src/main/java/org/apache/freemarker/core/ast/Comment.java
index ffc18fd..95d56d4 100644
--- a/src/main/java/org/apache/freemarker/core/ast/Comment.java
+++ b/src/main/java/org/apache/freemarker/core/ast/Comment.java
@@ -19,7 +19,7 @@
 
 package org.apache.freemarker.core.ast;
 
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * <b>Internal API - subject to change:</b> A template element where the 
content is ignored, a Comment.
@@ -47,7 +47,7 @@ public final class Comment extends TemplateElement {
         if (canonical) {
             return "<#--" + text + "-->";
         } else {
-            return "comment " + StringUtil.jQuote(text.trim());
+            return "comment " + _StringUtil.jQuote(text.trim());
         }
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/Configurable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/Configurable.java 
b/src/main/java/org/apache/freemarker/core/ast/Configurable.java
index 1f74f5b..f31321a 100644
--- a/src/main/java/org/apache/freemarker/core/ast/Configurable.java
+++ b/src/main/java/org/apache/freemarker/core/ast/Configurable.java
@@ -65,8 +65,9 @@ import 
org.apache.freemarker.core.templateresolver.PathRegexMatcher;
 import org.apache.freemarker.core.templateresolver.TemplateLoader;
 import 
org.apache.freemarker.core.templateresolver.impl.DefaultTemplateNameFormat;
 import 
org.apache.freemarker.core.templateresolver.impl.DefaultTemplateNameFormatFM2;
-import org.apache.freemarker.core.util.NullArgumentException;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._NullArgumentException;
+import org.apache.freemarker.core.util._SortedArraySet;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * This is a common superclass of {@link 
org.apache.freemarker.core.Configuration},
@@ -514,7 +515,7 @@ public class Configurable {
      * @see Configuration#getTemplate(String, Locale)
      */
     public void setLocale(Locale locale) {
-        NullArgumentException.check("locale", locale);
+        _NullArgumentException.check("locale", locale);
         this.locale = locale;
         properties.setProperty(LOCALE_KEY, locale.toString());
     }
@@ -548,7 +549,7 @@ public class Configurable {
      * @see #setSQLDateAndTimeTimeZone(TimeZone)
      */
     public void setTimeZone(TimeZone timeZone) {
-        NullArgumentException.check("timeZone", timeZone);
+        _NullArgumentException.check("timeZone", timeZone);
         this.timeZone = timeZone;
         properties.setProperty(TIME_ZONE_KEY, timeZone.getID());
     }
@@ -686,7 +687,7 @@ public class Configurable {
      * <p>Defaults to <tt>"number"</tt>.
      */
     public void setNumberFormat(String numberFormat) {
-        NullArgumentException.check("numberFormat", numberFormat);
+        _NullArgumentException.check("numberFormat", numberFormat);
         this.numberFormat = numberFormat;
         properties.setProperty(NUMBER_FORMAT_KEY, numberFormat);
     }
@@ -753,7 +754,7 @@ public class Configurable {
      * @since 2.3.24
      */
     public void setCustomNumberFormats(Map<String, ? extends 
TemplateNumberFormatFactory> customNumberFormats) {
-        NullArgumentException.check("customNumberFormats", 
customNumberFormats);
+        _NullArgumentException.check("customNumberFormats", 
customNumberFormats);
         validateFormatNames(customNumberFormats.keySet());
         this.customNumberFormats = customNumberFormats;
     }
@@ -830,7 +831,7 @@ public class Configurable {
      * only influenced the result of {@code myBool?string}. 
      */
     public void setBooleanFormat(String booleanFormat) {
-        NullArgumentException.check("booleanFormat", booleanFormat);
+        _NullArgumentException.check("booleanFormat", booleanFormat);
         
         int commaIdx = booleanFormat.indexOf(',');
         if (commaIdx == -1) {
@@ -947,7 +948,7 @@ public class Configurable {
      * <p>Defaults to {@code ""}, which means "use the FreeMarker default", 
which is currently {@code "medium"}.
      */
     public void setTimeFormat(String timeFormat) {
-        NullArgumentException.check("timeFormat", timeFormat);
+        _NullArgumentException.check("timeFormat", timeFormat);
         this.timeFormat = timeFormat;
         properties.setProperty(TIME_FORMAT_KEY, timeFormat);
     }
@@ -977,7 +978,7 @@ public class Configurable {
      * <p>Defaults to {@code ""}, which means "use the FreeMarker default", 
which is currently {@code "medium"}.
      */
     public void setDateFormat(String dateFormat) {
-        NullArgumentException.check("dateFormat", dateFormat);
+        _NullArgumentException.check("dateFormat", dateFormat);
         this.dateFormat = dateFormat;
         properties.setProperty(DATE_FORMAT_KEY, dateFormat);
     }
@@ -1085,7 +1086,7 @@ public class Configurable {
      * <p>Defaults to {@code ""}, which means "use the FreeMarker default", 
which is currently {@code "medium_medium"}.
      */
     public void setDateTimeFormat(String dateTimeFormat) {
-        NullArgumentException.check("dateTimeFormat", dateTimeFormat);
+        _NullArgumentException.check("dateTimeFormat", dateTimeFormat);
         this.dateTimeFormat = dateTimeFormat;
         properties.setProperty(DATETIME_FORMAT_KEY, dateTimeFormat);
     }
@@ -1153,7 +1154,7 @@ public class Configurable {
      * @since 2.3.24
      */
     public void setCustomDateFormats(Map<String, ? extends 
TemplateDateFormatFactory> customDateFormats) {
-        NullArgumentException.check("customDateFormats", customDateFormats);
+        _NullArgumentException.check("customDateFormats", customDateFormats);
         validateFormatNames(customDateFormats.keySet());
         this.customDateFormats = customDateFormats;
     }
@@ -1204,7 +1205,7 @@ public class Configurable {
      * output, or if you want to suppress certain exceptions. 
      */
     public void setTemplateExceptionHandler(TemplateExceptionHandler 
templateExceptionHandler) {
-        NullArgumentException.check("templateExceptionHandler", 
templateExceptionHandler);
+        _NullArgumentException.check("templateExceptionHandler", 
templateExceptionHandler);
         this.templateExceptionHandler = templateExceptionHandler;
         properties.setProperty(TEMPLATE_EXCEPTION_HANDLER_KEY, 
templateExceptionHandler.getClass().getName());
     }
@@ -1231,7 +1232,7 @@ public class Configurable {
      * The default is {@link ArithmeticEngine#BIGDECIMAL_ENGINE}.
      */
     public void setArithmeticEngine(ArithmeticEngine arithmeticEngine) {
-        NullArgumentException.check("arithmeticEngine", arithmeticEngine);
+        _NullArgumentException.check("arithmeticEngine", arithmeticEngine);
         this.arithmeticEngine = arithmeticEngine;
         properties.setProperty(ARITHMETIC_ENGINE_KEY, 
arithmeticEngine.getClass().getName());
     }
@@ -1258,7 +1259,7 @@ public class Configurable {
      * The default is {@link DefaultObjectWrapperBuilder#build()}.
      */
     public void setObjectWrapper(ObjectWrapper objectWrapper) {
-        NullArgumentException.check("objectWrapper", objectWrapper);
+        _NullArgumentException.check("objectWrapper", objectWrapper);
         this.objectWrapper = objectWrapper;
         properties.setProperty(OBJECT_WRAPPER_KEY, 
objectWrapper.getClass().getName());
     }
@@ -1359,7 +1360,7 @@ public class Configurable {
      * @since 2.3.17
      */
     public void setNewBuiltinClassResolver(TemplateClassResolver 
newBuiltinClassResolver) {
-        NullArgumentException.check("newBuiltinClassResolver", 
newBuiltinClassResolver);
+        _NullArgumentException.check("newBuiltinClassResolver", 
newBuiltinClassResolver);
         this.newBuiltinClassResolver = newBuiltinClassResolver;
         properties.setProperty(NEW_BUILTIN_CLASS_RESOLVER_KEY,
                 newBuiltinClassResolver.getClass().getName());
@@ -1669,7 +1670,7 @@ public class Configurable {
      *            Maps the namespace variable names to the template names; not 
{@code null}
      */
     public void setAutoImports(Map map) {
-        NullArgumentException.check("map", map);
+        _NullArgumentException.check("map", map);
         
         // "synchronized" is removed from the API as it's not safe to set 
anything after publishing the Configuration
         synchronized (this) {
@@ -1794,7 +1795,7 @@ public class Configurable {
      * out duplicates from the list if this method was called on a {@link 
Configuration} instance.
      */
     public void setAutoIncludes(List templateNames) {
-        NullArgumentException.check("templateNames", templateNames);
+        _NullArgumentException.check("templateNames", templateNames);
         // "synchronized" is removed from the API as it's not safe to set 
anything after publishing the Configuration
         synchronized (this) {
             if (autoIncludes != null) {
@@ -2262,7 +2263,7 @@ public class Configurable {
         boolean unknown = false;
         try {
             if (LOCALE_KEY.equals(name)) {
-                setLocale(StringUtil.deduceLocale(value));
+                setLocale(_StringUtil.deduceLocale(value));
             } else if (NUMBER_FORMAT_KEY_SNAKE_CASE.equals(name) || 
NUMBER_FORMAT_KEY_CAMEL_CASE.equals(name)) {
                 setNumberFormat(value);
             } else if (CUSTOM_NUMBER_FORMATS_KEY_SNAKE_CASE.equals(name)
@@ -2353,14 +2354,14 @@ public class Configurable {
                 setURLEscapingCharset(value);
             } else if (STRICT_BEAN_MODELS_KEY_SNAKE_CASE.equals(name)
                     || STRICT_BEAN_MODELS_KEY_CAMEL_CASE.equals(name)) {
-                setStrictBeanModels(StringUtil.getYesNo(value));
+                setStrictBeanModels(_StringUtil.getYesNo(value));
             } else if (AUTO_FLUSH_KEY_SNAKE_CASE.equals(name) || 
AUTO_FLUSH_KEY_CAMEL_CASE.equals(name)) {
-                setAutoFlush(StringUtil.getYesNo(value));
+                setAutoFlush(_StringUtil.getYesNo(value));
             } else if (SHOW_ERROR_TIPS_KEY_SNAKE_CASE.equals(name) || 
SHOW_ERROR_TIPS_KEY_CAMEL_CASE.equals(name)) {
-                setShowErrorTips(StringUtil.getYesNo(value));
+                setShowErrorTips(_StringUtil.getYesNo(value));
             } else if (API_BUILTIN_ENABLED_KEY_SNAKE_CASE.equals(name)
                     || API_BUILTIN_ENABLED_KEY_CAMEL_CASE.equals(name)) {
-                setAPIBuiltinEnabled(StringUtil.getYesNo(value));
+                setAPIBuiltinEnabled(_StringUtil.getYesNo(value));
             } else if (NEW_BUILTIN_CLASS_RESOLVER_KEY_SNAKE_CASE.equals(name)
                     || NEW_BUILTIN_CLASS_RESOLVER_KEY_CAMEL_CASE.equals(name)) 
{
                 if ("unrestricted".equals(value)) {
@@ -2381,7 +2382,7 @@ public class Configurable {
                             trustedTemplates = segmentValue;
                         } else {
                             throw new ParseException(
-                                    "Unrecognized list segment key: " + 
StringUtil.jQuote(segmentKey) +
+                                    "Unrecognized list segment key: " + 
_StringUtil.jQuote(segmentKey) +
                                     ". Supported keys are: \"" + 
ALLOWED_CLASSES + "\", \"" +
                                     TRUSTED_TEMPLATES + "\"", 0, 0);
                         }
@@ -2397,11 +2398,11 @@ public class Configurable {
                 }
             } else if (LOG_TEMPLATE_EXCEPTIONS_KEY_SNAKE_CASE.equals(name)
                     || LOG_TEMPLATE_EXCEPTIONS_KEY_CAMEL_CASE.equals(name)) {
-                setLogTemplateExceptions(StringUtil.getYesNo(value));
+                setLogTemplateExceptions(_StringUtil.getYesNo(value));
             } else if (LAZY_AUTO_IMPORTS_KEY_SNAKE_CASE.equals(name) || 
LAZY_AUTO_IMPORTS_KEY_CAMEL_CASE.equals(name)) {
-                setLazyAutoImports(value.equals(NULL) ? null : 
Boolean.valueOf(StringUtil.getYesNo(value)));
+                setLazyAutoImports(value.equals(NULL) ? null : 
Boolean.valueOf(_StringUtil.getYesNo(value)));
             } else if (LAZY_IMPORTS_KEY_SNAKE_CASE.equals(name) || 
LAZY_IMPORTS_KEY_CAMEL_CASE.equals(name)) {
-                setLazyImports(StringUtil.getYesNo(value));
+                setLazyImports(_StringUtil.getYesNo(value));
             } else if (AUTO_INCLUDE_KEY_SNAKE_CASE.equals(name)
                     || AUTO_INCLUDE_KEY_CAMEL_CASE.equals(name)) {
                 setAutoIncludes(parseAsList(value));
@@ -2852,7 +2853,7 @@ public class Configurable {
                         "Unexpected end of text: expected \"as\"", 0, 0);
                 String s = fetchKeyword();
                 if (!s.equalsIgnoreCase("as")) throw new ParseException(
-                        "Expected \"as\", but found " + StringUtil.jQuote(s), 
0, 0);
+                        "Expected \"as\", but found " + _StringUtil.jQuote(s), 
0, 0);
 
                 c = skipWS();
                 if (c == ' ') throw new ParseException(
@@ -2876,7 +2877,7 @@ public class Configurable {
             if (w.startsWith("'") || w.startsWith("\"")) {
                 w = w.substring(1, w.length() - 1);
             }
-            return StringUtil.FTLStringLiteralDec(w);
+            return _StringUtil.FTLStringLiteralDec(w);
         }
 
         String fetchKeyword() throws ParseException {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/DollarVariable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/DollarVariable.java 
b/src/main/java/org/apache/freemarker/core/ast/DollarVariable.java
index 8543a5d..ce233b0 100644
--- a/src/main/java/org/apache/freemarker/core/ast/DollarVariable.java
+++ b/src/main/java/org/apache/freemarker/core/ast/DollarVariable.java
@@ -23,7 +23,7 @@ import java.io.IOException;
 import java.io.Writer;
 
 import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.util.StringUtil;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * An instruction that outputs the value of an <tt>Expression</tt>.
@@ -101,7 +101,7 @@ final class DollarVariable extends Interpolation {
         StringBuilder sb = new StringBuilder();
         sb.append("${");
         final String exprCF = expression.getCanonicalForm();
-        sb.append(inStringLiteral ? StringUtil.FTLStringLiteralEnc(exprCF, 
'"') : exprCF);
+        sb.append(inStringLiteral ? _StringUtil.FTLStringLiteralEnc(exprCF, 
'"') : exprCF);
         sb.append("}");
         if (!canonical && expression != escapedExpression) {
             sb.append(" auto-escaped");            

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/Dot.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/Dot.java 
b/src/main/java/org/apache/freemarker/core/ast/Dot.java
index 3ed35b3..8bfc4e9 100644
--- a/src/main/java/org/apache/freemarker/core/ast/Dot.java
+++ b/src/main/java/org/apache/freemarker/core/ast/Dot.java
@@ -22,6 +22,7 @@ package org.apache.freemarker.core.ast;
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
+import org.apache.freemarker.core.util._StringUtil;
 
 /**
  * The dot operator. Used to reference items inside a
@@ -47,7 +48,7 @@ final class Dot extends Expression {
 
     @Override
     public String getCanonicalForm() {
-        return target.getCanonicalForm() + getNodeTypeSymbol() + 
_CoreStringUtils.toFTLIdentifierReferenceAfterDot(key);
+        return target.getCanonicalForm() + getNodeTypeSymbol() + 
_StringUtil.toFTLIdentifierReferenceAfterDot(key);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a5d9575f/src/main/java/org/apache/freemarker/core/ast/DynamicKeyName.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ast/DynamicKeyName.java 
b/src/main/java/org/apache/freemarker/core/ast/DynamicKeyName.java
index 6b24a90..af2dc3e 100644
--- a/src/main/java/org/apache/freemarker/core/ast/DynamicKeyName.java
+++ b/src/main/java/org/apache/freemarker/core/ast/DynamicKeyName.java
@@ -31,7 +31,7 @@ import org.apache.freemarker.core.model.TemplateScalarModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.SimpleScalar;
 import org.apache.freemarker.core.model.impl.SimpleSequence;
-import org.apache.freemarker.core.util.Constants;
+import org.apache.freemarker.core.model.Constants;
 
 /**
  * {@code target[keyExpression]}, where, in FM 2.3, {@code keyExpression} can 
be string, a number or a range,


Reply via email to