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 2019/08/18 18:37:16 UTC

[freemarker-site] branch asf-site updated: Updates site for 2.3.29 release

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new 0416707  Updates site for 2.3.29 release
0416707 is described below

commit 0416707caa789a6f5d67bfd101f349dea0f8cc9d
Author: ddekany <dd...@apache.org>
AuthorDate: Sun Aug 18 20:36:46 2019 +0200

    Updates site for 2.3.29 release
---
 committer-howto.html                               |  19 +-
 contribute.html                                    |  12 +-
 docgen-resources/docgen.min.css                    |   2 +-
 docgen-resources/main.min.js                       |   2 +-
 docs/alphaidx.html                                 |  72 +-
 docs/apache-incubator.png                          | Bin 7167 -> 0 bytes
 docs/api/allclasses-frame.html                     |   8 +-
 docs/api/allclasses-noframe.html                   |   8 +-
 docs/api/constant-values.html                      | 637 ++++++++------
 docs/api/deprecated-list.html                      |  90 +-
 docs/api/freemarker/cache/AndMatcher.html          |   8 +-
 .../freemarker/cache/ByteArrayTemplateLoader.html  |  17 +-
 docs/api/freemarker/cache/CacheStorage.html        |   8 +-
 .../freemarker/cache/CacheStorageWithGetSize.html  |   8 +-
 docs/api/freemarker/cache/ClassTemplateLoader.html |   8 +-
 .../freemarker/cache/ConcurrentCacheStorage.html   |   8 +-
 .../ConditionalTemplateConfigurationFactory.html   |   8 +-
 .../api/freemarker/cache/FileExtensionMatcher.html |   8 +-
 docs/api/freemarker/cache/FileNameGlobMatcher.html |   8 +-
 docs/api/freemarker/cache/FileTemplateLoader.html  |  17 +-
 .../FirstMatchTemplateConfigurationFactory.html    |   8 +-
 .../cache/MergingTemplateConfigurationFactory.html |   8 +-
 docs/api/freemarker/cache/MruCacheStorage.html     |   8 +-
 docs/api/freemarker/cache/MultiTemplateLoader.html |  17 +-
 docs/api/freemarker/cache/NotMatcher.html          |   8 +-
 docs/api/freemarker/cache/NullCacheStorage.html    |   8 +-
 docs/api/freemarker/cache/OrMatcher.html           |   8 +-
 docs/api/freemarker/cache/PathGlobMatcher.html     |   8 +-
 docs/api/freemarker/cache/PathRegexMatcher.html    |   8 +-
 docs/api/freemarker/cache/SoftCacheStorage.html    |   8 +-
 .../freemarker/cache/StatefulTemplateLoader.html   |   8 +-
 .../api/freemarker/cache/StringTemplateLoader.html |  17 +-
 docs/api/freemarker/cache/StrongCacheStorage.html  |   8 +-
 .../cache/TemplateCache.MaybeMissingTemplate.html  |   8 +-
 docs/api/freemarker/cache/TemplateCache.html       |   8 +-
 .../cache/TemplateConfigurationFactory.html        |   8 +-
 .../TemplateConfigurationFactoryException.html     |   8 +-
 docs/api/freemarker/cache/TemplateLoader.html      |  17 +-
 .../freemarker/cache/TemplateLookupContext.html    |   8 +-
 .../api/freemarker/cache/TemplateLookupResult.html |   8 +-
 .../freemarker/cache/TemplateLookupStrategy.html   |   8 +-
 docs/api/freemarker/cache/TemplateNameFormat.html  |   8 +-
 .../freemarker/cache/TemplateSourceMatcher.html    |   8 +-
 docs/api/freemarker/cache/URLTemplateLoader.html   |  17 +-
 .../api/freemarker/cache/WebappTemplateLoader.html |  17 +-
 .../api/freemarker/cache/class-use/AndMatcher.html |   8 +-
 .../cache/class-use/ByteArrayTemplateLoader.html   |   8 +-
 .../freemarker/cache/class-use/CacheStorage.html   |  10 +-
 .../cache/class-use/CacheStorageWithGetSize.html   |   8 +-
 .../cache/class-use/ClassTemplateLoader.html       |   8 +-
 .../cache/class-use/ConcurrentCacheStorage.html    |   8 +-
 .../ConditionalTemplateConfigurationFactory.html   |   8 +-
 .../cache/class-use/FileExtensionMatcher.html      |   8 +-
 .../cache/class-use/FileNameGlobMatcher.html       |   8 +-
 .../cache/class-use/FileTemplateLoader.html        |   8 +-
 .../FirstMatchTemplateConfigurationFactory.html    |   8 +-
 .../MergingTemplateConfigurationFactory.html       |   8 +-
 .../cache/class-use/MruCacheStorage.html           |   8 +-
 .../cache/class-use/MultiTemplateLoader.html       |   8 +-
 .../api/freemarker/cache/class-use/NotMatcher.html |   8 +-
 .../cache/class-use/NullCacheStorage.html          |   8 +-
 docs/api/freemarker/cache/class-use/OrMatcher.html |   8 +-
 .../cache/class-use/PathGlobMatcher.html           |   8 +-
 .../cache/class-use/PathRegexMatcher.html          |   8 +-
 .../cache/class-use/SoftCacheStorage.html          |   8 +-
 .../cache/class-use/StatefulTemplateLoader.html    |   8 +-
 .../cache/class-use/StringTemplateLoader.html      |   8 +-
 .../cache/class-use/StrongCacheStorage.html        |   8 +-
 .../TemplateCache.MaybeMissingTemplate.html        |   8 +-
 .../freemarker/cache/class-use/TemplateCache.html  |   8 +-
 .../class-use/TemplateConfigurationFactory.html    |  10 +-
 .../TemplateConfigurationFactoryException.html     |   8 +-
 .../freemarker/cache/class-use/TemplateLoader.html |  10 +-
 .../cache/class-use/TemplateLookupContext.html     |   8 +-
 .../cache/class-use/TemplateLookupResult.html      |   8 +-
 .../cache/class-use/TemplateLookupStrategy.html    |  10 +-
 .../cache/class-use/TemplateNameFormat.html        |  10 +-
 .../cache/class-use/TemplateSourceMatcher.html     |   8 +-
 .../cache/class-use/URLTemplateLoader.html         |   8 +-
 .../cache/class-use/WebappTemplateLoader.html      |   8 +-
 docs/api/freemarker/cache/package-frame.html       |   6 +-
 docs/api/freemarker/cache/package-summary.html     |   8 +-
 docs/api/freemarker/cache/package-tree.html        |   8 +-
 docs/api/freemarker/cache/package-use.html         |  10 +-
 .../core/AliasTemplateDateFormatFactory.html       |   8 +-
 .../core/AliasTemplateNumberFormatFactory.html     |   8 +-
 .../core/ArithmeticEngine.BigDecimalEngine.html    |   8 +-
 .../core/ArithmeticEngine.ConservativeEngine.html  |   8 +-
 docs/api/freemarker/core/ArithmeticEngine.html     |   8 +-
 docs/api/freemarker/core/BugException.html         |   8 +-
 docs/api/freemarker/core/BuiltInForNodeEx.html     |  54 +-
 docs/api/freemarker/core/CSSOutputFormat.html      |   8 +-
 ...CallPlaceCustomDataInitializationException.html |   8 +-
 .../core/CombinedMarkupOutputFormat.html           |   8 +-
 docs/api/freemarker/core/CommandLine.html          |   8 +-
 .../freemarker/core/CommonMarkupOutputFormat.html  |  10 +-
 .../core/CommonTemplateMarkupOutputModel.html      |  43 +-
 ...nfigurable.SettingValueAssignmentException.html |   8 +-
 .../core/Configurable.UnknownSettingException.html |   8 +-
 docs/api/freemarker/core/Configurable.html         | 358 ++++++--
 docs/api/freemarker/core/CustomAttribute.html      |  12 +-
 .../core/DefaultTruncateBuiltinAlgorithm.html      | 972 +++++++++++++++++++++
 docs/api/freemarker/core/DirectiveCallPlace.html   |  12 +-
 .../api/freemarker/core/Environment.Namespace.html |   8 +-
 docs/api/freemarker/core/Environment.html          |  12 +-
 docs/api/freemarker/core/FreeMarkerTree.html       |   8 +-
 docs/api/freemarker/core/HTMLOutputFormat.html     |  62 +-
 .../core/InvalidFormatParametersException.html     |   8 +-
 .../core/InvalidFormatStringException.html         |   8 +-
 .../freemarker/core/InvalidReferenceException.html |   8 +-
 docs/api/freemarker/core/JSONOutputFormat.html     |   8 +-
 .../freemarker/core/JavaScriptOutputFormat.html    |   8 +-
 docs/api/freemarker/core/MarkupOutputFormat.html   |   8 +-
 docs/api/freemarker/core/NonBooleanException.html  |   8 +-
 docs/api/freemarker/core/NonDateException.html     |   8 +-
 .../freemarker/core/NonExtendedHashException.html  |   8 +-
 .../freemarker/core/NonExtendedNodeException.html  |   8 +-
 docs/api/freemarker/core/NonHashException.html     |   8 +-
 .../freemarker/core/NonMarkupOutputException.html  |   8 +-
 docs/api/freemarker/core/NonMethodException.html   |   8 +-
 docs/api/freemarker/core/NonNodeException.html     |   8 +-
 .../api/freemarker/core/NonNumericalException.html |   8 +-
 docs/api/freemarker/core/NonSequenceException.html |   8 +-
 .../core/NonSequenceOrCollectionException.html     |   8 +-
 docs/api/freemarker/core/NonStringException.html   |   8 +-
 .../core/NonStringOrTemplateOutputException.html   |   8 +-
 .../core/OptInTemplateClassResolver.html           |   8 +-
 docs/api/freemarker/core/OutputFormat.html         |   8 +-
 docs/api/freemarker/core/ParseException.html       | 167 ++--
 docs/api/freemarker/core/ParserConfiguration.html  |   8 +-
 .../core/ParsingNotSupportedException.html         |   8 +-
 .../api/freemarker/core/PlainTextOutputFormat.html |   8 +-
 docs/api/freemarker/core/RTFOutputFormat.html      |  62 +-
 docs/api/freemarker/core/StopException.html        |   8 +-
 .../api/freemarker/core/TemplateClassResolver.html |   8 +-
 .../core/TemplateCombinedMarkupOutputModel.html    |  17 +-
 .../api/freemarker/core/TemplateConfiguration.html |  12 +-
 docs/api/freemarker/core/TemplateDateFormat.html   |   8 +-
 .../freemarker/core/TemplateDateFormatFactory.html |   8 +-
 docs/api/freemarker/core/TemplateFormatUtil.html   |   8 +-
 .../freemarker/core/TemplateHTMLOutputModel.html   |  76 +-
 .../freemarker/core/TemplateMarkupOutputModel.html |   8 +-
 docs/api/freemarker/core/TemplateNumberFormat.html |   8 +-
 .../core/TemplateNumberFormatFactory.html          |   8 +-
 .../freemarker/core/TemplateRTFOutputModel.html    |  76 +-
 docs/api/freemarker/core/TemplateValueFormat.html  |   8 +-
 .../core/TemplateValueFormatException.html         |   8 +-
 .../core/TemplateValueFormatFactory.html           |   8 +-
 .../freemarker/core/TemplateXHTMLOutputModel.html  |  93 +-
 .../freemarker/core/TemplateXMLOutputModel.html    |  84 +-
 .../freemarker/core/TruncateBuiltinAlgorithm.html  | 497 +++++++++++
 .../core/UndefinedCustomFormatException.html       |  12 +-
 .../api/freemarker/core/UndefinedOutputFormat.html |   8 +-
 .../freemarker/core/UnexpectedTypeException.html   |   8 +-
 .../core/UnformattableValueException.html          |   8 +-
 ...nownDateTypeFormattingUnsupportedException.html |   8 +-
 ...UnknownDateTypeParsingUnsupportedException.html |   8 +-
 .../freemarker/core/UnparsableValueException.html  |   8 +-
 .../core/UnregisteredOutputFormatException.html    |   8 +-
 docs/api/freemarker/core/XHTMLOutputFormat.html    |  99 ++-
 docs/api/freemarker/core/XMLOutputFormat.html      |  66 +-
 .../class-use/AliasTemplateDateFormatFactory.html  |   8 +-
 .../AliasTemplateNumberFormatFactory.html          |   8 +-
 .../ArithmeticEngine.BigDecimalEngine.html         |   8 +-
 .../ArithmeticEngine.ConservativeEngine.html       |   8 +-
 .../core/class-use/ArithmeticEngine.html           |   8 +-
 .../freemarker/core/class-use/BugException.html    |   8 +-
 .../core/class-use/BuiltInForNodeEx.html           |   8 +-
 .../freemarker/core/class-use/CSSOutputFormat.html |   8 +-
 ...CallPlaceCustomDataInitializationException.html |   8 +-
 .../core/class-use/CombinedMarkupOutputFormat.html |   8 +-
 .../api/freemarker/core/class-use/CommandLine.html |   8 +-
 .../core/class-use/CommonMarkupOutputFormat.html   |  11 +-
 .../class-use/CommonTemplateMarkupOutputModel.html |   8 +-
 ...nfigurable.SettingValueAssignmentException.html |   8 +-
 .../Configurable.UnknownSettingException.html      |   8 +-
 .../freemarker/core/class-use/Configurable.html    |  13 +-
 .../freemarker/core/class-use/CustomAttribute.html |   8 +-
 ...t.html => DefaultTruncateBuiltinAlgorithm.html} |  54 +-
 .../core/class-use/DirectiveCallPlace.html         |   8 +-
 .../core/class-use/Environment.Namespace.html      |   8 +-
 .../api/freemarker/core/class-use/Environment.html | 118 ++-
 .../freemarker/core/class-use/FreeMarkerTree.html  |   8 +-
 .../core/class-use/HTMLOutputFormat.html           |   8 +-
 .../InvalidFormatParametersException.html          |   8 +-
 .../class-use/InvalidFormatStringException.html    |   8 +-
 .../core/class-use/InvalidReferenceException.html  |   8 +-
 .../core/class-use/JSONOutputFormat.html           |   8 +-
 .../core/class-use/JavaScriptOutputFormat.html     |   8 +-
 .../core/class-use/MarkupOutputFormat.html         |  11 +-
 .../core/class-use/NonBooleanException.html        |   8 +-
 .../core/class-use/NonDateException.html           |   8 +-
 .../core/class-use/NonExtendedHashException.html   |   8 +-
 .../core/class-use/NonExtendedNodeException.html   |   8 +-
 .../core/class-use/NonHashException.html           |   8 +-
 .../core/class-use/NonMarkupOutputException.html   |   8 +-
 .../core/class-use/NonMethodException.html         |   8 +-
 .../core/class-use/NonNodeException.html           |   8 +-
 .../core/class-use/NonNumericalException.html      |   8 +-
 .../core/class-use/NonSequenceException.html       |   8 +-
 .../NonSequenceOrCollectionException.html          |   8 +-
 .../core/class-use/NonStringException.html         |   8 +-
 .../NonStringOrTemplateOutputException.html        |   8 +-
 .../core/class-use/OptInTemplateClassResolver.html |   8 +-
 .../freemarker/core/class-use/OutputFormat.html    |  13 +-
 .../freemarker/core/class-use/ParseException.html  |  10 +-
 .../core/class-use/ParserConfiguration.html        |  10 +-
 .../class-use/ParsingNotSupportedException.html    |   8 +-
 .../core/class-use/PlainTextOutputFormat.html      |   8 +-
 .../freemarker/core/class-use/RTFOutputFormat.html |   8 +-
 .../freemarker/core/class-use/StopException.html   |   8 +-
 .../core/class-use/TemplateClassResolver.html      |   8 +-
 .../TemplateCombinedMarkupOutputModel.html         |   8 +-
 .../core/class-use/TemplateConfiguration.html      |   8 +-
 .../core/class-use/TemplateDateFormat.html         |   8 +-
 .../core/class-use/TemplateDateFormatFactory.html  |   8 +-
 .../core/class-use/TemplateFormatUtil.html         |   8 +-
 .../core/class-use/TemplateHTMLOutputModel.html    |  25 +-
 .../core/class-use/TemplateMarkupOutputModel.html  |  72 +-
 .../core/class-use/TemplateNumberFormat.html       |   8 +-
 .../class-use/TemplateNumberFormatFactory.html     |   8 +-
 .../core/class-use/TemplateRTFOutputModel.html     |   8 +-
 .../core/class-use/TemplateValueFormat.html        |   8 +-
 .../class-use/TemplateValueFormatException.html    |   8 +-
 .../core/class-use/TemplateValueFormatFactory.html |   8 +-
 .../core/class-use/TemplateXHTMLOutputModel.html   |   8 +-
 .../core/class-use/TemplateXMLOutputModel.html     |  23 +-
 ...icEngine.html => TruncateBuiltinAlgorithm.html} |  62 +-
 .../class-use/UndefinedCustomFormatException.html  |   8 +-
 .../core/class-use/UndefinedOutputFormat.html      |   8 +-
 .../core/class-use/UnexpectedTypeException.html    |   8 +-
 .../class-use/UnformattableValueException.html     |   8 +-
 ...nownDateTypeFormattingUnsupportedException.html |   8 +-
 ...UnknownDateTypeParsingUnsupportedException.html |   8 +-
 .../core/class-use/UnparsableValueException.html   |   8 +-
 .../UnregisteredOutputFormatException.html         |  10 +-
 .../core/class-use/XHTMLOutputFormat.html          |   8 +-
 .../freemarker/core/class-use/XMLOutputFormat.html |  24 +-
 docs/api/freemarker/core/package-frame.html        |   8 +-
 docs/api/freemarker/core/package-summary.html      |  68 +-
 docs/api/freemarker/core/package-tree.html         |  23 +-
 docs/api/freemarker/core/package-use.html          |  80 +-
 docs/api/freemarker/debug/Breakpoint.html          |   8 +-
 docs/api/freemarker/debug/DebugModel.html          |   8 +-
 docs/api/freemarker/debug/DebuggedEnvironment.html |   8 +-
 docs/api/freemarker/debug/Debugger.html            |   8 +-
 docs/api/freemarker/debug/DebuggerClient.html      |   8 +-
 docs/api/freemarker/debug/DebuggerListener.html    |   8 +-
 .../debug/EnvironmentSuspendedEvent.html           |   8 +-
 .../api/freemarker/debug/class-use/Breakpoint.html |   8 +-
 .../api/freemarker/debug/class-use/DebugModel.html |   8 +-
 .../debug/class-use/DebuggedEnvironment.html       |   8 +-
 docs/api/freemarker/debug/class-use/Debugger.html  |   8 +-
 .../freemarker/debug/class-use/DebuggerClient.html |   8 +-
 .../debug/class-use/DebuggerListener.html          |   8 +-
 .../debug/class-use/EnvironmentSuspendedEvent.html |   8 +-
 docs/api/freemarker/debug/package-frame.html       |   6 +-
 docs/api/freemarker/debug/package-summary.html     |   8 +-
 docs/api/freemarker/debug/package-tree.html        |   8 +-
 docs/api/freemarker/debug/package-use.html         |   8 +-
 docs/api/freemarker/ext/ant/FreemarkerXmlTask.html |   8 +-
 docs/api/freemarker/ext/ant/JythonAntTask.html     |   8 +-
 .../ext/ant/UnlinkedJythonOperationsImpl.html      |   8 +-
 .../ext/ant/class-use/FreemarkerXmlTask.html       |   8 +-
 .../ext/ant/class-use/JythonAntTask.html           |   8 +-
 .../class-use/UnlinkedJythonOperationsImpl.html    |   8 +-
 docs/api/freemarker/ext/ant/package-frame.html     |   6 +-
 docs/api/freemarker/ext/ant/package-summary.html   |   8 +-
 docs/api/freemarker/ext/ant/package-tree.html      |   8 +-
 docs/api/freemarker/ext/ant/package-use.html       |   8 +-
 docs/api/freemarker/ext/beans/ArrayModel.html      |   8 +-
 docs/api/freemarker/ext/beans/BeanModel.html       |   8 +-
 docs/api/freemarker/ext/beans/BeansModelCache.html |   8 +-
 .../BeansWrapper.MethodAppearanceDecision.html     |   8 +-
 ...BeansWrapper.MethodAppearanceDecisionInput.html |   8 +-
 docs/api/freemarker/ext/beans/BeansWrapper.html    | 141 +--
 .../freemarker/ext/beans/BeansWrapperBuilder.html  |   8 +-
 .../ext/beans/BeansWrapperConfiguration.html       |   8 +-
 docs/api/freemarker/ext/beans/BooleanModel.html    |   8 +-
 docs/api/freemarker/ext/beans/CollectionModel.html |   8 +-
 docs/api/freemarker/ext/beans/DateModel.html       |   8 +-
 .../api/freemarker/ext/beans/EnumerationModel.html |   8 +-
 docs/api/freemarker/ext/beans/HashAdapter.html     |   8 +-
 .../ext/beans/InvalidPropertyException.html        |   8 +-
 docs/api/freemarker/ext/beans/IteratorModel.html   |   8 +-
 docs/api/freemarker/ext/beans/MapModel.html        |   8 +-
 .../ext/beans/MethodAppearanceFineTuner.html       |   8 +-
 docs/api/freemarker/ext/beans/NumberModel.html     |   8 +-
 .../ext/beans/OverloadedMethodsModel.html          |   8 +-
 .../freemarker/ext/beans/ResourceBundleModel.html  |   8 +-
 docs/api/freemarker/ext/beans/SimpleMapModel.html  |   8 +-
 .../freemarker/ext/beans/SimpleMethodModel.html    |   8 +-
 .../freemarker/ext/beans/SingletonCustomizer.html  |   8 +-
 docs/api/freemarker/ext/beans/StringModel.html     |   8 +-
 .../freemarker/ext/beans/class-use/ArrayModel.html |   8 +-
 .../freemarker/ext/beans/class-use/BeanModel.html  |   8 +-
 .../ext/beans/class-use/BeansModelCache.html       |   8 +-
 .../BeansWrapper.MethodAppearanceDecision.html     |   8 +-
 ...BeansWrapper.MethodAppearanceDecisionInput.html |   8 +-
 .../ext/beans/class-use/BeansWrapper.html          |  10 +-
 .../ext/beans/class-use/BeansWrapperBuilder.html   |   8 +-
 .../beans/class-use/BeansWrapperConfiguration.html |  10 +-
 .../ext/beans/class-use/BooleanModel.html          |   8 +-
 .../ext/beans/class-use/CollectionModel.html       |   8 +-
 .../freemarker/ext/beans/class-use/DateModel.html  |   8 +-
 .../ext/beans/class-use/EnumerationModel.html      |   8 +-
 .../ext/beans/class-use/HashAdapter.html           |   8 +-
 .../beans/class-use/InvalidPropertyException.html  |   8 +-
 .../ext/beans/class-use/IteratorModel.html         |   8 +-
 .../freemarker/ext/beans/class-use/MapModel.html   |   8 +-
 .../beans/class-use/MethodAppearanceFineTuner.html |   8 +-
 .../ext/beans/class-use/NumberModel.html           |   8 +-
 .../beans/class-use/OverloadedMethodsModel.html    |   8 +-
 .../ext/beans/class-use/ResourceBundleModel.html   |   8 +-
 .../ext/beans/class-use/SimpleMapModel.html        |   8 +-
 .../ext/beans/class-use/SimpleMethodModel.html     |   8 +-
 .../ext/beans/class-use/SingletonCustomizer.html   |   8 +-
 .../ext/beans/class-use/StringModel.html           |   8 +-
 docs/api/freemarker/ext/beans/package-frame.html   |   6 +-
 docs/api/freemarker/ext/beans/package-summary.html |   8 +-
 docs/api/freemarker/ext/beans/package-tree.html    |   8 +-
 docs/api/freemarker/ext/beans/package-use.html     |  10 +-
 docs/api/freemarker/ext/dom/NodeModel.html         |   8 +-
 docs/api/freemarker/ext/dom/Transform.html         |   8 +-
 docs/api/freemarker/ext/dom/XPathSupport.html      |   8 +-
 .../freemarker/ext/dom/class-use/NodeModel.html    |   8 +-
 .../freemarker/ext/dom/class-use/Transform.html    |   8 +-
 .../freemarker/ext/dom/class-use/XPathSupport.html |   8 +-
 docs/api/freemarker/ext/dom/package-frame.html     |   6 +-
 docs/api/freemarker/ext/dom/package-summary.html   |   8 +-
 docs/api/freemarker/ext/dom/package-tree.html      |   8 +-
 docs/api/freemarker/ext/dom/package-use.html       |   8 +-
 docs/api/freemarker/ext/jdom/NodeListModel.html    |   8 +-
 .../ext/jdom/class-use/NodeListModel.html          |   8 +-
 docs/api/freemarker/ext/jdom/package-frame.html    |   6 +-
 docs/api/freemarker/ext/jdom/package-summary.html  |   8 +-
 docs/api/freemarker/ext/jdom/package-tree.html     |   8 +-
 docs/api/freemarker/ext/jdom/package-use.html      |   8 +-
 docs/api/freemarker/ext/jsp/EventForwarding.html   |   8 +-
 docs/api/freemarker/ext/jsp/FreemarkerTag.html     |   8 +-
 .../TaglibFactory.ClasspathMetaInfTldSource.html   |   8 +-
 .../jsp/TaglibFactory.ClearMetaInfTldSource.html   |   8 +-
 .../ext/jsp/TaglibFactory.MetaInfTldSource.html    |   8 +-
 ...libFactory.WebInfPerLibJarMetaInfTldSource.html |   8 +-
 docs/api/freemarker/ext/jsp/TaglibFactory.html     |  10 +-
 .../ext/jsp/class-use/EventForwarding.html         |   8 +-
 .../ext/jsp/class-use/FreemarkerTag.html           |   8 +-
 .../TaglibFactory.ClasspathMetaInfTldSource.html   |   8 +-
 .../TaglibFactory.ClearMetaInfTldSource.html       |   8 +-
 .../class-use/TaglibFactory.MetaInfTldSource.html  |   8 +-
 ...libFactory.WebInfPerLibJarMetaInfTldSource.html |   8 +-
 .../ext/jsp/class-use/TaglibFactory.html           |   8 +-
 docs/api/freemarker/ext/jsp/package-frame.html     |   6 +-
 docs/api/freemarker/ext/jsp/package-summary.html   |   8 +-
 docs/api/freemarker/ext/jsp/package-tree.html      |   8 +-
 docs/api/freemarker/ext/jsp/package-use.html       |   8 +-
 .../api/freemarker/ext/jython/JythonHashModel.html |   8 +-
 docs/api/freemarker/ext/jython/JythonModel.html    |   8 +-
 .../freemarker/ext/jython/JythonNumberModel.html   |   8 +-
 .../freemarker/ext/jython/JythonSequenceModel.html |   8 +-
 .../ext/jython/JythonVersionAdapter.html           |   8 +-
 docs/api/freemarker/ext/jython/JythonWrapper.html  |   8 +-
 .../ext/jython/class-use/JythonHashModel.html      |   8 +-
 .../ext/jython/class-use/JythonModel.html          |   8 +-
 .../ext/jython/class-use/JythonNumberModel.html    |   8 +-
 .../ext/jython/class-use/JythonSequenceModel.html  |   8 +-
 .../ext/jython/class-use/JythonVersionAdapter.html |   8 +-
 .../ext/jython/class-use/JythonWrapper.html        |   8 +-
 docs/api/freemarker/ext/jython/package-frame.html  |   6 +-
 .../api/freemarker/ext/jython/package-summary.html |   8 +-
 docs/api/freemarker/ext/jython/package-tree.html   |   8 +-
 docs/api/freemarker/ext/jython/package-use.html    |   8 +-
 .../freemarker/ext/rhino/RhinoFunctionModel.html   |   8 +-
 .../freemarker/ext/rhino/RhinoScriptableModel.html |   8 +-
 docs/api/freemarker/ext/rhino/RhinoWrapper.html    |  10 +-
 .../ext/rhino/class-use/RhinoFunctionModel.html    |   8 +-
 .../ext/rhino/class-use/RhinoScriptableModel.html  |   8 +-
 .../ext/rhino/class-use/RhinoWrapper.html          |   8 +-
 docs/api/freemarker/ext/rhino/package-frame.html   |   6 +-
 docs/api/freemarker/ext/rhino/package-summary.html |   8 +-
 docs/api/freemarker/ext/rhino/package-tree.html    |   8 +-
 docs/api/freemarker/ext/rhino/package-use.html     |   8 +-
 .../ext/servlet/AllHttpScopesHashModel.html        |   8 +-
 .../freemarker/ext/servlet/FreemarkerServlet.html  |   8 +-
 .../ext/servlet/HttpRequestHashModel.html          |   8 +-
 .../servlet/HttpRequestParametersHashModel.html    |   8 +-
 .../ext/servlet/HttpSessionHashModel.html          |   8 +-
 docs/api/freemarker/ext/servlet/IncludePage.html   |   8 +-
 .../ext/servlet/ServletContextHashModel.html       |   8 +-
 .../servlet/class-use/AllHttpScopesHashModel.html  |   8 +-
 .../ext/servlet/class-use/FreemarkerServlet.html   |   8 +-
 .../servlet/class-use/HttpRequestHashModel.html    |   8 +-
 .../class-use/HttpRequestParametersHashModel.html  |   8 +-
 .../servlet/class-use/HttpSessionHashModel.html    |   8 +-
 .../ext/servlet/class-use/IncludePage.html         |   8 +-
 .../servlet/class-use/ServletContextHashModel.html |   8 +-
 docs/api/freemarker/ext/servlet/package-frame.html |   6 +-
 .../freemarker/ext/servlet/package-summary.html    |   8 +-
 docs/api/freemarker/ext/servlet/package-tree.html  |   8 +-
 docs/api/freemarker/ext/servlet/package-use.html   |   8 +-
 docs/api/freemarker/ext/util/IdentityHashMap.html  |   8 +-
 docs/api/freemarker/ext/util/ModelCache.html       |   8 +-
 docs/api/freemarker/ext/util/ModelFactory.html     |   8 +-
 .../freemarker/ext/util/WrapperTemplateModel.html  |   8 +-
 .../ext/util/class-use/IdentityHashMap.html        |   8 +-
 .../freemarker/ext/util/class-use/ModelCache.html  |   8 +-
 .../ext/util/class-use/ModelFactory.html           |   8 +-
 .../ext/util/class-use/WrapperTemplateModel.html   |  10 +-
 docs/api/freemarker/ext/util/package-frame.html    |   6 +-
 docs/api/freemarker/ext/util/package-summary.html  |   8 +-
 docs/api/freemarker/ext/util/package-tree.html     |   8 +-
 docs/api/freemarker/ext/util/package-use.html      |  10 +-
 docs/api/freemarker/ext/xml/NodeListModel.html     |   8 +-
 .../ext/xml/class-use/NodeListModel.html           |   8 +-
 docs/api/freemarker/ext/xml/package-frame.html     |   6 +-
 docs/api/freemarker/ext/xml/package-summary.html   |   8 +-
 docs/api/freemarker/ext/xml/package-tree.html      |   8 +-
 docs/api/freemarker/ext/xml/package-use.html       |   8 +-
 docs/api/freemarker/log/Logger.html                |   8 +-
 docs/api/freemarker/log/class-use/Logger.html      |   8 +-
 docs/api/freemarker/log/package-frame.html         |   6 +-
 docs/api/freemarker/log/package-summary.html       |   8 +-
 docs/api/freemarker/log/package-tree.html          |   8 +-
 docs/api/freemarker/log/package-use.html           |   8 +-
 .../freemarker/template/AdapterTemplateModel.html  |   8 +-
 .../template/AttemptExceptionReporter.html         |   8 +-
 docs/api/freemarker/template/Configuration.html    | 578 ++++++++----
 .../freemarker/template/DefaultArrayAdapter.html   |   8 +-
 .../template/DefaultEnumerationAdapter.html        |   8 +-
 .../template/DefaultIterableAdapter.html           |   8 +-
 .../template/DefaultIteratorAdapter.html           |   8 +-
 .../freemarker/template/DefaultListAdapter.html    |   8 +-
 .../api/freemarker/template/DefaultMapAdapter.html |   8 +-
 .../template/DefaultNonListCollectionAdapter.html  |   8 +-
 .../freemarker/template/DefaultObjectWrapper.html  |  10 +-
 .../template/DefaultObjectWrapperBuilder.html      |   8 +-
 .../DefaultObjectWrapperConfiguration.html         |   8 +-
 docs/api/freemarker/template/LocalizedString.html  |   8 +-
 .../template/MalformedTemplateNameException.html   |   8 +-
 .../template/MapKeyValuePairIterator.html          |   8 +-
 docs/api/freemarker/template/ObjectWrapper.html    |   8 +-
 .../template/ObjectWrapperAndUnwrapper.html        |   8 +-
 .../template/ResourceBundleLocalizedString.html    |   8 +-
 docs/api/freemarker/template/SimpleCollection.html |   8 +-
 docs/api/freemarker/template/SimpleDate.html       |   8 +-
 docs/api/freemarker/template/SimpleHash.html       |   8 +-
 docs/api/freemarker/template/SimpleList.html       |   8 +-
 docs/api/freemarker/template/SimpleNumber.html     |   8 +-
 .../freemarker/template/SimpleObjectWrapper.html   |  10 +-
 docs/api/freemarker/template/SimpleScalar.html     |   8 +-
 docs/api/freemarker/template/SimpleSequence.html   |   8 +-
 .../template/Template.WrongEncodingException.html  | 163 ++--
 docs/api/freemarker/template/Template.html         |  21 +-
 .../freemarker/template/TemplateBooleanModel.html  |   8 +-
 .../template/TemplateCollectionModel.html          |   8 +-
 .../template/TemplateCollectionModelEx.html        |   8 +-
 .../api/freemarker/template/TemplateDateModel.html |   8 +-
 .../freemarker/template/TemplateDirectiveBody.html |   8 +-
 .../template/TemplateDirectiveModel.html           |   8 +-
 .../api/freemarker/template/TemplateException.html |   8 +-
 .../template/TemplateExceptionHandler.html         |  30 +-
 .../api/freemarker/template/TemplateHashModel.html |   8 +-
 .../freemarker/template/TemplateHashModelEx.html   |   8 +-
 .../TemplateHashModelEx2.KeyValuePair.html         |   8 +-
 .../TemplateHashModelEx2.KeyValuePairIterator.html |   8 +-
 .../freemarker/template/TemplateHashModelEx2.html  |   8 +-
 .../freemarker/template/TemplateMethodModel.html   |   8 +-
 .../freemarker/template/TemplateMethodModelEx.html |   8 +-
 docs/api/freemarker/template/TemplateModel.html    |   8 +-
 .../freemarker/template/TemplateModelAdapter.html  |   8 +-
 .../template/TemplateModelException.html           |   8 +-
 .../freemarker/template/TemplateModelIterator.html |   8 +-
 .../template/TemplateModelListSequence.html        |   8 +-
 .../template/TemplateModelWithAPISupport.html      |  14 +-
 .../api/freemarker/template/TemplateNodeModel.html |   8 +-
 .../freemarker/template/TemplateNodeModelEx.html   |   8 +-
 .../template/TemplateNotFoundException.html        |   8 +-
 .../freemarker/template/TemplateNumberModel.html   |   8 +-
 .../freemarker/template/TemplateScalarModel.html   |   8 +-
 .../freemarker/template/TemplateSequenceModel.html |   8 +-
 .../template/TemplateTransformModel.html           |   8 +-
 docs/api/freemarker/template/TransformControl.html |   8 +-
 docs/api/freemarker/template/Version.html          |   8 +-
 .../freemarker/template/WrappingTemplateModel.html |   8 +-
 .../template/class-use/AdapterTemplateModel.html   |  10 +-
 .../class-use/AttemptExceptionReporter.html        |  10 +-
 .../template/class-use/Configuration.html          |  10 +-
 .../template/class-use/DefaultArrayAdapter.html    |  10 +-
 .../class-use/DefaultEnumerationAdapter.html       |  10 +-
 .../template/class-use/DefaultIterableAdapter.html |  10 +-
 .../template/class-use/DefaultIteratorAdapter.html |  10 +-
 .../template/class-use/DefaultListAdapter.html     |  10 +-
 .../template/class-use/DefaultMapAdapter.html      |  10 +-
 .../class-use/DefaultNonListCollectionAdapter.html |  10 +-
 .../template/class-use/DefaultObjectWrapper.html   |  10 +-
 .../class-use/DefaultObjectWrapperBuilder.html     |   8 +-
 .../DefaultObjectWrapperConfiguration.html         |  10 +-
 .../template/class-use/LocalizedString.html        |  10 +-
 .../class-use/MalformedTemplateNameException.html  |  10 +-
 .../class-use/MapKeyValuePairIterator.html         |   8 +-
 .../template/class-use/ObjectWrapper.html          |  33 +-
 .../class-use/ObjectWrapperAndUnwrapper.html       |  10 +-
 .../class-use/ResourceBundleLocalizedString.html   |   8 +-
 .../template/class-use/SimpleCollection.html       |   8 +-
 .../freemarker/template/class-use/SimpleDate.html  |   8 +-
 .../freemarker/template/class-use/SimpleHash.html  |  10 +-
 .../freemarker/template/class-use/SimpleList.html  |   8 +-
 .../template/class-use/SimpleNumber.html           |   8 +-
 .../template/class-use/SimpleObjectWrapper.html    |   8 +-
 .../template/class-use/SimpleScalar.html           |  10 +-
 .../template/class-use/SimpleSequence.html         |  10 +-
 .../class-use/Template.WrongEncodingException.html |   8 +-
 .../freemarker/template/class-use/Template.html    |  10 +-
 .../template/class-use/TemplateBooleanModel.html   |  10 +-
 .../class-use/TemplateCollectionModel.html         |  10 +-
 .../class-use/TemplateCollectionModelEx.html       |  10 +-
 .../template/class-use/TemplateDateModel.html      |  10 +-
 .../template/class-use/TemplateDirectiveBody.html  |  10 +-
 .../template/class-use/TemplateDirectiveModel.html |   8 +-
 .../template/class-use/TemplateException.html      | 118 ++-
 .../class-use/TemplateExceptionHandler.html        |  18 +-
 .../template/class-use/TemplateHashModel.html      |  24 +-
 .../template/class-use/TemplateHashModelEx.html    |  10 +-
 .../TemplateHashModelEx2.KeyValuePair.html         |  10 +-
 .../TemplateHashModelEx2.KeyValuePairIterator.html |  10 +-
 .../template/class-use/TemplateHashModelEx2.html   |  10 +-
 .../template/class-use/TemplateMethodModel.html    |  10 +-
 .../template/class-use/TemplateMethodModelEx.html  |   8 +-
 .../template/class-use/TemplateModel.html          | 120 ++-
 .../template/class-use/TemplateModelAdapter.html   |   8 +-
 .../template/class-use/TemplateModelException.html | 104 ++-
 .../template/class-use/TemplateModelIterator.html  |  10 +-
 .../class-use/TemplateModelListSequence.html       |   8 +-
 .../class-use/TemplateModelWithAPISupport.html     |  10 +-
 .../template/class-use/TemplateNodeModel.html      |  10 +-
 .../template/class-use/TemplateNodeModelEx.html    |  10 +-
 .../class-use/TemplateNotFoundException.html       |  10 +-
 .../template/class-use/TemplateNumberModel.html    |  10 +-
 .../template/class-use/TemplateScalarModel.html    | 157 +++-
 .../template/class-use/TemplateSequenceModel.html  |  10 +-
 .../template/class-use/TemplateTransformModel.html |   8 +-
 .../template/class-use/TransformControl.html       |   8 +-
 .../api/freemarker/template/class-use/Version.html |  16 +-
 .../template/class-use/WrappingTemplateModel.html  |  10 +-
 docs/api/freemarker/template/package-frame.html    |   6 +-
 docs/api/freemarker/template/package-summary.html  |  17 +-
 docs/api/freemarker/template/package-tree.html     |   8 +-
 docs/api/freemarker/template/package-use.html      |  33 +-
 .../freemarker/template/utility/CaptureOutput.html |   8 +-
 .../api/freemarker/template/utility/ClassUtil.html |   8 +-
 .../template/utility/CollectionUtils.html          |   8 +-
 .../freemarker/template/utility/Collections12.html |   8 +-
 .../api/freemarker/template/utility/Constants.html |   8 +-
 .../freemarker/template/utility/DOMNodeModel.html  |   8 +-
 .../DateUtil.CalendarFieldsToDateConverter.html    |   8 +-
 .../utility/DateUtil.DateParseException.html       |   8 +-
 .../DateUtil.DateToISO8601CalendarFactory.html     |   8 +-
 ...eUtil.TrivialCalendarFieldsToDateConverter.html |   8 +-
 ...teUtil.TrivialDateToISO8601CalendarFactory.html |   8 +-
 docs/api/freemarker/template/utility/DateUtil.html |   8 +-
 .../freemarker/template/utility/DeepUnwrap.html    |   8 +-
 docs/api/freemarker/template/utility/Execute.html  |   8 +-
 .../freemarker/template/utility/HtmlEscape.html    |   8 +-
 .../freemarker/template/utility/JythonRuntime.html |   8 +-
 .../template/utility/NormalizeNewlines.html        |   8 +-
 .../template/utility/NullArgumentException.html    |   8 +-
 .../freemarker/template/utility/NullWriter.html    |   8 +-
 .../freemarker/template/utility/NumberUtil.html    |   8 +-
 .../template/utility/ObjectConstructor.html        |   8 +-
 .../freemarker/template/utility/ObjectFactory.html |   8 +-
 .../utility/ObjectWrapperWithAPISupport.html       |   8 +-
 .../freemarker/template/utility/OptimizerUtil.html |   8 +-
 .../template/utility/RichObjectWrapper.html        |   8 +-
 .../template/utility/SecurityUtilities.html        |   8 +-
 .../template/utility/StandardCompress.html         |   8 +-
 .../freemarker/template/utility/StringUtil.html    |   8 +-
 .../template/utility/TemplateModelUtils.html       |  91 +-
 .../freemarker/template/utility/ToCanonical.html   |   8 +-
 .../utility/UndeclaredThrowableException.html      |   8 +-
 .../utility/UnrecognizedTimeZoneException.html     |   8 +-
 .../utility/UnsupportedNumberClassException.html   |   8 +-
 .../template/utility/WriteProtectable.html         |   8 +-
 .../api/freemarker/template/utility/XmlEscape.html |   8 +-
 .../template/utility/class-use/CaptureOutput.html  |   8 +-
 .../template/utility/class-use/ClassUtil.html      |   8 +-
 .../utility/class-use/CollectionUtils.html         |   8 +-
 .../template/utility/class-use/Collections12.html  |   8 +-
 .../template/utility/class-use/Constants.html      |   8 +-
 .../template/utility/class-use/DOMNodeModel.html   |   8 +-
 .../DateUtil.CalendarFieldsToDateConverter.html    |   8 +-
 .../class-use/DateUtil.DateParseException.html     |   8 +-
 .../DateUtil.DateToISO8601CalendarFactory.html     |   8 +-
 ...eUtil.TrivialCalendarFieldsToDateConverter.html |   8 +-
 ...teUtil.TrivialDateToISO8601CalendarFactory.html |   8 +-
 .../template/utility/class-use/DateUtil.html       |   8 +-
 .../template/utility/class-use/DeepUnwrap.html     |   8 +-
 .../template/utility/class-use/Execute.html        |   8 +-
 .../template/utility/class-use/HtmlEscape.html     |   8 +-
 .../template/utility/class-use/JythonRuntime.html  |   8 +-
 .../utility/class-use/NormalizeNewlines.html       |   8 +-
 .../utility/class-use/NullArgumentException.html   |   8 +-
 .../template/utility/class-use/NullWriter.html     |   8 +-
 .../template/utility/class-use/NumberUtil.html     |   8 +-
 .../utility/class-use/ObjectConstructor.html       |   8 +-
 .../template/utility/class-use/ObjectFactory.html  |   8 +-
 .../class-use/ObjectWrapperWithAPISupport.html     |  10 +-
 .../template/utility/class-use/OptimizerUtil.html  |   8 +-
 .../utility/class-use/RichObjectWrapper.html       |  10 +-
 .../utility/class-use/SecurityUtilities.html       |   8 +-
 .../utility/class-use/StandardCompress.html        |   8 +-
 .../template/utility/class-use/StringUtil.html     |   8 +-
 .../utility/class-use/TemplateModelUtils.html      |   8 +-
 .../template/utility/class-use/ToCanonical.html    |   8 +-
 .../class-use/UndeclaredThrowableException.html    |   8 +-
 .../class-use/UnrecognizedTimeZoneException.html   |   8 +-
 .../class-use/UnsupportedNumberClassException.html |   8 +-
 .../utility/class-use/WriteProtectable.html        |  10 +-
 .../template/utility/class-use/XmlEscape.html      |   8 +-
 .../freemarker/template/utility/package-frame.html |   6 +-
 .../template/utility/package-summary.html          |   8 +-
 .../freemarker/template/utility/package-tree.html  |   8 +-
 .../freemarker/template/utility/package-use.html   |  10 +-
 docs/api/help-doc.html                             |   8 +-
 docs/api/index-all.html                            | 270 +++++-
 docs/api/index.html                                |   4 +-
 docs/api/overview-frame.html                       |   6 +-
 docs/api/overview-summary.html                     |  12 +-
 docs/api/overview-tree.html                        |  23 +-
 docs/api/serialized-form.html                      |  24 +-
 docs/app.html                                      |  12 +-
 docs/app_eccn.html                                 |  10 +-
 docs/app_faq.html                                  |  49 +-
 docs/app_install.html                              |  10 +-
 docs/app_legal.html                                |  10 +-
 docs/app_license.html                              |  10 +-
 docs/app_versions.html                             |  14 +-
 docs/detailed-toc.html                             |  64 +-
 docs/dgui.html                                     |  10 +-
 docs/dgui_datamodel.html                           |  10 +-
 docs/dgui_datamodel_basics.html                    |  10 +-
 docs/dgui_datamodel_types.html                     |  15 +-
 docs/dgui_misc.html                                |  10 +-
 docs/dgui_misc_alternativesyntax.html              |  10 +-
 docs/dgui_misc_autoescaping.html                   |  10 +-
 docs/dgui_misc_namespace.html                      |  10 +-
 docs/dgui_misc_userdefdir.html                     |  10 +-
 docs/dgui_misc_var.html                            |  19 +-
 docs/dgui_misc_whitespace.html                     |  10 +-
 docs/dgui_quickstart.html                          |  10 +-
 docs/dgui_quickstart_basics.html                   |  10 +-
 docs/dgui_quickstart_datamodel.html                |  10 +-
 docs/dgui_quickstart_template.html                 |  18 +-
 docs/dgui_template.html                            |  10 +-
 docs/dgui_template_directives.html                 |  10 +-
 docs/dgui_template_exp.html                        |  86 +-
 docs/dgui_template_overallstructure.html           |  10 +-
 docs/dgui_template_valueinsertion.html             |  10 +-
 docs/docgen-resources/docgen.min.css               |   2 +-
 docs/docgen-resources/img/callouts/1.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/10.gif          | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/11.gif          | Bin 244 -> 0 bytes
 docs/docgen-resources/img/callouts/12.gif          | Bin 244 -> 0 bytes
 docs/docgen-resources/img/callouts/13.gif          | Bin 244 -> 0 bytes
 docs/docgen-resources/img/callouts/14.gif          | Bin 244 -> 0 bytes
 docs/docgen-resources/img/callouts/2.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/3.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/4.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/5.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/6.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/7.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/8.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/img/callouts/9.gif           | Bin 968 -> 0 bytes
 docs/docgen-resources/main.min.js                  |   2 +-
 docs/eclipse-toc.xml                               |   4 +
 docs/gloss.html                                    |  18 +-
 docs/index.html                                    |  14 +-
 docs/pgui.html                                     |  10 +-
 docs/pgui_config.html                              |  10 +-
 docs/pgui_config_basics.html                       |  10 +-
 docs/pgui_config_custom_formats.html               |  10 +-
 docs/pgui_config_errorhandling.html                |  10 +-
 docs/pgui_config_incompatible_improvements.html    |  10 +-
 docs/pgui_config_outputformatsautoesc.html         |  10 +-
 docs/pgui_config_settings.html                     |  10 +-
 docs/pgui_config_sharedvariables.html              |  10 +-
 docs/pgui_config_templateconfigurations.html       |  10 +-
 docs/pgui_config_templateloading.html              |  10 +-
 docs/pgui_datamodel.html                           |  10 +-
 docs/pgui_datamodel_basics.html                    |  10 +-
 docs/pgui_datamodel_directive.html                 |  10 +-
 docs/pgui_datamodel_method.html                    |  10 +-
 docs/pgui_datamodel_node.html                      |  10 +-
 docs/pgui_datamodel_objectWrapper.html             |  10 +-
 docs/pgui_datamodel_parent.html                    |  10 +-
 docs/pgui_datamodel_scalar.html                    |  10 +-
 docs/pgui_misc.html                                |  10 +-
 docs/pgui_misc_ant.html                            |  10 +-
 docs/pgui_misc_beanwrapper.html                    |  10 +-
 docs/pgui_misc_charset.html                        |  10 +-
 docs/pgui_misc_jythonwrapper.html                  |  10 +-
 docs/pgui_misc_logging.html                        |  10 +-
 docs/pgui_misc_multithreading.html                 |  10 +-
 docs/pgui_misc_secureenv.html                      |  10 +-
 docs/pgui_misc_servlet.html                        |  10 +-
 docs/pgui_misc_var.html                            |  10 +-
 docs/pgui_misc_xml_legacy.html                     |  10 +-
 docs/pgui_quickstart.html                          |  10 +-
 docs/pgui_quickstart_all.html                      |  14 +-
 docs/pgui_quickstart_createconfiguration.html      |  24 +-
 docs/pgui_quickstart_createdatamodel.html          |  10 +-
 docs/pgui_quickstart_gettemplate.html              |  10 +-
 docs/pgui_quickstart_merge.html                    |  10 +-
 docs/ref.html                                      |  10 +-
 docs/ref_builtins.html                             |  10 +-
 docs/ref_builtins_alphaidx.html                    |  31 +-
 docs/ref_builtins_boolean.html                     |  65 +-
 docs/ref_builtins_date.html                        |  10 +-
 docs/ref_builtins_expert.html                      |  61 +-
 docs/ref_builtins_hash.html                        |  10 +-
 docs/ref_builtins_loop_var.html                    |  10 +-
 docs/ref_builtins_node.html                        |  10 +-
 docs/ref_builtins_number.html                      |  17 +-
 docs/ref_builtins_sequence.html                    | 553 +++++++++++-
 docs/ref_builtins_string.html                      | 253 +++++-
 docs/ref_builtins_type_independent.html            |  10 +-
 docs/ref_depr_builtin.html                         |  10 +-
 docs/ref_depr_directive.html                       |  10 +-
 docs/ref_depr_numerical_interpolation.html         |  16 +-
 docs/ref_depr_oldmacro.html                        |  16 +-
 docs/ref_depr_oldsyntax.html                       |  10 +-
 docs/ref_depr_transform.html                       |  16 +-
 docs/ref_deprecated.html                           |  10 +-
 docs/ref_directive_alphaidx.html                   |  10 +-
 docs/ref_directive_assign.html                     |  16 +-
 docs/ref_directive_attempt.html                    |  16 +-
 docs/ref_directive_autoesc.html                    |  16 +-
 docs/ref_directive_compress.html                   |  16 +-
 docs/ref_directive_escape.html                     |  16 +-
 docs/ref_directive_flush.html                      |  16 +-
 docs/ref_directive_ftl.html                        |  16 +-
 docs/ref_directive_function.html                   |  16 +-
 docs/ref_directive_global.html                     |  16 +-
 docs/ref_directive_if.html                         |  16 +-
 docs/ref_directive_import.html                     |  16 +-
 docs/ref_directive_include.html                    |  16 +-
 docs/ref_directive_list.html                       | 201 ++++-
 docs/ref_directive_local.html                      |  16 +-
 docs/ref_directive_macro.html                      |  20 +-
 docs/ref_directive_noautoesc.html                  |  16 +-
 docs/ref_directive_noparse.html                    |  16 +-
 docs/ref_directive_nt.html                         |  16 +-
 docs/ref_directive_outputformat.html               |  16 +-
 docs/ref_directive_setting.html                    |  16 +-
 docs/ref_directive_stop.html                       |  16 +-
 docs/ref_directive_switch.html                     |  16 +-
 docs/ref_directive_t.html                          |  16 +-
 docs/ref_directive_userDefined.html                |  16 +-
 docs/ref_directive_visit.html                      |  24 +-
 docs/ref_directives.html                           |  10 +-
 docs/ref_reservednames.html                        |  10 +-
 docs/ref_specvar.html                              |  10 +-
 docs/search-results.html                           |  10 +-
 docs/sitemap.xml                                   |   3 +
 docs/toc.html                                      |  64 --
 docs/toc.js                                        | 513 ++++++-----
 docs/versions_2_0.html                             |  20 +-
 docs/versions_2_01.html                            |  10 +-
 docs/versions_2_0RC1.html                          |  20 +-
 docs/versions_2_0RC2.html                          |  16 +-
 docs/versions_2_0RC3.html                          |  18 +-
 docs/versions_2_1.html                             |  20 +-
 docs/versions_2_1_1.html                           |  16 +-
 docs/versions_2_1_2.html                           |  16 +-
 docs/versions_2_1_3.html                           |  16 +-
 docs/versions_2_1_4.html                           |  12 +-
 docs/versions_2_1_5.html                           |  12 +-
 docs/versions_2_2.html                             |  30 +-
 docs/versions_2_2_1.html                           |  16 +-
 docs/versions_2_2_2.html                           |  12 +-
 docs/versions_2_2_3.html                           |  16 +-
 docs/versions_2_2_4.html                           |  16 +-
 docs/versions_2_2_5.html                           |  12 +-
 docs/versions_2_2_6.html                           |  18 +-
 docs/versions_2_2_7.html                           |  12 +-
 docs/versions_2_2_8.html                           |  18 +-
 docs/versions_2_3.html                             | 100 +--
 docs/versions_2_3_1.html                           |  24 +-
 docs/versions_2_3_10.html                          |  16 +-
 docs/versions_2_3_11.html                          |  18 +-
 docs/versions_2_3_12.html                          |  12 +-
 docs/versions_2_3_13.html                          |  16 +-
 docs/versions_2_3_14.html                          |  16 +-
 docs/versions_2_3_15.html                          |  16 +-
 docs/versions_2_3_16.html                          |  16 +-
 docs/versions_2_3_17.html                          |  18 +-
 docs/versions_2_3_18.html                          |  16 +-
 docs/versions_2_3_19.html                          |  16 +-
 docs/versions_2_3_2.html                           |  12 +-
 docs/versions_2_3_20.html                          |  18 +-
 docs/versions_2_3_21.html                          |  18 +-
 docs/versions_2_3_22.html                          |  18 +-
 docs/versions_2_3_23.html                          |  20 +-
 docs/versions_2_3_24.html                          |  20 +-
 docs/versions_2_3_25.html                          |  16 +-
 docs/versions_2_3_26.html                          |  18 +-
 docs/versions_2_3_27.html                          |  16 +-
 docs/versions_2_3_28.html                          |  22 +-
 docs/versions_2_3_29.html                          | 256 ++++++
 docs/versions_2_3_3.html                           |  18 +-
 docs/versions_2_3_4.html                           |  18 +-
 docs/versions_2_3_5.html                           |  16 +-
 docs/versions_2_3_6.html                           |  12 +-
 docs/versions_2_3_7.html                           |  16 +-
 docs/versions_2_3_7rc1.html                        |  16 +-
 docs/versions_2_3_8.html                           |  12 +-
 docs/versions_2_3_9.html                           |  12 +-
 docs/xgui.html                                     |  10 +-
 docs/xgui_declarative.html                         |  10 +-
 docs/xgui_declarative_basics.html                  |  10 +-
 docs/xgui_declarative_details.html                 |  18 +-
 docs/xgui_expose.html                              |  10 +-
 docs/xgui_expose_dom.html                          |  10 +-
 docs/xgui_expose_put.html                          |  10 +-
 docs/xgui_imperative.html                          |  10 +-
 docs/xgui_imperative_formal.html                   |  12 +-
 docs/xgui_imperative_learn.html                    |  22 +-
 docs/xgui_preface.html                             |  10 +-
 editors.html                                       |   8 +-
 file-to-file-transformer-tools.html                |   8 +-
 freemarkerdownload.html                            |  42 +-
 history.html                                       |   8 +-
 index.html                                         |   8 +-
 mailing-lists.html                                 |   8 +-
 poweredBy.html                                     |   8 +-
 report-security-vulnerabilities.html               |   8 +-
 sourcecode.html                                    |   8 +-
 836 files changed, 10248 insertions(+), 5313 deletions(-)

