diff --git a/freemarker-core/src/main/java/freemarker/core/InvalidReferenceException.java b/freemarker-core/src/main/java/freemarker/core/InvalidReferenceException.java
index d6a75bf..45cf6ef 100644
--- a/freemarker-core/src/main/java/freemarker/core/InvalidReferenceException.java
+++ b/freemarker-core/src/main/java/freemarker/core/InvalidReferenceException.java
@@ -33,8 +33,8 @@
         try {
             Environment.setCurrentEnvironment(null);
             FAST_INSTANCE = new InvalidReferenceException(
-                    "Invalid reference. Details are unavilable, as this should have been handled by an FTL construct. "
-                    + "If it wasn't, that's problably a bug in FreeMarker.",
+                    "Invalid reference. Details are unavailable, as this should have been handled by an FTL construct. "
+                    + "If it wasn't, that's probably a bug in FreeMarker.",
                     null);
         } finally {
             Environment.setCurrentEnvironment(prevEnv);
diff --git a/freemarker-core/src/main/java/freemarker/core/MethodCall.java b/freemarker-core/src/main/java/freemarker/core/MethodCall.java
index 180438c..2ece2a0 100644
--- a/freemarker-core/src/main/java/freemarker/core/MethodCall.java
+++ b/freemarker-core/src/main/java/freemarker/core/MethodCall.java
@@ -74,7 +74,7 @@
         buf.append(target.getCanonicalForm());
         buf.append("(");
         String list = arguments.getCanonicalForm();
-        buf.append(list.substring(1, list.length() - 1));
+        buf.append(list, 1, list.length() - 1);
         buf.append(")");
         return buf.toString();
     }
diff --git a/freemarker-core/src/main/java/freemarker/core/NonMethodException.java b/freemarker-core/src/main/java/freemarker/core/NonMethodException.java
index 4ba3009..0740dd6 100644
--- a/freemarker-core/src/main/java/freemarker/core/NonMethodException.java
+++ b/freemarker-core/src/main/java/freemarker/core/NonMethodException.java
@@ -36,6 +36,10 @@
         super(env, "Expecting method value here");
     }
 
+    /**
+     * @param env Can be {@code null}, if we are in a thread that's running a template currently (because then we can
+     *            find the {@link Environment}).
+     */
     public NonMethodException(String description, Environment env) {
         super(env, description);
     }
diff --git a/freemarker-core/src/main/java/freemarker/ext/beans/BeanModel.java b/freemarker-core/src/main/java/freemarker/ext/beans/BeanModel.java
index eacf7b2..79110b9 100644
--- a/freemarker-core/src/main/java/freemarker/ext/beans/BeanModel.java
+++ b/freemarker-core/src/main/java/freemarker/ext/beans/BeanModel.java
@@ -65,18 +65,17 @@
     private static final Logger LOG = Logger.getLogger("freemarker.beans");
     protected final Object object;
     protected final BeansWrapper wrapper;
-    
+
     // We use this to represent an unknown value as opposed to known value of null (JR)
     static final TemplateModel UNKNOWN = new SimpleScalar("UNKNOWN");
-    
+
     static final ModelFactory FACTORY =
-        new ModelFactory()
-        {
-            @Override
-            public TemplateModel create(Object object, ObjectWrapper wrapper) {
-                return new BeanModel(object, (BeansWrapper) wrapper);
-            }
-        };
+            new ModelFactory() {
+                @Override
+                public TemplateModel create(Object object, ObjectWrapper wrapper) {
+                    return new BeanModel(object, (BeansWrapper) wrapper);
+                }
+            };
 
     // I've tried to use a volatile ConcurrentHashMap field instead of HashMap + synchronized(this), but oddly it was
     // a bit slower, at least on Java 8 u66. 
@@ -111,7 +110,7 @@
             wrapper.getClassIntrospector().get(object.getClass());
         }
     }
