You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2022/12/31 23:15:29 UTC

[freemarker] 02/09: Forward ported from 2.3-gae: Typo fixes, and some minor javadoc improvements

This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 3
in repository https://gitbox.apache.org/repos/asf/freemarker.git

commit 10e312945e931506a975b47f7b8cb984c1ea9a48
Author: ddekany <dd...@apache.org>
AuthorDate: Sat Dec 31 22:35:02 2022 +0100

    Forward ported from 2.3-gae: Typo fixes, and some minor javadoc improvements
---
 .../freemarker/converter/_ConverterUtils.java      |  2 +-
 .../freemarker/core/BuiltInsForStringsBasic.java   | 36 +++++++++------
 .../org/apache/freemarker/core/JSONParser.java     | 15 +------
 .../org/apache/freemarker/core/_DelayedAOrAn.java  |  2 +-
 .../core/_DelayedConversionToString.java           |  2 +-
 .../freemarker/core/_DelayedGetCanonicalForm.java  |  2 +-
 .../apache/freemarker/core/_DelayedGetMessage.java |  2 +-
 .../core/_DelayedGetMessageWithoutStackTop.java    |  2 +-
 .../org/apache/freemarker/core/_DelayedJQuote.java |  2 +-
 .../freemarker/core/_DelayedJQuotedListing.java    |  6 +--
 .../freemarker/core/_DelayedJoinWithComma.java     |  2 +-
 .../_DelayedTemplateLanguageTypeDescription.java   |  2 +-
 .../freemarker/core/_ErrorDescriptionBuilder.java  | 10 ++---
 .../java/org/apache/freemarker/core/_Java8.java    |  2 +-
 .../org/apache/freemarker/core/_Java8Impl.java     |  2 +-
 .../_ObjectBuilderSettingEvaluationException.java  |  2 +-
 .../core/_ObjectBuilderSettingEvaluator.java       | 52 ++++++----------------
 .../core/_SettingEvaluationEnvironment.java        |  6 +--
 ..._UnexpectedTypeErrorExplainerTemplateModel.java |  2 +-
 .../impl/BigDecimalArithmeticEngine.java           |  6 +--
 .../freemarker/core/debug/_DebuggerService.java    | 10 ++---
 .../core/model/TemplateMarkupOutputModel.java      |  4 +-
 .../outputformat/CommonMarkupOutputFormat.java     | 14 +++++-
 .../core/outputformat/MarkupOutputFormat.java      | 10 ++---
 .../templateresolver/TemplateLoadingSource.java    |  8 ++--
 .../freemarker/core/util/_ArrayAdapterList.java    |  2 +-
 .../freemarker/core/util/_ArrayIterator.java       |  2 +-
 .../apache/freemarker/core/util/_ClassUtils.java   |  8 ++--
 .../freemarker/core/util/_CollectionUtils.java     | 12 +----
 .../apache/freemarker/core/util/_DateUtils.java    |  8 +---
 .../apache/freemarker/core/util/_JavaVersions.java |  2 +-
 .../apache/freemarker/core/util/_NumberUtils.java  |  2 +-
 .../freemarker/core/util/_SortedArraySet.java      |  2 +-
 .../apache/freemarker/core/util/_StringUtils.java  | 10 ++---
 .../core/util/_UnmodifiableCompositeSet.java       |  2 +-
 .../freemarker/core/util/_UnmodifiableSet.java     |  2 +-
 .../core/valueformat/TemplateNumberFormat.java     |  6 +--
 freemarker-manual/src/main/docgen/en_US/book.xml   |  4 +-
 .../CopyrightCommentRemoverTemplateLoader.java     | 18 +++-----
 39 files changed, 124 insertions(+), 159 deletions(-)