diff --git a/committer-howto.html b/committer-howto.html
index 661fde9..d609e66 100644
--- a/committer-howto.html
+++ b/committer-howto.html
@@ -14,7 +14,7 @@
 <link rel="canonical" href="https://freemarker.apache.org/committer-howto.html">
 <link rel="icon" href="favicon.png" type="image/png">
 <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
-<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1564698672290">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1566152527981">
 <script>
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -36,8 +36,8 @@ ga('send', 'pageview');
       <div class="content-wrapper">
   <div id="table-of-contents-wrapper" class="col-left">
       <script>var breadcrumb = ["Apache FreeMarker™","Community","Committer how-to"];</script>
-      <script src="toc.js?1564698672290"></script>
-      <script src="docgen-resources/main.min.js?1564698672290"></script>
+      <script src="toc.js?1566152527981"></script>
+      <script src="docgen-resources/main.min.js?1566152527981"></script>
       <div class="side-toc-logos">
           <div class="side-toc-logo">
             <a href="https://www.apache.org/events/current-event.html" target="_blank"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Apache Incubator" /></a>
@@ -50,9 +50,10 @@ ga('send', 'pageview');
 <div class="page-menu-title">Page Contents</div>
 <ul><li><a class="page-menu-link" href="#git-commit-policy" data-menu-target="git-commit-policy">Git commit policies</a></li><li><a class="page-menu-link" href="#merging-pull-request" data-menu-target="merging-pull-request">Merging in pull requests from GitHub</a></li><li><a class="page-menu-link" href="#close-pull-request-without-merging" data-menu-target="close-pull-request-without-merging">Closing GitHub pull requests without merging</a></li><li><a class="page-menu-link" href="#making [...]
       contributors.</em> A Committer is a person with extra rights who
-      receives his or her status via invitation. You don&#39;t need to be a Committer to
-      contribute, anyone can fork and send pull requests on Github; see more
-      on <a href="contribute.html">the page for contributors</a>.</p>
+      receives his or her status via invitation. You don&#39;t need to be a
+      Committer to contribute, anyone can fork and send pull requests on
+      Github; see more on <a href="contribute.html">the page for
+      contributors</a>.</p>
         
 
 
@@ -551,8 +552,8 @@ ga('send', 'pageview');
           </li>
 
           <li>
-            <p>Update try.freemarker.org to use the latest FreeMarker
-            version. About the deployment, see more <a href="https://cwiki.apache.org/confluence/display/FREEMARKER/try.freemarker.org+maintenance+and+installation">here...</a></p>
+            <p>Update try.freemarker.apache.org to use the latest
+            FreeMarker version. About the deployment, see more <a href="https://cwiki.apache.org/confluence/display/FREEMARKER/try.freemarker.apache.org+maintenance+and+installation">here...</a></p>
           </li>
 
           <li>
@@ -729,7 +730,7 @@ ga('send', 'pageview');
     </div>
 <div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="index.html">What is FreeMarker?</a></li><li><a href="freemarkerdownload.html">Download</a></li><li><a href="docs/app_versions.html">Version history</a></li><li><a href="history.html">About us</a></li><li><a itemprop="license" href="docs/app_license.html">License</a></li></ul></div><div class="column"><h3 class=" [...]
 Last generated:
-<time itemprop="dateModified" datetime="2019-08-01T22:31:12Z" title="Thursday, August 1, 2019 10:31:12 PM GMT">2019-08-01 22:31:12 GMT</time> </p>
+<time itemprop="dateModified" datetime="2019-08-18T18:22:07Z" title="Sunday, August 18, 2019 6:22:07 PM GMT">2019-08-18 18:22:07 GMT</time> </p>
 <p class="copyright">
 © <span itemprop="copyrightYear">1999</span>–2019
 <a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </p>
diff --git a/contribute.html b/contribute.html
index af4c6df..8d85d04 100644
--- a/contribute.html
+++ b/contribute.html
@@ -14,7 +14,7 @@
 <link rel="canonical" href="https://freemarker.apache.org/contribute.html">
 <link rel="icon" href="favicon.png" type="image/png">
 <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
-<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1564698672290">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1566152527981">
 <script>
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -36,8 +36,8 @@ ga('send', 'pageview');
       <div class="content-wrapper">
   <div id="table-of-contents-wrapper" class="col-left">
       <script>var breadcrumb = ["Apache FreeMarker™","Community","Contributors wanted!"];</script>
-      <script src="toc.js?1564698672290"></script>
-      <script src="docgen-resources/main.min.js?1564698672290"></script>
+      <script src="toc.js?1566152527981"></script>
+      <script src="docgen-resources/main.min.js?1566152527981"></script>
       <div class="side-toc-logos">
           <div class="side-toc-logo">
             <a href="https://www.apache.org/events/current-event.html" target="_blank"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Apache Incubator" /></a>
@@ -134,8 +134,8 @@ ga('send', 'pageview');
 
             <ul>
               <li>
-                <p>FreeMarker Spring MVC integration. Someone who knows both
-                well should keep an eye on this, improving it where
+                <p>FreeMarker Spring MVC integration. Someone who knows
+                both well should keep an eye on this, improving it where
                 necessary.</p>
               </li>
 
@@ -231,7 +231,7 @@ ga('send', 'pageview');
     </div>
 <div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="index.html">What is FreeMarker?</a></li><li><a href="freemarkerdownload.html">Download</a></li><li><a href="docs/app_versions.html">Version history</a></li><li><a href="history.html">About us</a></li><li><a itemprop="license" href="docs/app_license.html">License</a></li></ul></div><div class="column"><h3 class=" [...]
 Last generated:
-<time itemprop="dateModified" datetime="2019-08-01T22:31:12Z" title="Thursday, August 1, 2019 10:31:12 PM GMT">2019-08-01 22:31:12 GMT</time> </p>
+<time itemprop="dateModified" datetime="2019-08-18T18:22:07Z" title="Sunday, August 18, 2019 6:22:07 PM GMT">2019-08-18 18:22:07 GMT</time> </p>
 <p class="copyright">
 © <span itemprop="copyrightYear">1999</span>–2019
 <a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </p>
