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 2023/12/09 19:13:53 UTC

(freemarker) 01/02: Javadoc HTML fixes to satisfy the linter of Java 17 javadoc

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

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

commit 0ab9e9567cfb9c77d8f46389d000ab360d97e8d5
Author: ddekany <dd...@apache.org>
AuthorDate: Sat Dec 9 16:49:14 2023 +0100

    Javadoc HTML fixes to satisfy the linter of Java 17 javadoc
---
 .../freemarker/core/TagSyntaxVariationsTest.java   | 13 ++--
 .../core/templatesuite/models/BooleanHash1.java    |  6 +-
 .../core/templatesuite/models/BooleanHash2.java    |  6 +-
 .../org/apache/freemarker/core/ASTDirInclude.java  |  6 +-
 .../apache/freemarker/core/ASTExpHashLiteral.java  | 12 ++--
 .../freemarker/core/ASTExpStringLiteral.java       |  8 +--
 .../apache/freemarker/core/ASTImplicitParent.java  |  2 +-
 .../apache/freemarker/core/ASTInterpolation.java   |  8 +--
 .../java/org/apache/freemarker/core/ASTNode.java   |  2 +-
 .../freemarker/core/BuiltInsForSequences.java      | 31 +++-----
 .../freemarker/core/BuiltInsForStringsMisc.java    | 25 +++----
 .../java/org/apache/freemarker/core/CallPlace.java | 10 +--
 .../org/apache/freemarker/core/Configuration.java  |  2 +-
 .../org/apache/freemarker/core/Environment.java    | 16 ++---
 .../core/MutableProcessingConfiguration.java       | 44 ++++++------
 .../freemarker/core/ParsingConfiguration.java      |  2 +-
 .../freemarker/core/ProcessingConfiguration.java   |  4 +-
 .../org/apache/freemarker/core/StopException.java  |  2 +-
 .../java/org/apache/freemarker/core/Template.java  |  4 +-
 .../apache/freemarker/core/debug/DebugModel.java   |  6 +-
 .../freemarker/core/debug/DebuggerClient.java      |  8 +--
 .../core/model/AdapterTemplateModel.java           |  4 +-
 .../freemarker/core/model/TemplateHashModel.java   |  6 +-
 .../freemarker/core/model/TemplateNullModel.java   |  2 +-
 .../freemarker/core/model/impl/ArgumentTypes.java  | 14 ++--
 .../freemarker/core/model/impl/BeanModel.java      | 40 ++++-------
 .../core/model/impl/DefaultObjectWrapper.java      | 24 +++----
 .../core/model/impl/MethodAppearanceFineTuner.java | 20 +++---
 .../core/model/impl/OverloadedNumberUtils.java     |  8 +--
 .../core/model/impl/ResourceBundleModel.java       | 19 ++---
 .../freemarker/core/model/impl/SimpleDate.java     |  6 +-
 .../freemarker/core/model/impl/SimpleHash.java     | 18 ++---
 .../freemarker/core/model/impl/SimpleIterable.java | 18 ++---
 .../freemarker/core/model/impl/SimpleNumber.java   |  8 +--
 .../freemarker/core/model/impl/SimpleString.java   | 14 ++--
 .../freemarker/core/model/impl/StaticModel.java    | 16 ++---
 .../freemarker/core/model/impl/StaticModels.java   |  4 +-
 .../core/templateresolver/TemplateLoader.java      |  8 +--
 .../apache/freemarker/core/util/DeepUnwrap.java    | 23 ++----
 .../apache/freemarker/core/util/_StringUtils.java  | 43 ++++++------
 .../main/javacc/org/apache/freemarker/core/FTL.jj  |  2 +-
 .../freemarker/servlet/AllHttpScopesHashModel.java | 23 +++---
 .../freemarker/servlet/FreemarkerServlet.java      | 20 +++---
 .../freemarker/servlet/jsp/EventForwarding.java    | 23 +++---
 .../freemarker/servlet/jsp/TaglibFactory.java      | 82 ++++++----------------
 .../apache/freemarker/test/TemplateTestSuite.java  |  6 +-
 46 files changed, 282 insertions(+), 386 deletions(-)

diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/TagSyntaxVariationsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/TagSyntaxVariationsTest.java
index ca24bfdb..895e1a1c 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/TagSyntaxVariationsTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/TagSyntaxVariationsTest.java
@@ -19,18 +19,17 @@
 
 package org.apache.freemarker.core;
 
+import junit.framework.TestCase;
+import org.apache.freemarker.core.userpkg.UpperCaseDirective;
+import org.apache.freemarker.core.util._StringUtils;
+import org.apache.freemarker.test.TestConfigurationBuilder;
+
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.Collections;
 import java.util.Map;
 