diff --git a/freemarker-converter/src/main/java/org/apache/freemarker/converter/_ConverterUtils.java b/freemarker-converter/src/main/java/org/apache/freemarker/converter/_ConverterUtils.java
index 5b26b580..4c14be48 100644
--- a/freemarker-converter/src/main/java/org/apache/freemarker/converter/_ConverterUtils.java
+++ b/freemarker-converter/src/main/java/org/apache/freemarker/converter/_ConverterUtils.java
@@ -19,7 +19,7 @@
 
 package org.apache.freemarker.converter;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public final class _ConverterUtils {
 
     private _ConverterUtils() {
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 be2910d9..680cfe82 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
@@ -19,24 +19,20 @@
 
 package org.apache.freemarker.core;
 
-import static org.apache.freemarker.core.util.CallableUtils.*;
+import org.apache.freemarker.core.model.*;
+import org.apache.freemarker.core.model.impl.SimpleNumber;
+import org.apache.freemarker.core.model.impl.SimpleString;
+import org.apache.freemarker.core.pluggablebuiltin.TruncateBuiltinAlgorithm;
+import org.apache.freemarker.core.util.CallableUtils;
+import org.apache.freemarker.core.util._StringUtils;
 
 import java.util.ArrayList;
+import java.util.Locale;
 import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-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.TemplateMarkupOutputModel;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateStringModel;
-import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleString;
-import org.apache.freemarker.core.pluggablebuiltin.TruncateBuiltinAlgorithm;
-import org.apache.freemarker.core.util.CallableUtils;
-import org.apache.freemarker.core.util._StringUtils;
+import static org.apache.freemarker.core.util.CallableUtils.*;
 
 class BuiltInsForStringsBasic {
 
@@ -488,7 +484,14 @@ class BuiltInsForStringsBasic {
         TemplateModel calculateResult(String s, Environment env) {
             return new SimpleString(s.toLowerCase(env.getLocale()));
         }
-    }    
+    }
+
+    static class c_lower_caseBI extends BuiltInForString {
+        @Override
+        TemplateModel calculateResult(String s, Environment env) {
+            return new SimpleString(s.toLowerCase(Locale.ROOT));
+        }
+    }
 
     static class padBI extends BuiltInForString {
         
@@ -922,6 +925,13 @@ class BuiltInsForStringsBasic {
         }
     }
 
+    static class c_upper_caseBI extends BuiltInForString {
+        @Override
+        TemplateModel calculateResult(String s, Environment env) {
+            return new SimpleString(s.toUpperCase(Locale.ROOT));
+        }
+    }
+
     static class word_listBI extends BuiltInForString {
         @Override
         TemplateModel calculateResult(String s, Environment env) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/JSONParser.java b/freemarker-core/src/main/java/org/apache/freemarker/core/JSONParser.java
index 5c5ae480..50ef8de8 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/JSONParser.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/JSONParser.java
@@ -19,25 +19,14 @@
 
 package org.apache.freemarker.core;
 
-import java.math.BigDecimal;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateHashModelEx;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateNullModel;
-import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.TemplateStringModel;
-import org.apache.freemarker.core.model.impl.SimpleHash;
+import org.apache.freemarker.core.model.*;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
 import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util.BugException;
 import org.apache.freemarker.core.util._NumberUtils;
 import org.apache.freemarker.core.util._StringUtils;
 
-import jdk.nashorn.internal.objects.NativeNumber;
+import java.math.BigDecimal;
 
 /**
  * JSON parser that returns a {@link TameplatModel}, similar to what FTL literals product (and so, what
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedAOrAn.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedAOrAn.java
index 1c5bc093..c2a62071 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedAOrAn.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedAOrAn.java
@@ -19,7 +19,7 @@
 
 package org.apache.freemarker.core;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _DelayedAOrAn extends _DelayedConversionToString {
 
     public _DelayedAOrAn(Object object) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedConversionToString.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedConversionToString.java
index 4fbe13fa..7859407e 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedConversionToString.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedConversionToString.java
@@ -19,7 +19,7 @@
 
 package org.apache.freemarker.core;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public abstract class _DelayedConversionToString {
 
     private static final String NOT_SET = new String();
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetCanonicalForm.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetCanonicalForm.java
index 38a4cd80..077c6481 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetCanonicalForm.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetCanonicalForm.java
@@ -20,7 +20,7 @@
 package org.apache.freemarker.core;
 
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _DelayedGetCanonicalForm extends _DelayedConversionToString {
     
     public _DelayedGetCanonicalForm(ASTNode obj) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetMessage.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetMessage.java
index 7bef399e..676ccb9d 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetMessage.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetMessage.java
@@ -19,7 +19,7 @@
 
 package org.apache.freemarker.core;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _DelayedGetMessage extends _DelayedConversionToString {
 
     public _DelayedGetMessage(Throwable exception) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetMessageWithoutStackTop.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetMessageWithoutStackTop.java
index 7694c15f..a94d360f 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetMessageWithoutStackTop.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedGetMessageWithoutStackTop.java
@@ -19,7 +19,7 @@
 
 package org.apache.freemarker.core;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _DelayedGetMessageWithoutStackTop extends _DelayedConversionToString {
 
     public _DelayedGetMessageWithoutStackTop(TemplateException exception) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJQuote.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJQuote.java
index 0d045742..73786c8f 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJQuote.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJQuote.java
@@ -21,7 +21,7 @@ package org.apache.freemarker.core;
 
 import org.apache.freemarker.core.util._StringUtils;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _DelayedJQuote extends _DelayedConversionToString {
 
     public _DelayedJQuote(Object object) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJQuotedListing.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJQuotedListing.java
index d2512815..0852fa07 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJQuotedListing.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJQuotedListing.java
@@ -19,11 +19,11 @@
 
 package org.apache.freemarker.core;
 
-import java.util.Collection;
-
 import org.apache.freemarker.core.util._StringUtils;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+import java.util.Collection;
+
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _DelayedJQuotedListing extends _DelayedConversionToString {
 
     public _DelayedJQuotedListing(Collection<?> object) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJoinWithComma.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJoinWithComma.java
index 7ae1da33..2234609f 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJoinWithComma.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedJoinWithComma.java
@@ -19,7 +19,7 @@
 
 package org.apache.freemarker.core;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _DelayedJoinWithComma extends _DelayedConversionToString {
 
     public _DelayedJoinWithComma(String[] items) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedTemplateLanguageTypeDescription.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedTemplateLanguageTypeDescription.java
index 4c22bc27..a49493cd 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedTemplateLanguageTypeDescription.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_DelayedTemplateLanguageTypeDescription.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.util.TemplateLanguageUtils;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _DelayedTemplateLanguageTypeDescription extends _DelayedConversionToString {
     
     public _DelayedTemplateLanguageTypeDescription(TemplateModel tm) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_ErrorDescriptionBuilder.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_ErrorDescriptionBuilder.java
index f00da1ab..792634d1 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_ErrorDescriptionBuilder.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_ErrorDescriptionBuilder.java
@@ -19,18 +19,18 @@
 
 package org.apache.freemarker.core;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-
 import org.apache.freemarker.core.model.impl._MethodUtils;
 import org.apache.freemarker.core.util._ClassUtils;
 import org.apache.freemarker.core.util._StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+
 /**
- * Used internally only, might changes without notice!
+ * Used internally only, might change without notice!
  * Packs a structured from of the error description from which the error message can be rendered on-demand.
  * Note that this class isn't serializable, thus the containing exception should render the message before it's
  * serialized.
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_Java8.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_Java8.java
index 037ef9a6..491a3ddc 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_Java8.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_Java8.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core;
 import java.lang.reflect.Method;
 
 /**
- * Used internally only, might changes without notice!
+ * Used internally only, might change without notice!
  * Used for accessing functionality that's only present in Java 6 or later.
  */
 public interface _Java8 {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_Java8Impl.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_Java8Impl.java
index 527a180a..c94fbf5c 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_Java8Impl.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_Java8Impl.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core;
 import java.lang.reflect.Method;
 
 /**
- * Used internally only, might changes without notice!
+ * Used internally only, might change without notice!
  * Used for accessing functionality that's only present in Java 8 or later.
  */
 public final class _Java8Impl implements _Java8 {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_ObjectBuilderSettingEvaluationException.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_ObjectBuilderSettingEvaluationException.java
index 6c8e700c..8b3410c7 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_ObjectBuilderSettingEvaluationException.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_ObjectBuilderSettingEvaluationException.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core;
 import org.apache.freemarker.core.util._StringUtils;
 
 /**
- * Don't use this; used internally by FreeMarker, might changes without notice.
+ * Don't use this; used internally by FreeMarker, might change without notice.
  * Thrown by {@link _ObjectBuilderSettingEvaluator}.
  */
 public class _ObjectBuilderSettingEvaluationException extends Exception {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_ObjectBuilderSettingEvaluator.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_ObjectBuilderSettingEvaluator.java
index ec52865c..9bfd1c35 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_ObjectBuilderSettingEvaluator.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_ObjectBuilderSettingEvaluator.java
@@ -19,6 +19,17 @@
 
 package org.apache.freemarker.core;
 
+import org.apache.freemarker.core.model.ObjectWrappingException;
+import org.apache.freemarker.core.model.TemplateHashModel;
+import org.apache.freemarker.core.model.TemplateModel;
+import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
+import org.apache.freemarker.core.model.impl.JavaMethodModel;
+import org.apache.freemarker.core.model.impl.RestrictedObjectWrapper;
+import org.apache.freemarker.core.outputformat.impl.*;
+import org.apache.freemarker.core.pluggablebuiltin.impl.DefaultTruncateBuiltinAlgorithm;
+import org.apache.freemarker.core.templateresolver.*;
+import org.apache.freemarker.core.util.*;
+
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
 import java.lang.reflect.Field;
@@ -27,45 +38,10 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.freemarker.core.model.ObjectWrappingException;
-import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
-import org.apache.freemarker.core.model.impl.JavaMethodModel;
-import org.apache.freemarker.core.model.impl.RestrictedObjectWrapper;
-import org.apache.freemarker.core.outputformat.impl.HTMLOutputFormat;
-import org.apache.freemarker.core.outputformat.impl.PlainTextOutputFormat;
-import org.apache.freemarker.core.outputformat.impl.RTFOutputFormat;
-import org.apache.freemarker.core.outputformat.impl.UndefinedOutputFormat;
-import org.apache.freemarker.core.outputformat.impl.XHTMLOutputFormat;
-import org.apache.freemarker.core.outputformat.impl.XMLOutputFormat;
-import org.apache.freemarker.core.pluggablebuiltin.impl.DefaultTruncateBuiltinAlgorithm;
-import org.apache.freemarker.core.templateresolver.AndMatcher;
-import org.apache.freemarker.core.templateresolver.ConditionalTemplateConfigurationFactory;
-import org.apache.freemarker.core.templateresolver.FileExtensionMatcher;
-import org.apache.freemarker.core.templateresolver.FileNameGlobMatcher;
-import org.apache.freemarker.core.templateresolver.FirstMatchTemplateConfigurationFactory;
-import org.apache.freemarker.core.templateresolver.MergingTemplateConfigurationFactory;
-import org.apache.freemarker.core.templateresolver.NotMatcher;
-import org.apache.freemarker.core.templateresolver.OrMatcher;
-import org.apache.freemarker.core.templateresolver.PathGlobMatcher;
-import org.apache.freemarker.core.templateresolver.PathRegexMatcher;
-import org.apache.freemarker.core.util.BugException;
-import org.apache.freemarker.core.util.GenericParseException;
-import org.apache.freemarker.core.util.TemplateLanguageUtils;
-import org.apache.freemarker.core.util._ClassUtils;
-import org.apache.freemarker.core.util._StringUtils;
+import java.util.*;
 
 /**
- * Don't use this; used internally by FreeMarker, might changes without notice.
+ * Don't use this; used internally by FreeMarker, might change without notice.
  * 
  * Evaluates object builder expressions used in configuration {@link Properties}.
  * It should be replaced with FTL later (when it was improved to be practical for this), so the syntax should be
@@ -442,7 +418,7 @@ public class _ObjectBuilderSettingEvaluator {
                         }
                     } else {
                         if (resultCoerced) {
-                            // The FTL way (BigDecimal is loseless, and it will be coerced to the target type later):
+                            // The FTL way (BigDecimal is lossless, and it will be coerced to the target type later):
                             return new BigDecimal(numStr);
                         } else {
                             // The Java way (lossy but familiar):
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_SettingEvaluationEnvironment.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_SettingEvaluationEnvironment.java
index 9501185e..d4f68470 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_SettingEvaluationEnvironment.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_SettingEvaluationEnvironment.java
@@ -19,12 +19,12 @@
 
 package org.apache.freemarker.core;
 
-import java.util.Properties;
-
 import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
 
+import java.util.Properties;
+
 /**
- * Don't use this; used internally by FreeMarker, might changes without notice.
+ * Don't use this; used internally by FreeMarker, might change without notice.
  * The runtime environment used during the evaluation of configuration {@link Properties}.
  */
 public class _SettingEvaluationEnvironment {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_UnexpectedTypeErrorExplainerTemplateModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_UnexpectedTypeErrorExplainerTemplateModel.java
index 56481b87..456bef97 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_UnexpectedTypeErrorExplainerTemplateModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_UnexpectedTypeErrorExplainerTemplateModel.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core;
 import org.apache.freemarker.core.model.TemplateModel;
 
 /**
- * Don't use this; used internally by FreeMarker, might changes without notice.
+ * Don't use this; used internally by FreeMarker, might change without notice.
  * 
  * <p>Implemented by {@link TemplateModel}-s that can explain why they don't implement a certain type. 
  * */
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/arithmetic/impl/BigDecimalArithmeticEngine.java b/freemarker-core/src/main/java/org/apache/freemarker/core/arithmetic/impl/BigDecimalArithmeticEngine.java
index 827b0e84..63512a07 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/arithmetic/impl/BigDecimalArithmeticEngine.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/arithmetic/impl/BigDecimalArithmeticEngine.java
@@ -18,11 +18,11 @@
  */
 package org.apache.freemarker.core.arithmetic.impl;
 
-import java.math.BigDecimal;
-
 import org.apache.freemarker.core.arithmetic.ArithmeticEngine;
 import org.apache.freemarker.core.util._NumberUtils;
 
+import java.math.BigDecimal;
+
 /**
  * Arithmetic engine that converts all numbers to {@link BigDecimal} and then operates on them, and also keeps the
  * result as a {@link BigDecimal}. This is FreeMarker's default arithmetic engine.
@@ -48,7 +48,7 @@ public class BigDecimalArithmeticEngine extends ArithmeticEngine {
             return 0;
         } else {
             // The most common case is comparing values of the same type. As BigDecimal can represent all of these
-            // with loseless round-trip (i.e., converting to BigDecimal and then back the original type gives the
+            // with lossless round-trip (i.e., converting to BigDecimal and then back the original type gives the
             // original value), we can avoid conversion to BigDecimal without changing the result.
             if (first.getClass() == second.getClass()) {
                 // Bit of optimization for this is a very common case:
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/debug/_DebuggerService.java b/freemarker-core/src/main/java/org/apache/freemarker/core/debug/_DebuggerService.java
index 4d379178..9f5caf4d 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/debug/_DebuggerService.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/debug/_DebuggerService.java
@@ -19,16 +19,16 @@
 
 package org.apache.freemarker.core.debug;
 
-import java.rmi.RemoteException;
-import java.util.Collections;
-import java.util.List;
-
 import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.Template;
 import org.apache.freemarker.core.util._SecurityUtils;
 
+import java.rmi.RemoteException;
+import java.util.Collections;
+import java.util.List;
+
 /**
- * Don't use this; used internally by FreeMarker, might changes without notice.
+ * Don't use this; used internally by FreeMarker, might change without notice.
  * This class provides debugging hooks for the core FreeMarker engine. It is
  * not usable for anyone outside the FreeMarker core classes.
  */
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateMarkupOutputModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateMarkupOutputModel.java
index aff86575..3f813981 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateMarkupOutputModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateMarkupOutputModel.java
@@ -27,8 +27,8 @@ import org.apache.freemarker.core.outputformat.OutputFormat;
  * mechanism. Values of this kind are exempt from {@link OutputFormat}-based automatic escaping.
  * 
  * <p>
- * Each implementation of this type has a {@link OutputFormat} subclass pair, whose singleton instance is returned by
- * {@link #getOutputFormat()}. See more about how markup output values work at {@link OutputFormat}.
+ * Each implementation of this type has a corresponding {@link OutputFormat} subclass, whose singleton instance is
+ * returned by {@link #getOutputFormat()}. See more about how markup output values work at {@link OutputFormat}.
  * 
  * <p>
  * Note that {@link TemplateMarkupOutputModel}-s are by design not treated like {@link TemplateStringModel}-s, and so
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/CommonMarkupOutputFormat.java b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/CommonMarkupOutputFormat.java
index 337d37bc..ce1ee85a 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/CommonMarkupOutputFormat.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/CommonMarkupOutputFormat.java
@@ -18,11 +18,11 @@
  */
 package org.apache.freemarker.core.outputformat;
 
+import org.apache.freemarker.core.TemplateException;
+
 import java.io.IOException;
 import java.io.Writer;
 
-import org.apache.freemarker.core.TemplateException;
-
 /**
  * Common superclass for implementing {@link MarkupOutputFormat}-s that use a {@link CommonTemplateMarkupOutputModel}
  * subclass.
@@ -115,6 +115,16 @@ public abstract class CommonMarkupOutputFormat<MO extends CommonTemplateMarkupOu
 
     /**
      * Creates a new {@link CommonTemplateMarkupOutputModel} that's bound to this {@link OutputFormat} instance.
+     * When this is called from {@link CommonMarkupOutputFormat}, exactly one of the parameters will be
+     * non-{@code null}.
+     *
+     * @param plainTextContent
+     *      {@code null} if the content is markup that possibly can be described as plain text without loss.
+     * @param markupContent
+     *      Typically will be {@code null} if {@code plainTextContent} is not {@code null}. While the plain text always
+     *      can be converted to markup via {@link #escapePlainText(String)}, it's up to the implementation if it wants
+     *      to do that now and store the markup, or later on demand (like each time when
+     *      {@link #getMarkupString(CommonTemplateMarkupOutputModel)} is called).
      */
     protected abstract MO newTemplateMarkupOutputModel(String plainTextContent, String markupContent)
             throws TemplateException;
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/MarkupOutputFormat.java b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/MarkupOutputFormat.java
index 77ba50c6..ed0b36fb 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/MarkupOutputFormat.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/MarkupOutputFormat.java
@@ -18,15 +18,15 @@
  */
 package org.apache.freemarker.core.outputformat;
 
-import java.io.IOException;
-import java.io.Writer;
-
 import org.apache.freemarker.core.Configuration;
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.outputformat.impl.HTMLOutputFormat;
 import org.apache.freemarker.core.outputformat.impl.TemplateHTMLOutputModel;
 
+import java.io.IOException;
+import java.io.Writer;
+
 /**
  * Superclass of {@link OutputFormat}-s that represent a "markup" format, which is any format where certain character
  * sequences have special meaning and thus may need escaping. (Escaping is important for FreeMarker, as typically it has
@@ -78,7 +78,7 @@ public abstract class MarkupOutputFormat<MO extends TemplateMarkupOutputModel> e
 
     /**
      * Equivalent to calling {@link #fromPlainTextByEscaping(String)} and then
-     * {@link #output(TemplateMarkupOutputModel, Writer)}, but the implementation may uses a more efficient solution.
+     * {@link #output(TemplateMarkupOutputModel, Writer)}, but the implementation may use a more efficient solution.
      */
     public abstract void output(String textToEsc, Writer out) throws IOException, TemplateException;
     
@@ -106,7 +106,7 @@ public abstract class MarkupOutputFormat<MO extends TemplateMarkupOutputModel> e
     
     /**
      * Should give the same result as {@link #fromPlainTextByEscaping(String)} and then
-     * {@link #getMarkupString(TemplateMarkupOutputModel)}, but the implementation may uses a more efficient solution.
+     * {@link #getMarkupString(TemplateMarkupOutputModel)}, but the implementation may use a more efficient solution.
      */
     public abstract String escapePlainText(String plainTextContent) throws TemplateException;
 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/templateresolver/TemplateLoadingSource.java b/freemarker-core/src/main/java/org/apache/freemarker/core/templateresolver/TemplateLoadingSource.java
index fe39b54a..e1ad6391 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/templateresolver/TemplateLoadingSource.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/templateresolver/TemplateLoadingSource.java
@@ -18,16 +18,16 @@
  */
 package org.apache.freemarker.core.templateresolver;
 
-import java.io.Serializable;
-import java.util.HashMap;
-
 import org.apache.freemarker.core.templateresolver.impl.ByteArrayTemplateLoader;
 import org.apache.freemarker.core.templateresolver.impl.FileTemplateLoader;
 
+import java.io.Serializable;
+import java.util.HashMap;
+
 /**
  * The point of {@link TemplateLoadingSource} is that with their {@link Object#equals(Object)} method we can tell if two
  * cache entries were generated from the same physical resource or not. Comparing the template names isn't enough,
- * because a {@link TemplateLoader} may uses some kind of fallback mechanism, such as delegating to other
+ * because a {@link TemplateLoader} may use some kind of fallback mechanism, such as delegating to other
  * {@link TemplateLoader}-s until the template is found. Like if we have two {@link FileTemplateLoader}-s with different
  * physical root directories, both can contain {@code "foo/bar.f3ah"}, but obviously the two files aren't the same.
  * 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayAdapterList.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayAdapterList.java
index c3e5d8f9..eab4adb5 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayAdapterList.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayAdapterList.java
@@ -24,7 +24,7 @@ import java.util.Arrays;
 import java.util.Iterator;
 
 /**
- * Don't use this; used internally by FreeMarker, might changes without notice.
+ * Don't use this; used internally by FreeMarker, might change without notice.
  * Immutable list that wraps an array that's known to be non-changing.
  */
 public class _ArrayAdapterList<E> extends AbstractList<E> {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayIterator.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayIterator.java
index 0ff9241a..68d2225c 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayIterator.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayIterator.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core.util;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _ArrayIterator<T> implements Iterator<T> {
 
     private final T[] array;
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ClassUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ClassUtils.java
index 00aaadfb..2647e61f 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ClassUtils.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ClassUtils.java
@@ -19,6 +19,8 @@
 
 package org.apache.freemarker.core.util;
 
+import org.apache.freemarker.core.model.impl.BeanModel;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Array;
@@ -27,8 +29,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
-import org.apache.freemarker.core.model.impl.BeanModel;
-
 public class _ClassUtils {
     
     private static final String ORG_APACHE_FREEMARKER = "org.apache.freemarker.";
@@ -216,7 +216,7 @@ public class _ClassUtils {
             throws IOException {
         InputStream ins;
         try {
-            // This is how we did this earlier. May uses some JarURLConnection caches, which leads to the problems.
+            // This is how we did this earlier. May use some JarURLConnection caches, which leads to the problems.
             ins = baseClass.getResourceAsStream(resource);
         } catch (Exception e) {
             // Workaround for "IllegalStateException: zip file closed", and other related exceptions. This happens due
@@ -261,7 +261,7 @@ public class _ClassUtils {
         InputStream ins  = null;
         try {
             try {
-                // This is how we did this earlier. May uses some JarURLConnection caches, which leads to the problems.
+                // This is how we did this earlier. May use some JarURLConnection caches, which leads to the problems.
                 ins = baseClass.getResourceAsStream(resource);
             } catch (Exception e) {
                 throw new MaybeZipFileClosedException();
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtils.java
index 60b94a72..ba9069b4 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtils.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtils.java
@@ -19,18 +19,10 @@
 
 package org.apache.freemarker.core.util;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 /**
- * Don't use this; used internally by FreeMarker, might changes without notice.
+ * Don't use this; used internally by FreeMarker, might change without notice.
  * {@link Collection} and {@link Map}-related utilities.
  */
 public class _CollectionUtils {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_DateUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_DateUtils.java
index 60201b6b..e010d9fd 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_DateUtils.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_DateUtils.java
@@ -20,16 +20,12 @@
 package org.apache.freemarker.core.util;
 
 import java.text.ParseException;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Locale;
-import java.util.TimeZone;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
- * Don't use this; used internally by FreeMarker, might changes without notice.
+ * Don't use this; used internally by FreeMarker, might change without notice.
  * Date and time related utilities.
  */
 public class _DateUtils {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_JavaVersions.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_JavaVersions.java
index 88efaca0..986e2437 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_JavaVersions.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_JavaVersions.java
@@ -24,7 +24,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Used internally only, might changes without notice!
+ * Used internally only, might change without notice!
  */
 public final class _JavaVersions {
 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_NumberUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_NumberUtils.java
index 9c65eaf7..bfd324be 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_NumberUtils.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_NumberUtils.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core.util;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _NumberUtils {
 
     private static final BigDecimal BIG_DECIMAL_INT_MIN = BigDecimal.valueOf(Integer.MIN_VALUE);
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_SortedArraySet.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_SortedArraySet.java
index 788fed7d..414da33f 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_SortedArraySet.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_SortedArraySet.java
@@ -23,7 +23,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _SortedArraySet<E> extends _UnmodifiableSet<E> {
 
     private final E[] array;
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_StringUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_StringUtils.java
index 587b20fa..228488e7 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_StringUtils.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_StringUtils.java
@@ -19,6 +19,10 @@
 
 package org.apache.freemarker.core.util;
 
+import org.apache.freemarker.core.Environment;
+import org.apache.freemarker.core.Template;
+import org.apache.freemarker.core.Version;
+
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
@@ -29,11 +33,7 @@ import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.regex.Pattern;
 
-import org.apache.freemarker.core.Environment;
-import org.apache.freemarker.core.Template;
-import org.apache.freemarker.core.Version;
-
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _StringUtils {
 
     private static final char[] LT = new char[] { '&', 'l', 't', ';' };
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_UnmodifiableCompositeSet.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_UnmodifiableCompositeSet.java
index ab88f57f..23034d06 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_UnmodifiableCompositeSet.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_UnmodifiableCompositeSet.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core.util;
 import java.util.Iterator;
 import java.util.Set;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public class _UnmodifiableCompositeSet<E> extends _UnmodifiableSet<E> {
     
     private final Set<E> set1, set2;
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_UnmodifiableSet.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_UnmodifiableSet.java
index 7e08815d..464e8410 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_UnmodifiableSet.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_UnmodifiableSet.java
@@ -21,7 +21,7 @@ package org.apache.freemarker.core.util;
 
 import java.util.AbstractSet;
 
-/** Don't use this; used internally by FreeMarker, might changes without notice. */
+/** Don't use this; used internally by FreeMarker, might change without notice. */
 public abstract class _UnmodifiableSet<E> extends AbstractSet<E> {
 
     @Override
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateNumberFormat.java b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateNumberFormat.java
index 25e7ad46..47904edb 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateNumberFormat.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateNumberFormat.java
@@ -18,8 +18,6 @@
  */
 package org.apache.freemarker.core.valueformat;
 
-import java.text.NumberFormat;
-
 import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.arithmetic.ArithmeticEngine;
@@ -27,6 +25,8 @@ import org.apache.freemarker.core.model.TemplateDateModel;
 import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
 
+import java.text.NumberFormat;
+
 /**
  * Represents a number format; used in templates for formatting and parsing with that format. This is similar to Java's
  * {@link NumberFormat}, but made to fit the requirements of FreeMarker. Also, it makes easier to define formats that
@@ -84,7 +84,7 @@ public abstract class TemplateNumberFormat extends TemplateValueFormat {
      * will be support, it will be similar to {@link TemplateDateFormat#parse(String, int)}.
      */
     public final Object parse(String s) throws TemplateValueFormatException {
-        throw new ParsingNotSupportedException("Number formats currenly don't support parsing");
+        throw new ParsingNotSupportedException("Number formats currently don't support parsing");
     }
     
     
diff --git a/freemarker-manual/src/main/docgen/en_US/book.xml b/freemarker-manual/src/main/docgen/en_US/book.xml
index 2f9d3b7d..c8492a93 100644
--- a/freemarker-manual/src/main/docgen/en_US/book.xml
+++ b/freemarker-manual/src/main/docgen/en_US/book.xml
@@ -10604,7 +10604,7 @@ cfg.setNumberFormat("@ua 0.####;; roundingMode=halfUp");</programlisting>
         linkend="gloss.unicode">UNICODE</link> text" (UTF-16). Nonetheless,
         there are situations when it must deal with <link
         linkend="gloss.charset">charsets</link>, because it has to exchange
-        data with the outer world that may uses various other charsets.</para>
+        data with the outer world that may use various other charsets.</para>
 
         <section>
           <title>The charset of the input</title>
@@ -28786,7 +28786,7 @@ End book</programlisting>
           <answer>
             <para>FreeMarker uses the locale-sensitive number formatting
             capability of the Java platform. The default number format for
-            your locale may uses grouping or other formatting. If you don't
+            your locale may use grouping or other formatting. If you don't
             want that, you have to override the number format suggested by the
             Java platform with the <literal>number_format</literal> <link
             linkend="pgui_config_settings">FreeMarker setting</link>. For
diff --git a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/CopyrightCommentRemoverTemplateLoader.java b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/CopyrightCommentRemoverTemplateLoader.java
index 3c03a873..7a564ffa 100644
--- a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/CopyrightCommentRemoverTemplateLoader.java
+++ b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/CopyrightCommentRemoverTemplateLoader.java
@@ -19,20 +19,12 @@
 
 package org.apache.freemarker.test;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.Serializable;
-import java.io.StringReader;
-import java.nio.charset.StandardCharsets;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.input.ReaderInputStream;
-import org.apache.freemarker.core.templateresolver.TemplateLoader;
-import org.apache.freemarker.core.templateresolver.TemplateLoaderSession;
-import org.apache.freemarker.core.templateresolver.TemplateLoadingResult;
-import org.apache.freemarker.core.templateresolver.TemplateLoadingResultStatus;
-import org.apache.freemarker.core.templateresolver.TemplateLoadingSource;
+import org.apache.freemarker.core.templateresolver.*;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
 
 /**
  * Removes the Apache copyright boiler plate from the beginning of the template, so that they don't mess up the expected
@@ -92,7 +84,7 @@ public class CopyrightCommentRemoverTemplateLoader implements TemplateLoader {
             return null;
         }
         try {
-            // Encoding then decosing in ISO-8859-1 is binary loseless
+            // Encoding then decoding in ISO-8859-1 is binary lossless
             String content = IOUtils.toString(in, StandardCharsets.ISO_8859_1.name());
             return new ReaderInputStream(
                     new StringReader(TestUtils.removeFTLCopyrightComment(content)),