diff --git a/docgen-resources/docgen.min.css b/docgen-resources/docgen.min.css
index d9a30d8..f2b9c58 100644
--- a/docgen-resources/docgen.min.css
+++ b/docgen-resources/docgen.min.css
@@ -1 +1 @@
-@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?-fbty7i);src:url(fonts/icomoon.eot?#iefix-fbty7i) format('embedded-opentype'),url(fonts/icomoon.woff?-fbty7i) format('woff'),url(fonts/icomoon.ttf?-fbty7i) format('truetype'),url(fonts/icomoon.svg?-fbty7i#icomoon) format('svg');font-weight:400;font-style:normal}html{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;font-size:14px;color:#333;line-height:1.5;font-weight:400;background-color:#fff;-webkit-text-size-adjust:100%;-ms-t [...]
\ No newline at end of file
+@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?-fbty7i);src:url(fonts/icomoon.eot?#iefix-fbty7i) format('embedded-opentype'),url(fonts/icomoon.woff?-fbty7i) format('woff'),url(fonts/icomoon.ttf?-fbty7i) format('truetype'),url(fonts/icomoon.svg?-fbty7i#icomoon) format('svg');font-weight:400;font-style:normal}html{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;font-size:14px;color:#333;line-height:1.5;font-weight:400;background-color:#fff;-webkit-text-size-adjust:100%;-moz- [...]
\ No newline at end of file
diff --git a/docgen-resources/main.min.js b/docgen-resources/main.min.js
index c153067..c3bd292 100644
--- a/docgen-resources/main.min.js
+++ b/docgen-resources/main.min.js
@@ -1 +1 @@
-"use strict";!function(t,e){function n(t){var e=null!=t.url,n=document.createElement(e?"a":"span");return n.innerHTML=t.title,e&&(n.href=t.url),n.className="depth-"+d+"-link",n}function a(t){t.stopPropagation();var e=t.target.parentNode;39===t.which?(e.classList.remove("closed"),e.classList.add("open")):37===t.which&&(e.classList.add("closed"),e.classList.remove("open"))}function i(t){if(t.children.length){for(var e=0;e<t.children.length;e++)if(t.children[e].isFile)return!1;return!0}retu [...]
\ No newline at end of file
+"use strict";!function(e,f){var t,n,a,p=0;function h(e){e.stopPropagation();var t=e.target.parentNode;39===e.which?(t.classList.remove("closed"),t.classList.add("open")):37===e.which&&(t.classList.add("closed"),t.classList.remove("open"))}function v(e){if(e.children.length){for(var t=0;t<e.children.length;t++)if(e.children[t].isFile)return!1;return!0}return!0}function g(e){e.stopPropagation();var t=e.target;"LI"===t.tagName.toUpperCase()&&(t.classList.toggle("closed"),t.classList.toggle( [...]
\ No newline at end of file
diff --git a/docs/alphaidx.html b/docs/alphaidx.html
index 2f9d48f..e722410 100644
--- a/docs/alphaidx.html
+++ b/docs/alphaidx.html
@@ -14,7 +14,7 @@
 <link rel="canonical" href="https://freemarker.apache.org/docs/alphaidx.html">
 <link rel="icon" href="favicon.png" type="image/png">
 <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
-<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1522915944172">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1566152331292">
 <script>
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -36,8 +36,8 @@ ga('send', 'pageview');
       <div class="content-wrapper">
   <div id="table-of-contents-wrapper" class="col-left">
       <script>var breadcrumb = ["Apache FreeMarker Manual","Alphabetical Index"];</script>
-      <script src="toc.js?1522915944172"></script>
-      <script src="docgen-resources/main.min.js?1522915944172"></script>
+      <script src="toc.js?1566152331292"></script>
+      <script src="docgen-resources/main.min.js?1566152331292"></script>
   </div>
 <div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="gloss.html"><span>Previous</span></a><span class="paging-arrow disabled next"><span>Next</span></span></div><div class="title-wrapper">
 <h1 class="content-header header-part" id="alphaidx" itemprop="headline">Alphabetical Index</h1>
@@ -176,7 +176,7 @@ ga('send', 'pageview');
         <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Scalars</a></dt>
       </dl></dd>
     <dt>
-      boolean_format,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_117">setting</a>
+      boolean_format,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_121">setting</a>
     </dt>
     <dt>
       boolean built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>
@@ -217,7 +217,7 @@ ga('send', 'pageview');
       case directive,&nbsp;&nbsp;<a href="ref_directive_switch.html">switch, case, default, break</a>
     </dt>
     <dt>
-      catch-all parameter,&nbsp;&nbsp;<a href="ref_directive_macro.html#autoid_104">macro, nested, return</a>
+      catch-all parameter,&nbsp;&nbsp;<a href="ref_directive_macro.html#autoid_108">macro, nested, return</a>
     </dt>
     <dt>
       c built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_c">c (when used with numerical value)</a>,
@@ -243,7 +243,7 @@ ga('send', 'pageview');
       chunk built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_chunk">chunk</a>
     </dt>
     <dt>
-      classic_compatible,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_117">setting</a>
+      classic_compatible,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_121">setting</a>
     </dt>
     <dt>
       collection    </dt>
@@ -445,6 +445,9 @@ ga('send', 'pageview');
     <dt>
       double built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
     </dt>
+    <dt>
+      drop_while built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_drop_while">drop_while</a>
+    </dt>
 </dl></div>
 <div class="indexdiv">
 <a name="idx_E"></a>
@@ -538,6 +541,9 @@ ga('send', 'pageview');
       FAQ,&nbsp;&nbsp;<a href="app_faq.html">FAQ</a>
     </dt>
     <dt>
+      filter built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_filter">filter</a>
+    </dt>
+    <dt>
       first built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_first">first</a>
     </dt>
     <dt>
@@ -552,7 +558,7 @@ ga('send', 'pageview');
     <dt>
       format    </dt>
       <dd><dl>
-        <dt>boolean, <a href="ref_builtins_boolean.html#ref_builtin_c_boolean">c (when used with boolean)</a>, <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">string (when used with a boolean value)</a>, <a href="ref_directive_setting.html#autoid_117">setting</a></dt>
+        <dt>boolean, <a href="ref_builtins_boolean.html#ref_builtin_c_boolean">c (when used with boolean)</a>, <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">string (when used with a boolean value)</a>, <a href="ref_directive_setting.html#autoid_121">setting</a></dt>
         <dt>date, <a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>, <a href="ref_directive_setting.html#topic_date_format_settings">setting</a></dt>
         <dt>date-time, <a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a></dt>
         <dt>number, <a href="ref_builtins_number.html#ref_builtin_c">c (when used with numerical value)</a>, <a href="ref_builtins_number.html#ref_builtin_string_for_number">string (when used with a numerical value)</a>, <a href="ref_directive_setting.html#ref.setting.number_format">setting</a></dt>
@@ -772,7 +778,7 @@ ga('send', 'pageview');
       j_string built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_j_string">j_string</a>
     </dt>
     <dt>
-      JDBC time zone,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_117">setting</a>
+      JDBC time zone,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_121">setting</a>
     </dt>
     <dt>
       join built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_join">join</a>
@@ -832,6 +838,9 @@ ga('send', 'pageview');
 <h2 class="indexLabel">L</h2>
 <dl>
     <dt>
+      lambda,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_lambda">Local lambdas</a>
+    </dt>
+    <dt>
       lang,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
     </dt>
     <dt>
@@ -875,7 +884,7 @@ ga('send', 'pageview');
       local directive,&nbsp;&nbsp;<a href="ref_directive_local.html">local</a>
     </dt>
     <dt>
-      locale,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_117">setting</a>,
+      locale,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_121">setting</a>,
 <a href="ref_specvar.html">Special Variable Reference</a>
     </dt>
     <dt>
@@ -933,6 +942,9 @@ ga('send', 'pageview');
       main_template_name,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
     </dt>
     <dt>
+      map built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_map">map</a>
+    </dt>
+    <dt>
       markup_string built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_markup_string">markup_string</a>
     </dt>
     <dt>
@@ -1114,7 +1126,7 @@ ga('send', 'pageview');
         <dt>generate with Java, <a href="pgui_quickstart_merge.html">Merging the template with the data-model</a></dt>
       </dl></dd>
     <dt>
-      output_encoding,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_117">setting</a>
+      output_encoding,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_121">setting</a>
     </dt>
     <dt>
       output_format,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
@@ -1280,6 +1292,8 @@ ga('send', 'pageview');
         <dt>accessing subvariable, <a href="dgui_template_exp.html#dgui_template_exp_var_sequence">Retrieving data from a sequence</a></dt>
         <dt>built-ins, <a href="ref_builtins_sequence.html">Built-ins for sequences</a></dt>
         <dt>concatenate, <a href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat">Concatenation</a></dt>
+        <dt>drop while, <a href="ref_builtins_sequence.html#ref_builtin_drop_while">drop_while</a></dt>
+        <dt>filter, <a href="ref_builtins_sequence.html#ref_builtin_filter">filter</a>, <a href="ref_builtins_sequence.html#ref_builtin_map">map</a></dt>
         <dt>iterate, <a href="ref_directive_list.html">list, else, items, sep, break, continue</a></dt>
         <dt>Java side, <a href="pgui_datamodel_parent.html#autoid_33">Containers</a></dt>
         <dt>literal, <a href="dgui_template_exp.html#dgui_template_exp_direct_seuqence">Sequences</a></dt>
@@ -1287,6 +1301,7 @@ ga('send', 'pageview');
         <dt>operations, <a href="dgui_template_exp.html#dgui_template_exp_sequenceop">Sequence operations</a></dt>
         <dt>slice, <a href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice">Sequence slicing</a></dt>
         <dt>sorting, <a href="ref_builtins_sequence.html#ref_builtin_sort">sort</a>, <a href="ref_builtins_sequence.html#ref_builtin_sort_by">sort_by</a></dt>
+        <dt>take while, <a href="ref_builtins_sequence.html#ref_builtin_take_while">take_while</a></dt>
         <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_container">Containers</a></dt>
       </dl></dd>
     <dt>
@@ -1434,6 +1449,9 @@ ga('send', 'pageview');
       taglib,&nbsp;&nbsp;<a href="pgui_misc_servlet.html#autoid_63">Using FreeMarker with servlets</a>
     </dt>
     <dt>
+      take_while built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_take_while">take_while</a>
+    </dt>
+    <dt>
       t directive,&nbsp;&nbsp;<a href="ref_directive_t.html">t, lt, rt</a>
     </dt>
     <dt>
@@ -1496,8 +1514,8 @@ ga('send', 'pageview');
       time_format,&nbsp;&nbsp;<a href="ref_directive_setting.html#topic_date_format_settings">setting</a>
     </dt>
     <dt>
-      time_zone,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_117">setting</a>,
-<a href="ref_directive_setting.html#autoid_117">setting</a>
+      time_zone,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_121">setting</a>,
+<a href="ref_directive_setting.html#autoid_121">setting</a>
     </dt>
     <dt>
       time built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>,
@@ -1532,6 +1550,24 @@ ga('send', 'pageview');
 <a href="ref_directive_t.html">t, lt, rt</a>
     </dt>
     <dt>
+      truncate_c_m built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_truncate">truncate, truncate_...</a>
+    </dt>
+    <dt>
+      truncate_c built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_truncate">truncate, truncate_...</a>
+    </dt>
+    <dt>
+      truncate_m built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_truncate">truncate, truncate_...</a>
+    </dt>
+    <dt>
+      truncate_w_m built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_truncate">truncate, truncate_...</a>
+    </dt>
+    <dt>
+      truncate_w built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_truncate">truncate, truncate_...</a>
+    </dt>
+    <dt>
+      truncate built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_truncate">truncate, truncate_...</a>
+    </dt>
+    <dt>
       type-casting,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>,
 <a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>,
 <a href="ref_builtins_string.html#ref_builtin_number">number</a>,
@@ -1567,7 +1603,7 @@ ga('send', 'pageview');
     </dt>
     <dt>
       url_escaping_charset,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_url">url</a>,
-<a href="ref_directive_setting.html#autoid_117">setting</a>
+<a href="ref_directive_setting.html#autoid_121">setting</a>
     </dt>
     <dt>
       url_path built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_url_path">url_path</a>
@@ -1609,7 +1645,7 @@ ga('send', 'pageview');
       variable,&nbsp;&nbsp;<a href="dgui_misc_var.html">Defining variables in the template</a>
     </dt>
     <dt>
-      variable number of parameters,&nbsp;&nbsp;<a href="ref_directive_macro.html#autoid_104">macro, nested, return</a>
+      variable number of parameters,&nbsp;&nbsp;<a href="ref_directive_macro.html#autoid_108">macro, nested, return</a>
     </dt>
     <dt>
       variables,&nbsp;&nbsp;<a href="pgui_misc_var.html">Variables, scopes</a>
@@ -1689,12 +1725,12 @@ ga('send', 'pageview');
     <dt>
       XML namespace    </dt>
       <dd><dl>
-        <dt>in imperative processing, <a href="xgui_imperative_learn.html#autoid_140">Basics</a></dt>
+        <dt>in imperative processing, <a href="xgui_imperative_learn.html#autoid_144">Basics</a></dt>
       </dl></dd>
     <dt>
       XML namespaces    </dt>
       <dd><dl>
-        <dt>in declarative processing, <a href="xgui_declarative_details.html#autoid_145">Details</a></dt>
+        <dt>in declarative processing, <a href="xgui_declarative_details.html#autoid_149">Details</a></dt>
       </dl></dd>
     <dt>
       XML Schema date parsing,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
@@ -1719,9 +1755,9 @@ ga('send', 'pageview');
     </div>
 <div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="https://freemarker.apache.org/">What is FreeMarker?</a></li><li><a href="https://freemarker.apache.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="https://freemarker.apache.org/history.html">About us</a></li><li><a itemprop="license" href="app_li [...]
 Last generated:
-<time itemprop="dateModified" datetime="2018-04-05T08:12:24Z" title="Thursday, April 5, 2018 8:12:24 AM GMT">2018-04-05 08:12:24 GMT</time>, for Freemarker 2.3.28 </p>
+<time itemprop="dateModified" datetime="2019-08-18T18:18:51Z" title="Sunday, August 18, 2019 6:18:51 PM GMT">2019-08-18 18:18:51 GMT</time>, for Freemarker 2.3.29 </p>
 <p class="copyright">
-© <span itemprop="copyrightYear">1999</span>–2018
+© <span itemprop="copyrightYear">1999</span>–2019
 <a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="https://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </p>
 </div></div></div></body>
 </html>
diff --git a/docs/apache-incubator.png b/docs/apache-incubator.png
deleted file mode 100644
index 7ab45fc..0000000
Binary files a/docs/apache-incubator.png and /dev/null differ
diff --git a/docs/api/allclasses-frame.html b/docs/api/allclasses-frame.html
index feed42d..2ebe0c1 100644
--- a/docs/api/allclasses-frame.html
+++ b/docs/api/allclasses-frame.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:48 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:25 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>All Classes (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>All Classes (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
 <script type="text/javascript" src="script.js"></script>
 </head>
@@ -80,6 +80,7 @@
 <li><a href="freemarker/template/DefaultObjectWrapper.html" title="class in freemarker.template" target="classFrame">DefaultObjectWrapper</a></li>
 <li><a href="freemarker/template/DefaultObjectWrapperBuilder.html" title="class in freemarker.template" target="classFrame">DefaultObjectWrapperBuilder</a></li>
 <li><a href="freemarker/template/DefaultObjectWrapperConfiguration.html" title="class in freemarker.template" target="classFrame">DefaultObjectWrapperConfiguration</a></li>
+<li><a href="freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core" target="classFrame">DefaultTruncateBuiltinAlgorithm</a></li>
 <li><a href="freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core" target="classFrame"><span class="interfaceName">DirectiveCallPlace</span></a></li>
 <li><a href="freemarker/template/utility/DOMNodeModel.html" title="class in freemarker.template.utility" target="classFrame">DOMNodeModel</a></li>
 <li><a href="freemarker/ext/beans/EnumerationModel.html" title="class in freemarker.ext.beans" target="classFrame">EnumerationModel</a></li>
@@ -262,6 +263,7 @@
 <li><a href="freemarker/template/utility/ToCanonical.html" title="class in freemarker.template.utility" target="classFrame">ToCanonical</a></li>
 <li><a href="freemarker/ext/dom/Transform.html" title="class in freemarker.ext.dom" target="classFrame">Transform</a></li>
 <li><a href="freemarker/template/TransformControl.html" title="interface in freemarker.template" target="classFrame"><span class="interfaceName">TransformControl</span></a></li>
+<li><a href="freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core" target="classFrame">TruncateBuiltinAlgorithm</a></li>
 <li><a href="freemarker/template/utility/UndeclaredThrowableException.html" title="class in freemarker.template.utility" target="classFrame">UndeclaredThrowableException</a></li>
 <li><a href="freemarker/core/UndefinedCustomFormatException.html" title="class in freemarker.core" target="classFrame">UndefinedCustomFormatException</a></li>
 <li><a href="freemarker/core/UndefinedOutputFormat.html" title="class in freemarker.core" target="classFrame">UndefinedOutputFormat</a></li>
diff --git a/docs/api/allclasses-noframe.html b/docs/api/allclasses-noframe.html
index 34dd62e..1329dd8 100644
--- a/docs/api/allclasses-noframe.html
+++ b/docs/api/allclasses-noframe.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:48 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:25 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>All Classes (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>All Classes (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
 <script type="text/javascript" src="script.js"></script>
 </head>
@@ -80,6 +80,7 @@
 <li><a href="freemarker/template/DefaultObjectWrapper.html" title="class in freemarker.template">DefaultObjectWrapper</a></li>
 <li><a href="freemarker/template/DefaultObjectWrapperBuilder.html" title="class in freemarker.template">DefaultObjectWrapperBuilder</a></li>
 <li><a href="freemarker/template/DefaultObjectWrapperConfiguration.html" title="class in freemarker.template">DefaultObjectWrapperConfiguration</a></li>
+<li><a href="freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core">DefaultTruncateBuiltinAlgorithm</a></li>
 <li><a href="freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core"><span class="interfaceName">DirectiveCallPlace</span></a></li>
 <li><a href="freemarker/template/utility/DOMNodeModel.html" title="class in freemarker.template.utility">DOMNodeModel</a></li>
 <li><a href="freemarker/ext/beans/EnumerationModel.html" title="class in freemarker.ext.beans">EnumerationModel</a></li>
@@ -262,6 +263,7 @@
 <li><a href="freemarker/template/utility/ToCanonical.html" title="class in freemarker.template.utility">ToCanonical</a></li>
 <li><a href="freemarker/ext/dom/Transform.html" title="class in freemarker.ext.dom">Transform</a></li>
 <li><a href="freemarker/template/TransformControl.html" title="interface in freemarker.template"><span class="interfaceName">TransformControl</span></a></li>
+<li><a href="freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></li>
 <li><a href="freemarker/template/utility/UndeclaredThrowableException.html" title="class in freemarker.template.utility">UndeclaredThrowableException</a></li>
 <li><a href="freemarker/core/UndefinedCustomFormatException.html" title="class in freemarker.core">UndefinedCustomFormatException</a></li>
 <li><a href="freemarker/core/UndefinedOutputFormat.html" title="class in freemarker.core">UndefinedOutputFormat</a></li>
diff --git a/docs/api/constant-values.html b/docs/api/constant-values.html
index 075dd22..f39f164 100644
--- a/docs/api/constant-values.html
+++ b/docs/api/constant-values.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Constant Field Values (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Constant Field Values (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
 <script type="text/javascript" src="script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Constant Field Values (FreeMarker 2.3.28 API)";
+            parent.document.title="Constant Field Values (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -675,41 +675,62 @@
 <td class="colLast"><code>"time_zone"</code></td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a name="freemarker.core.Configurable.TRUNCATE_BUILTIN_ALGORITHM_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
+<td><code><a href="freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY">TRUNCATE_BUILTIN_ALGORITHM_KEY</a></code></td>
+<td class="colLast"><code>"truncate_builtin_algorithm"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="freemarker.core.Configurable.TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
+<td><code><a href="freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE">TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE</a></code></td>
+<td class="colLast"><code>"truncateBuiltinAlgorithm"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="freemarker.core.Configurable.TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
+<td><code><a href="freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE">TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE</a></code></td>
+<td class="colLast"><code>"truncate_builtin_algorithm"</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.Configurable.URL_ESCAPING_CHARSET_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY">URL_ESCAPING_CHARSET_KEY</a></code></td>
 <td class="colLast"><code>"url_escaping_charset"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.Configurable.URL_ESCAPING_CHARSET_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY_CAMEL_CASE">URL_ESCAPING_CHARSET_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"urlEscapingCharset"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.Configurable.URL_ESCAPING_CHARSET_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY_SNAKE_CASE">URL_ESCAPING_CHARSET_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"url_escaping_charset"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.Configurable.WRAP_UNCHECKED_EXCEPTIONS_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY">WRAP_UNCHECKED_EXCEPTIONS_KEY</a></code></td>
 <td class="colLast"><code>"wrap_unchecked_exceptions"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.Configurable.WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE">WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"wrapUncheckedExceptions"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.Configurable.WRAP_UNCHECKED_EXCEPTIONS_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
@@ -754,6 +775,39 @@
 </li>
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>freemarker.core.<a href="freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core">DefaultTruncateBuiltinAlgorithm</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="freemarker.core.DefaultTruncateBuiltinAlgorithm.DEFAULT_WORD_BOUNDARY_MIN_LENGTH">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;double</code></td>
+<td><code><a href="freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DEFAULT_WORD_BOUNDARY_MIN_LENGTH">DEFAULT_WORD_BOUNDARY_MIN_LENGTH</a></code></td>
+<td class="colLast"><code>0.75</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="freemarker.core.DefaultTruncateBuiltinAlgorithm.STANDARD_ASCII_TERMINATOR">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
+<td><code><a href="freemarker/core/DefaultTruncateBuiltinAlgorithm.html#STANDARD_ASCII_TERMINATOR">STANDARD_ASCII_TERMINATOR</a></code></td>
+<td class="colLast"><code>"[...]"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="freemarker.core.DefaultTruncateBuiltinAlgorithm.STANDARD_UNICODE_TERMINATOR">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
+<td><code><a href="freemarker/core/DefaultTruncateBuiltinAlgorithm.html#STANDARD_UNICODE_TERMINATOR">STANDARD_UNICODE_TERMINATOR</a></code></td>
+<td class="colLast"><code>"[\u2026]"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>freemarker.core.<a href="freemarker/core/ParseException.html" title="class in freemarker.core">ParseException</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
@@ -773,21 +827,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>AND</code></td>
-<td class="colLast"><code>126</code></td>
+<td class="colLast"><code>127</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.AS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>AS</code></td>
-<td class="colLast"><code>139</code></td>
+<td class="colLast"><code>140</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.ASCII_DIGIT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ASCII_DIGIT</code></td>
-<td class="colLast"><code>146</code></td>
+<td class="colLast"><code>147</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.ASSIGN">
@@ -850,14 +904,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>CLOSE_BRACKET</code></td>
-<td class="colLast"><code>133</code></td>
+<td class="colLast"><code>134</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.CLOSE_PAREN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>CLOSE_PAREN</code></td>
-<td class="colLast"><code>135</code></td>
+<td class="colLast"><code>136</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.CLOSE_TAG1">
@@ -878,21 +932,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>CLOSING_CURLY_BRACKET</code></td>
-<td class="colLast"><code>137</code></td>
+<td class="colLast"><code>138</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.COLON">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>COLON</code></td>
-<td class="colLast"><code>131</code></td>
+<td class="colLast"><code>132</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.COMMA">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>COMMA</code></td>
-<td class="colLast"><code>129</code></td>
+<td class="colLast"><code>130</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.COMMENT">
@@ -941,7 +995,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>DIRECTIVE_END</code></td>
-<td class="colLast"><code>147</code></td>
+<td class="colLast"><code>148</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.DIV_EQUALS">
@@ -955,7 +1009,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>DIVIDE</code></td>
-<td class="colLast"><code>124</code></td>
+<td class="colLast"><code>125</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.DOLLAR_INTERPOLATION_OPENING">
@@ -1004,14 +1058,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>DOUBLE_STAR</code></td>
-<td class="colLast"><code>122</code></td>
+<td class="colLast"><code>123</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.ELLIPSIS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ELLIPSIS</code></td>
-<td class="colLast"><code>123</code></td>
+<td class="colLast"><code>124</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.ELSE">
@@ -1032,7 +1086,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>EMPTY_DIRECTIVE_END</code></td>
-<td class="colLast"><code>148</code></td>
+<td class="colLast"><code>149</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.END_ASSIGN">
@@ -1228,14 +1282,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ESCAPED_ID_CHAR</code></td>
-<td class="colLast"><code>144</code></td>
+<td class="colLast"><code>145</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.EXCLAM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>EXCLAM</code></td>
-<td class="colLast"><code>128</code></td>
+<td class="colLast"><code>129</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.EXISTS">
@@ -1326,14 +1380,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ID</code></td>
-<td class="colLast"><code>141</code></td>
+<td class="colLast"><code>142</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.ID_START_CHAR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ID_START_CHAR</code></td>
-<td class="colLast"><code>145</code></td>
+<td class="colLast"><code>146</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.IF">
@@ -1354,7 +1408,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>IN</code></td>
-<td class="colLast"><code>138</code></td>
+<td class="colLast"><code>139</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.IN_PAREN">
@@ -1382,485 +1436,492 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>KEEP_GOING</code></td>
-<td class="colLast"><code>155</code></td>
+<td class="colLast"><code>156</code></td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a name="freemarker.core.ParseException.LAMBDA_ARROW">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code>LAMBDA_ARROW</code></td>
+<td class="colLast"><code>119</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.LESS_THAN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LESS_THAN</code></td>
 <td class="colLast"><code>115</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.LESS_THAN_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LESS_THAN_EQUALS</code></td>
 <td class="colLast"><code>116</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.LIST">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LIST</code></td>
 <td class="colLast"><code>10</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.LOCALASSIGN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LOCALASSIGN</code></td>
 <td class="colLast"><code>18</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.LONE_LESS_THAN_OR_DASH">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LONE_LESS_THAN_OR_DASH</code></td>
-<td class="colLast"><code>156</code></td>
+<td class="colLast"><code>157</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.LTRIM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LTRIM</code></td>
 <td class="colLast"><code>61</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.MACRO">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MACRO</code></td>
 <td class="colLast"><code>22</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.MAYBE_END">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MAYBE_END</code></td>
-<td class="colLast"><code>154</code></td>
+<td class="colLast"><code>155</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.MINUS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MINUS</code></td>
-<td class="colLast"><code>120</code></td>
+<td class="colLast"><code>121</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.MINUS_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MINUS_EQUALS</code></td>
 <td class="colLast"><code>109</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.MINUS_MINUS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MINUS_MINUS</code></td>
 <td class="colLast"><code>114</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.MOD_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MOD_EQUALS</code></td>
 <td class="colLast"><code>112</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NAMED_PARAMETER_EXPRESSION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NAMED_PARAMETER_EXPRESSION</code></td>
 <td class="colLast"><code>4</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NATURAL_GT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NATURAL_GT</code></td>
-<td class="colLast"><code>149</code></td>
+<td class="colLast"><code>150</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NATURAL_GTE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NATURAL_GTE</code></td>
-<td class="colLast"><code>150</code></td>
+<td class="colLast"><code>151</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NESTED">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NESTED</code></td>
 <td class="colLast"><code>66</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NO_DIRECTIVE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NO_DIRECTIVE</code></td>
 <td class="colLast"><code>1</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NO_PARSE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NO_PARSE</code></td>
 <td class="colLast"><code>7</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NO_SPACE_EXPRESSION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NO_SPACE_EXPRESSION</code></td>
 <td class="colLast"><code>6</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NOAUTOESC">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOAUTOESC</code></td>
 <td class="colLast"><code>31</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NOESCAPE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOESCAPE</code></td>
 <td class="colLast"><code>72</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NON_ESCAPED_ID_START_CHAR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NON_ESCAPED_ID_START_CHAR</code></td>
-<td class="colLast"><code>143</code></td>
+<td class="colLast"><code>144</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NOPARSE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOPARSE</code></td>
 <td class="colLast"><code>35</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NOT_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOT_EQUALS</code></td>
 <td class="colLast"><code>107</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.NOTRIM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOTRIM</code></td>
 <td class="colLast"><code>63</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.OPEN_BRACKET">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OPEN_BRACKET</code></td>
-<td class="colLast"><code>132</code></td>
+<td class="colLast"><code>133</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.OPEN_MISPLACED_INTERPOLATION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OPEN_MISPLACED_INTERPOLATION</code></td>
-<td class="colLast"><code>142</code></td>
+<td class="colLast"><code>143</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.OPEN_PAREN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OPEN_PAREN</code></td>
-<td class="colLast"><code>134</code></td>
+<td class="colLast"><code>135</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.OPENING_CURLY_BRACKET">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OPENING_CURLY_BRACKET</code></td>
-<td class="colLast"><code>136</code></td>
+<td class="colLast"><code>137</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.OR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OR</code></td>
-<td class="colLast"><code>127</code></td>
+<td class="colLast"><code>128</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.OUTPUTFORMAT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OUTPUTFORMAT</code></td>
 <td class="colLast"><code>29</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.PERCENT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>PERCENT</code></td>
-<td class="colLast"><code>125</code></td>
+<td class="colLast"><code>126</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.PLUS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>PLUS</code></td>
-<td class="colLast"><code>119</code></td>
+<td class="colLast"><code>120</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.PLUS_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>PLUS_EQUALS</code></td>
 <td class="colLast"><code>108</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.PLUS_PLUS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>PLUS_PLUS</code></td>
 <td class="colLast"><code>113</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.RAW_STRING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RAW_STRING</code></td>
 <td class="colLast"><code>94</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.RECOVER">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RECOVER</code></td>
 <td class="colLast"><code>7</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.RECURSE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RECURSE</code></td>
 <td class="colLast"><code>68</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.RETURN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RETURN</code></td>
 <td class="colLast"><code>26</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.RTRIM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RTRIM</code></td>
 <td class="colLast"><code>62</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.SEMICOLON">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SEMICOLON</code></td>
-<td class="colLast"><code>130</code></td>
+<td class="colLast"><code>131</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.SEP">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SEP</code></td>
 <td class="colLast"><code>12</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.SETTING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SETTING</code></td>
 <td class="colLast"><code>28</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.SIMPLE_NESTED">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SIMPLE_NESTED</code></td>
 <td class="colLast"><code>65</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.SIMPLE_RECURSE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SIMPLE_RECURSE</code></td>
 <td class="colLast"><code>67</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.SIMPLE_RETURN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SIMPLE_RETURN</code></td>
 <td class="colLast"><code>57</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.SQUARE_BRACKET_INTERPOLATION_OPENING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SQUARE_BRACKET_INTERPOLATION_OPENING</code></td>
 <td class="colLast"><code>84</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.START_TAG">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>START_TAG</code></td>
 <td class="colLast"><code>2</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.STATIC_TEXT_FALSE_ALARM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STATIC_TEXT_FALSE_ALARM</code></td>
 <td class="colLast"><code>81</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.STATIC_TEXT_NON_WS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STATIC_TEXT_NON_WS</code></td>
 <td class="colLast"><code>80</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.STATIC_TEXT_WS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STATIC_TEXT_WS</code></td>
 <td class="colLast"><code>79</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.STOP">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STOP</code></td>
 <td class="colLast"><code>25</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.STRING_LITERAL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STRING_LITERAL</code></td>
 <td class="colLast"><code>93</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.SWITCH">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SWITCH</code></td>
 <td class="colLast"><code>14</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TERMINATING_EXCLAM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TERMINATING_EXCLAM</code></td>
-<td class="colLast"><code>152</code></td>
+<td class="colLast"><code>153</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TERMINATING_WHITESPACE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TERMINATING_WHITESPACE</code></td>
-<td class="colLast"><code>151</code></td>
+<td class="colLast"><code>152</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TERSE_COMMENT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TERSE_COMMENT</code></td>
 <td class="colLast"><code>34</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TERSE_COMMENT_END">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TERSE_COMMENT_END</code></td>
-<td class="colLast"><code>153</code></td>
+<td class="colLast"><code>154</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TIMES">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TIMES</code></td>
-<td class="colLast"><code>121</code></td>
+<td class="colLast"><code>122</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TIMES_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TIMES_EQUALS</code></td>
 <td class="colLast"><code>110</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TRANSFORM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TRANSFORM</code></td>
 <td class="colLast"><code>23</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TRIM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TRIM</code></td>
 <td class="colLast"><code>60</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TRIVIAL_FTL_HEADER">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TRIVIAL_FTL_HEADER</code></td>
 <td class="colLast"><code>77</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.TRUE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TRUE</code></td>
 <td class="colLast"><code>96</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.UNIFIED_CALL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>UNIFIED_CALL</code></td>
 <td class="colLast"><code>74</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.UNIFIED_CALL_END">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>UNIFIED_CALL_END</code></td>
 <td class="colLast"><code>75</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.UNKNOWN_DIRECTIVE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>UNKNOWN_DIRECTIVE</code></td>
 <td class="colLast"><code>78</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.USING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>USING</code></td>
-<td class="colLast"><code>140</code></td>
+<td class="colLast"><code>141</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.core.ParseException.VISIT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
@@ -2603,377 +2664,398 @@
 <td class="colLast"><code>22</code></td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a name="freemarker.template.Configuration.FALLBACK_ON_NULL_LOOP_VARIABLE_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
+<td><code><a href="freemarker/template/Configuration.html#FALLBACK_ON_NULL_LOOP_VARIABLE_KEY">FALLBACK_ON_NULL_LOOP_VARIABLE_KEY</a></code></td>
+<td class="colLast"><code>"fallback_on_null_loop_variable"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="freemarker.template.Configuration.FALLBACK_ON_NULL_LOOP_VARIABLE_KEY_CAMEL_CASE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
+<td><code><a href="freemarker/template/Configuration.html#FALLBACK_ON_NULL_LOOP_VARIABLE_KEY_CAMEL_CASE">FALLBACK_ON_NULL_LOOP_VARIABLE_KEY_CAMEL_CASE</a></code></td>
+<td class="colLast"><code>"fallbackOnNullLoopVariable"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="freemarker.template.Configuration.FALLBACK_ON_NULL_LOOP_VARIABLE_KEY_SNAKE_CASE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
+<td><code><a href="freemarker/template/Configuration.html#FALLBACK_ON_NULL_LOOP_VARIABLE_KEY_SNAKE_CASE">FALLBACK_ON_NULL_LOOP_VARIABLE_KEY_SNAKE_CASE</a></code></td>
+<td class="colLast"><code>"fallback_on_null_loop_variable"</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.INCOMPATIBLE_ENHANCEMENTS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#INCOMPATIBLE_ENHANCEMENTS">INCOMPATIBLE_ENHANCEMENTS</a></code></td>
 <td class="colLast"><code>"incompatible_enhancements"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.INCOMPATIBLE_IMPROVEMENTS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#INCOMPATIBLE_IMPROVEMENTS">INCOMPATIBLE_IMPROVEMENTS</a></code></td>
 <td class="colLast"><code>"incompatible_improvements"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.INCOMPATIBLE_IMPROVEMENTS_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#INCOMPATIBLE_IMPROVEMENTS_KEY">INCOMPATIBLE_IMPROVEMENTS_KEY</a></code></td>
 <td class="colLast"><code>"incompatible_improvements"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.INCOMPATIBLE_IMPROVEMENTS_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#INCOMPATIBLE_IMPROVEMENTS_KEY_CAMEL_CASE">INCOMPATIBLE_IMPROVEMENTS_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"incompatibleImprovements"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.INCOMPATIBLE_IMPROVEMENTS_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#INCOMPATIBLE_IMPROVEMENTS_KEY_SNAKE_CASE">INCOMPATIBLE_IMPROVEMENTS_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"incompatible_improvements"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.INTERPOLATION_SYNTAX_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#INTERPOLATION_SYNTAX_KEY">INTERPOLATION_SYNTAX_KEY</a></code></td>
 <td class="colLast"><code>"interpolation_syntax"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.INTERPOLATION_SYNTAX_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#INTERPOLATION_SYNTAX_KEY_CAMEL_CASE">INTERPOLATION_SYNTAX_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"interpolationSyntax"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.INTERPOLATION_SYNTAX_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#INTERPOLATION_SYNTAX_KEY_SNAKE_CASE">INTERPOLATION_SYNTAX_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"interpolation_syntax"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.LEGACY_INTERPOLATION_SYNTAX">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="freemarker/template/Configuration.html#LEGACY_INTERPOLATION_SYNTAX">LEGACY_INTERPOLATION_SYNTAX</a></code></td>
 <td class="colLast"><code>20</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.LEGACY_NAMING_CONVENTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="freemarker/template/Configuration.html#LEGACY_NAMING_CONVENTION">LEGACY_NAMING_CONVENTION</a></code></td>
 <td class="colLast"><code>11</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.LOCALIZED_LOOKUP_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#LOCALIZED_LOOKUP_KEY">LOCALIZED_LOOKUP_KEY</a></code></td>
 <td class="colLast"><code>"localized_lookup"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.LOCALIZED_LOOKUP_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#LOCALIZED_LOOKUP_KEY_CAMEL_CASE">LOCALIZED_LOOKUP_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"localizedLookup"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.LOCALIZED_LOOKUP_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#LOCALIZED_LOOKUP_KEY_SNAKE_CASE">LOCALIZED_LOOKUP_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"localized_lookup"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.NAMING_CONVENTION_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#NAMING_CONVENTION_KEY">NAMING_CONVENTION_KEY</a></code></td>
 <td class="colLast"><code>"naming_convention"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.NAMING_CONVENTION_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#NAMING_CONVENTION_KEY_CAMEL_CASE">NAMING_CONVENTION_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"namingConvention"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.NAMING_CONVENTION_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#NAMING_CONVENTION_KEY_SNAKE_CASE">NAMING_CONVENTION_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"naming_convention"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.OUTPUT_FORMAT_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#OUTPUT_FORMAT_KEY">OUTPUT_FORMAT_KEY</a></code></td>
 <td class="colLast"><code>"output_format"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.OUTPUT_FORMAT_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#OUTPUT_FORMAT_KEY_CAMEL_CASE">OUTPUT_FORMAT_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"outputFormat"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.OUTPUT_FORMAT_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#OUTPUT_FORMAT_KEY_SNAKE_CASE">OUTPUT_FORMAT_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"output_format"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY">RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY</a></code></td>
 <td class="colLast"><code>"recognize_standard_file_extensions"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY_CAMEL_CASE">RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"recognizeStandardFileExtensions"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY_SNAKE_CASE">RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"recognize_standard_file_extensions"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY">REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY</a></code></td>
 <td class="colLast"><code>"registered_custom_output_formats"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY_CAMEL_CASE">REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"registeredCustomOutputFormats"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY_SNAKE_CASE">REGISTERED_CUSTOM_OUTPUT_FORMATS_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"registered_custom_output_formats"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.SQUARE_BRACKET_INTERPOLATION_SYNTAX">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="freemarker/template/Configuration.html#SQUARE_BRACKET_INTERPOLATION_SYNTAX">SQUARE_BRACKET_INTERPOLATION_SYNTAX</a></code></td>
 <td class="colLast"><code>22</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.SQUARE_BRACKET_TAG_SYNTAX">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="freemarker/template/Configuration.html#SQUARE_BRACKET_TAG_SYNTAX">SQUARE_BRACKET_TAG_SYNTAX</a></code></td>
 <td class="colLast"><code>2</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.STRICT_SYNTAX_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#STRICT_SYNTAX_KEY">STRICT_SYNTAX_KEY</a></code></td>
 <td class="colLast"><code>"strict_syntax"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.STRICT_SYNTAX_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#STRICT_SYNTAX_KEY_CAMEL_CASE">STRICT_SYNTAX_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"strictSyntax"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.STRICT_SYNTAX_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#STRICT_SYNTAX_KEY_SNAKE_CASE">STRICT_SYNTAX_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"strict_syntax"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TAB_SIZE_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TAB_SIZE_KEY">TAB_SIZE_KEY</a></code></td>
 <td class="colLast"><code>"tab_size"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TAB_SIZE_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TAB_SIZE_KEY_CAMEL_CASE">TAB_SIZE_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"tabSize"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TAB_SIZE_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TAB_SIZE_KEY_SNAKE_CASE">TAB_SIZE_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"tab_size"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TAG_SYNTAX_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TAG_SYNTAX_KEY">TAG_SYNTAX_KEY</a></code></td>
 <td class="colLast"><code>"tag_syntax"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TAG_SYNTAX_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TAG_SYNTAX_KEY_CAMEL_CASE">TAG_SYNTAX_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"tagSyntax"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TAG_SYNTAX_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TAG_SYNTAX_KEY_SNAKE_CASE">TAG_SYNTAX_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"tag_syntax"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_CONFIGURATIONS_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_CONFIGURATIONS_KEY">TEMPLATE_CONFIGURATIONS_KEY</a></code></td>
 <td class="colLast"><code>"template_configurations"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_CONFIGURATIONS_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_CONFIGURATIONS_KEY_CAMEL_CASE">TEMPLATE_CONFIGURATIONS_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"templateConfigurations"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_CONFIGURATIONS_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_CONFIGURATIONS_KEY_SNAKE_CASE">TEMPLATE_CONFIGURATIONS_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"template_configurations"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_LOADER_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_LOADER_KEY">TEMPLATE_LOADER_KEY</a></code></td>
 <td class="colLast"><code>"template_loader"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_LOADER_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_LOADER_KEY_CAMEL_CASE">TEMPLATE_LOADER_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"templateLoader"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_LOADER_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_LOADER_KEY_SNAKE_CASE">TEMPLATE_LOADER_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"template_loader"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_LOOKUP_STRATEGY_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_LOOKUP_STRATEGY_KEY">TEMPLATE_LOOKUP_STRATEGY_KEY</a></code></td>
 <td class="colLast"><code>"template_lookup_strategy"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_LOOKUP_STRATEGY_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_LOOKUP_STRATEGY_KEY_CAMEL_CASE">TEMPLATE_LOOKUP_STRATEGY_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"templateLookupStrategy"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_LOOKUP_STRATEGY_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_LOOKUP_STRATEGY_KEY_SNAKE_CASE">TEMPLATE_LOOKUP_STRATEGY_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"template_lookup_strategy"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_NAME_FORMAT_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_NAME_FORMAT_KEY">TEMPLATE_NAME_FORMAT_KEY</a></code></td>
 <td class="colLast"><code>"template_name_format"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_NAME_FORMAT_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_NAME_FORMAT_KEY_CAMEL_CASE">TEMPLATE_NAME_FORMAT_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"templateNameFormat"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_NAME_FORMAT_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_NAME_FORMAT_KEY_SNAKE_CASE">TEMPLATE_NAME_FORMAT_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"template_name_format"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_UPDATE_DELAY_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_UPDATE_DELAY_KEY">TEMPLATE_UPDATE_DELAY_KEY</a></code></td>
 <td class="colLast"><code>"template_update_delay"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_UPDATE_DELAY_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_UPDATE_DELAY_KEY_CAMEL_CASE">TEMPLATE_UPDATE_DELAY_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"templateUpdateDelay"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.TEMPLATE_UPDATE_DELAY_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#TEMPLATE_UPDATE_DELAY_KEY_SNAKE_CASE">TEMPLATE_UPDATE_DELAY_KEY_SNAKE_CASE</a></code></td>
 <td class="colLast"><code>"template_update_delay"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.WHITESPACE_STRIPPING_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#WHITESPACE_STRIPPING_KEY">WHITESPACE_STRIPPING_KEY</a></code></td>
 <td class="colLast"><code>"whitespace_stripping"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.WHITESPACE_STRIPPING_KEY_CAMEL_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
 <td><code><a href="freemarker/template/Configuration.html#WHITESPACE_STRIPPING_KEY_CAMEL_CASE">WHITESPACE_STRIPPING_KEY_CAMEL_CASE</a></code></td>
 <td class="colLast"><code>"whitespaceStripping"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Configuration.WHITESPACE_STRIPPING_KEY_SNAKE_CASE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
@@ -3030,21 +3112,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>AND</code></td>
-<td class="colLast"><code>126</code></td>
+<td class="colLast"><code>127</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.AS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>AS</code></td>
-<td class="colLast"><code>139</code></td>
+<td class="colLast"><code>140</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.ASCII_DIGIT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ASCII_DIGIT</code></td>
-<td class="colLast"><code>146</code></td>
+<td class="colLast"><code>147</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.ASSIGN">
@@ -3107,14 +3189,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>CLOSE_BRACKET</code></td>
-<td class="colLast"><code>133</code></td>
+<td class="colLast"><code>134</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.CLOSE_PAREN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>CLOSE_PAREN</code></td>
-<td class="colLast"><code>135</code></td>
+<td class="colLast"><code>136</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.CLOSE_TAG1">
@@ -3135,21 +3217,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>CLOSING_CURLY_BRACKET</code></td>
-<td class="colLast"><code>137</code></td>
+<td class="colLast"><code>138</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.COLON">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>COLON</code></td>
-<td class="colLast"><code>131</code></td>
+<td class="colLast"><code>132</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.COMMA">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>COMMA</code></td>
-<td class="colLast"><code>129</code></td>
+<td class="colLast"><code>130</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.COMMENT">
@@ -3198,7 +3280,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>DIRECTIVE_END</code></td>
-<td class="colLast"><code>147</code></td>
+<td class="colLast"><code>148</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.DIV_EQUALS">
@@ -3212,7 +3294,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>DIVIDE</code></td>
-<td class="colLast"><code>124</code></td>
+<td class="colLast"><code>125</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.DOLLAR_INTERPOLATION_OPENING">
@@ -3261,14 +3343,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>DOUBLE_STAR</code></td>
-<td class="colLast"><code>122</code></td>
+<td class="colLast"><code>123</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.ELLIPSIS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ELLIPSIS</code></td>
-<td class="colLast"><code>123</code></td>
+<td class="colLast"><code>124</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.ELSE">
@@ -3289,7 +3371,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>EMPTY_DIRECTIVE_END</code></td>
-<td class="colLast"><code>148</code></td>
+<td class="colLast"><code>149</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.END_ASSIGN">
@@ -3485,14 +3567,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ESCAPED_ID_CHAR</code></td>
-<td class="colLast"><code>144</code></td>
+<td class="colLast"><code>145</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.EXCLAM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>EXCLAM</code></td>
-<td class="colLast"><code>128</code></td>
+<td class="colLast"><code>129</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.EXISTS">
@@ -3583,14 +3665,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ID</code></td>
-<td class="colLast"><code>141</code></td>
+<td class="colLast"><code>142</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.ID_START_CHAR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>ID_START_CHAR</code></td>
-<td class="colLast"><code>145</code></td>
+<td class="colLast"><code>146</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.IF">
@@ -3611,7 +3693,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>IN</code></td>
-<td class="colLast"><code>138</code></td>
+<td class="colLast"><code>139</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.IN_PAREN">
@@ -3639,485 +3721,492 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>KEEP_GOING</code></td>
-<td class="colLast"><code>155</code></td>
+<td class="colLast"><code>156</code></td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.LAMBDA_ARROW">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code>LAMBDA_ARROW</code></td>
+<td class="colLast"><code>119</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.LESS_THAN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LESS_THAN</code></td>
 <td class="colLast"><code>115</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.LESS_THAN_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LESS_THAN_EQUALS</code></td>
 <td class="colLast"><code>116</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.LIST">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LIST</code></td>
 <td class="colLast"><code>10</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.LOCALASSIGN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LOCALASSIGN</code></td>
 <td class="colLast"><code>18</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.LONE_LESS_THAN_OR_DASH">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LONE_LESS_THAN_OR_DASH</code></td>
-<td class="colLast"><code>156</code></td>
+<td class="colLast"><code>157</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.LTRIM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>LTRIM</code></td>
 <td class="colLast"><code>61</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.MACRO">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MACRO</code></td>
 <td class="colLast"><code>22</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.MAYBE_END">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MAYBE_END</code></td>
-<td class="colLast"><code>154</code></td>
+<td class="colLast"><code>155</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.MINUS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MINUS</code></td>
-<td class="colLast"><code>120</code></td>
+<td class="colLast"><code>121</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.MINUS_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MINUS_EQUALS</code></td>
 <td class="colLast"><code>109</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.MINUS_MINUS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MINUS_MINUS</code></td>
 <td class="colLast"><code>114</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.MOD_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>MOD_EQUALS</code></td>
 <td class="colLast"><code>112</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NAMED_PARAMETER_EXPRESSION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NAMED_PARAMETER_EXPRESSION</code></td>
 <td class="colLast"><code>4</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NATURAL_GT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NATURAL_GT</code></td>
-<td class="colLast"><code>149</code></td>
+<td class="colLast"><code>150</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NATURAL_GTE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NATURAL_GTE</code></td>
-<td class="colLast"><code>150</code></td>
+<td class="colLast"><code>151</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NESTED">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NESTED</code></td>
 <td class="colLast"><code>66</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NO_DIRECTIVE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NO_DIRECTIVE</code></td>
 <td class="colLast"><code>1</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NO_PARSE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NO_PARSE</code></td>
 <td class="colLast"><code>7</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NO_SPACE_EXPRESSION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NO_SPACE_EXPRESSION</code></td>
 <td class="colLast"><code>6</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NOAUTOESC">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOAUTOESC</code></td>
 <td class="colLast"><code>31</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NOESCAPE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOESCAPE</code></td>
 <td class="colLast"><code>72</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NON_ESCAPED_ID_START_CHAR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NON_ESCAPED_ID_START_CHAR</code></td>
-<td class="colLast"><code>143</code></td>
+<td class="colLast"><code>144</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NOPARSE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOPARSE</code></td>
 <td class="colLast"><code>35</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NOT_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOT_EQUALS</code></td>
 <td class="colLast"><code>107</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.NOTRIM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>NOTRIM</code></td>
 <td class="colLast"><code>63</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.OPEN_BRACKET">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OPEN_BRACKET</code></td>
-<td class="colLast"><code>132</code></td>
+<td class="colLast"><code>133</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.OPEN_MISPLACED_INTERPOLATION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OPEN_MISPLACED_INTERPOLATION</code></td>
-<td class="colLast"><code>142</code></td>
+<td class="colLast"><code>143</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.OPEN_PAREN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OPEN_PAREN</code></td>
-<td class="colLast"><code>134</code></td>
+<td class="colLast"><code>135</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.OPENING_CURLY_BRACKET">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OPENING_CURLY_BRACKET</code></td>
-<td class="colLast"><code>136</code></td>
+<td class="colLast"><code>137</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.OR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OR</code></td>
-<td class="colLast"><code>127</code></td>
+<td class="colLast"><code>128</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.OUTPUTFORMAT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>OUTPUTFORMAT</code></td>
 <td class="colLast"><code>29</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.PERCENT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>PERCENT</code></td>
-<td class="colLast"><code>125</code></td>
+<td class="colLast"><code>126</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.PLUS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>PLUS</code></td>
-<td class="colLast"><code>119</code></td>
+<td class="colLast"><code>120</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.PLUS_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>PLUS_EQUALS</code></td>
 <td class="colLast"><code>108</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.PLUS_PLUS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>PLUS_PLUS</code></td>
 <td class="colLast"><code>113</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.RAW_STRING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RAW_STRING</code></td>
 <td class="colLast"><code>94</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.RECOVER">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RECOVER</code></td>
 <td class="colLast"><code>7</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.RECURSE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RECURSE</code></td>
 <td class="colLast"><code>68</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.RETURN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RETURN</code></td>
 <td class="colLast"><code>26</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.RTRIM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>RTRIM</code></td>
 <td class="colLast"><code>62</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.SEMICOLON">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SEMICOLON</code></td>
-<td class="colLast"><code>130</code></td>
+<td class="colLast"><code>131</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.SEP">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SEP</code></td>
 <td class="colLast"><code>12</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.SETTING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SETTING</code></td>
 <td class="colLast"><code>28</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.SIMPLE_NESTED">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SIMPLE_NESTED</code></td>
 <td class="colLast"><code>65</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.SIMPLE_RECURSE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SIMPLE_RECURSE</code></td>
 <td class="colLast"><code>67</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.SIMPLE_RETURN">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SIMPLE_RETURN</code></td>
 <td class="colLast"><code>57</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.SQUARE_BRACKET_INTERPOLATION_OPENING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SQUARE_BRACKET_INTERPOLATION_OPENING</code></td>
 <td class="colLast"><code>84</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.START_TAG">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>START_TAG</code></td>
 <td class="colLast"><code>2</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.STATIC_TEXT_FALSE_ALARM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STATIC_TEXT_FALSE_ALARM</code></td>
 <td class="colLast"><code>81</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.STATIC_TEXT_NON_WS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STATIC_TEXT_NON_WS</code></td>
 <td class="colLast"><code>80</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.STATIC_TEXT_WS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STATIC_TEXT_WS</code></td>
 <td class="colLast"><code>79</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.STOP">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STOP</code></td>
 <td class="colLast"><code>25</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.STRING_LITERAL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>STRING_LITERAL</code></td>
 <td class="colLast"><code>93</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.SWITCH">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>SWITCH</code></td>
 <td class="colLast"><code>14</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TERMINATING_EXCLAM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TERMINATING_EXCLAM</code></td>
-<td class="colLast"><code>152</code></td>
+<td class="colLast"><code>153</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TERMINATING_WHITESPACE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TERMINATING_WHITESPACE</code></td>
-<td class="colLast"><code>151</code></td>
+<td class="colLast"><code>152</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TERSE_COMMENT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TERSE_COMMENT</code></td>
 <td class="colLast"><code>34</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TERSE_COMMENT_END">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TERSE_COMMENT_END</code></td>
-<td class="colLast"><code>153</code></td>
+<td class="colLast"><code>154</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TIMES">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TIMES</code></td>
-<td class="colLast"><code>121</code></td>
+<td class="colLast"><code>122</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TIMES_EQUALS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TIMES_EQUALS</code></td>
 <td class="colLast"><code>110</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TRANSFORM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TRANSFORM</code></td>
 <td class="colLast"><code>23</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TRIM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TRIM</code></td>
 <td class="colLast"><code>60</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TRIVIAL_FTL_HEADER">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TRIVIAL_FTL_HEADER</code></td>
 <td class="colLast"><code>77</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.TRUE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>TRUE</code></td>
 <td class="colLast"><code>96</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.UNIFIED_CALL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>UNIFIED_CALL</code></td>
 <td class="colLast"><code>74</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.UNIFIED_CALL_END">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>UNIFIED_CALL_END</code></td>
 <td class="colLast"><code>75</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.UNKNOWN_DIRECTIVE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>UNKNOWN_DIRECTIVE</code></td>
 <td class="colLast"><code>78</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.USING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code>USING</code></td>
-<td class="colLast"><code>140</code></td>
+<td class="colLast"><code>141</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="freemarker.template.Template.WrongEncodingException.VISIT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
diff --git a/docs/api/deprecated-list.html b/docs/api/deprecated-list.html
index e0408f9..4c6bd6e 100644
--- a/docs/api/deprecated-list.html
+++ b/docs/api/deprecated-list.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:48 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:25 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Deprecated List (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Deprecated List (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
 <script type="text/javascript" src="script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Deprecated List (FreeMarker 2.3.28 API)";
+            parent.document.title="Deprecated List (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -303,16 +303,21 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="freemarker/ext/beans/BeansWrapper.html#clearClassIntrospecitonCache--">freemarker.ext.beans.BeansWrapper.clearClassIntrospecitonCache()</a>
+<div class="block"><span class="deprecationComment">There's a typo in this method name, so use <a href="freemarker/ext/beans/BeansWrapper.html#clearClassIntrospectionCache--"><code>BeansWrapper.clearClassIntrospectionCache()</code></a> instead.</span></div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/Template.html#containingElements-int-int-">freemarker.template.Template.containingElements(int, int)</a>
 <div class="block"><span class="deprecationComment">Should only be used internally, and might will be removed later.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/cache/TemplateCache.html#createLegacyDefaultTemplateLoader--">freemarker.cache.TemplateCache.createLegacyDefaultTemplateLoader()</a>
 <div class="block"><span class="deprecationComment">The <a href="freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache"><code>TemplateLoader</code></a> should be always specified by the constructor caller.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/ext/beans/BeansWrapper.html#finetuneMethodAppearance-java.lang.Class-java.lang.reflect.Method-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision-">freemarker.ext.beans.BeansWrapper.finetuneMethodAppearance(Class&lt;?&gt;, Method, BeansWrapper.MethodAppearanceDecision)</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/ext/beans/BeansWrapper.html#setMethodAppearanceFineTuner-freemarker.ext.beans.MethodAppearanceFineTuner-"><code>BeansWrapper.setMethodAppearanceFineTuner(MethodAppearanceFineTuner)</code></a>;
      no need to extend this class anymore.
@@ -321,13 +326,13 @@
      called anymore.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/TemplateException.html#getCauseException--">freemarker.template.TemplateException.getCauseException()</a>
 <div class="block"><span class="deprecationComment">Java 1.4 has introduced <code>Throwable.getCause()</code> - use that instead, especially as this can't return
  runtime exceptions and errors as is.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/Configuration.html#getDefaultConfiguration--">freemarker.template.Configuration.getDefaultConfiguration()</a>
 <div class="block"><span class="deprecationComment">The usage of the static singleton (the "default")
  <a href="freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> instance can easily cause erroneous, unpredictable
@@ -339,63 +344,63 @@
  is initialized.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/ext/beans/BeansWrapper.html#getDefaultInstance--">freemarker.ext.beans.BeansWrapper.getDefaultInstance()</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead. The instance returned here is not read-only, so it's
      dangerous to use.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/WrappingTemplateModel.html#getDefaultObjectWrapper--">freemarker.template.WrappingTemplateModel.getDefaultObjectWrapper()</a>
 <div class="block"><span class="deprecationComment">Don't depend on this object, as it can be replace by anybody in the same JVM.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/cache/TemplateCache.html#getFullTemplatePath-freemarker.core.Environment-java.lang.String-java.lang.String-">freemarker.cache.TemplateCache.getFullTemplatePath(Environment, String, String)</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/core/Environment.html#toFullTemplateName-java.lang.String-java.lang.String-"><code>Environment.toFullTemplateName(String, String)</code></a> instead, as that can throw
              <a href="freemarker/template/MalformedTemplateNameException.html" title="class in freemarker.template"><code>MalformedTemplateNameException</code></a>, and is on a more logical place anyway.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/Template.html#getImports--">freemarker.template.Template.getImports()</a>
 <div class="block"><span class="deprecationComment">Should only be used internally, and might will be removed later.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/Configuration.html#getIncompatibleEnhancements--">freemarker.template.Configuration.getIncompatibleEnhancements()</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/template/Configuration.html#getIncompatibleImprovements--"><code>Configuration.getIncompatibleImprovements()</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/ext/beans/BeansWrapper.html#getInstance-java.lang.Object-freemarker.ext.util.ModelFactory-">freemarker.ext.beans.BeansWrapper.getInstance(Object, ModelFactory)</a>
 <div class="block"><span class="deprecationComment">override <a href="freemarker/ext/beans/BeansWrapper.html#getModelFactory-java.lang.Class-"><code>BeansWrapper.getModelFactory(Class)</code></a> instead. Using this
  method will now bypass wrapper caching (if it's enabled) and always 
  result in creation of a new wrapper. This method will be removed in 2.4</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/Template.html#getMacros--">freemarker.template.Template.getMacros()</a>
 <div class="block"><span class="deprecationComment">Should only be used internally, and might will be removed later.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/Configuration.html#getParsedIncompatibleEnhancements--">freemarker.template.Configuration.getParsedIncompatibleEnhancements()</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/template/Configuration.html#getIncompatibleImprovements--"><code>Configuration.getIncompatibleImprovements()</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/Template.html#getRootTreeNode--">freemarker.template.Template.getRootTreeNode()</a>
 <div class="block"><span class="deprecationComment">Should only be used internally, and might will be removed later.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/core/Configurable.html#getSetting-java.lang.String-">freemarker.core.Configurable.getSetting(String)</a>
 <div class="block"><span class="deprecationComment">It's not possible in general to convert setting values to string,
      and thus it's impossible to ensure that <a href="freemarker/core/Configurable.html#setSetting-java.lang.String-java.lang.String-"><code>Configurable.setSetting(String, String)</code></a> will work with
      the returned value correctly.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/core/Configurable.html#getSettings--">freemarker.core.Configurable.getSettings()</a>
 <div class="block"><span class="deprecationComment">This method was always defective, and certainly it always
      will be. Don't use it. (Simply, it's hardly possible in general to
@@ -403,67 +408,67 @@
      <a href="freemarker/core/Configurable.html#setSettings-java.util.Properties-"><code>Configurable.setSettings(Properties)</code></a> will work with them correctly.)</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/core/Environment.html#getTemplate--">freemarker.core.Environment.getTemplate()</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/core/Environment.html#getMainTemplate--"><code>Environment.getMainTemplate()</code></a> instead (or <a href="freemarker/core/Environment.html#getCurrentNamespace--"><code>Environment.getCurrentNamespace()</code></a> and then
              <a href="freemarker/core/Environment.Namespace.html#getTemplate--"><code>Environment.Namespace.getTemplate()</code></a>); the value returned by this method is often not what you expect when
              it comes to macro/function invocations.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/cache/TemplateCache.html#getTemplate-java.lang.String-java.util.Locale-java.lang.String-boolean-">freemarker.cache.TemplateCache.getTemplate(String, Locale, String, boolean)</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/cache/TemplateCache.html#getTemplate-java.lang.String-java.util.Locale-java.lang.Object-java.lang.String-boolean-"><code>TemplateCache.getTemplate(String, Locale, Object, String, boolean)</code></a>, which can return more detailed
              result when the template is missing.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/TemplateException.html#getTemplateName--">freemarker.template.TemplateException.getTemplateName()</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/template/TemplateException.html#getTemplateSourceName--"><code>TemplateException.getTemplateSourceName()</code></a> instead, unless you are really sure that this is what you want.
              This method isn't really deprecated, it's just marked so to warn users about this.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/ext/servlet/FreemarkerServlet.html#getTemplatePath--">freemarker.ext.servlet.FreemarkerServlet.getTemplatePath()</a>
 <div class="block"><span class="deprecationComment">Not called by FreeMarker code, and there's no point to override this (unless to cause confusion).</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/Configuration.html#getVersionNumber--">freemarker.template.Configuration.getVersionNumber()</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/template/Configuration.html#getVersion--"><code>Configuration.getVersion()</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/utility/StringUtil.html#HTMLEnc-java.lang.String-">freemarker.template.utility.StringUtil.HTMLEnc(String)</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/template/utility/StringUtil.html#XHTMLEnc-java.lang.String-"><code>StringUtil.XHTMLEnc(String)</code></a> instead, because it escapes apostrophe-quote too.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/utility/StringUtil.html#isXMLID-java.lang.String-">freemarker.template.utility.StringUtil.isXMLID(String)</a>
 <div class="block"><span class="deprecationComment">Don't use this outside FreeMarker; it's name if misleading, and it doesn't follow the XML specs.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/ext/dom/Transform.html#main-java.lang.String:A-">freemarker.ext.dom.Transform.main(String[])</a>
 <div class="block"><span class="deprecationComment">Will be removed (main method in a library, often classified as CWE-489 "Leftover Debug Code").</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/ext/jdom/NodeListModel.html#main-java.lang.String:A-">freemarker.ext.jdom.NodeListModel.main(String[])</a>
 <div class="block"><span class="deprecationComment">Will be removed (main method in a library, often classified as CWE-489 "Leftover Debug Code").</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/utility/ToCanonical.html#main-java.lang.String:A-">freemarker.template.utility.ToCanonical.main(String[])</a>
 <div class="block"><span class="deprecationComment">Will be removed (main method in a library, often classified as CWE-489 "Leftover Debug Code").</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/utility/DeepUnwrap.html#premissiveUnwrap-freemarker.template.TemplateModel-">freemarker.template.utility.DeepUnwrap.premissiveUnwrap(TemplateModel)</a>
 <div class="block"><span class="deprecationComment">the name of this method is mistyped. Use 
  <a href="freemarker/template/utility/DeepUnwrap.html#permissiveUnwrap-freemarker.template.TemplateModel-"><code>DeepUnwrap.permissiveUnwrap(TemplateModel)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/log/Logger.html#selectLoggerLibrary-int-">freemarker.log.Logger.selectLoggerLibrary(int)</a>
 <div class="block"><span class="deprecationComment">This method isn't reliable, unless you can somehow ensure that you access the FreeMarker classes
              first; use the <a href="freemarker/log/Logger.html#SYSTEM_PROPERTY_NAME_LOGGER_LIBRARY">"org.freemarker.loggerLibrary"</a> Java system property instead, like
@@ -471,60 +476,65 @@
              <a href="freemarker/log/Logger.html#SYSTEM_PROPERTY_NAME_LOGGER_LIBRARY"><code>Logger.SYSTEM_PROPERTY_NAME_LOGGER_LIBRARY</code></a> for more.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/log/Logger.html#setCategoryPrefix-java.lang.String-">freemarker.log.Logger.setCategoryPrefix(String)</a>
 <div class="block"><span class="deprecationComment">This wasn't reliable, unless you can somehow ensure that you access the FreeMarker classes first. As
              it's not known to be useful for users, consider it removed.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/cache/TemplateCache.html#setConfiguration-freemarker.template.Configuration-">freemarker.cache.TemplateCache.setConfiguration(Configuration)</a>
 <div class="block"><span class="deprecationComment">Use the <a href="freemarker/cache/TemplateCache.html#TemplateCache-freemarker.cache.TemplateLoader-freemarker.cache.CacheStorage-freemarker.template.Configuration-"><code>TemplateCache.TemplateCache(TemplateLoader, CacheStorage, Configuration)</code></a> constructor.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/template/Configuration.html#setDefaultConfiguration-freemarker.template.Configuration-">freemarker.template.Configuration.setDefaultConfiguration(Configuration)</a>
 <div class="block"><span class="deprecationComment">Using the "default" <a href="freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> instance can
  easily lead to erroneous, unpredictable behaviour.
  See more <a href="freemarker/template/Configuration.html#getDefaultConfiguration--"><code>here...</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/WrappingTemplateModel.html#setDefaultObjectWrapper-freemarker.template.ObjectWrapper-">freemarker.template.WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper)</a>
 <div class="block"><span class="deprecationComment">This method has VM-wide effect, which makes it unsuitable for application where multiple components
       might use FreeMarker internally.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/ext/dom/NodeModel.html#setDocumentBuilderFactory-javax.xml.parsers.DocumentBuilderFactory-">freemarker.ext.dom.NodeModel.setDocumentBuilderFactory(DocumentBuilderFactory)</a>
 <div class="block"><span class="deprecationComment">It's a bad practice to change static fields, as if multiple independent components do that in the
              same JVM, they unintentionally affect each other. Therefore it's recommended to leave this static
              value at its default.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/Template.html#setEncoding-java.lang.String-">freemarker.template.Template.setEncoding(String)</a>
 <div class="block"><span class="deprecationComment">Should only be used internally, and might will be removed later.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/ext/dom/NodeModel.html#setErrorHandler-org.xml.sax.ErrorHandler-">freemarker.ext.dom.NodeModel.setErrorHandler(ErrorHandler)</a>
 <div class="block"><span class="deprecationComment">It's a bad practice to change static fields, as if multiple independent components do that in the
              same JVM, they unintentionally affect each other. Therefore it's recommended to leave this static
              value at its default.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="freemarker/template/Configuration.html#setIncompatibleEnhancements-java.lang.String-">freemarker.template.Configuration.setIncompatibleEnhancements(String)</a>
 <div class="block"><span class="deprecationComment">Use <a href="freemarker/template/Configuration.html#Configuration-freemarker.template.Version-"><code>Configuration.Configuration(Version)</code></a>, or
     as last chance, <a href="freemarker/template/Configuration.html#setIncompatibleImprovements-freemarker.template.Version-"><code>Configuration.setIncompatibleImprovements(Version)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="freemarker/ext/beans/BeansWrapper.html#setNullModel-freemarker.template.TemplateModel-">freemarker.ext.beans.BeansWrapper.setNullModel(TemplateModel)</a>
 <div class="block"><span class="deprecationComment">Changing the <code>null</code> model can cause a lot of confusion; don't do it.</span></div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colOne"><a href="freemarker/template/Configuration.html#setSharedVaribles-java.util.Map-">freemarker.template.Configuration.setSharedVaribles(Map)</a>
+<div class="block"><span class="deprecationComment">Use <a href="freemarker/template/Configuration.html#setSharedVariables-java.util.Map-"><code>Configuration.setSharedVariables(Map)</code></a> instead.</span></div>
+</td>
+</tr>
 <tr class="rowColor">
 <td class="colOne"><a href="freemarker/core/Configurable.html#setStrictBeanModels-boolean-">freemarker.core.Configurable.setStrictBeanModels(boolean)</a>
 <div class="block"><span class="deprecationComment">Set this on the <a href="freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> itself.</span></div>
diff --git a/docs/api/freemarker/cache/AndMatcher.html b/docs/api/freemarker/cache/AndMatcher.html
index a2a6392..767d6d3 100644
--- a/docs/api/freemarker/cache/AndMatcher.html
+++ b/docs/api/freemarker/cache/AndMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>AndMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>AndMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="AndMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="AndMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/ByteArrayTemplateLoader.html b/docs/api/freemarker/cache/ByteArrayTemplateLoader.html
index 47dca03..dedbec3 100644
--- a/docs/api/freemarker/cache/ByteArrayTemplateLoader.html
+++ b/docs/api/freemarker/cache/ByteArrayTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ByteArrayTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ByteArrayTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ByteArrayTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="ByteArrayTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -371,11 +371,16 @@ implements <a href="../../freemarker/cache/TemplateLoader.html" title="interface
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-">getLastModified</a></code>&nbsp;in interface&nbsp;<code><a href="../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache">TemplateLoader</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>templateSource</code> - an object representing a template source, obtained through a prior call to
+<dd><code>templateSource</code> - an object representing a template source (the template file), obtained through a prior call to
             <a href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>TemplateLoader.findTemplateSource(String)</code></a>. This must be an object on which
             <a href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>TemplateLoader.closeTemplateSource(Object)</code></a> wasn't applied yet.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>the time of last modification of the specified template source, or -1 if the time is not known.</dd>
+<dd>The time of last modification for the specified template source, or -1 if the time is not known. This
+            value meant to be milliseconds since the epoch, but in fact FreeMarker doesn't care what it means, it
+            only cares if it changes, in which case the template needs to be reloaded (even if the value has
+            decreased). -1 is not special in that regard either; if you keep returning it, FreeMarker won't
+            reload the template (as far as it's not evicted from the cache from some other
+            reason). Note that <code>Long.MIN_VALUE</code> is reserved for internal use.</dd>
 </dl>
 </li>
 </ul>
diff --git a/docs/api/freemarker/cache/CacheStorage.html b/docs/api/freemarker/cache/CacheStorage.html
index ab0c428..cd7829b 100644
--- a/docs/api/freemarker/cache/CacheStorage.html
+++ b/docs/api/freemarker/cache/CacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="CacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/CacheStorageWithGetSize.html b/docs/api/freemarker/cache/CacheStorageWithGetSize.html
index 7ea6f93..2963e4f 100644
--- a/docs/api/freemarker/cache/CacheStorageWithGetSize.html
+++ b/docs/api/freemarker/cache/CacheStorageWithGetSize.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CacheStorageWithGetSize (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CacheStorageWithGetSize (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CacheStorageWithGetSize (FreeMarker 2.3.28 API)";
+            parent.document.title="CacheStorageWithGetSize (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/ClassTemplateLoader.html b/docs/api/freemarker/cache/ClassTemplateLoader.html
index 4ca86a7..891f412 100644
--- a/docs/api/freemarker/cache/ClassTemplateLoader.html
+++ b/docs/api/freemarker/cache/ClassTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ClassTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ClassTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ClassTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="ClassTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/ConcurrentCacheStorage.html b/docs/api/freemarker/cache/ConcurrentCacheStorage.html
index ae6b460..82f431a 100644
--- a/docs/api/freemarker/cache/ConcurrentCacheStorage.html
+++ b/docs/api/freemarker/cache/ConcurrentCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ConcurrentCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ConcurrentCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ConcurrentCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="ConcurrentCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/ConditionalTemplateConfigurationFactory.html b/docs/api/freemarker/cache/ConditionalTemplateConfigurationFactory.html
index 88a5f3e..3d5e330 100644
--- a/docs/api/freemarker/cache/ConditionalTemplateConfigurationFactory.html
+++ b/docs/api/freemarker/cache/ConditionalTemplateConfigurationFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ConditionalTemplateConfigurationFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ConditionalTemplateConfigurationFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ConditionalTemplateConfigurationFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="ConditionalTemplateConfigurationFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/FileExtensionMatcher.html b/docs/api/freemarker/cache/FileExtensionMatcher.html
index 902e331..58182e1 100644
--- a/docs/api/freemarker/cache/FileExtensionMatcher.html
+++ b/docs/api/freemarker/cache/FileExtensionMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>FileExtensionMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>FileExtensionMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="FileExtensionMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="FileExtensionMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/FileNameGlobMatcher.html b/docs/api/freemarker/cache/FileNameGlobMatcher.html
index 6838f52..17baed2 100644
--- a/docs/api/freemarker/cache/FileNameGlobMatcher.html
+++ b/docs/api/freemarker/cache/FileNameGlobMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>FileNameGlobMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>FileNameGlobMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="FileNameGlobMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="FileNameGlobMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/FileTemplateLoader.html b/docs/api/freemarker/cache/FileTemplateLoader.html
index 27a6956..5e75487 100644
--- a/docs/api/freemarker/cache/FileTemplateLoader.html
+++ b/docs/api/freemarker/cache/FileTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>FileTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>FileTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="FileTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="FileTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -447,11 +447,16 @@ public&nbsp;FileTemplateLoader()
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-">getLastModified</a></code>&nbsp;in interface&nbsp;<code><a href="../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache">TemplateLoader</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>templateSource</code> - an object representing a template source, obtained through a prior call to
+<dd><code>templateSource</code> - an object representing a template source (the template file), obtained through a prior call to
             <a href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>TemplateLoader.findTemplateSource(String)</code></a>. This must be an object on which
             <a href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>TemplateLoader.closeTemplateSource(Object)</code></a> wasn't applied yet.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>the time of last modification of the specified template source, or -1 if the time is not known.</dd>
+<dd>The time of last modification for the specified template source, or -1 if the time is not known. This
+            value meant to be milliseconds since the epoch, but in fact FreeMarker doesn't care what it means, it
+            only cares if it changes, in which case the template needs to be reloaded (even if the value has
+            decreased). -1 is not special in that regard either; if you keep returning it, FreeMarker won't
+            reload the template (as far as it's not evicted from the cache from some other
+            reason). Note that <code>Long.MIN_VALUE</code> is reserved for internal use.</dd>
 </dl>
 </li>
 </ul>
diff --git a/docs/api/freemarker/cache/FirstMatchTemplateConfigurationFactory.html b/docs/api/freemarker/cache/FirstMatchTemplateConfigurationFactory.html
index 2fbb43a..719268a 100644
--- a/docs/api/freemarker/cache/FirstMatchTemplateConfigurationFactory.html
+++ b/docs/api/freemarker/cache/FirstMatchTemplateConfigurationFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>FirstMatchTemplateConfigurationFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>FirstMatchTemplateConfigurationFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="FirstMatchTemplateConfigurationFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="FirstMatchTemplateConfigurationFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/MergingTemplateConfigurationFactory.html b/docs/api/freemarker/cache/MergingTemplateConfigurationFactory.html
index f14d9fd..57ff6fc 100644
--- a/docs/api/freemarker/cache/MergingTemplateConfigurationFactory.html
+++ b/docs/api/freemarker/cache/MergingTemplateConfigurationFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>MergingTemplateConfigurationFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>MergingTemplateConfigurationFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="MergingTemplateConfigurationFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="MergingTemplateConfigurationFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/MruCacheStorage.html b/docs/api/freemarker/cache/MruCacheStorage.html
index dd728d4..4ae9621 100644
--- a/docs/api/freemarker/cache/MruCacheStorage.html
+++ b/docs/api/freemarker/cache/MruCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>MruCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>MruCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="MruCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="MruCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/MultiTemplateLoader.html b/docs/api/freemarker/cache/MultiTemplateLoader.html
index ca01e84..cec53cf 100644
--- a/docs/api/freemarker/cache/MultiTemplateLoader.html
+++ b/docs/api/freemarker/cache/MultiTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>MultiTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>MultiTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="MultiTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="MultiTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -334,11 +334,16 @@ implements <a href="../../freemarker/cache/StatefulTemplateLoader.html" title="i
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-">getLastModified</a></code>&nbsp;in interface&nbsp;<code><a href="../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache">TemplateLoader</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>templateSource</code> - an object representing a template source, obtained through a prior call to
+<dd><code>templateSource</code> - an object representing a template source (the template file), obtained through a prior call to
             <a href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>TemplateLoader.findTemplateSource(String)</code></a>. This must be an object on which
             <a href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>TemplateLoader.closeTemplateSource(Object)</code></a> wasn't applied yet.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>the time of last modification of the specified template source, or -1 if the time is not known.</dd>
+<dd>The time of last modification for the specified template source, or -1 if the time is not known. This
+            value meant to be milliseconds since the epoch, but in fact FreeMarker doesn't care what it means, it
+            only cares if it changes, in which case the template needs to be reloaded (even if the value has
+            decreased). -1 is not special in that regard either; if you keep returning it, FreeMarker won't
+            reload the template (as far as it's not evicted from the cache from some other
+            reason). Note that <code>Long.MIN_VALUE</code> is reserved for internal use.</dd>
 </dl>
 </li>
 </ul>
diff --git a/docs/api/freemarker/cache/NotMatcher.html b/docs/api/freemarker/cache/NotMatcher.html
index 88c0c3c..ef4ebdb 100644
--- a/docs/api/freemarker/cache/NotMatcher.html
+++ b/docs/api/freemarker/cache/NotMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NotMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NotMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NotMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="NotMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/NullCacheStorage.html b/docs/api/freemarker/cache/NullCacheStorage.html
index 2db471e..711b18c 100644
--- a/docs/api/freemarker/cache/NullCacheStorage.html
+++ b/docs/api/freemarker/cache/NullCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:41 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NullCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NullCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NullCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="NullCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/OrMatcher.html b/docs/api/freemarker/cache/OrMatcher.html
index d5dd796..f3ff123 100644
--- a/docs/api/freemarker/cache/OrMatcher.html
+++ b/docs/api/freemarker/cache/OrMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>OrMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>OrMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="OrMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="OrMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/PathGlobMatcher.html b/docs/api/freemarker/cache/PathGlobMatcher.html
index 8e19ffb..c52d966 100644
--- a/docs/api/freemarker/cache/PathGlobMatcher.html
+++ b/docs/api/freemarker/cache/PathGlobMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>PathGlobMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>PathGlobMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="PathGlobMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="PathGlobMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/PathRegexMatcher.html b/docs/api/freemarker/cache/PathRegexMatcher.html
index c32023c..30c7ed3 100644
--- a/docs/api/freemarker/cache/PathRegexMatcher.html
+++ b/docs/api/freemarker/cache/PathRegexMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>PathRegexMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>PathRegexMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="PathRegexMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="PathRegexMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/SoftCacheStorage.html b/docs/api/freemarker/cache/SoftCacheStorage.html
index 4828440..128fcce 100644
--- a/docs/api/freemarker/cache/SoftCacheStorage.html
+++ b/docs/api/freemarker/cache/SoftCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>SoftCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>SoftCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="SoftCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="SoftCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/StatefulTemplateLoader.html b/docs/api/freemarker/cache/StatefulTemplateLoader.html
index a150b43..23906f1 100644
--- a/docs/api/freemarker/cache/StatefulTemplateLoader.html
+++ b/docs/api/freemarker/cache/StatefulTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>StatefulTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>StatefulTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="StatefulTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="StatefulTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/StringTemplateLoader.html b/docs/api/freemarker/cache/StringTemplateLoader.html
index 9800dfc..9246696 100644
--- a/docs/api/freemarker/cache/StringTemplateLoader.html
+++ b/docs/api/freemarker/cache/StringTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>StringTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>StringTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="StringTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="StringTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -427,11 +427,16 @@ implements <a href="../../freemarker/cache/TemplateLoader.html" title="interface
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-">getLastModified</a></code>&nbsp;in interface&nbsp;<code><a href="../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache">TemplateLoader</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>templateSource</code> - an object representing a template source, obtained through a prior call to
+<dd><code>templateSource</code> - an object representing a template source (the template file), obtained through a prior call to
             <a href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>TemplateLoader.findTemplateSource(String)</code></a>. This must be an object on which
             <a href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>TemplateLoader.closeTemplateSource(Object)</code></a> wasn't applied yet.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>the time of last modification of the specified template source, or -1 if the time is not known.</dd>
+<dd>The time of last modification for the specified template source, or -1 if the time is not known. This
+            value meant to be milliseconds since the epoch, but in fact FreeMarker doesn't care what it means, it
+            only cares if it changes, in which case the template needs to be reloaded (even if the value has
+            decreased). -1 is not special in that regard either; if you keep returning it, FreeMarker won't
+            reload the template (as far as it's not evicted from the cache from some other
+            reason). Note that <code>Long.MIN_VALUE</code> is reserved for internal use.</dd>
 </dl>
 </li>
 </ul>
diff --git a/docs/api/freemarker/cache/StrongCacheStorage.html b/docs/api/freemarker/cache/StrongCacheStorage.html
index e9df168..7f085a2 100644
--- a/docs/api/freemarker/cache/StrongCacheStorage.html
+++ b/docs/api/freemarker/cache/StrongCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:12 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>StrongCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>StrongCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="StrongCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="StrongCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateCache.MaybeMissingTemplate.html b/docs/api/freemarker/cache/TemplateCache.MaybeMissingTemplate.html
index ef7f05f..ce1897f 100644
--- a/docs/api/freemarker/cache/TemplateCache.MaybeMissingTemplate.html
+++ b/docs/api/freemarker/cache/TemplateCache.MaybeMissingTemplate.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateCache.MaybeMissingTemplate (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateCache.MaybeMissingTemplate (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateCache.MaybeMissingTemplate (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateCache.MaybeMissingTemplate (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateCache.html b/docs/api/freemarker/cache/TemplateCache.html
index 9bd5989..7959467 100644
--- a/docs/api/freemarker/cache/TemplateCache.html
+++ b/docs/api/freemarker/cache/TemplateCache.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateCache (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateCache (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateCache (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateCache (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateConfigurationFactory.html b/docs/api/freemarker/cache/TemplateConfigurationFactory.html
index f46f13d..7848e5a 100644
--- a/docs/api/freemarker/cache/TemplateConfigurationFactory.html
+++ b/docs/api/freemarker/cache/TemplateConfigurationFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateConfigurationFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateConfigurationFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateConfigurationFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateConfigurationFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateConfigurationFactoryException.html b/docs/api/freemarker/cache/TemplateConfigurationFactoryException.html
index 5952ab5..ea8d47a 100644
--- a/docs/api/freemarker/cache/TemplateConfigurationFactoryException.html
+++ b/docs/api/freemarker/cache/TemplateConfigurationFactoryException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateConfigurationFactoryException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateConfigurationFactoryException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateConfigurationFactoryException (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateConfigurationFactoryException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateLoader.html b/docs/api/freemarker/cache/TemplateLoader.html
index 1520ca8..addbd1e 100644
--- a/docs/api/freemarker/cache/TemplateLoader.html
+++ b/docs/api/freemarker/cache/TemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -249,11 +249,16 @@ var activeTableTab = "activeTableTab";
  <code>findTemplateSource()</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>templateSource</code> - an object representing a template source, obtained through a prior call to
+<dd><code>templateSource</code> - an object representing a template source (the template file), obtained through a prior call to
             <a href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>findTemplateSource(String)</code></a>. This must be an object on which
             <a href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>closeTemplateSource(Object)</code></a> wasn't applied yet.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>the time of last modification of the specified template source, or -1 if the time is not known.</dd>
+<dd>The time of last modification for the specified template source, or -1 if the time is not known. This
+            value meant to be milliseconds since the epoch, but in fact FreeMarker doesn't care what it means, it
+            only cares if it changes, in which case the template needs to be reloaded (even if the value has
+            decreased). -1 is not special in that regard either; if you keep returning it, FreeMarker won't
+            reload the template (as far as it's not evicted from the cache from some other
+            reason). Note that <code>Long.MIN_VALUE</code> is reserved for internal use.</dd>
 </dl>
 </li>
 </ul>
diff --git a/docs/api/freemarker/cache/TemplateLookupContext.html b/docs/api/freemarker/cache/TemplateLookupContext.html
index 65e5dfb..39e7779 100644
--- a/docs/api/freemarker/cache/TemplateLookupContext.html
+++ b/docs/api/freemarker/cache/TemplateLookupContext.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateLookupContext (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateLookupContext (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateLookupContext (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateLookupContext (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateLookupResult.html b/docs/api/freemarker/cache/TemplateLookupResult.html
index 9b7ae93..0e1c4d8 100644
--- a/docs/api/freemarker/cache/TemplateLookupResult.html
+++ b/docs/api/freemarker/cache/TemplateLookupResult.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateLookupResult (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateLookupResult (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateLookupResult (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateLookupResult (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateLookupStrategy.html b/docs/api/freemarker/cache/TemplateLookupStrategy.html
index 30c9c3f..3fa970b 100644
--- a/docs/api/freemarker/cache/TemplateLookupStrategy.html
+++ b/docs/api/freemarker/cache/TemplateLookupStrategy.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateLookupStrategy (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateLookupStrategy (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateLookupStrategy (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateLookupStrategy (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateNameFormat.html b/docs/api/freemarker/cache/TemplateNameFormat.html
index 8b801bb..386f160 100644
--- a/docs/api/freemarker/cache/TemplateNameFormat.html
+++ b/docs/api/freemarker/cache/TemplateNameFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateNameFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateNameFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateNameFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateNameFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/TemplateSourceMatcher.html b/docs/api/freemarker/cache/TemplateSourceMatcher.html
index a2d3051..88626cd 100644
--- a/docs/api/freemarker/cache/TemplateSourceMatcher.html
+++ b/docs/api/freemarker/cache/TemplateSourceMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateSourceMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateSourceMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateSourceMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateSourceMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/URLTemplateLoader.html b/docs/api/freemarker/cache/URLTemplateLoader.html
index 49a76a4..946b622 100644
--- a/docs/api/freemarker/cache/URLTemplateLoader.html
+++ b/docs/api/freemarker/cache/URLTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>URLTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>URLTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="URLTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="URLTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -315,11 +315,16 @@ implements <a href="../../freemarker/cache/TemplateLoader.html" title="interface
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-">getLastModified</a></code>&nbsp;in interface&nbsp;<code><a href="../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache">TemplateLoader</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>templateSource</code> - an object representing a template source, obtained through a prior call to
+<dd><code>templateSource</code> - an object representing a template source (the template file), obtained through a prior call to
             <a href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>TemplateLoader.findTemplateSource(String)</code></a>. This must be an object on which
             <a href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>TemplateLoader.closeTemplateSource(Object)</code></a> wasn't applied yet.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>the time of last modification of the specified template source, or -1 if the time is not known.</dd>
+<dd>The time of last modification for the specified template source, or -1 if the time is not known. This
+            value meant to be milliseconds since the epoch, but in fact FreeMarker doesn't care what it means, it
+            only cares if it changes, in which case the template needs to be reloaded (even if the value has
+            decreased). -1 is not special in that regard either; if you keep returning it, FreeMarker won't
+            reload the template (as far as it's not evicted from the cache from some other
+            reason). Note that <code>Long.MIN_VALUE</code> is reserved for internal use.</dd>
 </dl>
 </li>
 </ul>
diff --git a/docs/api/freemarker/cache/WebappTemplateLoader.html b/docs/api/freemarker/cache/WebappTemplateLoader.html
index 0fd912e..3145fdd 100644
--- a/docs/api/freemarker/cache/WebappTemplateLoader.html
+++ b/docs/api/freemarker/cache/WebappTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>WebappTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>WebappTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="WebappTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="WebappTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -351,11 +351,16 @@ implements <a href="../../freemarker/cache/TemplateLoader.html" title="interface
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-">getLastModified</a></code>&nbsp;in interface&nbsp;<code><a href="../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache">TemplateLoader</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>templateSource</code> - an object representing a template source, obtained through a prior call to
+<dd><code>templateSource</code> - an object representing a template source (the template file), obtained through a prior call to
             <a href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>TemplateLoader.findTemplateSource(String)</code></a>. This must be an object on which
             <a href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>TemplateLoader.closeTemplateSource(Object)</code></a> wasn't applied yet.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>the time of last modification of the specified template source, or -1 if the time is not known.</dd>
+<dd>The time of last modification for the specified template source, or -1 if the time is not known. This
+            value meant to be milliseconds since the epoch, but in fact FreeMarker doesn't care what it means, it
+            only cares if it changes, in which case the template needs to be reloaded (even if the value has
+            decreased). -1 is not special in that regard either; if you keep returning it, FreeMarker won't
+            reload the template (as far as it's not evicted from the cache from some other
+            reason). Note that <code>Long.MIN_VALUE</code> is reserved for internal use.</dd>
 </dl>
 </li>
 </ul>
diff --git a/docs/api/freemarker/cache/class-use/AndMatcher.html b/docs/api/freemarker/cache/class-use/AndMatcher.html
index a32f337..2baeedb 100644
--- a/docs/api/freemarker/cache/class-use/AndMatcher.html
+++ b/docs/api/freemarker/cache/class-use/AndMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.AndMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.AndMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.AndMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.AndMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/ByteArrayTemplateLoader.html b/docs/api/freemarker/cache/class-use/ByteArrayTemplateLoader.html
index 7fd4028..0fc444c 100644
--- a/docs/api/freemarker/cache/class-use/ByteArrayTemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/ByteArrayTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.ByteArrayTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.ByteArrayTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.ByteArrayTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.ByteArrayTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/CacheStorage.html b/docs/api/freemarker/cache/class-use/CacheStorage.html
index 7c443c9..8b6f994 100644
--- a/docs/api/freemarker/cache/class-use/CacheStorage.html
+++ b/docs/api/freemarker/cache/class-use/CacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Interface freemarker.cache.CacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Interface freemarker.cache.CacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Interface freemarker.cache.CacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Interface freemarker.cache.CacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -94,7 +94,7 @@
 <td class="colLast">
 <div class="block"><b>The fundamental, most commonly used API-s of FreeMarker;</b>
 start with <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> (see also the
-<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Stared</a> in the Manual.)</div>
+<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Started</a> in the Manual.)</div>
 </td>
 </tr>
 </tbody>
diff --git a/docs/api/freemarker/cache/class-use/CacheStorageWithGetSize.html b/docs/api/freemarker/cache/class-use/CacheStorageWithGetSize.html
index 8ecc631..d7b5f96 100644
--- a/docs/api/freemarker/cache/class-use/CacheStorageWithGetSize.html
+++ b/docs/api/freemarker/cache/class-use/CacheStorageWithGetSize.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Interface freemarker.cache.CacheStorageWithGetSize (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Interface freemarker.cache.CacheStorageWithGetSize (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Interface freemarker.cache.CacheStorageWithGetSize (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Interface freemarker.cache.CacheStorageWithGetSize (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/ClassTemplateLoader.html b/docs/api/freemarker/cache/class-use/ClassTemplateLoader.html
index 752876d..687c8e7 100644
--- a/docs/api/freemarker/cache/class-use/ClassTemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/ClassTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.ClassTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.ClassTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.ClassTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.ClassTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/ConcurrentCacheStorage.html b/docs/api/freemarker/cache/class-use/ConcurrentCacheStorage.html
index 01a935e..7e534dd 100644
--- a/docs/api/freemarker/cache/class-use/ConcurrentCacheStorage.html
+++ b/docs/api/freemarker/cache/class-use/ConcurrentCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Interface freemarker.cache.ConcurrentCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Interface freemarker.cache.ConcurrentCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Interface freemarker.cache.ConcurrentCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Interface freemarker.cache.ConcurrentCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/ConditionalTemplateConfigurationFactory.html b/docs/api/freemarker/cache/class-use/ConditionalTemplateConfigurationFactory.html
index 7a52e97..e891556 100644
--- a/docs/api/freemarker/cache/class-use/ConditionalTemplateConfigurationFactory.html
+++ b/docs/api/freemarker/cache/class-use/ConditionalTemplateConfigurationFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.ConditionalTemplateConfigurationFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.ConditionalTemplateConfigurationFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.ConditionalTemplateConfigurationFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.ConditionalTemplateConfigurationFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/FileExtensionMatcher.html b/docs/api/freemarker/cache/class-use/FileExtensionMatcher.html
index 6af31e1..9dd8be9 100644
--- a/docs/api/freemarker/cache/class-use/FileExtensionMatcher.html
+++ b/docs/api/freemarker/cache/class-use/FileExtensionMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.FileExtensionMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.FileExtensionMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.FileExtensionMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.FileExtensionMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/FileNameGlobMatcher.html b/docs/api/freemarker/cache/class-use/FileNameGlobMatcher.html
index b0c7786..6934011 100644
--- a/docs/api/freemarker/cache/class-use/FileNameGlobMatcher.html
+++ b/docs/api/freemarker/cache/class-use/FileNameGlobMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.FileNameGlobMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.FileNameGlobMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.FileNameGlobMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.FileNameGlobMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/FileTemplateLoader.html b/docs/api/freemarker/cache/class-use/FileTemplateLoader.html
index 24d5000..5e6dd16 100644
--- a/docs/api/freemarker/cache/class-use/FileTemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/FileTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.FileTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.FileTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.FileTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.FileTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/FirstMatchTemplateConfigurationFactory.html b/docs/api/freemarker/cache/class-use/FirstMatchTemplateConfigurationFactory.html
index d81bf2b..057db0a 100644
--- a/docs/api/freemarker/cache/class-use/FirstMatchTemplateConfigurationFactory.html
+++ b/docs/api/freemarker/cache/class-use/FirstMatchTemplateConfigurationFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:21 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.FirstMatchTemplateConfigurationFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.FirstMatchTemplateConfigurationFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.FirstMatchTemplateConfigurationFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.FirstMatchTemplateConfigurationFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/MergingTemplateConfigurationFactory.html b/docs/api/freemarker/cache/class-use/MergingTemplateConfigurationFactory.html
index fa77a75..fcb25ba 100644
--- a/docs/api/freemarker/cache/class-use/MergingTemplateConfigurationFactory.html
+++ b/docs/api/freemarker/cache/class-use/MergingTemplateConfigurationFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.MergingTemplateConfigurationFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.MergingTemplateConfigurationFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.MergingTemplateConfigurationFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.MergingTemplateConfigurationFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/MruCacheStorage.html b/docs/api/freemarker/cache/class-use/MruCacheStorage.html
index 4ee487a..4217bf0 100644
--- a/docs/api/freemarker/cache/class-use/MruCacheStorage.html
+++ b/docs/api/freemarker/cache/class-use/MruCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.MruCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.MruCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.MruCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.MruCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/MultiTemplateLoader.html b/docs/api/freemarker/cache/class-use/MultiTemplateLoader.html
index 647c278..f1d10af 100644
--- a/docs/api/freemarker/cache/class-use/MultiTemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/MultiTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.MultiTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.MultiTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.MultiTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.MultiTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/NotMatcher.html b/docs/api/freemarker/cache/class-use/NotMatcher.html
index 656f8c3..6fb2668 100644
--- a/docs/api/freemarker/cache/class-use/NotMatcher.html
+++ b/docs/api/freemarker/cache/class-use/NotMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.NotMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.NotMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.NotMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.NotMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/NullCacheStorage.html b/docs/api/freemarker/cache/class-use/NullCacheStorage.html
index 4a00352..0e1b2de 100644
--- a/docs/api/freemarker/cache/class-use/NullCacheStorage.html
+++ b/docs/api/freemarker/cache/class-use/NullCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.NullCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.NullCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.NullCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.NullCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/OrMatcher.html b/docs/api/freemarker/cache/class-use/OrMatcher.html
index 1ee7a24..d0bf65e 100644
--- a/docs/api/freemarker/cache/class-use/OrMatcher.html
+++ b/docs/api/freemarker/cache/class-use/OrMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.OrMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.OrMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.OrMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.OrMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/PathGlobMatcher.html b/docs/api/freemarker/cache/class-use/PathGlobMatcher.html
index 932a3a6..a7d5860 100644
--- a/docs/api/freemarker/cache/class-use/PathGlobMatcher.html
+++ b/docs/api/freemarker/cache/class-use/PathGlobMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.PathGlobMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.PathGlobMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.PathGlobMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.PathGlobMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/PathRegexMatcher.html b/docs/api/freemarker/cache/class-use/PathRegexMatcher.html
index 6650531..d28a14e 100644
--- a/docs/api/freemarker/cache/class-use/PathRegexMatcher.html
+++ b/docs/api/freemarker/cache/class-use/PathRegexMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.PathRegexMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.PathRegexMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.PathRegexMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.PathRegexMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/SoftCacheStorage.html b/docs/api/freemarker/cache/class-use/SoftCacheStorage.html
index 1cb7401..6172a24 100644
--- a/docs/api/freemarker/cache/class-use/SoftCacheStorage.html
+++ b/docs/api/freemarker/cache/class-use/SoftCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.SoftCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.SoftCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.SoftCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.SoftCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/StatefulTemplateLoader.html b/docs/api/freemarker/cache/class-use/StatefulTemplateLoader.html
index 6231aa3..d313ece 100644
--- a/docs/api/freemarker/cache/class-use/StatefulTemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/StatefulTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Interface freemarker.cache.StatefulTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Interface freemarker.cache.StatefulTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Interface freemarker.cache.StatefulTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Interface freemarker.cache.StatefulTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/StringTemplateLoader.html b/docs/api/freemarker/cache/class-use/StringTemplateLoader.html
index 8367e04..a2ca112 100644
--- a/docs/api/freemarker/cache/class-use/StringTemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/StringTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.StringTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.StringTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.StringTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.StringTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/StrongCacheStorage.html b/docs/api/freemarker/cache/class-use/StrongCacheStorage.html
index 01e14fb..38195f9 100644
--- a/docs/api/freemarker/cache/class-use/StrongCacheStorage.html
+++ b/docs/api/freemarker/cache/class-use/StrongCacheStorage.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.StrongCacheStorage (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.StrongCacheStorage (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.StrongCacheStorage (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.StrongCacheStorage (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/TemplateCache.MaybeMissingTemplate.html b/docs/api/freemarker/cache/class-use/TemplateCache.MaybeMissingTemplate.html
index c7f4784..c1536f4 100644
--- a/docs/api/freemarker/cache/class-use/TemplateCache.MaybeMissingTemplate.html
+++ b/docs/api/freemarker/cache/class-use/TemplateCache.MaybeMissingTemplate.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateCache.MaybeMissingTemplate (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateCache.MaybeMissingTemplate (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateCache.MaybeMissingTemplate (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateCache.MaybeMissingTemplate (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/TemplateCache.html b/docs/api/freemarker/cache/class-use/TemplateCache.html
index 2c166ad..3e8c13f 100644
--- a/docs/api/freemarker/cache/class-use/TemplateCache.html
+++ b/docs/api/freemarker/cache/class-use/TemplateCache.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateCache (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateCache (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateCache (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateCache (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/TemplateConfigurationFactory.html b/docs/api/freemarker/cache/class-use/TemplateConfigurationFactory.html
index 4901142..77cf8eb 100644
--- a/docs/api/freemarker/cache/class-use/TemplateConfigurationFactory.html
+++ b/docs/api/freemarker/cache/class-use/TemplateConfigurationFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateConfigurationFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateConfigurationFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateConfigurationFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateConfigurationFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -94,7 +94,7 @@
 <td class="colLast">
 <div class="block"><b>The fundamental, most commonly used API-s of FreeMarker;</b>
 start with <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> (see also the
-<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Stared</a> in the Manual.)</div>
+<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Started</a> in the Manual.)</div>
 </td>
 </tr>
 </tbody>
diff --git a/docs/api/freemarker/cache/class-use/TemplateConfigurationFactoryException.html b/docs/api/freemarker/cache/class-use/TemplateConfigurationFactoryException.html
index 39a416a..4b632ca 100644
--- a/docs/api/freemarker/cache/class-use/TemplateConfigurationFactoryException.html
+++ b/docs/api/freemarker/cache/class-use/TemplateConfigurationFactoryException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateConfigurationFactoryException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateConfigurationFactoryException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateConfigurationFactoryException (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateConfigurationFactoryException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/TemplateLoader.html b/docs/api/freemarker/cache/class-use/TemplateLoader.html
index 60d316b..5d0e17e 100644
--- a/docs/api/freemarker/cache/class-use/TemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/TemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Interface freemarker.cache.TemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Interface freemarker.cache.TemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Interface freemarker.cache.TemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Interface freemarker.cache.TemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -102,7 +102,7 @@ templates instead of JSP as the MVC View
 <td class="colLast">
 <div class="block"><b>The fundamental, most commonly used API-s of FreeMarker;</b>
 start with <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> (see also the
-<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Stared</a> in the Manual.)</div>
+<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Started</a> in the Manual.)</div>
 </td>
 </tr>
 </tbody>
diff --git a/docs/api/freemarker/cache/class-use/TemplateLookupContext.html b/docs/api/freemarker/cache/class-use/TemplateLookupContext.html
index 685e88a..82fffbd 100644
--- a/docs/api/freemarker/cache/class-use/TemplateLookupContext.html
+++ b/docs/api/freemarker/cache/class-use/TemplateLookupContext.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateLookupContext (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateLookupContext (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateLookupContext (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateLookupContext (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/TemplateLookupResult.html b/docs/api/freemarker/cache/class-use/TemplateLookupResult.html
index 812d786..aad0c75 100644
--- a/docs/api/freemarker/cache/class-use/TemplateLookupResult.html
+++ b/docs/api/freemarker/cache/class-use/TemplateLookupResult.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateLookupResult (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateLookupResult (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateLookupResult (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateLookupResult (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/TemplateLookupStrategy.html b/docs/api/freemarker/cache/class-use/TemplateLookupStrategy.html
index 4f17c7c..85ad956 100644
--- a/docs/api/freemarker/cache/class-use/TemplateLookupStrategy.html
+++ b/docs/api/freemarker/cache/class-use/TemplateLookupStrategy.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateLookupStrategy (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateLookupStrategy (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateLookupStrategy (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateLookupStrategy (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -94,7 +94,7 @@
 <td class="colLast">
 <div class="block"><b>The fundamental, most commonly used API-s of FreeMarker;</b>
 start with <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> (see also the
-<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Stared</a> in the Manual.)</div>
+<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Started</a> in the Manual.)</div>
 </td>
 </tr>
 </tbody>
diff --git a/docs/api/freemarker/cache/class-use/TemplateNameFormat.html b/docs/api/freemarker/cache/class-use/TemplateNameFormat.html
index 7b6da33..f52cc72 100644
--- a/docs/api/freemarker/cache/class-use/TemplateNameFormat.html
+++ b/docs/api/freemarker/cache/class-use/TemplateNameFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateNameFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateNameFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateNameFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateNameFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -94,7 +94,7 @@
 <td class="colLast">
 <div class="block"><b>The fundamental, most commonly used API-s of FreeMarker;</b>
 start with <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> (see also the
-<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Stared</a> in the Manual.)</div>
+<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Started</a> in the Manual.)</div>
 </td>
 </tr>
 </tbody>
diff --git a/docs/api/freemarker/cache/class-use/TemplateSourceMatcher.html b/docs/api/freemarker/cache/class-use/TemplateSourceMatcher.html
index 2074083..e4aa0a0 100644
--- a/docs/api/freemarker/cache/class-use/TemplateSourceMatcher.html
+++ b/docs/api/freemarker/cache/class-use/TemplateSourceMatcher.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.TemplateSourceMatcher (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.TemplateSourceMatcher (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.TemplateSourceMatcher (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.TemplateSourceMatcher (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/URLTemplateLoader.html b/docs/api/freemarker/cache/class-use/URLTemplateLoader.html
index a287798..6a9b56b 100644
--- a/docs/api/freemarker/cache/class-use/URLTemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/URLTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.URLTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.URLTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.URLTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.URLTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/class-use/WebappTemplateLoader.html b/docs/api/freemarker/cache/class-use/WebappTemplateLoader.html
index 5cb9727..6784809 100644
--- a/docs/api/freemarker/cache/class-use/WebappTemplateLoader.html
+++ b/docs/api/freemarker/cache/class-use/WebappTemplateLoader.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:20 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class freemarker.cache.WebappTemplateLoader (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Class freemarker.cache.WebappTemplateLoader (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class freemarker.cache.WebappTemplateLoader (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Class freemarker.cache.WebappTemplateLoader (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/package-frame.html b/docs/api/freemarker/cache/package-frame.html
index 6bf8525..a352a26 100644
--- a/docs/api/freemarker/cache/package-frame.html
+++ b/docs/api/freemarker/cache/package-frame.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:19 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>freemarker.cache (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>freemarker.cache (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
diff --git a/docs/api/freemarker/cache/package-summary.html b/docs/api/freemarker/cache/package-summary.html
index bc786e0..ec0d9b6 100644
--- a/docs/api/freemarker/cache/package-summary.html
+++ b/docs/api/freemarker/cache/package-summary.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:19 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>freemarker.cache (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>freemarker.cache (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="freemarker.cache (FreeMarker 2.3.28 API)";
+            parent.document.title="freemarker.cache (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/package-tree.html b/docs/api/freemarker/cache/package-tree.html
index 62e1d67..6eb96f0 100644
--- a/docs/api/freemarker/cache/package-tree.html
+++ b/docs/api/freemarker/cache/package-tree.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:47 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:19 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>freemarker.cache Class Hierarchy (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>freemarker.cache Class Hierarchy (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="freemarker.cache Class Hierarchy (FreeMarker 2.3.28 API)";
+            parent.document.title="freemarker.cache Class Hierarchy (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/cache/package-use.html b/docs/api/freemarker/cache/package-use.html
index 3429f13..c2e4a19 100644
--- a/docs/api/freemarker/cache/package-use.html
+++ b/docs/api/freemarker/cache/package-use.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:48 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:25 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Package freemarker.cache (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Uses of Package freemarker.cache (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Package freemarker.cache (FreeMarker 2.3.28 API)";
+            parent.document.title="Uses of Package freemarker.cache (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -102,7 +102,7 @@ templates instead of JSP as the MVC View
 <td class="colLast">
 <div class="block"><b>The fundamental, most commonly used API-s of FreeMarker;</b>
 start with <a href="../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> (see also the
-<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Stared</a> in the Manual.)</div>
+<a href="https://freemarker.apache.org/docs/pgui_quickstart.html" target="_blank">Getting Started</a> in the Manual.)</div>
 </td>
 </tr>
 </tbody>
diff --git a/docs/api/freemarker/core/AliasTemplateDateFormatFactory.html b/docs/api/freemarker/core/AliasTemplateDateFormatFactory.html
index 6dbae37..4d15162 100644
--- a/docs/api/freemarker/core/AliasTemplateDateFormatFactory.html
+++ b/docs/api/freemarker/core/AliasTemplateDateFormatFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>AliasTemplateDateFormatFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>AliasTemplateDateFormatFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="AliasTemplateDateFormatFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="AliasTemplateDateFormatFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/AliasTemplateNumberFormatFactory.html b/docs/api/freemarker/core/AliasTemplateNumberFormatFactory.html
index 262110b..b0c464c 100644
--- a/docs/api/freemarker/core/AliasTemplateNumberFormatFactory.html
+++ b/docs/api/freemarker/core/AliasTemplateNumberFormatFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>AliasTemplateNumberFormatFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>AliasTemplateNumberFormatFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="AliasTemplateNumberFormatFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="AliasTemplateNumberFormatFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/ArithmeticEngine.BigDecimalEngine.html b/docs/api/freemarker/core/ArithmeticEngine.BigDecimalEngine.html
index 6b7819a..80e3a7b 100644
--- a/docs/api/freemarker/core/ArithmeticEngine.BigDecimalEngine.html
+++ b/docs/api/freemarker/core/ArithmeticEngine.BigDecimalEngine.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ArithmeticEngine.BigDecimalEngine (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ArithmeticEngine.BigDecimalEngine (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ArithmeticEngine.BigDecimalEngine (FreeMarker 2.3.28 API)";
+            parent.document.title="ArithmeticEngine.BigDecimalEngine (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/ArithmeticEngine.ConservativeEngine.html b/docs/api/freemarker/core/ArithmeticEngine.ConservativeEngine.html
index 43e16e4..db46125 100644
--- a/docs/api/freemarker/core/ArithmeticEngine.ConservativeEngine.html
+++ b/docs/api/freemarker/core/ArithmeticEngine.ConservativeEngine.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ArithmeticEngine.ConservativeEngine (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ArithmeticEngine.ConservativeEngine (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ArithmeticEngine.ConservativeEngine (FreeMarker 2.3.28 API)";
+            parent.document.title="ArithmeticEngine.ConservativeEngine (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/ArithmeticEngine.html b/docs/api/freemarker/core/ArithmeticEngine.html
index 673f1bc..410e749 100644
--- a/docs/api/freemarker/core/ArithmeticEngine.html
+++ b/docs/api/freemarker/core/ArithmeticEngine.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ArithmeticEngine (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ArithmeticEngine (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ArithmeticEngine (FreeMarker 2.3.28 API)";
+            parent.document.title="ArithmeticEngine (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/BugException.html b/docs/api/freemarker/core/BugException.html
index 43c1929..0fe8228 100644
--- a/docs/api/freemarker/core/BugException.html
+++ b/docs/api/freemarker/core/BugException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>BugException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>BugException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="BugException (FreeMarker 2.3.28 API)";
+            parent.document.title="BugException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/BuiltInForNodeEx.html b/docs/api/freemarker/core/BuiltInForNodeEx.html
index 9faa801..51065ca 100644
--- a/docs/api/freemarker/core/BuiltInForNodeEx.html
+++ b/docs/api/freemarker/core/BuiltInForNodeEx.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>BuiltInForNodeEx (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>BuiltInForNodeEx (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,13 +13,13 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="BuiltInForNodeEx (FreeMarker 2.3.28 API)";
+            parent.document.title="BuiltInForNodeEx (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -224,6 +224,14 @@ extends freemarker.core.Expression</pre>
 </td>
 </tr>
 <tr id="i7" class="rowColor">
+<td class="colFirst"><code>protected java.lang.Number</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/BuiltInForNodeEx.html#getOptNumberMethodArg-java.util.List-int-">getOptNumberMethodArg</a></span>(java.util.List&nbsp;args,
+                     int&nbsp;argIdx)</code>
+<div class="block">Same as <a href="../../freemarker/core/BuiltInForNodeEx.html#getNumberMethodArg-java.util.List-int-"><code>getNumberMethodArg(java.util.List, int)</code></a>, but checks if <code>args</code> is big enough, and returns <code>null</code> if it
+ isn't.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>protected java.lang.String</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/BuiltInForNodeEx.html#getOptStringMethodArg-java.util.List-int-">getOptStringMethodArg</a></span>(java.util.List&nbsp;args,
                      int&nbsp;argIdx)</code>
@@ -231,22 +239,26 @@ extends freemarker.core.Expression</pre>
  isn't.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>protected java.lang.String</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/BuiltInForNodeEx.html#getStringMethodArg-java.util.List-int-">getStringMethodArg</a></span>(java.util.List&nbsp;args,
                   int&nbsp;argIdx)</code>
 <div class="block">Gets a method argument and checks if it's a string; it does NOT check if <code>args</code> is big enough.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>protected <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/BuiltInForNodeEx.html#newMethodArgInvalidValueException-int-java.lang.Object:A-">newMethodArgInvalidValueException</a></span>(int&nbsp;argIdx,
                                  java.lang.Object[]&nbsp;details)</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/BuiltInForNodeEx.html#newMethodArgsInvalidValueException-java.lang.Object:A-">newMethodArgsInvalidValueException</a></span>(java.lang.Object[]&nbsp;details)</code>&nbsp;</td>
 </tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/BuiltInForNodeEx.html#setTarget-freemarker.core.Expression-">setTarget</a></span>(freemarker.core.Expression&nbsp;target)</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.freemarker.core.Expression">
@@ -326,6 +338,15 @@ extends freemarker.core.Expression</pre>
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="setTarget-freemarker.core.Expression-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTarget</h4>
+<pre>protected&nbsp;void&nbsp;setTarget(freemarker.core.Expression&nbsp;target)</pre>
+</li>
+</ul>
 <a name="getCanonicalForm--">
 <!--   -->
 </a>
@@ -434,6 +455,23 @@ extends freemarker.core.Expression</pre>
 </dl>
 </li>
 </ul>
+<a name="getOptNumberMethodArg-java.util.List-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getOptNumberMethodArg</h4>
+<pre>protected final&nbsp;java.lang.Number&nbsp;getOptNumberMethodArg(java.util.List&nbsp;args,
+                                                       int&nbsp;argIdx)
+                                                throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
+<div class="block">Same as <a href="../../freemarker/core/BuiltInForNodeEx.html#getNumberMethodArg-java.util.List-int-"><code>getNumberMethodArg(java.util.List, int)</code></a>, but checks if <code>args</code> is big enough, and returns <code>null</code> if it
+ isn't.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getNumberMethodArg-java.util.List-int-">
 <!--   -->
 </a>
diff --git a/docs/api/freemarker/core/CSSOutputFormat.html b/docs/api/freemarker/core/CSSOutputFormat.html
index fa7cea0..8a33ad3 100644
--- a/docs/api/freemarker/core/CSSOutputFormat.html
+++ b/docs/api/freemarker/core/CSSOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CSSOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CSSOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CSSOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="CSSOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/CallPlaceCustomDataInitializationException.html b/docs/api/freemarker/core/CallPlaceCustomDataInitializationException.html
index e4e2e3e..a7c32e7 100644
--- a/docs/api/freemarker/core/CallPlaceCustomDataInitializationException.html
+++ b/docs/api/freemarker/core/CallPlaceCustomDataInitializationException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CallPlaceCustomDataInitializationException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CallPlaceCustomDataInitializationException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CallPlaceCustomDataInitializationException (FreeMarker 2.3.28 API)";
+            parent.document.title="CallPlaceCustomDataInitializationException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/CombinedMarkupOutputFormat.html b/docs/api/freemarker/core/CombinedMarkupOutputFormat.html
index 48deed2..b0e7203 100644
--- a/docs/api/freemarker/core/CombinedMarkupOutputFormat.html
+++ b/docs/api/freemarker/core/CombinedMarkupOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CombinedMarkupOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CombinedMarkupOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CombinedMarkupOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="CombinedMarkupOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/CommandLine.html b/docs/api/freemarker/core/CommandLine.html
index 3eedf6d..b59f290 100644
--- a/docs/api/freemarker/core/CommandLine.html
+++ b/docs/api/freemarker/core/CommandLine.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CommandLine (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CommandLine (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CommandLine (FreeMarker 2.3.28 API)";
+            parent.document.title="CommandLine (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/CommonMarkupOutputFormat.html b/docs/api/freemarker/core/CommonMarkupOutputFormat.html
index 915612a..4589cfe 100644
--- a/docs/api/freemarker/core/CommonMarkupOutputFormat.html
+++ b/docs/api/freemarker/core/CommonMarkupOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CommonMarkupOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CommonMarkupOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CommonMarkupOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="CommonMarkupOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -120,7 +120,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../freemarker/core/CombinedMarkupOutputFormat.html" title="class in freemarker.core">CombinedMarkupOutputFormat</a>, <a href="../../freemarker/core/HTMLOutputFormat.html" title="class in freemarker.core">HTMLOutputFormat</a>, <a href="../../freemarker/core/RTFOutputFormat.html" title="class in freemarker.core">RTFOutputFormat</a>, <a href="../../freemarker/core/XHTMLOutputFormat.html" title="class in freemarker.core">XHTMLOutputFormat</a>, <a href="../../freemarker/core/X [...]
+<dd><a href="../../freemarker/core/CombinedMarkupOutputFormat.html" title="class in freemarker.core">CombinedMarkupOutputFormat</a>, <a href="../../freemarker/core/HTMLOutputFormat.html" title="class in freemarker.core">HTMLOutputFormat</a>, <a href="../../freemarker/core/RTFOutputFormat.html" title="class in freemarker.core">RTFOutputFormat</a>, <a href="../../freemarker/core/XMLOutputFormat.html" title="class in freemarker.core">XMLOutputFormat</a></dd>
 </dl>
 <hr>
 <br>
diff --git a/docs/api/freemarker/core/CommonTemplateMarkupOutputModel.html b/docs/api/freemarker/core/CommonTemplateMarkupOutputModel.html
index 8ae08cf..a2a4573 100644
--- a/docs/api/freemarker/core/CommonTemplateMarkupOutputModel.html
+++ b/docs/api/freemarker/core/CommonTemplateMarkupOutputModel.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CommonTemplateMarkupOutputModel (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CommonTemplateMarkupOutputModel (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,14 +13,14 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CommonTemplateMarkupOutputModel (FreeMarker 2.3.28 API)";
+            parent.document.title="CommonTemplateMarkupOutputModel (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
     }
 //-->
-var methods = {"i0":6};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var methods = {"i0":6,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../freemarker/core/TemplateCombinedMarkupOutputModel.html" title="class in freemarker.core">TemplateCombinedMarkupOutputModel</a>, <a href="../../freemarker/core/TemplateHTMLOutputModel.html" title="class in freemarker.core">TemplateHTMLOutputModel</a>, <a href="../../freemarker/core/TemplateRTFOutputModel.html" title="class in freemarker.core">TemplateRTFOutputModel</a>, <a href="../../freemarker/core/TemplateXHTMLOutputModel.html" title="class in freemarker.core">Templa [...]
+<dd><a href="../../freemarker/core/TemplateCombinedMarkupOutputModel.html" title="class in freemarker.core">TemplateCombinedMarkupOutputModel</a>, <a href="../../freemarker/core/TemplateHTMLOutputModel.html" title="class in freemarker.core">TemplateHTMLOutputModel</a>, <a href="../../freemarker/core/TemplateRTFOutputModel.html" title="class in freemarker.core">TemplateRTFOutputModel</a>, <a href="../../freemarker/core/TemplateXMLOutputModel.html" title="class in freemarker.core">Template [...]
 </dl>
 <hr>
 <br>
@@ -182,7 +182,7 @@ implements <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title=
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabE [...]
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
@@ -193,13 +193,19 @@ implements <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title=
 <div class="block">Returns the singleton <a href="../../freemarker/core/OutputFormat.html" title="class in freemarker.core"><code>OutputFormat</code></a> object that implements the operations for the "markup output" value.</div>
 </td>
 </tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/CommonTemplateMarkupOutputModel.html#toString--">toString</a></span>()</code>
+<div class="block">Returns something like {@code "markup(format=HTML, markup=</div>
+</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;java.lang.Object</h3>
-<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
 </ul>
 </li>
 </ul>
@@ -237,7 +243,7 @@ implements <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title=
 <a name="getOutputFormat--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getOutputFormat</h4>
 <pre>public abstract&nbsp;<a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="class in freemarker.core">CommonMarkupOutputFormat</a>&lt;<a href="../../freemarker/core/CommonTemplateMarkupOutputModel.html" title="type parameter in CommonTemplateMarkupOutputModel">MO</a>&gt;&nbsp;getOutputFormat()</pre>
@@ -249,6 +255,23 @@ implements <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title=
 </dl>
 </li>
 </ul>
+<a name="toString--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>toString</h4>
+<pre>public&nbsp;java.lang.String&nbsp;toString()</pre>
+<div class="block">Returns something like <code>"markup(format=HTML, markup=&lt;p&gt;foo&lt;/p&gt;)"</code>; where the first parameter is
+ <a href="../../freemarker/core/OutputFormat.html#getName--"><code>OutputFormat.getName()</code></a>, and the second is the content, that's prefixed with <code>markup=</code> or <code>plainText=</code>, depending on the way the content is internally stored.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.29</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>
diff --git a/docs/api/freemarker/core/Configurable.SettingValueAssignmentException.html b/docs/api/freemarker/core/Configurable.SettingValueAssignmentException.html
index e3a8ddf..265b2f4 100644
--- a/docs/api/freemarker/core/Configurable.SettingValueAssignmentException.html
+++ b/docs/api/freemarker/core/Configurable.SettingValueAssignmentException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Configurable.SettingValueAssignmentException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Configurable.SettingValueAssignmentException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Configurable.SettingValueAssignmentException (FreeMarker 2.3.28 API)";
+            parent.document.title="Configurable.SettingValueAssignmentException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/Configurable.UnknownSettingException.html b/docs/api/freemarker/core/Configurable.UnknownSettingException.html
index f018763..bcac88e 100644
--- a/docs/api/freemarker/core/Configurable.UnknownSettingException.html
+++ b/docs/api/freemarker/core/Configurable.UnknownSettingException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Configurable.UnknownSettingException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Configurable.UnknownSettingException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Configurable.UnknownSettingException (FreeMarker 2.3.28 API)";
+            parent.document.title="Configurable.UnknownSettingException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/Configurable.html b/docs/api/freemarker/core/Configurable.html
index 7d44528..245e7d9 100644
--- a/docs/api/freemarker/core/Configurable.html
+++ b/docs/api/freemarker/core/Configurable.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:42 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:13 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Configurable (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Configurable (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,13 +13,13 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Configurable (FreeMarker 2.3.28 API)";
+            parent.document.title="Configurable (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":42,"i35":10,"i36":42,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10," [...]
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":42,"i35":10,"i36":42,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10," [...]
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -650,36 +650,54 @@ extends java.lang.Object</pre>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static java.lang.String</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY">URL_ESCAPING_CHARSET_KEY</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY">TRUNCATE_BUILTIN_ALGORITHM_KEY</a></span></code>
 <div class="block">Alias to the <code>..._SNAKE_CASE</code> variation due to backward compatibility constraints.</div>
 </td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static java.lang.String</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY_CAMEL_CASE">URL_ESCAPING_CHARSET_KEY_CAMEL_CASE</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE">TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE</a></span></code>
 <div class="block">Modern, camel case (<code>likeThis</code>) variation of the setting name.</div>
 </td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static java.lang.String</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY_SNAKE_CASE">URL_ESCAPING_CHARSET_KEY_SNAKE_CASE</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE">TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE</a></span></code>
 <div class="block">Legacy, snake case (<code>like_this</code>) variation of the setting name.</div>
 </td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static java.lang.String</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY">WRAP_UNCHECKED_EXCEPTIONS_KEY</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY">URL_ESCAPING_CHARSET_KEY</a></span></code>
 <div class="block">Alias to the <code>..._SNAKE_CASE</code> variation due to backward compatibility constraints.</div>
 </td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static java.lang.String</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE">WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY_CAMEL_CASE">URL_ESCAPING_CHARSET_KEY_CAMEL_CASE</a></span></code>
 <div class="block">Modern, camel case (<code>likeThis</code>) variation of the setting name.</div>
 </td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY_SNAKE_CASE">URL_ESCAPING_CHARSET_KEY_SNAKE_CASE</a></span></code>
+<div class="block">Legacy, snake case (<code>like_this</code>) variation of the setting name.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY">WRAP_UNCHECKED_EXCEPTIONS_KEY</a></span></code>
+<div class="block">Alias to the <code>..._SNAKE_CASE</code> variation due to backward compatibility constraints.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE">WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE</a></span></code>
+<div class="block">Modern, camel case (<code>likeThis</code>) variation of the setting name.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY_SNAKE_CASE">WRAP_UNCHECKED_EXCEPTIONS_KEY_SNAKE_CASE</a></span></code>
 <div class="block">Legacy, snake case (<code>like_this</code>) variation of the setting name.</div>
 </td>
@@ -936,7 +954,9 @@ extends java.lang.Object</pre>
 </tr>
 <tr id="i32" class="altColor">
 <td class="colFirst"><code>java.lang.String</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#getOutputEncoding--">getOutputEncoding</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#getOutputEncoding--">getOutputEncoding</a></span>()</code>
+<div class="block">Getter pair of <a href="../../freemarker/core/Configurable.html#setOutputEncoding-java.lang.String-"><code>setOutputEncoding(String)</code></a>.</div>
+</td>
 </tr>
 <tr id="i33" class="rowColor">
 <td class="colFirst"><code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></td>
@@ -1002,250 +1022,262 @@ extends java.lang.Object</pre>
 </td>
 </tr>
 <tr id="i42" class="altColor">
+<td class="colFirst"><code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#getTruncateBuiltinAlgorithm--">getTruncateBuiltinAlgorithm</a></span>()</code>
+<div class="block">See <a href="../../freemarker/core/Configurable.html#setTruncateBuiltinAlgorithm-freemarker.core.TruncateBuiltinAlgorithm-"><code>setTruncateBuiltinAlgorithm(TruncateBuiltinAlgorithm)</code></a></div>
+</td>
+</tr>
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>java.lang.String</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#getURLEscapingCharset--">getURLEscapingCharset</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#getWrapUncheckedExceptions--">getWrapUncheckedExceptions</a></span>()</code>
 <div class="block">The getter pair of <a href="../../freemarker/core/Configurable.html#setWrapUncheckedExceptions-boolean-"><code>setWrapUncheckedExceptions(boolean)</code></a>.</div>
 </td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#hasCustomFormats--">hasCustomFormats</a></span>()</code>
 <div class="block">Tells if this configurable object or its parent defines any custom formats.</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>protected <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#invalidSettingValueException-java.lang.String-java.lang.String-">invalidSettingValueException</a></span>(java.lang.String&nbsp;name,
                             java.lang.String&nbsp;value)</code>&nbsp;</td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isAPIBuiltinEnabled--">isAPIBuiltinEnabled</a></span>()</code>
 <div class="block">See <a href="../../freemarker/core/Configurable.html#setAPIBuiltinEnabled-boolean-"><code>setAPIBuiltinEnabled(boolean)</code></a></div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isAPIBuiltinEnabledSet--">isAPIBuiltinEnabledSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isArithmeticEngineSet--">isArithmeticEngineSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isAttemptExceptionReporterSet--">isAttemptExceptionReporterSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isAutoFlushSet--">isAutoFlushSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isAutoImportsSet--">isAutoImportsSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isAutoIncludesSet--">isAutoIncludesSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isBooleanFormatSet--">isBooleanFormatSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isClassicCompatible--">isClassicCompatible</a></span>()</code>
 <div class="block">Returns whether the engine runs in the "Classic Compatibile" mode.</div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isClassicCompatibleSet--">isClassicCompatibleSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isCustomDateFormatsSet--">isCustomDateFormatsSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isCustomNumberFormatsSet--">isCustomNumberFormatsSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isDateFormatSet--">isDateFormatSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isDateTimeFormatSet--">isDateTimeFormatSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isLazyAutoImportsSet--">isLazyAutoImportsSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isLazyImportsSet--">isLazyImportsSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isLocaleSet--">isLocaleSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isLogTemplateExceptionsSet--">isLogTemplateExceptionsSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isNewBuiltinClassResolverSet--">isNewBuiltinClassResolverSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isNumberFormatSet--">isNumberFormatSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isObjectWrapperSet--">isObjectWrapperSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isOutputEncodingSet--">isOutputEncodingSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isShowErrorTipsSet--">isShowErrorTipsSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isSQLDateAndTimeTimeZoneSet--">isSQLDateAndTimeTimeZoneSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isTemplateExceptionHandlerSet--">isTemplateExceptionHandlerSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isTimeFormatSet--">isTimeFormatSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isTimeZoneSet--">isTimeZoneSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isTruncateBuiltinAlgorithmSet--">isTruncateBuiltinAlgorithmSet</a></span>()</code>
+<div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
+</td>
+</tr>
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isURLEscapingCharsetSet--">isURLEscapingCharsetSet</a></span>()</code>
 <div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#isWrapUncheckedExceptionsSet--">isWrapUncheckedExceptionsSet</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>protected java.util.HashMap</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#parseAsImportList-java.lang.String-">parseAsImportList</a></span>(java.lang.String&nbsp;text)</code>&nbsp;</td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>protected java.util.ArrayList</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#parseAsList-java.lang.String-">parseAsList</a></span>(java.lang.String&nbsp;text)</code>&nbsp;</td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code>protected java.util.ArrayList</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#parseAsSegmentedList-java.lang.String-">parseAsSegmentedList</a></span>(java.lang.String&nbsp;text)</code>&nbsp;</td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#removeAutoImport-java.lang.String-">removeAutoImport</a></span>(java.lang.String&nbsp;namespaceVarName)</code>
 <div class="block">Removes an auto-import from this <a href="../../freemarker/core/Configurable.html" title="class in freemarker.core"><code>Configurable</code></a> level (not from the parents or children);
  see <a href="../../freemarker/core/Configurable.html#addAutoImport-java.lang.String-java.lang.String-"><code>addAutoImport(String, String)</code></a>.</div>
 </td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#removeAutoInclude-java.lang.String-">removeAutoInclude</a></span>(java.lang.String&nbsp;templateName)</code>
 <div class="block">Removes the auto-include from this <a href="../../freemarker/core/Configurable.html" title="class in freemarker.core"><code>Configurable</code></a> level (not from the parents or children); see
  <a href="../../freemarker/core/Configurable.html#addAutoInclude-java.lang.String-"><code>addAutoInclude(String)</code></a>.</div>
 </td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#removeCustomAttribute-java.lang.String-">removeCustomAttribute</a></span>(java.lang.String&nbsp;name)</code>
 <div class="block">Removes a named custom attribute for this configurable.</div>
 </td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setAPIBuiltinEnabled-boolean-">setAPIBuiltinEnabled</a></span>(boolean&nbsp;value)</code>
 <div class="block">Specifies if <code>?api</code> can be used in templates.</div>
 </td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setArithmeticEngine-freemarker.core.ArithmeticEngine-">setArithmeticEngine</a></span>(<a href="../../freemarker/core/ArithmeticEngine.html" title="class in freemarker.core">ArithmeticEngine</a>&nbsp;arithmeticEngine)</code>
 <div class="block">Sets the arithmetic engine used to perform arithmetic operations.</div>
 </td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setAttemptExceptionReporter-freemarker.template.AttemptExceptionReporter-">setAttemptExceptionReporter</a></span>(<a href="../../freemarker/template/AttemptExceptionReporter.html" title="interface in freemarker.template">AttemptExceptionReporter</a>&nbsp;attemptExceptionReporter)</code>
 <div class="block">Specifies how exceptions handled (and hence suppressed) by an <code>#attempt</code> blocks will be logged or otherwise
  reported.</div>
 </td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setAutoFlush-boolean-">setAutoFlush</a></span>(boolean&nbsp;autoFlush)</code>
 <div class="block">Sets whether the output <code>Writer</code> is automatically flushed at
@@ -1253,156 +1285,156 @@ extends java.lang.Object</pre>
  overloads).</div>
 </td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setAutoImports-java.util.Map-">setAutoImports</a></span>(java.util.Map&nbsp;map)</code>
 <div class="block">Removes all auto-imports, then calls <a href="../../freemarker/core/Configurable.html#addAutoImport-java.lang.String-java.lang.String-"><code>addAutoImport(String, String)</code></a> for each <code>Map</code>-entry (the entry
  key is the <code>namespaceVarName</code>).</div>
 </td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setAutoIncludes-java.util.List-">setAutoIncludes</a></span>(java.util.List&nbsp;templateNames)</code>
 <div class="block">Removes all auto-includes, then calls <a href="../../freemarker/core/Configurable.html#addAutoInclude-java.lang.String-"><code>addAutoInclude(String)</code></a> for each <code>List</code> items.</div>
 </td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setBooleanFormat-java.lang.String-">setBooleanFormat</a></span>(java.lang.String&nbsp;booleanFormat)</code>
-<div class="block">The string value for the boolean <code>true</code> and <code>false</code> values, intended for human audience (not for a
- computer language), separated with comma.</div>
+<div class="block">The string value for the boolean <code>true</code> and <code>false</code> values, usually intended for human consumption
+ (not for a computer language), separated with comma.</div>
 </td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setClassicCompatible-boolean-">setClassicCompatible</a></span>(boolean&nbsp;classicCompatibility)</code>
 <div class="block">Toggles the "Classic Compatible" mode.</div>
 </td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setClassicCompatibleAsInt-int-">setClassicCompatibleAsInt</a></span>(int&nbsp;classicCompatibility)</code>
 <div class="block">Same as <a href="../../freemarker/core/Configurable.html#setClassicCompatible-boolean-"><code>setClassicCompatible(boolean)</code></a>, but allows some extra values.</div>
 </td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i92" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setCustomAttribute-java.lang.String-java.lang.Object-">setCustomAttribute</a></span>(java.lang.String&nbsp;name,
                   java.lang.Object&nbsp;value)</code>
 <div class="block">Sets a named custom attribute for this configurable.</div>
 </td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setCustomDateFormats-java.util.Map-">setCustomDateFormats</a></span>(java.util.Map&lt;java.lang.String,? extends <a href="../../freemarker/core/TemplateDateFormatFactory.html" title="class in freemarker.core">TemplateDateFormatFactory</a>&gt;&nbsp;customDateFormats)</code>
 <div class="block">Associates names with formatter factories, which then can be referred by the <a href="../../freemarker/core/Configurable.html#setDateTimeFormat-java.lang.String-"><code>date_format</code></a>, <a href="../../freemarker/core/Configurable.html#setDateTimeFormat-java.lang.String-"><code>time_format</code></a>, and <a href="../../freemarker/core/Configurable.html#setDateTimeFormat-java.lang.String-"><code>datetime_format</code></a> settings with values starting with <code> [...]
 </td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setCustomNumberFormats-java.util.Map-">setCustomNumberFormats</a></span>(java.util.Map&lt;java.lang.String,? extends <a href="../../freemarker/core/TemplateNumberFormatFactory.html" title="class in freemarker.core">TemplateNumberFormatFactory</a>&gt;&nbsp;customNumberFormats)</code>
 <div class="block">Associates names with formatter factories, which then can be referred by the <a href="../../freemarker/core/Configurable.html#setNumberFormat-java.lang.String-"><code>number_format</code></a> setting with values starting with <code>@<i>name</i></code>.</div>
 </td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setDateFormat-java.lang.String-">setDateFormat</a></span>(java.lang.String&nbsp;dateFormat)</code>
 <div class="block">Sets the format used to convert <code>Date</code>-s that are date-only (no time part) values to string-s,
  also the format that <code>someString?date</code> will use to parse strings.</div>
 </td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setDateTimeFormat-java.lang.String-">setDateTimeFormat</a></span>(java.lang.String&nbsp;dateTimeFormat)</code>
 <div class="block">Sets the format used to convert <code>Date</code>-s that are date-time (timestamp) values to string-s,
  also the format that <code>someString?datetime</code> will use to parse strings.</div>
 </td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setLazyAutoImports-java.lang.Boolean-">setLazyAutoImports</a></span>(java.lang.Boolean&nbsp;lazyAutoImports)</code>
 <div class="block">Specifies if <a href="../../freemarker/core/Configurable.html#setAutoImports-java.util.Map-">auto-imports</a> will be
  <a href="../../freemarker/core/Configurable.html#setLazyImports-boolean-"><code>lazy imports</code></a>.</div>
 </td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setLazyImports-boolean-">setLazyImports</a></span>(boolean&nbsp;lazyImports)</code>
 <div class="block">Specifies if <code>&lt;#import ...&gt;</code> (and <a href="../../freemarker/core/Environment.html#importLib-java.lang.String-java.lang.String-"><code>Environment.importLib(String, String)</code></a>) should delay the loading
  and processing of the imported templates until the content of the imported namespace is actually accessed.</div>
 </td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setLocale-java.util.Locale-">setLocale</a></span>(java.util.Locale&nbsp;locale)</code>
 <div class="block">Sets the locale used for number and date formatting (among others), also the locale used for searching
  localized template variations when no locale was explicitly requested.</div>
 </td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setLogTemplateExceptions-boolean-">setLogTemplateExceptions</a></span>(boolean&nbsp;value)</code>
 <div class="block">Specifies if <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template"><code>TemplateException</code></a>-s thrown by template processing are logged by FreeMarker or not.</div>
 </td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setNewBuiltinClassResolver-freemarker.core.TemplateClassResolver-">setNewBuiltinClassResolver</a></span>(<a href="../../freemarker/core/TemplateClassResolver.html" title="interface in freemarker.core">TemplateClassResolver</a>&nbsp;newBuiltinClassResolver)</code>
 <div class="block">Sets the <a href="../../freemarker/core/TemplateClassResolver.html" title="interface in freemarker.core"><code>TemplateClassResolver</code></a> that is used when the
  <code>new</code> built-in is called in a template.</div>
 </td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setNumberFormat-java.lang.String-">setNumberFormat</a></span>(java.lang.String&nbsp;numberFormat)</code>
 <div class="block">Sets the default number format used to convert numbers to strings.</div>
 </td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setObjectWrapper-freemarker.template.ObjectWrapper-">setObjectWrapper</a></span>(<a href="../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;objectWrapper)</code>
 <div class="block">Sets the object wrapper used to wrap objects to <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s.</div>
 </td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setOutputEncoding-java.lang.String-">setOutputEncoding</a></span>(java.lang.String&nbsp;outputEncoding)</code>
 <div class="block">Informs FreeMarker about the charset used for the output.</div>
 </td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setSetting-java.lang.String-java.lang.String-">setSetting</a></span>(java.lang.String&nbsp;name,
           java.lang.String&nbsp;value)</code>
 <div class="block">Sets a FreeMarker setting by a name and string value.</div>
 </td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setSettings-java.io.InputStream-">setSettings</a></span>(java.io.InputStream&nbsp;propsIn)</code>
 <div class="block">Reads a setting list (key and element pairs) from the input stream.</div>
 </td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setSettings-java.util.Properties-">setSettings</a></span>(java.util.Properties&nbsp;props)</code>
 <div class="block">Set the settings stored in a <code>Properties</code> object.</div>
 </td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setShowErrorTips-boolean-">setShowErrorTips</a></span>(boolean&nbsp;showTips)</code>
 <div class="block">Sets if tips should be shown in error messages of errors arising during template processing.</div>
 </td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-">setSQLDateAndTimeTimeZone</a></span>(java.util.TimeZone&nbsp;tz)</code>
 <div class="block">Sets the time zone used when dealing with <code>java.sql.Date</code> and
  <code>java.sql.Time</code> values.</div>
 </td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setStrictBeanModels-boolean-">setStrictBeanModels</a></span>(boolean&nbsp;strict)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -1410,38 +1442,44 @@ extends java.lang.Object</pre>
 </div>
 </td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setTemplateExceptionHandler-freemarker.template.TemplateExceptionHandler-">setTemplateExceptionHandler</a></span>(<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a>&nbsp;templateExceptionHandler)</code>
 <div class="block">Sets the exception handler used to handle exceptions occurring inside templates.</div>
 </td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setTimeFormat-java.lang.String-">setTimeFormat</a></span>(java.lang.String&nbsp;timeFormat)</code>
 <div class="block">Sets the format used to convert <code>Date</code>-s that are time (no date part) values to string-s, also
  the format that <code>someString?time</code> will use to parse strings.</div>
 </td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setTimeZone-java.util.TimeZone-">setTimeZone</a></span>(java.util.TimeZone&nbsp;timeZone)</code>
 <div class="block">Sets the time zone to use when formatting date/time values.</div>
 </td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code>protected <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#settingValueAssignmentException-java.lang.String-java.lang.String-java.lang.Throwable-">settingValueAssignmentException</a></span>(java.lang.String&nbsp;name,
                                java.lang.String&nbsp;value,
                                java.lang.Throwable&nbsp;cause)</code>&nbsp;</td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i115" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setTruncateBuiltinAlgorithm-freemarker.core.TruncateBuiltinAlgorithm-">setTruncateBuiltinAlgorithm</a></span>(<a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a>&nbsp;truncateBuiltinAlgorithm)</code>
+<div class="block">Specifies the algorithm used for <code>?truncate</code>.</div>
+</td>
+</tr>
+<tr id="i116" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setURLEscapingCharset-java.lang.String-">setURLEscapingCharset</a></span>(java.lang.String&nbsp;urlEscapingCharset)</code>
 <div class="block">Sets the URL escaping (URL encoding, percentage encoding) charset.</div>
 </td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#setWrapUncheckedExceptions-boolean-">setWrapUncheckedExceptions</a></span>(boolean&nbsp;wrapUncheckedExceptions)</code>
 <div class="block">Specifies if unchecked exceptions thrown during expression evaluation or during executing custom directives (and
@@ -1449,7 +1487,7 @@ extends java.lang.Object</pre>
  <a href="../../freemarker/template/Template.html#process-java.lang.Object-java.io.Writer-freemarker.template.ObjectWrapper-"><code>Template.process(Object, Writer, ObjectWrapper)</code></a> as is.</div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i118" class="altColor">
 <td class="colFirst"><code>protected <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Configurable.html#unknownSettingException-java.lang.String-">unknownSettingException</a></span>(java.lang.String&nbsp;name)</code>
 <div class="block">Creates the exception that should be thrown when a setting name isn't recognized.</div>
@@ -2401,6 +2439,48 @@ extends java.lang.Object</pre>
 </dl>
 </li>
 </ul>
+<a name="TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE</h4>
+<pre>public static final&nbsp;java.lang.String TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE</pre>
+<div class="block">Legacy, snake case (<code>like_this</code>) variation of the setting name. @since 2.3.29</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../constant-values.html#freemarker.core.Configurable.TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE</h4>
+<pre>public static final&nbsp;java.lang.String TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE</pre>
+<div class="block">Modern, camel case (<code>likeThis</code>) variation of the setting name. @since 2.3.29</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../constant-values.html#freemarker.core.Configurable.TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="TRUNCATE_BUILTIN_ALGORITHM_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TRUNCATE_BUILTIN_ALGORITHM_KEY</h4>
+<pre>public static final&nbsp;java.lang.String TRUNCATE_BUILTIN_ALGORITHM_KEY</pre>
+<div class="block">Alias to the <code>..._SNAKE_CASE</code> variation due to backward compatibility constraints.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../constant-values.html#freemarker.core.Configurable.TRUNCATE_BUILTIN_ALGORITHM_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="LOG_TEMPLATE_EXCEPTIONS_KEY_SNAKE_CASE">
 <!--   -->
 </a>
@@ -3225,13 +3305,17 @@ public&nbsp;Configurable()</pre>
 <li class="blockList">
 <h4>setBooleanFormat</h4>
 <pre>public&nbsp;void&nbsp;setBooleanFormat(java.lang.String&nbsp;booleanFormat)</pre>
-<div class="block">The string value for the boolean <code>true</code> and <code>false</code> values, intended for human audience (not for a
- computer language), separated with comma. For example, <code>"yes,no"</code>. Note that white-space is significant,
- so <code>"yes, no"</code> is WRONG (unless you want that leading space before "no").
+<div class="block">The string value for the boolean <code>true</code> and <code>false</code> values, usually intended for human consumption
+ (not for a computer language), separated with comma. For example, <code>"yes,no"</code>. Note that white-space is
+ significant, so <code>"yes, no"</code> is WRONG (unless you want that leading space before "no"). Because the proper
+ way of formatting booleans depends on the context too much, it's probably the best to leave this setting on its
+ default, which will enforce explicit formatting, like <code>${aBoolean?string('on', 'off')}</code>.
  
  <p>For backward compatibility the default is <code>"true,false"</code>, but using that value is denied for automatic
- boolean-to-string conversion (like <code>${myBoolean}</code> will fail with it), only <code>myBool?string</code> will
- allow it, which is deprecated since FreeMarker 2.3.20.
+ boolean-to-string conversion, like <code>${myBoolean}</code> will fail with it. If you generate the piece of
+ output for "computer audience" as opposed to "human audience", then you should write
+ <code>${myBoolean?c}</code>, which will print <code>true</code> or <code>false</code>. If you really want to always
+ format for computer audience, then it's might be reasonable to set this setting to <code>c</code>.
  
  <p>Note that automatic boolean-to-string conversion only exists since FreeMarker 2.3.20. Earlier this setting
  only influenced the result of <code>myBool?string</code>.</div>
@@ -3749,6 +3833,7 @@ public&nbsp;Configurable()</pre>
 <li class="blockList">
 <h4>getOutputEncoding</h4>
 <pre>public&nbsp;java.lang.String&nbsp;getOutputEncoding()</pre>
+<div class="block">Getter pair of <a href="../../freemarker/core/Configurable.html#setOutputEncoding-java.lang.String-"><code>setOutputEncoding(String)</code></a>.</div>
 </li>
 </ul>
 <a name="isOutputEncodingSet--">
@@ -3991,6 +4076,54 @@ public&nbsp;Configurable()</pre>
 </dl>
 </li>
 </ul>
+<a name="setTruncateBuiltinAlgorithm-freemarker.core.TruncateBuiltinAlgorithm-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTruncateBuiltinAlgorithm</h4>
+<pre>public&nbsp;void&nbsp;setTruncateBuiltinAlgorithm(<a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a>&nbsp;truncateBuiltinAlgorithm)</pre>
+<div class="block">Specifies the algorithm used for <code>?truncate</code>. Defaults to
+ <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE"><code>DefaultTruncateBuiltinAlgorithm.ASCII_INSTANCE</code></a>. Most customization needs can be addressed by
+ creating a new <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>DefaultTruncateBuiltinAlgorithm</code></a> with the proper constructor parameters. Otherwise users
+ my use their own <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>TruncateBuiltinAlgorithm</code></a> implementation.
+
+ <p>In case you need to set this with <code>Properties</code>, or a similar configuration approach that doesn't let you
+ create the value in Java, see examples at <a href="../../freemarker/core/Configurable.html#setSetting-java.lang.String-java.lang.String-"><code>setSetting(String, String)</code></a>.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.29</dd>
+</dl>
+</li>
+</ul>
+<a name="getTruncateBuiltinAlgorithm--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTruncateBuiltinAlgorithm</h4>
+<pre>public&nbsp;<a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a>&nbsp;getTruncateBuiltinAlgorithm()</pre>
+<div class="block">See <a href="../../freemarker/core/Configurable.html#setTruncateBuiltinAlgorithm-freemarker.core.TruncateBuiltinAlgorithm-"><code>setTruncateBuiltinAlgorithm(TruncateBuiltinAlgorithm)</code></a></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.29</dd>
+</dl>
+</li>
+</ul>
+<a name="isTruncateBuiltinAlgorithmSet--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isTruncateBuiltinAlgorithmSet</h4>
+<pre>public&nbsp;boolean&nbsp;isTruncateBuiltinAlgorithmSet()</pre>
+<div class="block">Tells if this setting is set directly in this object or its value is coming from the <a href="../../freemarker/core/Configurable.html#getParent--"><code>parent</code></a>.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.29</dd>
+</dl>
+</li>
+</ul>
 <a name="setLogTemplateExceptions-boolean-">
 <!--   -->
 </a>
@@ -4642,7 +4775,28 @@ public&nbsp;Configurable()</pre>
        See <a href="../../freemarker/core/Configurable.html#setAPIBuiltinEnabled-boolean-"><code>setAPIBuiltinEnabled(boolean)</code></a>.
        Since 2.3.22.
        <br>String value: <code>"true"</code>, <code>"false"</code>, <code>"y"</code>,  etc.
-       
+
+   <li><p><code>"truncate_builtin_algorithm"</code>:
+       See <a href="../../freemarker/core/Configurable.html#setTruncateBuiltinAlgorithm-freemarker.core.TruncateBuiltinAlgorithm-"><code>setTruncateBuiltinAlgorithm(TruncateBuiltinAlgorithm)</code></a>.
+       Since 2.3.19.
+       <br>String value: An
+       <a href="#fm_obe">object builder expression</a>, or one of the predefined values (case insensitive),
+       <code>ascii</code> (for <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE"><code>DefaultTruncateBuiltinAlgorithm.ASCII_INSTANCE</code></a>) and
+       <code>unicode</code> (for <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#UNICODE_INSTANCE"><code>DefaultTruncateBuiltinAlgorithm.UNICODE_INSTANCE</code></a>).
+       <br>Example object builder expressions:
+       <br>Use <code>"..."</code> as terminator (and same as markup terminator), and add space if the
+       truncation happened on word boundary:
+       <br><code>DefaultTruncateBuiltinAlgorithm("...", true)</code>
+       <br>Use <code>"..."</code> as terminator, and also a custom HTML for markup terminator, and add space if the
+       truncation happened on word boundary:
+       <br><code>DefaultTruncateBuiltinAlgorithm("...",
+       markup(HTMLOutputFormat(), "&lt;span class=trunc&gt;...&lt;/span&gt;"), true)</code>
+       <br>Recreate default truncate algorithm, but with not preferring truncation at word boundaries (i.e.,
+       with <code>wordBoundaryMinLength</code> 1.0):
+       <br><code>freemarker.core.DefaultTruncateBuiltinAlgorithm(<br>
+       DefaultTruncateBuiltinAlgorithm.STANDARD_ASCII_TERMINATOR, null, null,<br>
+       DefaultTruncateBuiltinAlgorithm.STANDARD_M_TERMINATOR, null, null,<br>
+       true, 1.0)</code>
  </ul>
  
  <p><a href="../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> (a subclass of <a href="../../freemarker/core/Configurable.html" title="class in freemarker.core"><code>Configurable</code></a>) also understands these:</p>
@@ -4724,7 +4878,7 @@ public&nbsp;Configurable()</pre>
        <br>Note that setting the <code>"tagSyntax"</code> to <code>"square_bracket"</code> does <em>not</em> change
        <code>${x}</code> to <code>[=...]</code>; that's <em>interpolation</em> syntax, so use the
        <code>"interpolation_syntax"</code> setting for that, not this setting.
-        
+
    <li><p><code>"interpolation_syntax"</code> (since 2.3.28):
        See <a href="../../freemarker/template/Configuration.html#setInterpolationSyntax-int-"><code>Configuration.setInterpolationSyntax(int)</code></a>.
        <br>String value: Must be one of
@@ -4737,7 +4891,13 @@ public&nbsp;Configurable()</pre>
        See <a href="../../freemarker/template/Configuration.html#setNamingConvention-int-"><code>Configuration.setNamingConvention(int)</code></a>.
        <br>String value: Must be one of
        <code>"auto_detect"</code>, <code>"legacy"</code>, and <code>"camel_case"</code>.
-       
+
+   <li><p><code>"fallback_on_null_loop_variable"</code>:
+       See <a href="../../freemarker/template/Configuration.html#setFallbackOnNullLoopVariable-boolean-"><code>Configuration.setFallbackOnNullLoopVariable(boolean)</code></a>.
+       <br>String value: <code>"true"</code>, <code>"false"</code> (also the equivalents: <code>"yes"</code>, <code>"no"</code>,
+       <code>"t"</code>, <code>"f"</code>, <code>"y"</code>, <code>"n"</code>).
+       Case insensitive.
+
    <li><p><code>"incompatible_improvements"</code>:
        See <a href="../../freemarker/template/Configuration.html#setIncompatibleImprovements-freemarker.template.Version-"><code>Configuration.setIncompatibleImprovements(Version)</code></a>.
        <br>String value: version number like <code>2.3.20</code>.
@@ -4771,6 +4931,9 @@ public&nbsp;Configurable()</pre>
        <br>String value: <code>"default"</code> (case insensitive) for the default, <code>"default_2_3_0"</code>
        for <a href="../../freemarker/cache/TemplateNameFormat.html#DEFAULT_2_3_0"><code>TemplateNameFormat.DEFAULT_2_3_0</code></a>, <code>"default_2_4_0"</code> for
        <a href="../../freemarker/cache/TemplateNameFormat.html#DEFAULT_2_4_0"><code>TemplateNameFormat.DEFAULT_2_4_0</code></a>.
+
+   <li><p><code>"tab_size"</code>:
+       See <a href="../../freemarker/template/Configuration.html#setTabSize-int-"><code>Configuration.setTabSize(int)</code></a>.
  </ul>
  
  <p><a name="fm_obe"></a>Regarding <em>object builder expressions</em> (used by the setting values where it was
@@ -4853,13 +5016,18 @@ public&nbsp;Configurable()</pre>
      <a href="../../freemarker/cache/AndMatcher.html" title="class in freemarker.cache"><code>AndMatcher</code></a>, <a href="../../freemarker/cache/OrMatcher.html" title="class in freemarker.cache"><code>OrMatcher</code></a>, <a href="../../freemarker/cache/NotMatcher.html" title="class in freemarker.cache"><code>NotMatcher</code></a>, <a href="../../freemarker/cache/ConditionalTemplateConfigurationFactory.html" title="class in freemarker.cache"><code>ConditionalTemplateConfigurationFac [...]
      <a href="../../freemarker/cache/MergingTemplateConfigurationFactory.html" title="class in freemarker.cache"><code>MergingTemplateConfigurationFactory</code></a>, <a href="../../freemarker/cache/FirstMatchTemplateConfigurationFactory.html" title="class in freemarker.cache"><code>FirstMatchTemplateConfigurationFactory</code></a>,
      <a href="../../freemarker/core/HTMLOutputFormat.html" title="class in freemarker.core"><code>HTMLOutputFormat</code></a>, <a href="../../freemarker/core/XMLOutputFormat.html" title="class in freemarker.core"><code>XMLOutputFormat</code></a>, <a href="../../freemarker/core/RTFOutputFormat.html" title="class in freemarker.core"><code>RTFOutputFormat</code></a>, <a href="../../freemarker/core/PlainTextOutputFormat.html" title="class in freemarker.core"><code>PlainTextOutputFormat</code></a>,
-     <a href="../../freemarker/core/UndefinedOutputFormat.html" title="class in freemarker.core"><code>UndefinedOutputFormat</code></a>, <a href="../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>.
+     <a href="../../freemarker/core/UndefinedOutputFormat.html" title="class in freemarker.core"><code>UndefinedOutputFormat</code></a>, <a href="../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>, <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>DefaultTruncateBuiltinAlgorithm</code></a>.
    </li>
    <li>
      <p><code>TimeZone</code> objects can be created like <code>TimeZone("UTC")</code>, despite that there's no a such
      constructor (since 2.3.24).
    </li>
    <li>
+     <p><a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a> objects can be created like
+     <code>markup(HTMLOutputFormat(), "&lt;h1&gt;Example&lt;/h1&gt;")</code> (since 2.3.29). Of course the 1st argument can be
+     any other <a href="../../freemarker/core/MarkupOutputFormat.html" title="class in freemarker.core"><code>MarkupOutputFormat</code></a> too.
+   </li>
+   <li>
      <p>The classes and methods that the expression meant to access must be all public.
    </li>
  </ul></div>
diff --git a/docs/api/freemarker/core/CustomAttribute.html b/docs/api/freemarker/core/CustomAttribute.html
index dcf3384..dde71ed 100644
--- a/docs/api/freemarker/core/CustomAttribute.html
+++ b/docs/api/freemarker/core/CustomAttribute.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CustomAttribute (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>CustomAttribute (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CustomAttribute (FreeMarker 2.3.28 API)";
+            parent.document.title="CustomAttribute (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -51,7 +51,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../freemarker/core/CSSOutputFormat.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../index.html?freemarker/core/CustomAttribute.html" target="_top">Frames</a></li>
@@ -585,7 +585,7 @@ extends java.lang.Object</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../freemarker/core/CSSOutputFormat.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../index.html?freemarker/core/CustomAttribute.html" target="_top">Frames</a></li>
diff --git a/docs/api/freemarker/core/DefaultTruncateBuiltinAlgorithm.html b/docs/api/freemarker/core/DefaultTruncateBuiltinAlgorithm.html
new file mode 100644
index 0000000..12ec362
--- /dev/null
+++ b/docs/api/freemarker/core/DefaultTruncateBuiltinAlgorithm.html
@@ -0,0 +1,972 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>DefaultTruncateBuiltinAlgorithm (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
+<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="DefaultTruncateBuiltinAlgorithm (FreeMarker 2.3.29 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/DefaultTruncateBuiltinAlgorithm.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/core/CustomAttribute.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/core/DefaultTruncateBuiltinAlgorithm.html" target="_top">Frames</a></li>
+<li><a href="DefaultTruncateBuiltinAlgorithm.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">freemarker.core</div>
+<h2 title="Class DefaultTruncateBuiltinAlgorithm" class="title">Class DefaultTruncateBuiltinAlgorithm</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">freemarker.core.TruncateBuiltinAlgorithm</a></li>
+<li>
+<ul class="inheritance">
+<li>freemarker.core.DefaultTruncateBuiltinAlgorithm</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">DefaultTruncateBuiltinAlgorithm</span>
+extends <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></pre>
+<div class="block">The default <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>TruncateBuiltinAlgorithm</code></a> implementation; see
+ <a href="../../freemarker/core/Configurable.html#setTruncateBuiltinAlgorithm-freemarker.core.TruncateBuiltinAlgorithm-"><code>Configurable.setTruncateBuiltinAlgorithm(TruncateBuiltinAlgorithm)</code></a>.
+ To know the properties of this <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>TruncateBuiltinAlgorithm</code></a> implementation, see the
+ <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-">constructor</a>. You can find more explanation and
+ examples in the documentation of the <code>truncate</code> built-in in the FreeMarker Manual.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.29</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core">DefaultTruncateBuiltinAlgorithm</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE">ASCII_INSTANCE</a></span></code>
+<div class="block">Instance that uses <code>"[...]"</code> as the <code>defaultTerminator</code> constructor argument, and thus is
+ safe to use for all output charsets.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static double</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DEFAULT_WORD_BOUNDARY_MIN_LENGTH">DEFAULT_WORD_BOUNDARY_MIN_LENGTH</a></span></code>
+<div class="block">The value used in the constructor of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE"><code>ASCII_INSTANCE</code></a> and  <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#UNICODE_INSTANCE"><code>UNICODE_INSTANCE</code></a> as the
+ <code>wordBoundaryMinLength</code> argument.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#STANDARD_ASCII_TERMINATOR">STANDARD_ASCII_TERMINATOR</a></span></code>
+<div class="block">Used by <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE"><code>ASCII_INSTANCE</code></a> as the terminator.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../freemarker/core/TemplateHTMLOutputModel.html" title="class in freemarker.core">TemplateHTMLOutputModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#STANDARD_M_TERMINATOR">STANDARD_M_TERMINATOR</a></span></code>
+<div class="block">Used by <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE"><code>ASCII_INSTANCE</code></a> and <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#UNICODE_INSTANCE"><code>UNICODE_INSTANCE</code></a> as the markup terminator;
+ HTML <code>&lt;span class='truncateTerminator'&gt;[&amp;#8230;]&lt;/span&gt;</code>, where <code>&amp;#8230;</code> is the ellipsis (&#8230;)
+ character.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#STANDARD_UNICODE_TERMINATOR">STANDARD_UNICODE_TERMINATOR</a></span></code>
+<div class="block">Used by <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#UNICODE_INSTANCE"><code>UNICODE_INSTANCE</code></a> as the terminator.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core">DefaultTruncateBuiltinAlgorithm</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#UNICODE_INSTANCE">UNICODE_INSTANCE</a></span></code>
+<div class="block">Instance uses that <code>"[…]"</code> as the <code>defaultTerminator</code> constructor argument, which contains
+ ellipsis character (<code>"…"</code>, U+2026), and thus only works with UTF-8, and the cp125x charsets (like
+ cp1250), and with some other rarely used ones.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-boolean-">DefaultTruncateBuiltinAlgorithm</a></span>(java.lang.String&nbsp;defaultTerminator,
+                               boolean&nbsp;addSpaceAtWordBoundary)</code>
+<div class="block">Creates an instance with string (plain text) terminator.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-">DefaultTruncateBuiltinAlgorithm</a></span>(java.lang.String&nbsp;defaultTerminator,
+                               java.lang.Integer&nbsp;defaultTerminatorLength,
+                               java.lang.Boolean&nbsp;defaultTerminatorRemovesDots,
+                               <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&lt;?&gt;&nbsp;defaultMTerminator,
+                               java.lang.Integer&nbsp;defaultMTerminatorLength,
+                               java.lang.Boolean&nbsp;defaultMTerminatorRemovesDots,
+                               boolean&nbsp;addSpaceAtWordBoundary,
+                               java.lang.Double&nbsp;wordBoundaryMinLength)</code>
+<div class="block">Creates an instance with markup terminator.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-freemarker.core.TemplateMarkupOutputModel-boolean-">DefaultTruncateBuiltinAlgorithm</a></span>(java.lang.String&nbsp;defaultTerminator,
+                               <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&lt;?&gt;&nbsp;defaultMTerminator,
+                               boolean&nbsp;addSpaceAtWordBoundary)</code>
+<div class="block">Creates an instance with a string (plain text) terminator and a markup terminator.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getAddSpaceAtWordBoundary--">getAddSpaceAtWordBoundary</a></span>()</code>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&lt;?&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getDefaultMTerminator--">getDefaultMTerminator</a></span>()</code>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>java.lang.Integer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getDefaultMTerminatorLength--">getDefaultMTerminatorLength</a></span>()</code>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getDefaultMTerminatorRemovesDots--">getDefaultMTerminatorRemovesDots</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getDefaultTerminator--">getDefaultTerminator</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getDefaultTerminatorLength--">getDefaultTerminatorLength</a></span>()</code>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getDefaultTerminatorRemovesDots--">getDefaultTerminatorRemovesDots</a></span>()</code>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getMTerminatorLength-freemarker.core.TemplateMarkupOutputModel-">getMTerminatorLength</a></span>(<a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&lt;?&gt;&nbsp;mTerminator)</code>
+<div class="block">Returns the (estimated) length of the argument terminator.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getMTerminatorRemovesDots-freemarker.core.TemplateMarkupOutputModel-">getMTerminatorRemovesDots</a></span>(<a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&nbsp;terminator)</code>
+<div class="block">Same as <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getTerminatorRemovesDots-java.lang.String-"><code>getTerminatorRemovesDots(String)</code></a>, but invoked for a markup terminator.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getTerminatorRemovesDots-java.lang.String-">getTerminatorRemovesDots</a></span>(java.lang.String&nbsp;terminator)</code>
+<div class="block">Tells if the dots touched by the terminator text should be removed.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>double</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getWordBoundaryMinLength--">getWordBoundaryMinLength</a></span>()</code>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code><a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#truncate-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">truncate</a></span>(java.lang.String&nbsp;s,
+        int&nbsp;maxLength,
+        <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;terminator,
+        java.lang.Integer&nbsp;terminatorLength,
+        <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)</code>
+<div class="block">Corresponds to <code>?truncate(...)</code> in templates.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code><a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#truncateC-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">truncateC</a></span>(java.lang.String&nbsp;s,
+         int&nbsp;maxLength,
+         <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;terminator,
+         java.lang.Integer&nbsp;terminatorLength,
+         <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)</code>
+<div class="block">Corresponds to <code>?truncate_c_m(...)</code> in templates.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code><a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#truncateCM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">truncateCM</a></span>(java.lang.String&nbsp;s,
+          int&nbsp;maxLength,
+          <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;terminator,
+          java.lang.Integer&nbsp;terminatorLength,
+          <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)</code>
+<div class="block">Corresponds to <code>?truncate_c_m(...)</code> in templates.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code><a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#truncateM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">truncateM</a></span>(java.lang.String&nbsp;s,
+         int&nbsp;maxLength,
+         <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;terminator,
+         java.lang.Integer&nbsp;terminatorLength,
+         <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)</code>
+<div class="block">Corresponds to <code>?truncate_m(...)</code> in templates.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code><a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#truncateW-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">truncateW</a></span>(java.lang.String&nbsp;s,
+         int&nbsp;maxLength,
+         <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;terminator,
+         java.lang.Integer&nbsp;terminatorLength,
+         <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)</code>
+<div class="block">Corresponds to <code>?truncate_w(...)</code> in templates.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code><a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#truncateWM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">truncateWM</a></span>(java.lang.String&nbsp;s,
+          int&nbsp;maxLength,
+          <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;terminator,
+          java.lang.Integer&nbsp;terminatorLength,
+          <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)</code>
+<div class="block">Corresponds to <code>?truncate_w_m(...)</code> in templates.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="STANDARD_ASCII_TERMINATOR">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>STANDARD_ASCII_TERMINATOR</h4>
+<pre>public static final&nbsp;java.lang.String STANDARD_ASCII_TERMINATOR</pre>
+<div class="block">Used by <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE"><code>ASCII_INSTANCE</code></a> as the terminator.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../constant-values.html#freemarker.core.DefaultTruncateBuiltinAlgorithm.STANDARD_ASCII_TERMINATOR">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="STANDARD_UNICODE_TERMINATOR">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>STANDARD_UNICODE_TERMINATOR</h4>
+<pre>public static final&nbsp;java.lang.String STANDARD_UNICODE_TERMINATOR</pre>
+<div class="block">Used by <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#UNICODE_INSTANCE"><code>UNICODE_INSTANCE</code></a> as the terminator.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../constant-values.html#freemarker.core.DefaultTruncateBuiltinAlgorithm.STANDARD_UNICODE_TERMINATOR">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="STANDARD_M_TERMINATOR">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>STANDARD_M_TERMINATOR</h4>
+<pre>public static final&nbsp;<a href="../../freemarker/core/TemplateHTMLOutputModel.html" title="class in freemarker.core">TemplateHTMLOutputModel</a> STANDARD_M_TERMINATOR</pre>
+<div class="block">Used by <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE"><code>ASCII_INSTANCE</code></a> and <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#UNICODE_INSTANCE"><code>UNICODE_INSTANCE</code></a> as the markup terminator;
+ HTML <code>&lt;span class='truncateTerminator'&gt;[&amp;#8230;]&lt;/span&gt;</code>, where <code>&amp;#8230;</code> is the ellipsis (&#8230;)
+ character. Note that while the ellipsis character is not in US-ASCII, this still works safely regardless of
+ output charset, as <code>&amp;#8230;</code> itself only contains US-ASCII characters.</div>
+</li>
+</ul>
+<a name="DEFAULT_WORD_BOUNDARY_MIN_LENGTH">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_WORD_BOUNDARY_MIN_LENGTH</h4>
+<pre>public static final&nbsp;double DEFAULT_WORD_BOUNDARY_MIN_LENGTH</pre>
+<div class="block">The value used in the constructor of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#ASCII_INSTANCE"><code>ASCII_INSTANCE</code></a> and  <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#UNICODE_INSTANCE"><code>UNICODE_INSTANCE</code></a> as the
+ <code>wordBoundaryMinLength</code> argument.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../constant-values.html#freemarker.core.DefaultTruncateBuiltinAlgorithm.DEFAULT_WORD_BOUNDARY_MIN_LENGTH">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ASCII_INSTANCE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ASCII_INSTANCE</h4>
+<pre>public static final&nbsp;<a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core">DefaultTruncateBuiltinAlgorithm</a> ASCII_INSTANCE</pre>
+<div class="block">Instance that uses <code>"[...]"</code> as the <code>defaultTerminator</code> constructor argument, and thus is
+ safe to use for all output charsets. Because of that, this is the default of
+ <a href="../../freemarker/core/Configurable.html#setTruncateBuiltinAlgorithm-freemarker.core.TruncateBuiltinAlgorithm-"><code>Configurable.setTruncateBuiltinAlgorithm(TruncateBuiltinAlgorithm)</code></a>. The
+ <code>defaultMTerminator</code> (markup terminator) is <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#STANDARD_M_TERMINATOR"><code>STANDARD_M_TERMINATOR</code></a>, and the
+ <code>wordBoundaryMinLength</code> is <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DEFAULT_WORD_BOUNDARY_MIN_LENGTH"><code>DEFAULT_WORD_BOUNDARY_MIN_LENGTH</code></a>, and <code>addSpaceAtWordBoundary</code>
+ is <code>true</code>.</div>
+</li>
+</ul>
+<a name="UNICODE_INSTANCE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>UNICODE_INSTANCE</h4>
+<pre>public static final&nbsp;<a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core">DefaultTruncateBuiltinAlgorithm</a> UNICODE_INSTANCE</pre>
+<div class="block">Instance uses that <code>"[…]"</code> as the <code>defaultTerminator</code> constructor argument, which contains
+ ellipsis character (<code>"…"</code>, U+2026), and thus only works with UTF-8, and the cp125x charsets (like
+ cp1250), and with some other rarely used ones. It does not work (becomes to a question mark) with ISO-8859-x
+ charsets (like ISO-8859-1), which are probably the most often used charsets after UTF-8.
+
+ <p>The <code>defaultMTerminator</code> (markup terminator) is <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#STANDARD_M_TERMINATOR"><code>STANDARD_M_TERMINATOR</code></a>, and the
+ <code>wordBoundaryMinLength</code> is <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DEFAULT_WORD_BOUNDARY_MIN_LENGTH"><code>DEFAULT_WORD_BOUNDARY_MIN_LENGTH</code></a>, and <code>addSpaceAtWordBoundary</code>
+ is <code>true</code>.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="DefaultTruncateBuiltinAlgorithm-java.lang.String-freemarker.core.TemplateMarkupOutputModel-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DefaultTruncateBuiltinAlgorithm</h4>
+<pre>public&nbsp;DefaultTruncateBuiltinAlgorithm(java.lang.String&nbsp;defaultTerminator,
+                                       <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&lt;?&gt;&nbsp;defaultMTerminator,
+                                       boolean&nbsp;addSpaceAtWordBoundary)</pre>
+<div class="block">Creates an instance with a string (plain text) terminator and a markup terminator.
+ See parameters in <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean, TemplateMarkupOutputModel,
+ Integer, Boolean, boolean, Double)</code></a>; the missing parameters will be <code>null</code>.</div>
+</li>
+</ul>
+<a name="DefaultTruncateBuiltinAlgorithm-java.lang.String-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DefaultTruncateBuiltinAlgorithm</h4>
+<pre>public&nbsp;DefaultTruncateBuiltinAlgorithm(java.lang.String&nbsp;defaultTerminator,
+                                       boolean&nbsp;addSpaceAtWordBoundary)</pre>
+<div class="block">Creates an instance with string (plain text) terminator.
+ See parameters in <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean, TemplateMarkupOutputModel,
+ Integer, Boolean, boolean, Double)</code></a>; the missing parameters will be <code>null</code>.</div>
+</li>
+</ul>
+<a name="DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DefaultTruncateBuiltinAlgorithm</h4>
+<pre>public&nbsp;DefaultTruncateBuiltinAlgorithm(java.lang.String&nbsp;defaultTerminator,
+                                       java.lang.Integer&nbsp;defaultTerminatorLength,
+                                       java.lang.Boolean&nbsp;defaultTerminatorRemovesDots,
+                                       <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&lt;?&gt;&nbsp;defaultMTerminator,
+                                       java.lang.Integer&nbsp;defaultMTerminatorLength,
+                                       java.lang.Boolean&nbsp;defaultMTerminatorRemovesDots,
+                                       boolean&nbsp;addSpaceAtWordBoundary,
+                                       java.lang.Double&nbsp;wordBoundaryMinLength)</pre>
+<div class="block">Creates an instance with markup terminator.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>defaultTerminator</code> - The terminator to use if the invocation (like <code>s?truncate(20)</code>) doesn't specify it. The
+            terminator is the text appended after a truncated string, to indicate that it was truncated.
+            Typically it's <code>"[...]"</code> or <code>"..."</code>, or the same with UNICODE ellipsis character.</dd>
+<dd><code>defaultTerminatorLength</code> - The assumed length of <code>defaultTerminator</code>, or <code>null</code> if it should be get via
+            <code>defaultTerminator.length()</code>.</dd>
+<dd><code>defaultTerminatorRemovesDots</code> - Whether dots and ellipsis characters that the <code>defaultTerminator</code> touches should be removed. If
+            <code>null</code>, this will be auto-detected based on if <code>defaultTerminator</code> starts with dot or
+            ellipsis. The goal is to avoid outcomes where we have more dots next to each other than there are in
+            the terminator.</dd>
+<dd><code>defaultMTerminator</code> - Similar to <code>defaultTerminator</code>, but is markup instead of plain text. This can be <code>null</code>,
+            in which case <code>defaultTerminator</code> will be used even if <code>?truncate_m</code> or similar built-in
+            is called.</dd>
+<dd><code>defaultMTerminatorLength</code> - The assumed length of the terminator, or <code>null</code> if it should be get via
+            <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getMTerminatorLength-freemarker.core.TemplateMarkupOutputModel-"><code>getMTerminatorLength(freemarker.core.TemplateMarkupOutputModel&lt;?&gt;)</code></a>.</dd>
+<dd><code>defaultMTerminatorRemovesDots</code> - Similar to <code>defaultTerminatorRemovesDots</code>, but for <code>defaultMTerminator</code>. If <code>null</code>, and <code>defaultMTerminator</code> is HTML/XML/XHTML, then it will be examined of the
+            first character of the terminator that's outside a HTML/XML tag or comment is dot or ellipsis
+            (after resolving numerical character references). For other kind of markup it defaults to <code>true</code>, to be on the safe side.</dd>
+<dd><code>addSpaceAtWordBoundary,</code> - Whether to add a space before the terminator if the truncation happens directly after the end of a
+            word. For example, when "too long sentence" is truncated, it will be a like "too long [...]"
+            instead of "too long[...]". When the truncation happens inside a word, this has on effect, i.e., it
+            will be always like "too long se[...]" (no space before the terminator). Note that only whitespace is
+            considered to be a word separator, not punctuation, so if this is <code>true</code>, you get results
+            like "Some sentence. [...]".</dd>
+<dd><code>wordBoundaryMinLength</code> - Used when <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#truncate-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-"><code>truncate(java.lang.String, int, freemarker.template.TemplateScalarModel, java.lang.Integer, freemarker.core.Environment)</code></a> or <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#truncateM-java.lang.String-int-freemarker.temp [...]
+            word boundary truncation and character boundary truncation; it's the minimum length, given as
+            proportion of <code>maxLength</code>, that word boundary truncation has to produce. If the resulting
+            length is less, we do character boundary truncation instead. For example, if <code>maxLength</code> is
+            30, and this parameter is 0.85, then: 30*0.85 = 25.5, rounded up that's 26, so the resulting length
+            must be at least 26. The result of character boundary truncation will be always accepted, even if its
+            still too short. If this parameter is <code>null</code>, then <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DEFAULT_WORD_BOUNDARY_MIN_LENGTH"><code>DEFAULT_WORD_BOUNDARY_MIN_LENGTH</code></a>
+            will be used. If this parameter is 0, then truncation always happens at word boundary. If this
+            parameter is 1.0, then truncation doesn't prefer word boundaries over other places.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="truncate-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>truncate</h4>
+<pre>public&nbsp;<a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;truncate(java.lang.String&nbsp;s,
+                                    int&nbsp;maxLength,
+                                    <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;terminator,
+                                    java.lang.Integer&nbsp;terminatorLength,
+                                    <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)
+                             throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncate-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">TruncateBuiltinAlgorithm</a></code></span></div>
+<div class="block">Corresponds to <code>?truncate(...)</code> in templates.
+ Similar to <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-"><code>TruncateBuiltinAlgorithm.truncateM(String, int, TemplateModel, Integer, Environment)</code></a>, but only allows
+ an FTL string as terminator, and thence the return value is always an FTL string as well (not
+ <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a>).</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncate-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">truncate</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="truncateW-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>truncateW</h4>
+<pre>public&nbsp;<a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;truncateW(java.lang.String&nbsp;s,
+                                     int&nbsp;maxLength,
+                                     <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;terminator,
+                                     java.lang.Integer&nbsp;terminatorLength,
+                                     <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)
+                              throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateW-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">TruncateBuiltinAlgorithm</a></code></span></div>
+<div class="block">Corresponds to <code>?truncate_w(...)</code> in templates.
+ Same as <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateWM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-"><code>TruncateBuiltinAlgorithm.truncateWM(String, int, TemplateModel, Integer, Environment)</code></a>, but only allows
+ an FTL string as terminator, and thence the return value is always an FTL string as well (not
+ <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a>).</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateW-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">truncateW</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="truncateC-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>truncateC</h4>
+<pre>public&nbsp;<a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;truncateC(java.lang.String&nbsp;s,
+                                     int&nbsp;maxLength,
+                                     <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template">TemplateScalarModel</a>&nbsp;terminator,
+                                     java.lang.Integer&nbsp;terminatorLength,
+                                     <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)
+                              throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateC-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">TruncateBuiltinAlgorithm</a></code></span></div>
+<div class="block">Corresponds to <code>?truncate_c_m(...)</code> in templates.
+ Same as <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateCM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-"><code>TruncateBuiltinAlgorithm.truncateCM(String, int, TemplateModel, Integer, Environment)</code></a>, but only allows
+ an FTL string as terminator, and thence the return value is always an FTL string as well (not markup).</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateC-java.lang.String-int-freemarker.template.TemplateScalarModel-java.lang.Integer-freemarker.core.Environment-">truncateC</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="truncateM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>truncateM</h4>
+<pre>public&nbsp;<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;truncateM(java.lang.String&nbsp;s,
+                               int&nbsp;maxLength,
+                               <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;terminator,
+                               java.lang.Integer&nbsp;terminatorLength,
+                               <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)
+                        throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">TruncateBuiltinAlgorithm</a></code></span></div>
+<div class="block">Corresponds to <code>?truncate_m(...)</code> in templates. This method decides automatically if it will truncate at
+ word boundary (see <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateWM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-"><code>TruncateBuiltinAlgorithm.truncateWM(java.lang.String, int, freemarker.template.TemplateModel, java.lang.Integer, freemarker.core.Environment)</code></a>) or at character boundary (see <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateCM-java.lang.String-int-freemarker.tem [...]
+ on the implementation, the idea is that it should truncate at word boundary, unless that gives a too short
+ string, in which case it falls back to truncation at character duration.
+
+ <p>The terminator and the return value can be <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a> (FTL markup output type), not
+ just <code>String</code> (FTL string type), hence the "m" in the name.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">truncateM</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The input string whose length need to be limited. The caller (the FreeMarker core normally) is
+            expected to guarantee that this won't be <code>null</code>.</dd>
+<dd><code>maxLength</code> - The maximum length of the returned string, although the algorithm need not guarantee this strictly.
+            For example, if this is less than the length of the <code>terminator</code> string, then most algorithms
+            should still return the <code>terminator</code> string. Or, some sophisticated algorithm may counts in
+            letters differently depending on their visual width. The goal is usually to prevent unusually long
+            string values to ruin visual layout, while showing clearly to the user that the end of the string
+            was cut off. If the input string is not longer than the maximum length, then it should be returned
+            as is. The caller (the FreeMarker core normally) is expected to guarantee that this will be at
+            least 0.</dd>
+<dd><code>terminator</code> - The string or markup to show at the end of the returned string if the string was actually truncated.
+            This can be <code>null</code>, in which case the default terminator of the algorithm will be used. It
+            can be an FTL string (a <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template"><code>TemplateScalarModel</code></a>) of any length (including 0), or a
+            <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a> (typically HTML markup). If it's <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a>,
+            then the result is <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a> of the same output format as well, otherwise
+            it can remain <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template"><code>TemplateScalarModel</code></a>. Note that the length of the terminator counts into the
+            result length that shouldn't be exceed (<code>maxLength</code>) (or at least the algorithm should make
+            an effort to avoid that).</dd>
+<dd><code>terminatorLength</code> - The assumed length of the terminator. If this is <code>null</code> (and typically it is), then the method
+            decides the length of the terminator. If this is not <code>null</code>, then the method must pretend
+            that the terminator length is this. This can be used to specify the visual length of a terminator
+            explicitly, which can't always be decided well programmatically.</dd>
+<dd><code>env</code> - The runtime environment from which this algorithm was called. The caller (the FreeMarker core
+            normally) is expected to guarantee that this won't be <code>null</code>.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The truncated text, which is either a <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template"><code>TemplateScalarModel</code></a> (FTL string), or a
+ <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a>.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code> - If anything goes wrong during truncating. It's unlikely that an implementation will need this though.</dd>
+</dl>
+</li>
+</ul>
+<a name="truncateWM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>truncateWM</h4>
+<pre>public&nbsp;<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;truncateWM(java.lang.String&nbsp;s,
+                                int&nbsp;maxLength,
+                                <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;terminator,
+                                java.lang.Integer&nbsp;terminatorLength,
+                                <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)
+                         throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateWM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">TruncateBuiltinAlgorithm</a></code></span></div>
+<div class="block">Corresponds to <code>?truncate_w_m(...)</code> in templates.
+ Similar to <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-"><code>TruncateBuiltinAlgorithm.truncateM(String, int, TemplateModel, Integer, Environment)</code></a>, but the
+ truncation should happen at word boundary (hence the "w"). That is, the truncation isn't allowed to truncate a
+ word. What counts as a word, is up to the implementation, but at least in <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>DefaultTruncateBuiltinAlgorithm</code></a>
+ words are the sections that are separated by whitespace (so punctuation doesn't separate words).</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateWM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">truncateWM</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="truncateCM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>truncateCM</h4>
+<pre>public&nbsp;<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;truncateCM(java.lang.String&nbsp;s,
+                                int&nbsp;maxLength,
+                                <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;terminator,
+                                java.lang.Integer&nbsp;terminatorLength,
+                                <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)
+                         throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateCM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">TruncateBuiltinAlgorithm</a></code></span></div>
+<div class="block">Corresponds to <code>?truncate_c_m(...)</code> in templates.
+ Similar to <a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-"><code>TruncateBuiltinAlgorithm.truncateM(String, int, TemplateModel, Integer, Environment)</code></a>, but the
+ truncation should not prefer truncating at word boundaries over the closer approximation of the desired <code>maxLength</code>. Hence, we say that it truncates at character boundary (hence the "c").</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html#truncateCM-java.lang.String-int-freemarker.template.TemplateModel-java.lang.Integer-freemarker.core.Environment-">truncateCM</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/TruncateBuiltinAlgorithm.html" title="class in freemarker.core">TruncateBuiltinAlgorithm</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultTerminator--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultTerminator</h4>
+<pre>public&nbsp;java.lang.String&nbsp;getDefaultTerminator()</pre>
+</li>
+</ul>
+<a name="getDefaultTerminatorLength--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultTerminatorLength</h4>
+<pre>public&nbsp;int&nbsp;getDefaultTerminatorLength()</pre>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</li>
+</ul>
+<a name="getDefaultTerminatorRemovesDots--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultTerminatorRemovesDots</h4>
+<pre>public&nbsp;boolean&nbsp;getDefaultTerminatorRemovesDots()</pre>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</li>
+</ul>
+<a name="getDefaultMTerminator--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultMTerminator</h4>
+<pre>public&nbsp;<a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&lt;?&gt;&nbsp;getDefaultMTerminator()</pre>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</li>
+</ul>
+<a name="getDefaultMTerminatorLength--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultMTerminatorLength</h4>
+<pre>public&nbsp;java.lang.Integer&nbsp;getDefaultMTerminatorLength()</pre>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</li>
+</ul>
+<a name="getDefaultMTerminatorRemovesDots--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultMTerminatorRemovesDots</h4>
+<pre>public&nbsp;boolean&nbsp;getDefaultMTerminatorRemovesDots()</pre>
+</li>
+</ul>
+<a name="getWordBoundaryMinLength--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getWordBoundaryMinLength</h4>
+<pre>public&nbsp;double&nbsp;getWordBoundaryMinLength()</pre>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</li>
+</ul>
+<a name="getAddSpaceAtWordBoundary--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAddSpaceAtWordBoundary</h4>
+<pre>public&nbsp;boolean&nbsp;getAddSpaceAtWordBoundary()</pre>
+<div class="block">See similarly named parameter of <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#DefaultTruncateBuiltinAlgorithm-java.lang.String-java.lang.Integer-java.lang.Boolean-freemarker.core.TemplateMarkupOutputModel-java.lang.Integer-java.lang.Boolean-boolean-java.lang.Double-"><code>DefaultTruncateBuiltinAlgorithm(String, Integer, Boolean,
+ TemplateMarkupOutputModel, Integer, Boolean, boolean, Double)</code></a> the construction}.</div>
+</li>
+</ul>
+<a name="getMTerminatorLength-freemarker.core.TemplateMarkupOutputModel-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMTerminatorLength</h4>
+<pre>protected&nbsp;int&nbsp;getMTerminatorLength(<a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&lt;?&gt;&nbsp;mTerminator)
+                            throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
+<div class="block">Returns the (estimated) length of the argument terminator. It should only count characters that are visible for
+ the user (like in the web browser).
+
+ <p>In the implementation in <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>DefaultTruncateBuiltinAlgorithm</code></a>, if the markup is HTML/XML/XHTML, then this
+ counts the characters outside tags and comments, and inside CDATA sections (ignoring the CDATA section
+ delimiters). Furthermore then it counts character and entity references as having length of 1. If the markup
+ is not HTML/XML/XHTML (or subclasses of those <a href="../../freemarker/core/MarkupOutputFormat.html" title="class in freemarker.core"><code>MarkupOutputFormat</code></a>-s) then it doesn't know how to
+ measure it, and simply returns 3.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getTerminatorRemovesDots-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTerminatorRemovesDots</h4>
+<pre>protected&nbsp;boolean&nbsp;getTerminatorRemovesDots(java.lang.String&nbsp;terminator)
+                                    throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
+<div class="block">Tells if the dots touched by the terminator text should be removed.
+
+ <p>The implementation in <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>DefaultTruncateBuiltinAlgorithm</code></a> return <code>true</code> if the terminator starts
+ with dot (or ellipsis).</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>terminator</code> - A <a href="../../freemarker/template/TemplateScalarModel.html" title="interface in freemarker.template"><code>TemplateScalarModel</code></a> or <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a>. Not <code>null</code>.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getMTerminatorRemovesDots-freemarker.core.TemplateMarkupOutputModel-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getMTerminatorRemovesDots</h4>
+<pre>protected&nbsp;boolean&nbsp;getMTerminatorRemovesDots(<a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core">TemplateMarkupOutputModel</a>&nbsp;terminator)
+                                     throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
+<div class="block">Same as <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html#getTerminatorRemovesDots-java.lang.String-"><code>getTerminatorRemovesDots(String)</code></a>, but invoked for a markup terminator.
+
+ <p>The implementation in <a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><code>DefaultTruncateBuiltinAlgorithm</code></a> will skip HTML/XML tags and comments,
+ and resolves relevant character references to find out if the first character is dot or ellipsis. But it only
+ does this for HTML/XMl/XHTML (or subclasses of those <a href="../../freemarker/core/MarkupOutputFormat.html" title="class in freemarker.core"><code>MarkupOutputFormat</code></a>-s), otherwise it always
+ returns <code>true</code> to be on the safe side.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/DefaultTruncateBuiltinAlgorithm.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/core/CustomAttribute.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/core/DefaultTruncateBuiltinAlgorithm.html" target="_top">Frames</a></li>
+<li><a href="DefaultTruncateBuiltinAlgorithm.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/api/freemarker/core/DirectiveCallPlace.html b/docs/api/freemarker/core/DirectiveCallPlace.html
index a340f30..5807812 100644
--- a/docs/api/freemarker/core/DirectiveCallPlace.html
+++ b/docs/api/freemarker/core/DirectiveCallPlace.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>DirectiveCallPlace (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>DirectiveCallPlace (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="DirectiveCallPlace (FreeMarker 2.3.28 API)";
+            parent.document.title="DirectiveCallPlace (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../freemarker/core/CustomAttribute.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -360,7 +360,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../freemarker/core/CustomAttribute.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/core/DefaultTruncateBuiltinAlgorithm.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/docs/api/freemarker/core/Environment.Namespace.html b/docs/api/freemarker/core/Environment.Namespace.html
index 38ec69b..976a697 100644
--- a/docs/api/freemarker/core/Environment.Namespace.html
+++ b/docs/api/freemarker/core/Environment.Namespace.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Environment.Namespace (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Environment.Namespace (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Environment.Namespace (FreeMarker 2.3.28 API)";
+            parent.document.title="Environment.Namespace (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/Environment.html b/docs/api/freemarker/core/Environment.html
index 6c6f9c7..6d226ca 100644
--- a/docs/api/freemarker/core/Environment.html
+++ b/docs/api/freemarker/core/Environment.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Environment (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>Environment (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Environment (FreeMarker 2.3.28 API)";
+            parent.document.title="Environment (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -173,7 +173,7 @@ extends <a href="../../freemarker/core/Configurable.html" title="class in freema
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></h3>
-<code><a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY">API_BUILTIN_ENABLED_KEY</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_CAMEL_CASE">API_BUILTIN_ENABLED_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_SNAKE_CASE">API_BUILTIN_ENABLED_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#ARITHMETIC_ENGINE_KEY">ARITHMETIC_ENGINE_KEY</a>, <a href="../../freemarker/core/Con [...]
+<code><a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY">API_BUILTIN_ENABLED_KEY</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_CAMEL_CASE">API_BUILTIN_ENABLED_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_SNAKE_CASE">API_BUILTIN_ENABLED_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#ARITHMETIC_ENGINE_KEY">ARITHMETIC_ENGINE_KEY</a>, <a href="../../freemarker/core/Con [...]
 </ul>
 </li>
 </ul>
@@ -683,7 +683,7 @@ extends <a href="../../freemarker/core/Configurable.html" title="class in freema
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></h3>
-<code><a href="../../freemarker/core/Configurable.html#addAutoImport-java.lang.String-java.lang.String-">addAutoImport</a>, <a href="../../freemarker/core/Configurable.html#addAutoInclude-java.lang.String-">addAutoInclude</a>, <a href="../../freemarker/core/Configurable.html#clone--">clone</a>, <a href="../../freemarker/core/Configurable.html#doAutoImportsAndIncludes-freemarker.core.Environment-">doAutoImportsAndIncludes</a>, <a href="../../freemarker/core/Configurable.html#getArithmetic [...]
+<code><a href="../../freemarker/core/Configurable.html#addAutoImport-java.lang.String-java.lang.String-">addAutoImport</a>, <a href="../../freemarker/core/Configurable.html#addAutoInclude-java.lang.String-">addAutoInclude</a>, <a href="../../freemarker/core/Configurable.html#clone--">clone</a>, <a href="../../freemarker/core/Configurable.html#doAutoImportsAndIncludes-freemarker.core.Environment-">doAutoImportsAndIncludes</a>, <a href="../../freemarker/core/Configurable.html#getArithmetic [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
diff --git a/docs/api/freemarker/core/FreeMarkerTree.html b/docs/api/freemarker/core/FreeMarkerTree.html
index 7b34d59..c5451f0 100644
--- a/docs/api/freemarker/core/FreeMarkerTree.html
+++ b/docs/api/freemarker/core/FreeMarkerTree.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>FreeMarkerTree (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>FreeMarkerTree (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="FreeMarkerTree (FreeMarker 2.3.28 API)";
+            parent.document.title="FreeMarkerTree (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/HTMLOutputFormat.html b/docs/api/freemarker/core/HTMLOutputFormat.html
index 1a277e7..a944dbc 100644
--- a/docs/api/freemarker/core/HTMLOutputFormat.html
+++ b/docs/api/freemarker/core/HTMLOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>HTMLOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>HTMLOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="HTMLOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="HTMLOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -77,13 +77,13 @@ var activeTableTab = "activeTableTab";
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
 <li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>
 </div>
@@ -125,11 +125,13 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public final class <span class="typeNameLabel">HTMLOutputFormat</span>
+<pre>public class <span class="typeNameLabel">HTMLOutputFormat</span>
 extends <a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="class in freemarker.core">CommonMarkupOutputFormat</a>&lt;<a href="../../freemarker/core/TemplateHTMLOutputModel.html" title="class in freemarker.core">TemplateHTMLOutputModel</a>&gt;</pre>
 <div class="block">Represents the HTML output format (MIME type "text/html", name "HTML"). This format escapes by default (via
  <a href="../../freemarker/template/utility/StringUtil.html#XHTMLEnc-java.lang.String-"><code>StringUtil.XHTMLEnc(String)</code></a>). The <code>?html</code>, <code>?xhtml</code> and <code>?xml</code> built-ins silently bypass
- template output values of the type produced by this output format (<a href="../../freemarker/core/TemplateHTMLOutputModel.html" title="class in freemarker.core"><code>TemplateHTMLOutputModel</code></a>).</div>
+ template output values of the type produced by this output format (<a href="../../freemarker/core/TemplateHTMLOutputModel.html" title="class in freemarker.core"><code>TemplateHTMLOutputModel</code></a>).
+
+ <p>This class was final before 2.3.29.</div>
 <dl>
 <dt><span class="simpleTagLabel">Since:</span></dt>
 <dd>2.3.24</dd>
@@ -161,6 +163,25 @@ extends <a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="cla
 </table>
 </li>
 </ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/HTMLOutputFormat.html#HTMLOutputFormat--">HTMLOutputFormat</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
 <!-- ========== METHOD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="method.summary">
@@ -262,6 +283,27 @@ extends <a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="cla
 </ul>
 </li>
 </ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="HTMLOutputFormat--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>HTMLOutputFormat</h4>
+<pre>protected&nbsp;HTMLOutputFormat()</pre>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.29</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
 <!-- ============ METHOD DETAIL ========== -->
 <ul class="blockList">
 <li class="blockList"><a name="method.detail">
@@ -425,13 +467,13 @@ extends <a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="cla
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
 <li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>
 </div>
diff --git a/docs/api/freemarker/core/InvalidFormatParametersException.html b/docs/api/freemarker/core/InvalidFormatParametersException.html
index 5b94294..e9a4aea 100644
--- a/docs/api/freemarker/core/InvalidFormatParametersException.html
+++ b/docs/api/freemarker/core/InvalidFormatParametersException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>InvalidFormatParametersException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>InvalidFormatParametersException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="InvalidFormatParametersException (FreeMarker 2.3.28 API)";
+            parent.document.title="InvalidFormatParametersException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/InvalidFormatStringException.html b/docs/api/freemarker/core/InvalidFormatStringException.html
index f35d61d..04aa7ba 100644
--- a/docs/api/freemarker/core/InvalidFormatStringException.html
+++ b/docs/api/freemarker/core/InvalidFormatStringException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>InvalidFormatStringException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>InvalidFormatStringException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="InvalidFormatStringException (FreeMarker 2.3.28 API)";
+            parent.document.title="InvalidFormatStringException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/InvalidReferenceException.html b/docs/api/freemarker/core/InvalidReferenceException.html
index 6ad7b5c..c47c07a 100644
--- a/docs/api/freemarker/core/InvalidReferenceException.html
+++ b/docs/api/freemarker/core/InvalidReferenceException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>InvalidReferenceException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>InvalidReferenceException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="InvalidReferenceException (FreeMarker 2.3.28 API)";
+            parent.document.title="InvalidReferenceException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/JSONOutputFormat.html b/docs/api/freemarker/core/JSONOutputFormat.html
index 312a69e..3dc9f97 100644
--- a/docs/api/freemarker/core/JSONOutputFormat.html
+++ b/docs/api/freemarker/core/JSONOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>JSONOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>JSONOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="JSONOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="JSONOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/JavaScriptOutputFormat.html b/docs/api/freemarker/core/JavaScriptOutputFormat.html
index e6d91ce..304fb1a 100644
--- a/docs/api/freemarker/core/JavaScriptOutputFormat.html
+++ b/docs/api/freemarker/core/JavaScriptOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>JavaScriptOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>JavaScriptOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="JavaScriptOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="JavaScriptOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/MarkupOutputFormat.html b/docs/api/freemarker/core/MarkupOutputFormat.html
index 537a100..3a6c687 100644
--- a/docs/api/freemarker/core/MarkupOutputFormat.html
+++ b/docs/api/freemarker/core/MarkupOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>MarkupOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>MarkupOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="MarkupOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="MarkupOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonBooleanException.html b/docs/api/freemarker/core/NonBooleanException.html
index 5bc0fda..948d20b 100644
--- a/docs/api/freemarker/core/NonBooleanException.html
+++ b/docs/api/freemarker/core/NonBooleanException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:14 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonBooleanException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonBooleanException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonBooleanException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonBooleanException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonDateException.html b/docs/api/freemarker/core/NonDateException.html
index 860f90c..90f1d5b 100644
--- a/docs/api/freemarker/core/NonDateException.html
+++ b/docs/api/freemarker/core/NonDateException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonDateException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonDateException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonDateException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonDateException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonExtendedHashException.html b/docs/api/freemarker/core/NonExtendedHashException.html
index b1f0b78..15d15d5 100644
--- a/docs/api/freemarker/core/NonExtendedHashException.html
+++ b/docs/api/freemarker/core/NonExtendedHashException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonExtendedHashException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonExtendedHashException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonExtendedHashException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonExtendedHashException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonExtendedNodeException.html b/docs/api/freemarker/core/NonExtendedNodeException.html
index fa6ccc8..90d26d2 100644
--- a/docs/api/freemarker/core/NonExtendedNodeException.html
+++ b/docs/api/freemarker/core/NonExtendedNodeException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonExtendedNodeException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonExtendedNodeException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonExtendedNodeException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonExtendedNodeException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonHashException.html b/docs/api/freemarker/core/NonHashException.html
index b64ae07..3e81549 100644
--- a/docs/api/freemarker/core/NonHashException.html
+++ b/docs/api/freemarker/core/NonHashException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonHashException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonHashException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonHashException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonHashException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonMarkupOutputException.html b/docs/api/freemarker/core/NonMarkupOutputException.html
index fa8f4c1..ca2a98d 100644
--- a/docs/api/freemarker/core/NonMarkupOutputException.html
+++ b/docs/api/freemarker/core/NonMarkupOutputException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonMarkupOutputException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonMarkupOutputException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonMarkupOutputException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonMarkupOutputException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonMethodException.html b/docs/api/freemarker/core/NonMethodException.html
index 3313f4b..0c185d8 100644
--- a/docs/api/freemarker/core/NonMethodException.html
+++ b/docs/api/freemarker/core/NonMethodException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonMethodException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonMethodException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonMethodException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonMethodException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonNodeException.html b/docs/api/freemarker/core/NonNodeException.html
index 67daf67..70cf0e6 100644
--- a/docs/api/freemarker/core/NonNodeException.html
+++ b/docs/api/freemarker/core/NonNodeException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonNodeException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonNodeException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonNodeException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonNodeException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonNumericalException.html b/docs/api/freemarker/core/NonNumericalException.html
index 75898d6..5e432f0 100644
--- a/docs/api/freemarker/core/NonNumericalException.html
+++ b/docs/api/freemarker/core/NonNumericalException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonNumericalException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonNumericalException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonNumericalException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonNumericalException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonSequenceException.html b/docs/api/freemarker/core/NonSequenceException.html
index 4fce299..5ba364d 100644
--- a/docs/api/freemarker/core/NonSequenceException.html
+++ b/docs/api/freemarker/core/NonSequenceException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonSequenceException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonSequenceException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonSequenceException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonSequenceException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonSequenceOrCollectionException.html b/docs/api/freemarker/core/NonSequenceOrCollectionException.html
index 31af47f..ebf21fd 100644
--- a/docs/api/freemarker/core/NonSequenceOrCollectionException.html
+++ b/docs/api/freemarker/core/NonSequenceOrCollectionException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonSequenceOrCollectionException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonSequenceOrCollectionException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonSequenceOrCollectionException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonSequenceOrCollectionException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonStringException.html b/docs/api/freemarker/core/NonStringException.html
index 0370c4b..7a4489b 100644
--- a/docs/api/freemarker/core/NonStringException.html
+++ b/docs/api/freemarker/core/NonStringException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonStringException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonStringException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonStringException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonStringException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/NonStringOrTemplateOutputException.html b/docs/api/freemarker/core/NonStringOrTemplateOutputException.html
index 7f4ceac..f3c7342 100644
--- a/docs/api/freemarker/core/NonStringOrTemplateOutputException.html
+++ b/docs/api/freemarker/core/NonStringOrTemplateOutputException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NonStringOrTemplateOutputException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>NonStringOrTemplateOutputException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="NonStringOrTemplateOutputException (FreeMarker 2.3.28 API)";
+            parent.document.title="NonStringOrTemplateOutputException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/OptInTemplateClassResolver.html b/docs/api/freemarker/core/OptInTemplateClassResolver.html
index 2f5cc0a..18f3aab 100644
--- a/docs/api/freemarker/core/OptInTemplateClassResolver.html
+++ b/docs/api/freemarker/core/OptInTemplateClassResolver.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>OptInTemplateClassResolver (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>OptInTemplateClassResolver (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="OptInTemplateClassResolver (FreeMarker 2.3.28 API)";
+            parent.document.title="OptInTemplateClassResolver (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/OutputFormat.html b/docs/api/freemarker/core/OutputFormat.html
index f4ceadb..57c432f 100644
--- a/docs/api/freemarker/core/OutputFormat.html
+++ b/docs/api/freemarker/core/OutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>OutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>OutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="OutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="OutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/ParseException.html b/docs/api/freemarker/core/ParseException.html
index 31e6f75..c28c53c 100644
--- a/docs/api/freemarker/core/ParseException.html
+++ b/docs/api/freemarker/core/ParseException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ParseException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ParseException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ParseException (FreeMarker 2.3.28 API)";
+            parent.document.title="ParseException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -555,193 +555,197 @@ extends java.io.IOException</pre>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LESS_THAN">LESS_THAN</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LAMBDA_ARROW">LAMBDA_ARROW</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LESS_THAN_EQUALS">LESS_THAN_EQUALS</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LESS_THAN">LESS_THAN</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LESS_THAN_EQUALS">LESS_THAN_EQUALS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#lineNumber">lineNumber</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LIST">LIST</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LOCALASSIGN">LOCALASSIGN</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LONE_LESS_THAN_OR_DASH">LONE_LESS_THAN_OR_DASH</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#LTRIM">LTRIM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#MACRO">MACRO</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#MAYBE_END">MAYBE_END</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#MINUS">MINUS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#MINUS_EQUALS">MINUS_EQUALS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#MINUS_MINUS">MINUS_MINUS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#MOD_EQUALS">MOD_EQUALS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NAMED_PARAMETER_EXPRESSION">NAMED_PARAMETER_EXPRESSION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NATURAL_GT">NATURAL_GT</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NATURAL_GTE">NATURAL_GTE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NESTED">NESTED</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NO_DIRECTIVE">NO_DIRECTIVE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NO_PARSE">NO_PARSE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NO_SPACE_EXPRESSION">NO_SPACE_EXPRESSION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NOAUTOESC">NOAUTOESC</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NOESCAPE">NOESCAPE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NON_ESCAPED_ID_START_CHAR">NON_ESCAPED_ID_START_CHAR</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NOPARSE">NOPARSE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NOT_EQUALS">NOT_EQUALS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#NOTRIM">NOTRIM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#OPEN_BRACKET">OPEN_BRACKET</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#OPEN_MISPLACED_INTERPOLATION">OPEN_MISPLACED_INTERPOLATION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#OPEN_PAREN">OPEN_PAREN</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#OPENING_CURLY_BRACKET">OPENING_CURLY_BRACKET</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#OR">OR</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#OUTPUTFORMAT">OUTPUTFORMAT</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#PERCENT">PERCENT</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#PLUS">PLUS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#PLUS_EQUALS">PLUS_EQUALS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#PLUS_PLUS">PLUS_PLUS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#RAW_STRING">RAW_STRING</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#RECOVER">RECOVER</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#RECURSE">RECURSE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#RETURN">RETURN</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#RTRIM">RTRIM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#SEMICOLON">SEMICOLON</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#SEP">SEP</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#SETTING">SETTING</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#SIMPLE_NESTED">SIMPLE_NESTED</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#SIMPLE_RECURSE">SIMPLE_RECURSE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#SIMPLE_RETURN">SIMPLE_RETURN</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#specialConstructor">specialConstructor</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -749,102 +753,102 @@ extends java.io.IOException</pre>
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#SQUARE_BRACKET_INTERPOLATION_OPENING">SQUARE_BRACKET_INTERPOLATION_OPENING</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#START_TAG">START_TAG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#STATIC_TEXT_FALSE_ALARM">STATIC_TEXT_FALSE_ALARM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#STATIC_TEXT_NON_WS">STATIC_TEXT_NON_WS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#STATIC_TEXT_WS">STATIC_TEXT_WS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#STOP">STOP</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#STRING_LITERAL">STRING_LITERAL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#SWITCH">SWITCH</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TERMINATING_EXCLAM">TERMINATING_EXCLAM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TERMINATING_WHITESPACE">TERMINATING_WHITESPACE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TERSE_COMMENT">TERSE_COMMENT</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TERSE_COMMENT_END">TERSE_COMMENT_END</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TIMES">TIMES</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TIMES_EQUALS">TIMES_EQUALS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>java.lang.String[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#tokenImage">tokenImage</a></span></code>
 <div class="block">This is a reference to the "tokenImage" array of the generated
  parser within which the parse error occurred.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TRANSFORM">TRANSFORM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TRIM">TRIM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TRIVIAL_FTL_HEADER">TRIVIAL_FTL_HEADER</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#TRUE">TRUE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#UNIFIED_CALL">UNIFIED_CALL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#UNIFIED_CALL_END">UNIFIED_CALL_END</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#UNKNOWN_DIRECTIVE">UNKNOWN_DIRECTIVE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#USING">USING</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/ParseException.html#VISIT">VISIT</a></span></code>&nbsp;</td>
 </tr>
@@ -2608,6 +2612,19 @@ protected&nbsp;boolean specialConstructor</pre>
 </dl>
 </li>
 </ul>
+<a name="LAMBDA_ARROW">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LAMBDA_ARROW</h4>
+<pre>public static final&nbsp;int LAMBDA_ARROW</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../constant-values.html#freemarker.core.ParseException.LAMBDA_ARROW">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="PLUS">
 <!--   -->
 </a>
diff --git a/docs/api/freemarker/core/ParserConfiguration.html b/docs/api/freemarker/core/ParserConfiguration.html
index a04d510..4c81e30 100644
--- a/docs/api/freemarker/core/ParserConfiguration.html
+++ b/docs/api/freemarker/core/ParserConfiguration.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ParserConfiguration (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ParserConfiguration (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ParserConfiguration (FreeMarker 2.3.28 API)";
+            parent.document.title="ParserConfiguration (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/ParsingNotSupportedException.html b/docs/api/freemarker/core/ParsingNotSupportedException.html
index 0146d3d..68e8216 100644
--- a/docs/api/freemarker/core/ParsingNotSupportedException.html
+++ b/docs/api/freemarker/core/ParsingNotSupportedException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ParsingNotSupportedException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>ParsingNotSupportedException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ParsingNotSupportedException (FreeMarker 2.3.28 API)";
+            parent.document.title="ParsingNotSupportedException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/PlainTextOutputFormat.html b/docs/api/freemarker/core/PlainTextOutputFormat.html
index 973351a..df2a03a 100644
--- a/docs/api/freemarker/core/PlainTextOutputFormat.html
+++ b/docs/api/freemarker/core/PlainTextOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>PlainTextOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>PlainTextOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="PlainTextOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="PlainTextOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/RTFOutputFormat.html b/docs/api/freemarker/core/RTFOutputFormat.html
index 6fc8df2..3b307e0 100644
--- a/docs/api/freemarker/core/RTFOutputFormat.html
+++ b/docs/api/freemarker/core/RTFOutputFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>RTFOutputFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>RTFOutputFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="RTFOutputFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="RTFOutputFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -77,13 +77,13 @@ var activeTableTab = "activeTableTab";
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
 <li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>
 </div>
@@ -125,11 +125,13 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public final class <span class="typeNameLabel">RTFOutputFormat</span>
+<pre>public class <span class="typeNameLabel">RTFOutputFormat</span>
 extends <a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="class in freemarker.core">CommonMarkupOutputFormat</a>&lt;<a href="../../freemarker/core/TemplateRTFOutputModel.html" title="class in freemarker.core">TemplateRTFOutputModel</a>&gt;</pre>
 <div class="block">Represents the Rich Text Format output format (MIME type "application/rtf", name "RTF"). This format escapes by
  default (via <a href="../../freemarker/template/utility/StringUtil.html#RTFEnc-java.lang.String-"><code>StringUtil.RTFEnc(String)</code></a>). The <code>?rtf</code> built-in silently bypasses template output values
- of the type produced by this output format (<a href="../../freemarker/core/TemplateRTFOutputModel.html" title="class in freemarker.core"><code>TemplateRTFOutputModel</code></a>).</div>
+ of the type produced by this output format (<a href="../../freemarker/core/TemplateRTFOutputModel.html" title="class in freemarker.core"><code>TemplateRTFOutputModel</code></a>).
+
+ <p>This class was final before 2.3.29.</div>
 <dl>
 <dt><span class="simpleTagLabel">Since:</span></dt>
 <dd>2.3.24</dd>
@@ -161,6 +163,25 @@ extends <a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="cla
 </table>
 </li>
 </ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/RTFOutputFormat.html#RTFOutputFormat--">RTFOutputFormat</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
 <!-- ========== METHOD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="method.summary">
@@ -262,6 +283,27 @@ extends <a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="cla
 </ul>
 </li>
 </ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="RTFOutputFormat--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>RTFOutputFormat</h4>
+<pre>protected&nbsp;RTFOutputFormat()</pre>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.29</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
 <!-- ============ METHOD DETAIL ========== -->
 <ul class="blockList">
 <li class="blockList"><a name="method.detail">
@@ -425,13 +467,13 @@ extends <a href="../../freemarker/core/CommonMarkupOutputFormat.html" title="cla
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
 <li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>
 </div>
diff --git a/docs/api/freemarker/core/StopException.html b/docs/api/freemarker/core/StopException.html
index 34d0bb1..bedc921 100644
--- a/docs/api/freemarker/core/StopException.html
+++ b/docs/api/freemarker/core/StopException.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>StopException (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>StopException (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="StopException (FreeMarker 2.3.28 API)";
+            parent.document.title="StopException (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/TemplateClassResolver.html b/docs/api/freemarker/core/TemplateClassResolver.html
index e51ff95..4554242 100644
--- a/docs/api/freemarker/core/TemplateClassResolver.html
+++ b/docs/api/freemarker/core/TemplateClassResolver.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateClassResolver (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateClassResolver (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateClassResolver (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateClassResolver (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/TemplateCombinedMarkupOutputModel.html b/docs/api/freemarker/core/TemplateCombinedMarkupOutputModel.html
index edf3f27..244e566 100644
--- a/docs/api/freemarker/core/TemplateCombinedMarkupOutputModel.html
+++ b/docs/api/freemarker/core/TemplateCombinedMarkupOutputModel.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateCombinedMarkupOutputModel (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateCombinedMarkupOutputModel (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateCombinedMarkupOutputModel (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateCombinedMarkupOutputModel (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -167,11 +167,18 @@ extends <a href="../../freemarker/core/CommonTemplateMarkupOutputModel.html" tit
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.freemarker.core.CommonTemplateMarkupOutputModel">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/CommonTemplateMarkupOutputModel.html" title="class in freemarker.core">CommonTemplateMarkupOutputModel</a></h3>
+<code><a href="../../freemarker/core/CommonTemplateMarkupOutputModel.html#toString--">toString</a></code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;java.lang.Object</h3>
-<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
 </ul>
 </li>
 </ul>
diff --git a/docs/api/freemarker/core/TemplateConfiguration.html b/docs/api/freemarker/core/TemplateConfiguration.html
index f0771f2..ec07ad2 100644
--- a/docs/api/freemarker/core/TemplateConfiguration.html
+++ b/docs/api/freemarker/core/TemplateConfiguration.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateConfiguration (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateConfiguration (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateConfiguration (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateConfiguration (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
@@ -197,7 +197,7 @@ implements <a href="../../freemarker/core/ParserConfiguration.html" title="inter
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></h3>
-<code><a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY">API_BUILTIN_ENABLED_KEY</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_CAMEL_CASE">API_BUILTIN_ENABLED_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_SNAKE_CASE">API_BUILTIN_ENABLED_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#ARITHMETIC_ENGINE_KEY">ARITHMETIC_ENGINE_KEY</a>, <a href="../../freemarker/core/Con [...]
+<code><a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY">API_BUILTIN_ENABLED_KEY</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_CAMEL_CASE">API_BUILTIN_ENABLED_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_SNAKE_CASE">API_BUILTIN_ENABLED_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#ARITHMETIC_ENGINE_KEY">ARITHMETIC_ENGINE_KEY</a>, <a href="../../freemarker/core/Con [...]
 </ul>
 </li>
 </ul>
@@ -452,7 +452,7 @@ implements <a href="../../freemarker/core/ParserConfiguration.html" title="inter
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></h3>
-<code><a href="../../freemarker/core/Configurable.html#addAutoImport-java.lang.String-java.lang.String-">addAutoImport</a>, <a href="../../freemarker/core/Configurable.html#addAutoInclude-java.lang.String-">addAutoInclude</a>, <a href="../../freemarker/core/Configurable.html#clone--">clone</a>, <a href="../../freemarker/core/Configurable.html#doAutoImportsAndIncludes-freemarker.core.Environment-">doAutoImportsAndIncludes</a>, <a href="../../freemarker/core/Configurable.html#getArithmetic [...]
+<code><a href="../../freemarker/core/Configurable.html#addAutoImport-java.lang.String-java.lang.String-">addAutoImport</a>, <a href="../../freemarker/core/Configurable.html#addAutoInclude-java.lang.String-">addAutoInclude</a>, <a href="../../freemarker/core/Configurable.html#clone--">clone</a>, <a href="../../freemarker/core/Configurable.html#doAutoImportsAndIncludes-freemarker.core.Environment-">doAutoImportsAndIncludes</a>, <a href="../../freemarker/core/Configurable.html#getArithmetic [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
diff --git a/docs/api/freemarker/core/TemplateDateFormat.html b/docs/api/freemarker/core/TemplateDateFormat.html
index eb43e6e..99ea9a5 100644
--- a/docs/api/freemarker/core/TemplateDateFormat.html
+++ b/docs/api/freemarker/core/TemplateDateFormat.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateDateFormat (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateDateFormat (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateDateFormat (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateDateFormat (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/TemplateDateFormatFactory.html b/docs/api/freemarker/core/TemplateDateFormatFactory.html
index 724dd4b..0d2d167 100644
--- a/docs/api/freemarker/core/TemplateDateFormatFactory.html
+++ b/docs/api/freemarker/core/TemplateDateFormatFactory.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateDateFormatFactory (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateDateFormatFactory (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateDateFormatFactory (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateDateFormatFactory (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/TemplateFormatUtil.html b/docs/api/freemarker/core/TemplateFormatUtil.html
index 0644f70..0366507 100644
--- a/docs/api/freemarker/core/TemplateFormatUtil.html
+++ b/docs/api/freemarker/core/TemplateFormatUtil.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateFormatUtil (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateFormatUtil (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
 </head>
@@ -13,7 +13,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TemplateFormatUtil (FreeMarker 2.3.28 API)";
+            parent.document.title="TemplateFormatUtil (FreeMarker 2.3.29 API)";
         }
     }
     catch(err) {
diff --git a/docs/api/freemarker/core/TemplateHTMLOutputModel.html b/docs/api/freemarker/core/TemplateHTMLOutputModel.html
index 624a195..b0f97b7 100644
--- a/docs/api/freemarker/core/TemplateHTMLOutputModel.html
+++ b/docs/api/freemarker/core/TemplateHTMLOutputModel.html
@@ -2,10 +2,10 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_144) on Fri Mar 30 23:10:43 CEST 2018 -->
+<!-- Generated by javadoc (1.8.0_212) on Sun Aug 18 20:20:15 CEST 2019 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TemplateHTMLOutputModel (FreeMarker 2.3.28 API)</title>
-<meta name="date" content="2018-03-30">
+<title>TemplateHTMLOutputModel (FreeMarker 2.3.29 API)</title>
+<meta name="date" content="2019-08-18">
 <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../script.js"></script>
... 33341 lines suppressed ...