-import org.apache.freemarker.core.userpkg.UpperCaseDirective;
-import org.apache.freemarker.core.util._StringUtils;
-import org.apache.freemarker.test.TestConfigurationBuilder;
-
-import junit.framework.TestCase;
-
 /**
  * Test various generated templates (permutations), including some deliberately
  * wrong ones, with various tagSyntax settings.
@@ -109,7 +108,7 @@ public class TagSyntaxVariationsTest extends TestCase {
     }
     
     /**
-     * @param expected the expected output or <tt>null</tt> if we expect
+     * @param expected the expected output or {@code null} if we expect
      * a parsing error.
      */
     private static void test(
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java
index da94fa62..c8008103 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java
@@ -30,11 +30,11 @@ import org.apache.freemarker.core.model.impl.SimpleString;
 public class BooleanHash1 implements TemplateHashModel {
 
     /**
-     * Gets a <tt>TemplateModel</tt> from the hash.
+     * Gets a {@code TemplateModel} from the hash.
      *
-     * @param key the name by which the <tt>TemplateModel</tt>
+     * @param key the name by which the {@code TemplateModel}
      * is identified in the template.
-     * @return the <tt>TemplateModel</tt> referred to by the key,
+     * @return the {@code TemplateModel} referred to by the key,
      * or null if not found.
      */
     @Override
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash2.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash2.java
index bf7dcce9..030ceea1 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash2.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash2.java
@@ -28,11 +28,11 @@ import org.apache.freemarker.core.model.TemplateModel;
 public class BooleanHash2 implements TemplateHashModel {
 
     /**
-     * Gets a <tt>TemplateModel</tt> from the hash.
+     * Gets a {@code TemplateModel} from the hash.
      *
-     * @param key the name by which the <tt>TemplateModel</tt>
+     * @param key the name by which the {@code TemplateModel}
      * is identified in the template.
-     * @return the <tt>TemplateModel</tt> referred to by the key,
+     * @return the {@code TemplateModel} referred to by the key,
      * or null if not found.
      */
     @Override
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirInclude.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirInclude.java
index 5afc30ad..10256190 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirInclude.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirInclude.java
@@ -19,11 +19,11 @@
 
 package org.apache.freemarker.core;
 
-import java.io.IOException;
-
 import org.apache.freemarker.core.templateresolver.MalformedTemplateNameException;
 import org.apache.freemarker.core.util._StringUtils;
 
+import java.io.IOException;
+
 /**
  * AST directive node: {@code #include} 
  */
@@ -33,7 +33,7 @@ final class ASTDirInclude extends ASTDirective {
     private final Boolean ignoreMissingExpPrecalcedValue;
 
     /**
-     * @param template the template that this <tt>#include</tt> is a part of.
+     * @param template the template that this {@code #include} is a part of.
      * @param includedTemplateNameExp the path of the template to be included.
      */
     ASTDirInclude(Template template,
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpHashLiteral.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpHashLiteral.java
index e2df12f1..a109b614 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpHashLiteral.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpHashLiteral.java
@@ -19,18 +19,18 @@
 
 package org.apache.freemarker.core;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.ListIterator;
-
 import org.apache.freemarker.core.model.TemplateCollectionModel;
 import org.apache.freemarker.core.model.TemplateHashModelEx;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelIterator;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.ListIterator;
+
 /**
- * AST expression node: <tt>{ keyExp: valueExp, ... }</tt> 
+ * AST expression node: <code>{ keyExp: valueExp, ... }</code> 
  */
 final class ASTExpHashLiteral extends ASTExpression {
 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java
index 6c8d2220..968c8285 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java
@@ -19,9 +19,6 @@
 
 package org.apache.freemarker.core;
 
-import java.io.StringReader;
-import java.util.List;
-
 import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateStringModel;
@@ -29,6 +26,9 @@ import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.outputformat.OutputFormat;
 import org.apache.freemarker.core.util.TemplateLanguageUtils;
 
+import java.io.StringReader;
+import java.util.List;
+
 /**
  * AST expression node: string literal
  */
@@ -144,7 +144,7 @@ final class ASTExpStringLiteral extends ASTExpression implements TemplateStringM
     }
     
     /**
-     * Tells if this is something like <tt>"${foo}"</tt>, which is usually a user mistake.
+     * Tells if this is something like <code>"${foo}"</code>, which is usually a user mistake.
      */
     boolean isSingleInterpolationLiteral() {
         return dynamicValue != null && dynamicValue.size() == 1
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTImplicitParent.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTImplicitParent.java
index f87da420..ecf1da07 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTImplicitParent.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTImplicitParent.java
@@ -39,7 +39,7 @@ final class ASTImplicitParent extends ASTElement {
     }
 
     /**
-     * Processes the contents of the internal <tt>ASTElement</tt> list,
+     * Processes the contents of the internal {@code ASTElement} list,
      * and outputs the resulting text.
      */
     @Override
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTInterpolation.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTInterpolation.java
index 56805d2a..1574e78d 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTInterpolation.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTInterpolation.java
@@ -19,17 +19,17 @@
 
 package org.apache.freemarker.core;
 
-import java.io.IOException;
-import java.io.Writer;
-
 import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
 import org.apache.freemarker.core.outputformat.MarkupOutputFormat;
 import org.apache.freemarker.core.outputformat.OutputFormat;
 import org.apache.freemarker.core.util.BugException;
 import org.apache.freemarker.core.util.TemplateLanguageUtils;
 
+import java.io.IOException;
+import java.io.Writer;
+
 /**
- * AST interpolation node: <tt>${exp}</tt>
+ * AST interpolation node: <code>${exp}</code>
  */
 //TODO [FM3] will be public
 final class ASTInterpolation extends ASTElement {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTNode.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTNode.java
index bcce5de5..ed1c0727 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTNode.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTNode.java
@@ -180,7 +180,7 @@ abstract class ASTNode {
     
     /**
      * A very sort single-line string that describes what kind of AST node this is, without describing any 
-     * embedded expression or child element. Examples: {@code "#if"}, {@code "+"}, <tt>"${...}</tt>. These values should
+     * embedded expression or child element. Examples: {@code "#if"}, {@code "+"}, <code>"${...}</code>. These values should
      * be suitable as tree node labels in a tree view. Yet, they should be consistent and complete enough so that an AST
      * that is equivalent with the original could be reconstructed from the tree view. Thus, for literal values that are
      * leaf nodes the symbols should be the canonical form of value.
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
index e22d2e1d..793f0d31 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
@@ -19,7 +19,14 @@
 
 package org.apache.freemarker.core;
 
-import static org.apache.freemarker.core.util.CallableUtils.*;
+import org.apache.freemarker.core.arithmetic.ArithmeticEngine;
+import org.apache.freemarker.core.model.*;
+import org.apache.freemarker.core.model.impl.SequenceTemplateModelIterator;
+import org.apache.freemarker.core.model.impl.SimpleNumber;
+import org.apache.freemarker.core.model.impl.SimpleString;
+import org.apache.freemarker.core.model.impl.TemplateModelListSequence;
+import org.apache.freemarker.core.util.BugException;
+import org.apache.freemarker.core.util._StringUtils;
 
 import java.io.Serializable;
 import java.text.Collator;
@@ -28,25 +35,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
 
-import org.apache.freemarker.core.arithmetic.ArithmeticEngine;
-import org.apache.freemarker.core.model.ArgumentArrayLayout;
-import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateCollectionModel;
-import org.apache.freemarker.core.model.TemplateDateModel;
-import org.apache.freemarker.core.model.TemplateFunctionModel;
-import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateIterableModel;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateModelIterator;
-import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.TemplateStringModel;
-import org.apache.freemarker.core.model.impl.SequenceTemplateModelIterator;
-import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleString;
-import org.apache.freemarker.core.model.impl.TemplateModelListSequence;
-import org.apache.freemarker.core.util.BugException;
-import org.apache.freemarker.core.util._StringUtils;
+import static org.apache.freemarker.core.util.CallableUtils.*;
 
 /**
  * A holder for builtins that operate on sequence (or some even on iterable) left-hand value.
@@ -616,7 +605,7 @@ class BuiltInsForSequences {
         }
 
         /**
-         * Sorts a sequence for the <tt>sort</tt> and <tt>sort_by</tt>
+         * Sorts a sequence for the {@code sort} and {@code sort_by}
          * built-ins.
          * 
          * @param seq the sequence to sort.
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java
index 3fcb4e24..6607cccb 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForStringsMisc.java
@@ -19,18 +19,7 @@
 
 package org.apache.freemarker.core;
 
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.Writer;
-
-import org.apache.freemarker.core.model.ArgumentArrayLayout;
-import org.apache.freemarker.core.model.ObjectWrapper;
-import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateDirectiveModel;
-import org.apache.freemarker.core.model.TemplateFunctionModel;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.TemplateStringModel;
+import org.apache.freemarker.core.model.*;
 import org.apache.freemarker.core.model.impl.BeanModel;
 import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
@@ -39,6 +28,10 @@ import org.apache.freemarker.core.outputformat.OutputFormat;
 import org.apache.freemarker.core.templateresolver.MalformedTemplateNameException;
 import org.apache.freemarker.core.util.CallableUtils;
 
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.Writer;
+
 class BuiltInsForStringsMisc {
 
     // Can't be instantiated
@@ -161,7 +154,7 @@ class BuiltInsForStringsMisc {
      * transform model that evaluates the template in place.
      * The template inherits the configuration and environment of the executing
      * template. By default, its name will be equal to
-     * <tt>executingTemplate.getLookupName() + "$anonymous_interpreted"</tt>. You can
+     * {@code executingTemplate.getLookupName() + "$anonymous_interpreted"}. You can
      * specify another parameter to the method call in which case the
      * template name suffix is the specified id instead of "anonymous_interpreted".
      */
@@ -179,8 +172,8 @@ class BuiltInsForStringsMisc {
          * template a name.
          * 
          * @return a {@link TemplateDirectiveModel} that when executed inside
-         * a <tt>&lt;transform></tt> block will process the generated template
-         * just as if it had been <tt>&lt;transform></tt>-ed at that point.
+         * a <code>&lt;transform></code> block will process the generated template
+         * just as if it had been <code>&lt;transform></code>-ed at that point.
          */
         @Override
         protected TemplateModel calculateResult(Environment env) throws TemplateException {
@@ -283,7 +276,7 @@ class BuiltInsForStringsMisc {
 
     /**
      * A built-in that allows us to instantiate an instance of a java class.
-     * Usage is something like: <tt>&lt;#assign foobar = "foo.bar.MyClass"?new()></tt>;
+     * Usage is something like: <code>&lt;#assign foobar = "foo.bar.MyClass"?new()></code>;
      */
     static class newBI extends ASTExpBuiltIn {
         
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/CallPlace.java b/freemarker-core/src/main/java/org/apache/freemarker/core/CallPlace.java
index 6135d3a3..9437ed49 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/CallPlace.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/CallPlace.java
@@ -19,14 +19,14 @@
 
 package org.apache.freemarker.core;
 
-import java.io.IOException;
-import java.io.Writer;
-import java.util.IdentityHashMap;
-
 import org.apache.freemarker.core.model.TemplateDirectiveModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.util.CommonSupplier;
 
+import java.io.IOException;
+import java.io.Writer;
+import java.util.IdentityHashMap;
+
 /**
  * The place (in a template, usually) from where a directive (like a macro) or function was called;
  * <b>Do not implement this interface yourself</b>, as new methods may be added any time! Only FreeMarker itself
@@ -157,7 +157,7 @@ public interface CallPlace {
     /**
      * Tells if the output of the nested content can be safely cached, as it only depends on the template content (not
      * on variable values and such) and has no side-effects (other than writing to the output). Examples of cases that
-     * give {@code false}: {@code <@foo>Name: } <tt...@foo>}, {@code <@foo>Name: <#if
+     * give {@code false}: {@code <@foo>Name: } <co...@foo>}, {@code <@foo>Name: <#if
      * condition>bar</#...@foo>}. Examples of cases that give {@code true}: {@code <@foo>Name: Joe</...@foo>}, {@code
      * <@foo />}. Note that we get {@code true} for no nested content, because that's equivalent to 0-length nested
      * content.
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java b/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
index cc9a8375..64337a48 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
@@ -1543,7 +1543,7 @@ public final class Configuration implements TopLevelConfiguration, CustomStateSc
 
     /**
      * Returns the names of the directives that are predefined by FreeMarker. These are the things that you call like
-     * <tt>&lt;#directiveName ...&gt;</tt>.
+     * <code>&lt;#directiveName ...&gt;</code>.
      */
     public Set<String> getSupportedBuiltInDirectiveNames() {
         return ASTDirective.BUILT_IN_DIRECTIVE_NAMES;
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java b/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
index c6ab7154..5351d0ca 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
@@ -53,15 +53,15 @@ import static org.apache.freemarker.core.util.CallableUtils._newNullOrOmittedArg
 
 /**
  * Object that represents the runtime environment during template processing. For every invocation of a
- * <tt>Template.process()</tt> method, a new instance of this object is created, and then discarded when
- * <tt>process()</tt> returns. This object stores the set of temporary variables created by the template, the value of
+ * {@code Template.process()} method, a new instance of this object is created, and then discarded when
+ * {@code process()} returns. This object stores the set of temporary variables created by the template, the value of
  * settings set by the template, the reference to the data model root, etc. Everything that is needed to fulfill the
  * template processing job.
  * <p>
- * Data models that need to access the <tt>Environment</tt> object that represents the template processing on the
+ * Data models that need to access the {@code Environment} object that represents the template processing on the
  * current thread can use the {@link #getCurrentEnvironment()} method.
  * <p>
- * If you need to modify or read this object before or after the <tt>process</tt> call, use
+ * If you need to modify or read this object before or after the {@code process} call, use
  * {@link Template#createProcessingEnvironment(Object rootMap, Writer out, ObjectWrapper wrapper)}
  * <p>
  * The {@link ProcessingConfiguration} reader methods of this class don't throw {@link CoreSettingValueNotSetException}
@@ -493,9 +493,9 @@ public final class Environment extends MutableProcessingConfiguration<Environmen
     }
 
     /**
-     * Tells if we are inside an <tt>#attempt</tt> block (but before <tt>#recover</tt>). This can be useful for
+     * Tells if we are inside an {@code #attempt} block (but before {@code #recover}). This can be useful for
      * {@link TemplateExceptionHandler}-s, as then they may don't want to print the error to the output, as
-     * <tt>#attempt</tt> will roll it back anyway.
+     * {@code #attempt} will roll it back anyway.
      */
     public boolean isInAttemptBlock() {
         return inAttemptBlock;
@@ -922,7 +922,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen
     }
 
     /*
-     * Note that although it's not allowed to set this setting with the <tt>setting</tt> directive, it still must be
+     * Note that although it's not allowed to set this setting with the {@code setting} directive, it still must be
      * allowed to set it from Java code while the template executes, since some frameworks allow templates to actually
      * change the output encoding on-the-fly.
      */
@@ -2425,7 +2425,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen
     }
 
     /**
-     * sets TemplateNodeModel as the current visitor node. <tt>.node</tt>
+     * sets TemplateNodeModel as the current visitor node. {@code .node}
      */
     public void setCurrentVisitorNode(TemplateNodeModel node) {
         currentVisitorNode = node;
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java b/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
index 5679adee..740f17ff 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
@@ -1453,8 +1453,8 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces
      *             with {@code "allowedClasses:"} and/or
      *             {@code "trustedTemplates:"}. Examples of valid values:
      *             
-     *             <table style="width: auto; border-collapse: collapse" border="1"
-     *                  summary="trustedTemplate value examples">
+     *             <table style="width: auto; border-collapse: collapse" border="1">
+     *               <caption style="display: none">trustedTemplates value examples</caption>
      *               <tr>
      *                 <th>Setting value
      *                 <th>Meaning
@@ -1574,8 +1574,8 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces
      *       maximum strong and soft sizes specified with the setting value. Examples
      *       of valid setting values:
      *       
-     *       <table style="width: auto; border-collapse: collapse" border="1" summary="templateCacheStorage value
-     *       examples">
+     *       <table style="width: auto; border-collapse: collapse" border="1">
+     *         <caption style="display: none">templateCacheStorage value examples</caption>
      *         <tr><th>Setting value<th>max. strong size<th>max. soft size
      *         <tr><td>{@code "strong:50, soft:500"}<td>50<td>500
      *         <tr><td>{@code "strong:100, soft"}<td>100<td>{@code Integer.MAX_VALUE}
@@ -1585,7 +1585,7 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces
      *         <tr><td>{@code "soft"}<td>0<td>{@code Integer.MAX_VALUE}
      *       </table>
      *       
-     *       <p>The value is not case sensitive. The order of <tt>soft</tt> and <tt>strong</tt>
+     *       <p>The value is not case sensitive. The order of {@code soft} and {@code strong}
      *       entries is not significant.
      *       
      *   <li><p>{@code "templateUpdateDelay"}:
@@ -1626,40 +1626,40 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces
      *       {@link DefaultTemplateNameFormat#INSTANCE}.
      * </ul>
      * 
-     * <p><a name="fm_obe"></a>Regarding <em>object builder expressions</em> (used by the setting values where it was
+     * <p id="fm_obe">Regarding <em>object builder expressions</em> (used by the setting values where it was
      * indicated):
      * <ul>
      *   <li><p>Before FreeMarker 2.3.21 it had to be a fully qualified class name, and nothing else.</li>
      *   <li><p>Since 2.3.21, the generic syntax is:
-     *       <tt><i>className</i>(<i>constrArg1</i>, <i>constrArg2</i>, ... <i>constrArgN</i>,
+     *       <code><i>className</i>(<i>constrArg1</i>, <i>constrArg2</i>, ... <i>constrArgN</i>,
      *       <i>propName1</i>=<i>propValue1</i>, <i>propName2</i>=<i>propValue2</i>, ...
-     *       <i>propNameN</i>=<i>propValueN</i>)</tt>,
+     *       <i>propNameN</i>=<i>propValueN</i>)</code>,
      *       where
-     *       <tt><i>className</i></tt> is the fully qualified class name of the instance to invoke (except if we have
-     *       builder class or <tt>INSTANCE</tt> field around, but see that later),
-     *       <tt><i>constrArg</i></tt>-s are the values of constructor arguments,
-     *       and <tt><i>propName</i>=<i>propValue</i></tt>-s set JavaBean properties (like <tt>x=1</tt> means
-     *       <tt>setX(1)</tt>) on the created instance. You can have any number of constructor arguments and property
+     *       <code><i>className</i></code> is the fully qualified class name of the instance to invoke (except if we have
+     *       builder class or {@code INSTANCE} field around, but see that later),
+     *       <code><i>constrArg</i></code>-s are the values of constructor arguments,
+     *       and <code><i>propName</i>=<i>propValue</i></code>-s set JavaBean properties (like {@code x=1} means
+     *       {@code setX(1)}) on the created instance. You can have any number of constructor arguments and property
      *       setters, including 0. Constructor arguments must precede any property setters.   
      *   </li>
      *   <li>
-     *     Example: <tt>com.example.MyObjectWrapper(1, 2, exposeFields=true, cacheSize=5000)</tt> is nearly
+     *     Example: {@code com.example.MyObjectWrapper(1, 2, exposeFields=true, cacheSize=5000)} is nearly
      *     equivalent with this Java code:
-     *     <tt>obj = new com.example.MyObjectWrapper(1, 2); obj.setExposeFields(true); obj.setCacheSize(5000);</tt>
+     *     {@code obj = new com.example.MyObjectWrapper(1, 2); obj.setExposeFields(true); obj.setCacheSize(5000);}
      *   </li>
      *   <li>
-     *      <p>If you have no constructor arguments and property setters, and the <tt><i>className</i></tt> class has
+     *      <p>If you have no constructor arguments and property setters, and the <code><i>className</i></code> class has
      *      a public static {@code INSTANCE} field, the value of that filed will be the value of the expression, and
      *      the constructor won't be called.
      *   </li>
      *   <li>
-     *      <p>If there exists a class named <tt><i>className</i>Builder</tt>, then that class will be instantiated
+     *      <p>If there exists a class named <code><i>className</i>Builder</code>, then that class will be instantiated
      *      instead with the given constructor arguments, and the JavaBean properties of that builder instance will be
-     *      set. After that, the public <tt>build()</tt> method of the instance will be called, whose return value
-     *      will be the value of the whole expression. (The builder class and the <tt>build()</tt> method is simply
+     *      set. After that, the public {@code build()} method of the instance will be called, whose return value
+     *      will be the value of the whole expression. (The builder class and the {@code build()} method is simply
      *      found by name, there's no special interface to implement.)Note that if you have a builder class, you don't
-     *      actually need a <tt><i>className</i></tt> class (since 2.3.24); after all,
-     *      <tt><i>className</i>Builder.build()</tt> can return any kind of object. 
+     *      actually need a <code><i>className</i></code> class (since 2.3.24); after all,
+     *      <code><i>className</i>Builder.build()</code> can return any kind of object. 
      *   </li>
      *   <li>
      *      <p>Currently, the values of arguments and properties can only be one of these:
@@ -1673,7 +1673,7 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces
      *        {@code BigDecimal} and "bi" for {@code BigInteger}.</li>
      *        <li>A boolean literal: {@code true} or {@code false}
      *        <li>The null literal: {@code null}
-     *        <li>A string literal with FTL syntax, except that  it can't contain <tt>${...}</tt>-s.
+     *        <li>A string literal with FTL syntax, except that  it can't contain <code>${...}</code>-s.
      *            Examples: {@code "Line 1\nLine 2"} or {@code r"C:\temp"}.
      *        <li>A list literal (since 2.3.24) with FTL-like syntax, for example {@code [ 'foo', 2, true ]}.
      *            If the parameter is expected to be array, the list will be automatically converted to array.
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ParsingConfiguration.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ParsingConfiguration.java
index 2f46a83d..4780b7bc 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ParsingConfiguration.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ParsingConfiguration.java
@@ -268,7 +268,7 @@ public interface ParsingConfiguration {
      * {@link Configuration} level.
      * <p>
      * Individual templates may specify their own charset by starting with
-     * <tt>&lt;#ftl sourceEncoding="..."&gt;</tt>. However, before that's detected, at least part of template must be
+     * <code>&lt;#ftl sourceEncoding="..."&gt;</code>. However, before that's detected, at least part of template must be
      * decoded with some charset first, so this setting (and
      * {@link Configuration#getTemplateConfigurations() templateConfigurations}) still have role.
      */
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java
index 5cfc05a2..2410e87a 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java
@@ -559,7 +559,7 @@ public interface ProcessingConfiguration {
      * (and its overloads). Its {@link Configuration}-level default is {@code true}.
      * <p>
      * Using {@code false} is needed for example when a Web page is composed from several boxes (like portlets, GUI
-     * panels, etc.) that aren't inserted with <tt>#include</tt> (or with similar directives) into a master FreeMarker
+     * panels, etc.) that aren't inserted with {@code #include} (or with similar directives) into a master FreeMarker
      * template, rather they are all processed with a separate {@link Template#process(Object, Writer)} call. In a such
      * scenario the automatic flushes would commit the HTTP response after each box, hence interfering with full-page
      * buffering, and also possibly decreasing performance with too frequent and too early response buffer flushes.
@@ -731,7 +731,7 @@ public interface ProcessingConfiguration {
      * @return The value of the custom setting; possibly {@code null}, as that's a legal attribute value. The content
      * of the value object shouldn't be changed after it was added as an attribute (ideally, it should be an
      * immutable object); if you need to change the content, certainly you should use the {@link CustomStateScope}
-     * API. Note that if the custom setting was created with <tt>&lt;#ftl&nbsp;customSettings={...}&gt;</tt>, then
+     * API. Note that if the custom setting was created with <code>&lt;#ftl&nbsp;customSettings={...}&gt;</code>, then
      * this value is already unwrapped (i.e. it's a <code>String</code>, or a <code>List</code>, or a <code>Map</code>,
      * ...etc., not a FreeMarker specific class).
      *
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/StopException.java b/freemarker-core/src/main/java/org/apache/freemarker/core/StopException.java
index 97064565..969098c1 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/StopException.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/StopException.java
@@ -23,7 +23,7 @@ import java.io.PrintStream;
 import java.io.PrintWriter;
 
 /**
- * This exception is thrown when a <tt>#stop</tt> directive is encountered. 
+ * This exception is thrown when a {@code #stop} directive is encountered. 
  */
 public class StopException extends TemplateException {
     
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java b/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
index 09c81200..7a3823b5 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
@@ -467,7 +467,7 @@ public class Template implements ProcessingConfiguration, CustomStateScope {
 
     /**
      * Like {@link #process(Object, Writer)}, but also sets a (XML-)node to be recursively processed by the template.
-     * That node is accessed in the template with <tt>.node</tt>, <tt>#recurse</tt>, etc. See the
+     * That node is accessed in the template with {@code .node}, {@code #recurse}, etc. See the
      * <a href="http://freemarker.org/docs/xgui_declarative.html" target="_blank">Declarative XML Processing</a> as a
      * typical example of recursive node processing.
      * 
@@ -512,7 +512,7 @@ public class Template implements ProcessingConfiguration, CustomStateScope {
     * <pre>
     * myTemplate.process(root, out);</pre>
     * 
-    * <p>But with <tt>createProcessingEnvironment</tt>, you can manipulate the environment
+    * <p>But with {@code createProcessingEnvironment}, you can manipulate the environment
     * before and after the processing:
     * 
     * <pre>
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebugModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebugModel.java
index 423a5330..4e0d66e5 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebugModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebugModel.java
@@ -19,12 +19,12 @@
 
 package org.apache.freemarker.core.debug;
 
+import org.apache.freemarker.core.TemplateException;
+
 import java.rmi.Remote;
 import java.rmi.RemoteException;
 import java.util.Date;
 
-import org.apache.freemarker.core.TemplateException;
-
 /**
  * Represents the debugger-side mirror of a TemplateModel object, a Template
  * object, or a Configuration object. The Environment objects are also represented
@@ -33,7 +33,7 @@ import org.apache.freemarker.core.TemplateException;
  * almost all of FreeMarker template models with identical method signatures.
  * For purposes of optimizing network traffic there are bulk retrieval methods
  * for sequences and hashes, as well as a {@link #getModelTypes()} method that
- * returns a bit mask of various <tt>TYPE_xxx</tt> constants flagging which
+ * returns a bit mask of various {@code TYPE_xxx} constants flagging which
  * template models are implemented by the mirrored object.
  */
 public interface DebugModel extends Remote {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebuggerClient.java b/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebuggerClient.java
index 26d5616a..4e46035d 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebuggerClient.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebuggerClient.java
@@ -19,6 +19,8 @@
 
 package org.apache.freemarker.core.debug;
 
+import org.apache.freemarker.core.util.UndeclaredThrowableException;
+
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -31,8 +33,6 @@ import java.security.MessageDigest;
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.freemarker.core.util.UndeclaredThrowableException;
-
 /**
  * A utility class that allows you to connect to the FreeMarker debugger service
  * running on a specific host and port. 
@@ -44,8 +44,8 @@ public class DebuggerClient {
     /**
      * Connects to the FreeMarker debugger service running on a specific host
      * and port. The Java VM to which the connection is made must have defined
-     * the system property <tt>org.apache.freemarker.core.debug.password</tt> in order to enable
-     * the debugger service. Additionally, the <tt>org.apache.freemarker.core.debug.port</tt>
+     * the system property {@code org.apache.freemarker.core.debug.password} in order to enable
+     * the debugger service. Additionally, the {@code org.apache.freemarker.core.debug.port}
      * system property can be set to specify the port where the debugger service
      * is listening. When not specified, it defaults to 
      * {@link Debugger#DEFAULT_PORT}.
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/AdapterTemplateModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/AdapterTemplateModel.java
index 9dc65873..ee131523 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/AdapterTemplateModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/AdapterTemplateModel.java
@@ -37,8 +37,8 @@ public interface AdapterTemplateModel extends TemplateModel {
      * class, but if that is impossible, it must at least return the underlying 
      * object as-is. As a minimal requirement, an implementation must always 
      * return the exact underlying object when 
-     * <tt>hint.isInstance(underlyingObject)</tt> holds. When called 
-     * with <tt>java.lang.Object.class</tt>, it should return a generic Java 
+     * {@code hint.isInstance(underlyingObject)} holds. When called 
+     * with {@code java.lang.Object.class}, it should return a generic Java 
      * object (i.e. if the model is wrapping a scripting language object that is
      * further wrapping a Java object, the deepest underlying Java object should
      * be returned). 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java
index 489d5cc1..2d34d994 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java
@@ -32,11 +32,11 @@ public interface TemplateHashModel extends TemplateModel {
     TemplateHashModelEx EMPTY_HASH = new EmptyHashModel();
 
     /**
-     * Gets a <tt>TemplateModel</tt> from the hash.
+     * Gets a {@code TemplateModel} from the hash.
      *
-     * @param key the name by which the <tt>TemplateModel</tt>
+     * @param key the name by which the {@code TemplateModel}
      * is identified in the template.
-     * @return the <tt>TemplateModel</tt> referred to by the key,
+     * @return the {@code TemplateModel} referred to by the key,
      * or null if not found.
      */
     TemplateModel get(String key) throws TemplateException;
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNullModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNullModel.java
index d7bbb8da..dac3a484 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNullModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNullModel.java
@@ -24,7 +24,7 @@ package org.apache.freemarker.core.model;
  * the Java {@code null} value, and {@code null} represents that the value (or rather what holds it) doesn't exist
  * at all.
  *
- * <p>Some examples to make this more understandable:<p>
+ * <p>Some examples to make this more understandable:</p>
  * <ul>
  *   <li>If you try to read the variable {@code myVar}, but such a variable was never declared anywhere, then that's
  *       a {@code null}. If the variable itself exists, but was set to {@code null}, then that's a
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ArgumentTypes.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ArgumentTypes.java
index 20a2c147..61f390ac 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ArgumentTypes.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ArgumentTypes.java
@@ -18,17 +18,17 @@
  */
 package org.apache.freemarker.core.model.impl;
 
+import org.apache.freemarker.core.TemplateException;
+import org.apache.freemarker.core.model.TemplateModel;
+import org.apache.freemarker.core.util.BugException;
+import org.apache.freemarker.core.util._ClassUtils;
+
 import java.lang.reflect.InvocationTargetException;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.util.BugException;
-import org.apache.freemarker.core.util._ClassUtils;
-
 /**
  * The argument types of a method call; usable as cache key.
  */
@@ -439,7 +439,7 @@ final class ArgumentTypes {
      * parameter types represented by this ArgumentTypes object, also tells
      * how difficult that conversion is.
      * 
-     * @return One of the <tt>CONVERSION_DIFFICULTY_...</tt> constants.
+     * @return One of the {@code CONVERSION_DIFFICULTY_...} constants.
      */
     private int isApplicable(ReflectionCallableMemberDescriptor memberDesc, boolean varArg) {
         final Class<?>[] paramTypes = memberDesc.getParamTypes(); 
@@ -492,7 +492,7 @@ final class ArgumentTypes {
      * parameter type should be convertible; possibly a primitive type
      * @param actual the argument type; not a primitive type, maybe {@link Null}.
      * 
-     * @return One of the <tt>CONVERSION_DIFFICULTY_...</tt> constants.
+     * @return One of the {@code CONVERSION_DIFFICULTY_...} constants.
      */
     private int isMethodInvocationConvertible(final Class<?> formal, final Class<?> actual) {
         // Check for identity or widening reference conversion
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/BeanModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/BeanModel.java
index 585825b8..a74be003 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/BeanModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/BeanModel.java
@@ -19,38 +19,24 @@
 
 package org.apache.freemarker.core.model.impl;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core._DelayedJQuote;
 import org.apache.freemarker.core._DelayedTemplateLanguageTypeDescription;
-import org.apache.freemarker.core.model.AdapterTemplateModel;
-import org.apache.freemarker.core.model.ObjectWrappingException;
-import org.apache.freemarker.core.model.TemplateCollectionModel;
-import org.apache.freemarker.core.model.TemplateFunctionModel;
-import org.apache.freemarker.core.model.TemplateHashModelEx;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateModelWithAPISupport;
-import org.apache.freemarker.core.model.TemplateStringModel;
-import org.apache.freemarker.core.model.WrapperTemplateModel;
+import org.apache.freemarker.core.model.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.*;
+
 /**
  * A class that will wrap an arbitrary object into {@link org.apache.freemarker.core.model.TemplateHashModel}
  * interface allowing calls to arbitrary property getters and invocation of
  * accessible methods on the object from a template using the
- * <tt>object.foo</tt> to access properties and <tt>object.bar(arg1, arg2)</tt> to
- * invoke methods on it. You can also use the <tt>object.foo[index]</tt> syntax to
+ * {@code object.foo} to access properties and {@code object.bar(arg1, arg2)} to
+ * invoke methods on it. You can also use the {@code object.foo[index]} syntax to
  * access indexed properties. It uses Beans {@link java.beans.Introspector}
  * to dynamically discover the properties and methods. 
  */
@@ -117,12 +103,12 @@ public class BeanModel
      * they reload a web application) and flushes the cache. If no method or
      * property matching the key is found, the framework will try to invoke
      * methods with signature
-     * <tt>non-void-return-type get(java.lang.String)</tt>,
-     * then <tt>non-void-return-type get(java.lang.Object)</tt>, or 
+     * {@code non-void-return-type get(java.lang.String)},
+     * then {@code non-void-return-type get(java.lang.Object)}, or 
      * alternatively (if the wrapped object is a resource bundle) 
-     * <tt>Object get(java.lang.String)</tt>.
+     * {@code Object get(java.lang.String)}.
      * @throws TemplateException if there was no property nor method nor
-     * a generic <tt>get</tt> method to invoke.
+     * a generic {@code get} method to invoke.
      */
     @Override
     public TemplateModel get(String key)
@@ -322,7 +308,7 @@ public class BeanModel
     /**
      * Helper method to support TemplateHashModelEx. Returns the Set of
      * Strings which are available via the TemplateHashModel
-     * interface. Subclasses that override <tt>invokeGenericGet</tt> to
+     * interface. Subclasses that override {@code invokeGenericGet} to
      * provide additional hash keys should also override this method.
      * Also, if this is overwritten, {@link #getHashSize()} should be too.
      */
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
index 718d3269..1616cabd 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
@@ -190,7 +190,7 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
     }
 
     /**
-     * By default returns <tt>this</tt>.
+     * By default returns {@code this}.
      * @see ExtendableBuilder#setOuterIdentity(ObjectWrapper)
      */
     public ObjectWrapper getOuterIdentity() {
@@ -1511,8 +1511,8 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
 
         /**
          * Sets the default date type to use for date models that result from
-         * a plain <tt>java.util.Date</tt> instead of <tt>java.sql.Date</tt> or
-         * <tt>java.sql.Time</tt> or <tt>java.sql.Timestamp</tt>. Default value is
+         * a plain {@code java.util.Date} instead of {@code java.sql.Date} or
+         * {@code java.sql.Time} or {@code java.sql.Timestamp}. Default value is
          * {@link TemplateDateModel#UNKNOWN}.
          * @param defaultDateType the new default date type.
          */
@@ -1583,19 +1583,19 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
          * Specifies if an attempt to read a bean property that doesn't exist in the
          * wrapped object should throw an {@link InvalidPropertyException}.
          *
-         * <p>If this property is <tt>false</tt> (the default) then an attempt to read
+         * <p>If this property is {@code false} (the default) then an attempt to read
          * a missing bean property is the same as reading an existing bean property whose
-         * value is <tt>null</tt>. The template can't tell the difference, and thus always
-         * can use <tt>!'something'</tt> and <tt>??</tt> and similar expressions
+         * value is {@code null}. The template can't tell the difference, and thus always
+         * can use {@code !'something'} and {@code ??} and similar expressions
          * to handle the situation.
          *
-         * <p>If this property is <tt>true</tt> then an attempt to read a bean propertly in
-         * the template (like <tt>myBean.aProperty</tt>) that doesn't exist in the bean
-         * object (as opposed to just holding <tt>null</tt> value) will cause
+         * <p>If this property is {@code true} then an attempt to read a bean propertly in
+         * the template (like {@code myBean.aProperty}) that doesn't exist in the bean
+         * object (as opposed to just holding {@code null} value) will cause
          * {@link InvalidPropertyException}, which can't be suppressed in the template
-         * (not even with <tt>myBean.noSuchProperty!'something'</tt>). This way
-         * <tt>!'something'</tt> and <tt>??</tt> and similar expressions can be used to
-         * handle existing properties whose value is <tt>null</tt>, without the risk of
+         * (not even with {@code myBean.noSuchProperty!'something'}). This way
+         * {@code !'something'} and {@code ??} and similar expressions can be used to
+         * handle existing properties whose value is {@code null}, without the risk of
          * hiding typos in the property names. Typos will always cause error. But mind you, it
          * goes against the basic approach of FreeMarker, so use this feature only if you really
          * know what you are doing.
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/MethodAppearanceFineTuner.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/MethodAppearanceFineTuner.java
index 0482878f..397b784f 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/MethodAppearanceFineTuner.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/MethodAppearanceFineTuner.java
@@ -34,35 +34,35 @@ public interface MethodAppearanceFineTuner {
      * Implement this to tweak certain aspects of how methods appear in the
      * data-model. {@link DefaultObjectWrapper} will pass in all Java methods here that
      * it intends to expose in the data-model as methods (so you can do
-     * <tt>obj.foo()</tt> in the template).
+     * {@code obj.foo()} in the template).
      * With this method you can do the following tweaks:
      * <ul>
      *   <li>Hide a method that would be otherwise shown by calling
      *     {@link MethodAppearanceFineTuner.Decision#setExposeMethodAs(String)}
-     *     with <tt>null</tt> parameter. Note that you can't un-hide methods
+     *     with {@code null} parameter. Note that you can't un-hide methods
      *     that are not public or are considered to by unsafe
      *     (like {@link Object#wait()}) because
      *     {@link #process} is not called for those.</li>
      *   <li>Show the method with a different name in the data-model than its
      *     real name by calling
      *     {@link MethodAppearanceFineTuner.Decision#setExposeMethodAs(String)}
-     *     with non-<tt>null</tt> parameter.
+     *     with non-{@code null} parameter.
      *   <li>Create a fake JavaBean property for this method by calling
      *     {@link MethodAppearanceFineTuner.Decision#setExposeAsProperty(PropertyDescriptor)}.
-     *     For example, if you have <tt>int size()</tt> in a class, but you
-     *     want it to be accessed from the templates as <tt>obj.size</tt>,
-     *     rather than as <tt>obj.size()</tt>, you can do that with this
+     *     For example, if you have {@code int size()} in a class, but you
+     *     want it to be accessed from the templates as {@code obj.size},
+     *     rather than as {@code obj.size()}, you can do that with this
      *     (but remember calling
      *     {@link Decision#setMethodShadowsProperty(boolean)
      *     setMethodShadowsProperty(false)} as well, if the method name is exactly
      *     the same as the property name).
      *     The default is {@code null}, which means that no fake property is
      *     created for the method. You need not and shouldn't set this
-     *     to non-<tt>null</tt> for the getter methods of real JavaBean
+     *     to non-{@code null} for the getter methods of real JavaBean
      *     properties, as those are automatically shown as properties anyway.
      *     The property name in the {@link PropertyDescriptor} can be anything,
      *     but the method (or methods) in it must belong to the class that
-     *     is given as the <tt>clazz</tt> parameter or it must be inherited from
+     *     is given as the {@code clazz} parameter or it must be inherited from
      *     that class, or else whatever errors can occur later.
      *     {@link IndexedPropertyDescriptor}-s are supported.
      *     If a real JavaBean property of the same name exists, or a fake property
@@ -72,9 +72,9 @@ public interface MethodAppearanceFineTuner {
      *   <li>Prevent the method to hide a JavaBean property (fake or real) of
      *     the same name by calling
      *     {@link MethodAppearanceFineTuner.Decision#setMethodShadowsProperty(boolean)}
-     *     with <tt>false</tt>. The default is <tt>true</tt>, so if you have
+     *     with {@code false}. The default is {@code true}, so if you have
      *     both a property and a method called "foo", then in the template
-     *     <tt>myObject.foo</tt> will return the method itself instead
+     *     {@code myObject.foo} will return the method itself instead
      *     of the property value, which is often undesirable.
      * </ul>
      * 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedNumberUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedNumberUtils.java
index bf798490..feababae 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedNumberUtils.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedNumberUtils.java
@@ -19,13 +19,13 @@
 
 package org.apache.freemarker.core.model.impl;
 
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
 import org.apache.freemarker.core.model.TemplateNumberModel;
 import org.apache.freemarker.core.util._ClassUtils;
 import org.apache.freemarker.core.util._NumberUtils;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
 /**
  * Everything related to coercion to ambiguous numerical types.  
  */
@@ -84,7 +84,7 @@ class OverloadedNumberUtils {
      * type and the coerced type, all encoded into the class of the value, which is used as the overloaded method lookup
      * cache key.
      *  
-     * <p>See also: <tt>src\main\misc\overloadedNumberRules\prices.ods</tt>.
+     * <p>See also: {@code src\main\misc\overloadedNumberRules\prices.ods}.
      * 
      * @param num the number to coerce
      * @param typeFlags the type flags of the target parameter position; see {@link TypeFlags}
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ResourceBundleModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ResourceBundleModel.java
index a9744162..7b8ac36d 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ResourceBundleModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ResourceBundleModel.java
@@ -19,14 +19,6 @@
 
 package org.apache.freemarker.core.model.impl;
 
-import java.text.MessageFormat;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.Set;
-
 import org.apache.freemarker.core.CallPlace;
 import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.TemplateException;
@@ -36,6 +28,9 @@ import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.util.CallableUtils;
 
+import java.text.MessageFormat;
+import java.util.*;
+
 /**
  * <p>A hash model that wraps a resource bundle. Makes it convenient to store
  * localized content in the data model. It also acts as a method model that will
@@ -44,10 +39,10 @@ import org.apache.freemarker.core.util.CallableUtils;
  *
  * <p>Typical usages:</p>
  * <ul>
- * <li><tt>bundle.resourceKey</tt> will retrieve the object from resource bundle
- * with key <tt>resourceKey</tt></li>
- * <li><tt>bundle("patternKey", arg1, arg2, arg3)</tt> will retrieve the string
- * from resource bundle with key <tt>patternKey</tt>, and will use it as a pattern
+ * <li>{@code bundle.resourceKey} will retrieve the object from resource bundle
+ * with key {@code resourceKey}</li>
+ * <li>{@code bundle("patternKey", arg1, arg2, arg3)} will retrieve the string
+ * from resource bundle with key {@code patternKey}, and will use it as a pattern
  * for MessageFormat with arguments arg1, arg2 and arg3</li>
  * </ul>
  */
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java
index 08a6d943..be92b4ce 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java
@@ -19,12 +19,12 @@
 
 package org.apache.freemarker.core.model.impl;
 
-import java.io.Serializable;
-
 import org.apache.freemarker.core.model.TemplateDateModel;
 
+import java.io.Serializable;
+
 /**
- * A simple implementation of the <tt>TemplateDateModel</tt>
+ * A simple implementation of the {@code TemplateDateModel}
  * interface. Note that this class is immutable.
  * <p>This class is thread-safe.
  */
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleHash.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleHash.java
index 47eb1db2..f86d099f 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleHash.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleHash.java
@@ -19,21 +19,11 @@
 
 package org.apache.freemarker.core.model.impl;
 
-import java.util.ConcurrentModificationException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core._DelayedJQuote;
-import org.apache.freemarker.core.model.ObjectWrapper;
-import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateCollectionModel;
-import org.apache.freemarker.core.model.TemplateHashModelEx;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.WrappingTemplateModel;
+import org.apache.freemarker.core.model.*;
+
+import java.util.*;
 
 /**
  * A simple implementation of the {@link TemplateHashModelEx} interface, using its own underlying {@link Map} or
@@ -154,7 +144,7 @@ public class SimpleHash extends WrappingTemplateModel implements TemplateHashMod
     /**
      * Puts a boolean in the map
      *
-     * @param key the name by which the resulting <tt>TemplateModel</tt>
+     * @param key the name by which the resulting {@code TemplateModel}
      * is identified in the template.
      * @param b the boolean to store.
      */
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleIterable.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleIterable.java
index 34ce0216..3c23c141 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleIterable.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleIterable.java
@@ -19,17 +19,13 @@
 
 package org.apache.freemarker.core.model.impl;
 
+import org.apache.freemarker.core.TemplateException;
+import org.apache.freemarker.core.model.*;
+
 import java.io.Serializable;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.ObjectWrapper;
-import org.apache.freemarker.core.model.TemplateIterableModel;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateModelIterator;
-import org.apache.freemarker.core.model.WrappingTemplateModel;
-
 /**
  * A simple implementation of {@link TemplateIterableModel}.
  * It's able to wrap {@link Iterable}-s and {@link Iterator}-s.
@@ -67,10 +63,10 @@ implements TemplateIterableModel, Serializable {
     /**
      * Retrieves a template model iterator that is used to iterate over the elements in this iterable.
      *  
-     * <p>When you wrap an <tt>Iterator</tt> and you get <tt>TemplateModelIterator</tt> for multiple times,
-     * only one of the returned <tt>TemplateModelIterator</tt> instances can be really used. When you have called a
-     * method of a <tt>TemplateModelIterator</tt> instance, all other instance will throw a
-     * {@link TemplateException} when you try to call their methods, since the wrapped <tt>Iterator</tt>
+     * <p>When you wrap an {@code Iterator} and you get {@code TemplateModelIterator} for multiple times,
+     * only one of the returned {@code TemplateModelIterator} instances can be really used. When you have called a
+     * method of a {@code TemplateModelIterator} instance, all other instance will throw a
+     * {@link TemplateException} when you try to call their methods, since the wrapped {@code Iterator}
      * can't return the first element anymore.
      */
     @Override
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleNumber.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleNumber.java
index 6f588b66..6ff73227 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleNumber.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleNumber.java
@@ -19,13 +19,13 @@
 
 package org.apache.freemarker.core.model.impl;
 
-import java.io.Serializable;
-
 import org.apache.freemarker.core.model.TemplateNumberModel;
 
+import java.io.Serializable;
+
 
 /**
- * A simple implementation of the <tt>TemplateNumberModel</tt>
+ * A simple implementation of the {@code TemplateNumberModel}
  * interface. Note that this class is immutable.
  *
  * <p>This class is thread-safe.
@@ -33,7 +33,7 @@ import org.apache.freemarker.core.model.TemplateNumberModel;
 public final class SimpleNumber implements TemplateNumberModel, Serializable {
 
     /**
-     * @serial the value of this <tt>SimpleNumber</tt> 
+     * @serial the value of this {@code SimpleNumber} 
      */
     private final Number value;
 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleString.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleString.java
index 8b91452f..9b167bcb 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleString.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleString.java
@@ -19,13 +19,13 @@
 
 package org.apache.freemarker.core.model.impl;
 
-import java.io.Serializable;
-
 import org.apache.freemarker.core.model.TemplateStringModel;
 
+import java.io.Serializable;
+
 /**
- * A simple implementation of the <tt>TemplateStringModel</tt>
- * interface, using a <tt>String</tt>.
+ * A simple implementation of the {@code TemplateStringModel}
+ * interface, using a {@code String}.
  *
  * <p>This class is thread-safe.
  *
@@ -36,13 +36,13 @@ public final class SimpleString
 implements TemplateStringModel, Serializable {
     
     /**
-     * @serial the value of this <tt>SimpleString</tt> if it wraps a
-     * <tt>String</tt>.
+     * @serial the value of this {@code SimpleString} if it wraps a
+     * {@code String}.
      */
     private final String value;
 
     /**
-     * Constructs a <tt>SimpleString</tt> containing a string value.
+     * Constructs a {@code SimpleString} containing a string value.
      * @param value the string value. If this is {@code null}, its value in FTL will be {@code ""}.
      */
     public SimpleString(String value) {
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/StaticModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/StaticModel.java
index fad96e85..bce3583b 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/StaticModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/StaticModel.java
@@ -19,13 +19,6 @@
 
 package org.apache.freemarker.core.model.impl;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateCollectionModel;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
@@ -34,6 +27,13 @@ import org.apache.freemarker.core.model.TemplateModel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
 /**
  * Wraps the static fields and methods of a class in a {@link org.apache.freemarker.core.model.TemplateHashModel}.
  * Fields are wrapped using {@link DefaultObjectWrapper#wrap(Object)}, and methods are wrapped into an appropriate
@@ -55,7 +55,7 @@ final class StaticModel implements TemplateHashModelEx {
     }
 
     /**
-     * Returns the field or method named by the <tt>key</tt>
+     * Returns the field or method named by the {@code key}
      * parameter.
      */
     @Override
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/StaticModels.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/StaticModels.java
index a7b0b844..0fd5c409 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/StaticModels.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/StaticModels.java
@@ -25,9 +25,9 @@ import org.apache.freemarker.core.model.TemplateModel;
 /**
  * Utility class for instantiating {@link StaticModel} instances from
  * templates. If your template's data model contains an instance of
- * StaticModels (named, say <tt>StaticModels</tt>), then you can
+ * StaticModels (named, say {@code StaticModels}), then you can
  * instantiate an arbitrary StaticModel using get syntax (i.e.
- * <tt>StaticModels["java.lang.System"].currentTimeMillis()</tt>).
+ * {@code StaticModels["java.lang.System"].currentTimeMillis()}).
  */
 class StaticModels extends ClassBasedModelFactory {
     
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/templateresolver/TemplateLoader.java b/freemarker-core/src/main/java/org/apache/freemarker/core/templateresolver/TemplateLoader.java
index f835c255..9f5989d5 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/templateresolver/TemplateLoader.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/templateresolver/TemplateLoader.java
@@ -18,13 +18,13 @@
  */
 package org.apache.freemarker.core.templateresolver;
 
-import java.io.IOException;
-import java.io.Serializable;
-
 import org.apache.freemarker.core.Configuration;
 import org.apache.freemarker.core.TemplateNotFoundException;
 import org.apache.freemarker.core.templateresolver.impl.DefaultTemplateResolver;
 
+import java.io.IOException;
+import java.io.Serializable;
+
 /**
  * FreeMarker loads template "files" through objects that implement this interface, thus the templates need not be real
  * files, and can come from any kind of data source (like classpath, servlet context, database, etc). While FreeMarker
@@ -73,7 +73,7 @@ public interface TemplateLoader {
      *            loader-defined root location (often referred as the "template root directory"), and will never start
      *            with a slash, nor will they contain a path component consisting of either a single or a double dot --
      *            these are all resolved by the template cache before passing the name to the loader. As a side effect,
-     *            paths that trivially reach outside template root directory, such as <tt>../my.f3ah</tt>, will be
+     *            paths that trivially reach outside template root directory, such as {@code ../my.f3ah}, will be
      *            rejected by the template cache, so they never reach the template loader. Note again, that if the path
      *            uses backslash as path separator instead of slash as (the template loader should not accept that), the
      *            normalization will not properly happen, as FreeMarker (the cache) recognizes only the slashes as
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
index 0a90ec6c..9d4ff5ad 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
@@ -19,27 +19,16 @@
 
 package org.apache.freemarker.core.util;
 
+import org.apache.freemarker.core.TemplateException;
+import org.apache.freemarker.core.model.*;
+import org.apache.freemarker.core.model.TemplateHashModelEx.KeyValuePair;
+import org.apache.freemarker.core.model.TemplateHashModelEx.KeyValuePairIterator;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.AdapterTemplateModel;
-import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateDateModel;
-import org.apache.freemarker.core.model.TemplateHashModelEx;
-import org.apache.freemarker.core.model.TemplateHashModelEx.KeyValuePair;
-import org.apache.freemarker.core.model.TemplateHashModelEx.KeyValuePairIterator;
-import org.apache.freemarker.core.model.TemplateIterableModel;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateModelIterator;
-import org.apache.freemarker.core.model.TemplateNullModel;
-import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.TemplateStringModel;
-import org.apache.freemarker.core.model.WrapperTemplateModel;
-
 /**
  * Utility methods for unwrapping {@link TemplateModel}-s.
  */
@@ -50,7 +39,7 @@ public class DeepUnwrap {
      * The converting of the {@link TemplateModel} object happens with the following rules:
      * <ol>
      *   <li>If the object implements {@link AdapterTemplateModel}, then the result
-     *       of {@link AdapterTemplateModel#getAdaptedObject(Class)} for <tt>Object.class</tt> is returned.
+     *       of {@link AdapterTemplateModel#getAdaptedObject(Class)} for {@code Object.class} is returned.
      *   <li>If the object implements {@link WrapperTemplateModel}, then the result
      *       of {@link WrapperTemplateModel#getWrappedObject()} is returned.
      *   <li>If the object is identical to the null model of the current object 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_StringUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_StringUtils.java
index c427cef5..b504dcd3 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_StringUtils.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_StringUtils.java
@@ -219,8 +219,8 @@ public class _StringUtils {
     }
 
     /**
-     *  XML encoding for attribute values quoted with <tt>"</tt> (not with <tt>'</tt>!).
-     *  Also can be used for HTML attributes that are quoted with <tt>"</tt>.
+     *  XML encoding for attribute values quoted with {@code "} (not with {@code '}!).
+     *  Also can be used for HTML attributes that are quoted with {@code "}.
      *  @see #XMLEnc(String)
      */
     public static String XMLEncQAttr(String s) {
@@ -710,7 +710,7 @@ public class _StringUtils {
      *
      * <p>All characters under UCS code point 0x20 will be escaped.
      * Where they have no dedicated escape sequence in Java, they will
-     * be replaced with hexadecimal escape (<tt>\</tt><tt>u<i>XXXX</i></tt>).
+     * be replaced with hexadecimal escape ({@code \}<code>u<i>XXXX</i></code>).
      *
      * @see #jQuote(String)
      */
@@ -802,44 +802,45 @@ public class _StringUtils {
      * touching pieces that were escaped with this, no character sequence can occur that closes the
      * JavaScript/JSON string literal, or has a meaning in HTML/XML that causes the HTML script section to be closed.
      * (If, however, the escaped section is preceded by or followed by strings from other sources, this can't be
-     * guaranteed in some rare cases. Like <tt>x = "&lt;/${a?js_string}"</tt> might closes the "script"
+     * guaranteed in some rare cases. Like <code>x = "&lt;/${a?js_string}"</code> might closes the "script"
      * element if {@code a} is {@code "script>"}.)
      *
      * The escaped characters are:
      *
-     * <table style="width: auto; border-collapse: collapse" border="1" summary="Characters escaped by jsStringEnc">
+     * <table style="width: auto; border-collapse: collapse" border="1">
+     * <caption style="display: none">Characters escaped by jsStringEnc</caption>
      * <tr>
      *   <th>Input
      *   <th>Output
      * <tr>
-     *   <td><tt>"</tt>
-     *   <td><tt>\"</tt>
+     *   <td>{@code "}
+     *   <td>{@code \"}
      * <tr>
-     *   <td><tt>'</tt> if not in JSON-mode, nor is the {@code quited} argument {@code true}
-     *   <td><tt>\'</tt>
+     *   <td>{@code '} if not in JSON-mode, nor is the {@code quited} argument {@code true}
+     *   <td>{@code \'}
      * <tr>
-     *   <td><tt>\</tt>
-     *   <td><tt>\\</tt>
+     *   <td>{@code \}
+     *   <td>{@code \\}
      * <tr>
-     *   <td><tt>/</tt> if the method can't know that it won't be directly after <tt>&lt;</tt>
-     *   <td><tt>\/</tt>
+     *   <td>{@code /} if the method can't know that it won't be directly after <code>&lt;</code>
+     *   <td>{@code \/}
      * <tr>
-     *   <td><tt>&gt;</tt> if the method can't know that it won't be directly after <tt>]]</tt> or <tt>--</tt>
-     *   <td>JavaScript: <tt>\&gt;</tt>; JSON: <tt>\</tt><tt>u003E</tt>
+     *   <td><code>&gt;</code> if the method can't know that it won't be directly after {@code ]]} or {@code --}
+     *   <td>JavaScript: <code>\&gt;</code>; JSON: {@code \}{@code u003E}
      * <tr>
-     *   <td><tt>&lt;</tt> if the method can't know that it won't be directly followed by <tt>!</tt> or <tt>?</tt>
-     *   <td><tt><tt>\</tt>u003C</tt>
+     *   <td><code>&lt;</code> if the method can't know that it won't be directly followed by {@code !} or {@code ?}
+     *   <td><code>\{@code u}003C</code>
      * <tr>
      *   <td>
      *     u0000-u001f (UNICODE control characters - disallowed by JSON)<br>
      *     u007f-u009f (UNICODE control characters - disallowed by JSON)
-     *   <td><tt>\n</tt>, <tt>\r</tt> and such, or if there's no such dedicated escape:
-     *       JavaScript: <tt>\x<i>XX</i></tt>, JSON: <tt>\<tt>u</tt><i>XXXX</i></tt>
+     *   <td>{@code \n}, {@code \r} and such, or if there's no such dedicated escape:
+     *       JavaScript: <code>\x<i>XX</i></code>, JSON: <code>\{@code u}<i>XXXX</i></code>
      * <tr>
      *   <td>
      *     u2028 (Line separator - source code line-break in ECMAScript)<br>
      *     u2029 (Paragraph separator - source code line-break in ECMAScript)<br>
-     *   <td><tt>\<tt>u</tt><i>XXXX</i></tt>
+     *   <td><code>\{@code u}<i>XXXX</i></code>
      * </table>
      *
      * @param s The string to escape
@@ -978,7 +979,7 @@ public class _StringUtils {
     /**
      * Parses a name-value pair list, where the pairs are separated with comma,
      * and the name and value is separated with colon.
-     * The keys and values can contain only letters, digits and <tt>_</tt>. They
+     * The keys and values can contain only letters, digits and {@code _}. They
      * can't be quoted. White-space around the keys and values are ignored. The
      * value can be omitted if <code>defaultValue</code> is not null. When a
      * value is omitted, then the colon after the key must be omitted as well.
diff --git a/freemarker-core/src/main/javacc/org/apache/freemarker/core/FTL.jj b/freemarker-core/src/main/javacc/org/apache/freemarker/core/FTL.jj
index 0ebf6206..69bd6559 100644
--- a/freemarker-core/src/main/javacc/org/apache/freemarker/core/FTL.jj
+++ b/freemarker-core/src/main/javacc/org/apache/freemarker/core/FTL.jj
@@ -1989,7 +1989,7 @@ ASTExpression BuiltIn(ASTExpression lhoExp) :
 
 
 /**
- * production for when a key is specified by <DOT> + keyname
+ * production for when a key is specified by {@code <DOT>} + keyname
  */
 ASTExpression DotVariable(ASTExpression exp) :
 {
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/AllHttpScopesHashModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/AllHttpScopesHashModel.java
index 819458ac..80e0f9a6 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/AllHttpScopesHashModel.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/AllHttpScopesHashModel.java
@@ -19,28 +19,27 @@
 
 package org.apache.freemarker.servlet;
 
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.ObjectWrapper;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.impl.SimpleHash;
 
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * An extension of SimpleHash that looks up keys in the hash, then in the
  * request, session, and servlet context scopes. Makes "Application", "Session"
  * and "Request" keys largely obsolete, however we keep them for backward
  * compatibility (also, "Request" is required for proper operation of JSP
  * taglibs).
- * It is on purpose that we didn't override <tt>keys</tt> and <tt>values</tt>
+ * It is on purpose that we didn't override {@code keys} and {@code values}
  * methods. That way, only those variables assigned into the hash directly by a
- * subclass of <tt>FreemarkerServlet</tt> that overrides
- * <tt>preTemplateProcess</tt>) are discovered as "page" variables by the FM
+ * subclass of {@code FreemarkerServlet} that overrides
+ * {@code preTemplateProcess}) are discovered as "page" variables by the FM
  * JSP PageContext implementation.
  */
 public class AllHttpScopesHashModel extends SimpleHash {
@@ -63,8 +62,8 @@ public class AllHttpScopesHashModel extends SimpleHash {
     }
     
     /**
-     * Stores a model in the hash so that it doesn't show up in <tt>keys()</tt>
-     * and <tt>values()</tt> methods. Used to put the Application, Session,
+     * Stores a model in the hash so that it doesn't show up in {@code keys()}
+     * and {@code values()} methods. Used to put the Application, Session,
      * Request, RequestParameters and JspTaglibs objects.
      * @param key the key under which the model is stored
      * @param model the stored model
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
index 4fa8cd20..b7301fb2 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
@@ -104,9 +104,9 @@ import java.util.regex.Pattern;
  * this is interpreted as a {@link ServletContext} resource path, which practically means a web application directory
  * relative path, or a {@code WEB-INF/lib/*.jar/META-INF/resources}-relative path (note that this last haven't always
  * worked before FreeMarker 2.3.23).<br>
- * Alternatively, you can prepend it with <tt>file://</tt> to indicate a literal path in the file system (i.e.
- * <tt>file:///var/www/project/templates/</tt>). Note that three slashes were used to specify an absolute path.<br>
- * Also, you can prepend it with {@code classpath:}, like in <tt>classpath:com/example/templates</tt>, to indicate that
+ * Alternatively, you can prepend it with {@code file://} to indicate a literal path in the file system (i.e.
+ * {@code file:///var/www/project/templates/}). Note that three slashes were used to specify an absolute path.<br>
+ * Also, you can prepend it with {@code classpath:}, like in {@code classpath:com/example/templates}, to indicate that
  * you want to load templates from the specified package accessible through the Thread Context Class Loader of the
  * thread that initializes this servlet.<br>
  * If {@code incompatibleImprovements} is set to 2.3.22 (or higher), you can specify multiple comma separated locations
@@ -119,10 +119,10 @@ import java.util.regex.Pattern;
  * {@link WebAppTemplateLoader#setAttemptFileAccess(boolean)} and
  * {@link WebAppTemplateLoader#setURLConnectionUsesCaches(Boolean)} to tune the {@link WebAppTemplateLoader}. For
  * backward compatibility (not recommended!), you can use the {@code class://} prefix, like in
- * <tt>class://com/example/templates</tt> format, which is similar to {@code classpath:}, except that it uses the
+ * {@code class://com/example/templates} format, which is similar to {@code classpath:}, except that it uses the
  * defining class loader of this servlet's class. This can cause template-not-found errors, if that class (in
  * {@code freemarer.jar} usually) is not local to the web application, while the templates are.<br>
- * The default value is <tt>class://</tt> (that is, the root of the class hierarchy), which is not recommended anymore,
+ * The default value is {@code class://} (that is, the root of the class hierarchy), which is not recommended anymore,
  * and should be overwritten with the {@value #INIT_PARAM_TEMPLATE_PATH} init-param.</li>
  * 
  * <li><strong>{@value #INIT_PARAM_NO_CACHE}</strong>: If set to {@code true}, generates headers in the response that
@@ -136,8 +136,8 @@ import java.util.regex.Pattern;
  * <li>If the {@value #INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE} init-param is {@value #INIT_PARAM_VALUE_NEVER} (the
  * default is {@value #INIT_PARAM_VALUE_ALWAYS}), then the value of {@link HttpServletResponse#getContentType()} is used
  * if that's non-{@code null}.
- * <li>The template's <tt>content_type</tt> custom setting, usually specified via the <tt>attributes</tt> parameter of
- * the <tt>&lt;#ftl&gt;</tt> directive. This is a legacy feature, deprecated by the {@link OutputFormat} mechanism.
+ * <li>The template's {@code content_type} custom setting, usually specified via the {@code attributes} parameter of
+ * the <code>&lt;#ftl&gt;</code> directive. This is a legacy feature, deprecated by the {@link OutputFormat} mechanism.
  * <li>The {@linkplain Template#getOutputFormat() output format of the template}, if that has non-{@code null} MIME-type
  * ({@link OutputFormat#getMimeType()}). When a template has no output format specified, {@link UndefinedOutputFormat}
  * is used, which has {@code null} MIME-type. (The output format of a template is deduced from {@link Configuration}
@@ -148,9 +148,9 @@ import java.util.regex.Pattern;
  * (the default is {@value #INIT_PARAM_VALUE_ALWAYS}), then the value of {@link HttpServletResponse#getContentType()} is
  * used if that's non-{@code null}.
  * </ol>
- * If none of the above gives a MIME type, then this init-param does. Defaults to <tt>"text/html"</tt>. If and only if
+ * If none of the above gives a MIME type, then this init-param does. Defaults to {@code "text/html"}. If and only if
  * the {@value #INIT_PARAM_RESPONSE_CHARACTER_ENCODING} init-param is set to {@value #INIT_PARAM_VALUE_LEGACY} (which is
- * the default of it), the content type may include the charset (as in <tt>"text/html; charset=utf-8"</tt>), in which
+ * the default of it), the content type may include the charset (as in {@code "text/html; charset=utf-8"}), in which
  * case that specifies the actual charset of the output. If the the {@value #INIT_PARAM_RESPONSE_CHARACTER_ENCODING}
  * init-param is not set to {@value #INIT_PARAM_VALUE_LEGACY}, then specifying the charset in the
  * {@value #INIT_PARAM_CONTENT_TYPE} init-param is not allowed, and will cause servlet initialization error.</li>
@@ -162,7 +162,7 @@ import java.util.regex.Pattern;
  * type in the response, unless {@link HttpServletResponse#getContentType()} is {@code null}. The third possible value
  * is {@value #INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE}, which means that we only set the content type if either
  * the template has an associated {@link OutputFormat} with non-{@code null} {@link OutputFormat#getMimeType()}, or it
- * has a custom setting with name <tt>content_type</tt>, or {@link HttpServletResponse#getContentType()} is
+ * has a custom setting with name {@code content_type}, or {@link HttpServletResponse#getContentType()} is
  * {@code null}. Setting this init-param allows you to specify the content type before forwarding to
  * {@link FreemarkerServlet}.</li>
  *
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/EventForwarding.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/EventForwarding.java
index c3c48857..4123f169 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/EventForwarding.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/EventForwarding.java
@@ -19,27 +19,22 @@
 
 package org.apache.freemarker.servlet.jsp;
 
-import java.util.ArrayList;
-import java.util.EventListener;
-import java.util.Iterator;
-import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextAttributeEvent;
-import javax.servlet.ServletContextAttributeListener;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
+import javax.servlet.*;
 import javax.servlet.http.HttpSessionAttributeListener;
 import javax.servlet.http.HttpSessionBindingEvent;
 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
+import java.util.EventListener;
+import java.util.Iterator;
+import java.util.List;
 
 /**
- * An instance of this class should be registered as a <tt>&lt;listener&gt;</tt> in
- * the <tt>web.xml</tt> descriptor in order to correctly dispatch events to
+ * An instance of this class should be registered as a <code>&lt;listener&gt;</code> in
+ * the {@code web.xml} descriptor in order to correctly dispatch events to
  * event listeners that are specified in TLD files.
  */
 public class EventForwarding
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index c34aab26..f7034d3e 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -19,35 +19,32 @@
 
 package org.apache.freemarker.servlet.jsp;
 
+import org.apache.freemarker.core.ConfigurationException;
+import org.apache.freemarker.core.Environment;
+import org.apache.freemarker.core.TemplateException;
+import org.apache.freemarker.core.model.*;
+import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
+import org.apache.freemarker.core.util.*;
+import org.apache.freemarker.servlet.FreemarkerServlet;
+import org.apache.freemarker.servlet.HttpRequestHashModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.*;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.tagext.Tag;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParserFactory;
 import java.beans.IntrospectionException;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FilenameFilter;
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
-import java.net.JarURLConnection;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
+import java.net.*;
 import java.nio.charset.Charset;
 import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Stack;
-import java.util.TreeSet;
+import java.util.*;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.regex.Pattern;
@@ -55,39 +52,6 @@ import java.util.zip.ZipEntry;
 import java.util.zip.ZipException;
 import java.util.zip.ZipInputStream;
 
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.jsp.tagext.Tag;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.freemarker.core.ConfigurationException;
-import org.apache.freemarker.core.Environment;
-import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.ObjectWrapper;
-import org.apache.freemarker.core.model.TemplateDirectiveModel;
-import org.apache.freemarker.core.model.TemplateFunctionModel;
-import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
-import org.apache.freemarker.core.util.BugException;
-import org.apache.freemarker.core.util.CommonBuilder;
-import org.apache.freemarker.core.util._ClassUtils;
-import org.apache.freemarker.core.util._NullArgumentException;
-import org.apache.freemarker.core.util._StringUtils;
-import org.apache.freemarker.servlet.FreemarkerServlet;
-import org.apache.freemarker.servlet.HttpRequestHashModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.DefaultHandler;
-
 /**
  * A hash model associated with a servlet context that can load JSP tag libraries associated with that servlet context.
  * An instance of this class is made available in the root data model of templates executed by
@@ -227,7 +191,7 @@ public class TaglibFactory implements TemplateHashModel {
      *            {@code http://example.com/foo}), root relative URI (like {@code /bar/foo.tld}) and non-root relative
      *            URI (like {@code bar/foo.tld}). Note that if a non-root relative URI is used it's resolved relative to
      *            the URL of the current request. In this case, the current request is obtained by looking up a
-     *            {@link HttpRequestHashModel} object named <tt>Request</tt> in the root data model.
+     *            {@link HttpRequestHashModel} object named {@code Request} in the root data model.
      *            {@link FreemarkerServlet} provides this object under the expected name, and custom servlets that want
      *            to integrate JSP taglib support should do the same.
      * 
@@ -1134,7 +1098,7 @@ public class TaglibFactory implements TemplateHashModel {
     }
 
     /**
-     * To search TLD-s under <tt>sevletContext:/WEB-INF/lib/*.{jar,zip}/META-INF/**</tt><tt>/*.tld</tt>, as requested by
+     * To search TLD-s under <code>sevletContext:/WEB-INF/lib/*.{jar,zip}/META-INF/**</code>{@code /*.tld}, as requested by
      * the JSP specification. Note that these also used to be in the classpath, so it's redundant to use this together
      * with a sufficiently permissive {@link ClasspathMetaInfTldSource}.
      */
diff --git a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/TemplateTestSuite.java b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/TemplateTestSuite.java
index 8041db57..ac50fa73 100644
--- a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/TemplateTestSuite.java
+++ b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/TemplateTestSuite.java
@@ -49,10 +49,10 @@ import java.util.regex.Pattern;
  * To add a test-case, go to the resource directory that corresponds to the package of the {@link TemplateTestSuite}
  * subclass and inside that directory:</p>
  * <ol>
- * <li>Add a new <tt>testcase</tt> element to <tt>testcases.xml</tt></li>
- * <li>Add a template to <tt>templates/</tt> with fits the <tt>testcase</tt> added to the XML (by default it's the test
+ * <li>Add a new {@code testcase} element to {@code testcases.xml}</li>
+ * <li>Add a template to {@code templates/} with fits the {@code testcase} added to the XML (by default it's the test
  * case name + ".f3ac")</li>
- * <li>Add the expected output to <tt>references/</tt> with fits the <tt>testcase</tt> added to the XML (by default
+ * <li>Add the expected output to {@code references/} with fits the {@code testcase} added to the XML (by default
  * it's the test name + ".txt")</li>
  * <li>If you want to add items to the data-model or change the {@link Configuration}, modify the
  * {@link #setUpTestCase(String, Map, Configuration.ExtendableBuilder)}} method in the {@link TemplateTestSuite}