-    
+
     /**
      * Uses Beans introspection to locate a property or method with name
      * matching the key name. If a method or property is found, it's wrapped
diff --git a/freemarker-core/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java b/freemarker-core/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
index 80731e0..98c6416 100644
--- a/freemarker-core/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
+++ b/freemarker-core/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
@@ -38,8 +38,11 @@
      * Implement this to tweak certain aspects of how methods appear in the
      * data-model. {@link BeansWrapper} will pass in all Java methods here that
      * it intends to expose in the data-model as methods (so you can do
-     * {@code obj.foo()} in the template).
-     * With this method you can do the following tweaks:
+     * {@code obj.foo()} in the template). This also applies to JavaBeans property read methods, like
+     * {@code public int getX()}, even if the bean property value itself is already exposed (with name {@code x}, in
+     * this example).
+     *
+     * <p>With this method you can do the following tweaks:
      * <ul>
      *   <li>Hide a method that would be otherwise shown by calling
      *     {@link MethodAppearanceDecision#setExposeMethodAs(String)}
@@ -61,19 +64,19 @@
      *     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-{@code null} for the getter methods of real JavaBean
-     *     properties, as those are automatically shown as properties anyway.
+     *     created for the method. You need not, and shouldn't set this
+     *     to non-{@code null} for the property read (get/is) methods of real JavaBeans
+     *     properties, as bean properties are not seen as methods, and are exposed independently of this mechanism.
      *     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 {@code clazz} parameter or it must be inherited from
+     *     is given as the {@code clazz} parameter, or it must be inherited from
      *     that class, otherwise the behavior is undefined, and errors can occur later.
      *     {@link IndexedPropertyDescriptor}-s are supported.
-     *     If a real JavaBean property of the same name exists, or a fake property
+     *     If a real JavaBeans property of the same name exists, or a fake property
      *     of the same name was already assigned earlier, it won't be
      *     replaced by the new one by default, however this can be changed with
      *     {@link MethodAppearanceDecision#setReplaceExistingProperty(boolean)}.
-     *   <li>Prevent the method to hide a JavaBean property (fake or real) of
+     *   <li>Prevent the method to hide a JavaBeans property (fake or real) of
      *     the same name by calling
      *     {@link MethodAppearanceDecision#setMethodShadowsProperty(boolean)}
      *     with {@code false}. The default is {@code true}, so if you have
@@ -82,8 +85,8 @@
      *     of the property value, which is often undesirable.
      * </ul>
      * 
-     * <p>Note that you can expose a Java method both as a method and as a
-     * JavaBean property on the same time, however you have to chose different
+     * <p>Note that you can expose a Java method both as a method, and as a
+     * JavaBeans property on the same time, however you have to chose different
      * names for them to prevent shadowing. 
      * 
      * @param in Describes the method about which the decision will have to be made.
diff --git a/freemarker-core/src/main/java/freemarker/template/Configuration.java b/freemarker-core/src/main/java/freemarker/template/Configuration.java
index 331f5ae..97a22cb 100644
--- a/freemarker-core/src/main/java/freemarker/template/Configuration.java
+++ b/freemarker-core/src/main/java/freemarker/template/Configuration.java
@@ -491,7 +491,7 @@
     public static final Version VERSION_2_3_32 = new Version(2, 3, 32);
 
     /** FreeMarker version 2.3.33 (an {@link #Configuration(Version) incompatible improvements break-point}) */
-    public static final Version VERSION_2_3_33 = new Version(2, 3, 32);
+    public static final Version VERSION_2_3_33 = new Version(2, 3, 33);
     
     /** The default of {@link #getIncompatibleImprovements()}, currently {@link #VERSION_2_3_0}. */
     public static final Version DEFAULT_INCOMPATIBLE_IMPROVEMENTS = Configuration.VERSION_2_3_0;
diff --git a/freemarker-core/src/main/java/freemarker/template/TemplateHashModel.java b/freemarker-core/src/main/java/freemarker/template/TemplateHashModel.java
index fb83bc4..91a5013 100644
--- a/freemarker-core/src/main/java/freemarker/template/TemplateHashModel.java
+++ b/freemarker-core/src/main/java/freemarker/template/TemplateHashModel.java
@@ -30,10 +30,11 @@
     /**
      * Gets a {@code TemplateModel} from the hash.
      *
-     * @param key the name by which the {@code TemplateModel}
-     * is identified in the template.
-     * @return the {@code TemplateModel} referred to by the key,
-     * or null if not found.
+     * @param key
+     *      The name by which the {@code TemplateModel} is identified in the template.
+     *
+     * @return
+     *      The {@code TemplateModel} referred to by the key, or {@code null} if not found.
      */
     TemplateModel get(String key) throws TemplateModelException;
 
diff --git a/freemarker-core/src/test/java/freemarker/test/TemplateTest.java b/freemarker-test-utils/src/main/java/freemarker/test/TemplateTest.java
similarity index 100%
rename from freemarker-core/src/test/java/freemarker/test/TemplateTest.java
rename to freemarker-test-utils/src/main/java/freemarker/test/TemplateTest.java
