Repository: incubator-freemarker-site
Updated Branches:
  refs/heads/asf-site ac5ee4dbb -> 28940aad0


http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/28940aad/builds/fm2.3.28/api/freemarker/ext/beans/BeansWrapper.html
----------------------------------------------------------------------
diff --git a/builds/fm2.3.28/api/freemarker/ext/beans/BeansWrapper.html 
b/builds/fm2.3.28/api/freemarker/ext/beans/BeansWrapper.html
new file mode 100644
index 0000000..0b70194
--- /dev/null
+++ b/builds/fm2.3.28/api/freemarker/ext/beans/BeansWrapper.html
@@ -0,0 +1,1836 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_144) on Sat Mar 10 20:54:57 CET 2018 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>BeansWrapper (FreeMarker 2.3.28-nightly_20180310T195428Z-incubating 
API)</title>
+<meta name="date" content="2018-03-10">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" 
title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="BeansWrapper (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = 
{"i0":10,"i1":10,"i2":9,"i3":9,"i4":9,"i5":10,"i6":42,"i7":10,"i8":41,"i9":10,"i10":10,"i11":10,"i12":42,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":9,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":42,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static 
Methods"],2:["t2","Instance Methods"],8:["t4","Concrete 
Methods"],32:["t6","Deprecated Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/BeansWrapper.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../freemarker/ext/beans/BeansModelCache.html" title="class 
in freemarker.ext.beans"><span 
class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a 
href="../../../freemarker/ext/beans/BeansWrapper.MethodAppearanceDecision.html" 
title="class in freemarker.ext.beans"><span 
class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?freemarker/ext/beans/BeansWrapper.html" 
target="_top">Frames</a></li>
+<li><a href="BeansWrapper.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">freemarker.ext.beans</div>
+<h2 title="Class BeansWrapper" class="title">Class BeansWrapper</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>freemarker.ext.beans.BeansWrapper</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../freemarker/template/ObjectWrapper.html" title="interface 
in freemarker.template">ObjectWrapper</a>, <a 
href="../../../freemarker/template/ObjectWrapperAndUnwrapper.html" 
title="interface in freemarker.template">ObjectWrapperAndUnwrapper</a>, <a 
href="../../../freemarker/template/utility/ObjectWrapperWithAPISupport.html" 
title="interface in 
freemarker.template.utility">ObjectWrapperWithAPISupport</a>, <a 
href="../../../freemarker/template/utility/RichObjectWrapper.html" 
title="interface in freemarker.template.utility">RichObjectWrapper</a>, <a 
href="../../../freemarker/template/utility/WriteProtectable.html" 
title="interface in freemarker.template.utility">WriteProtectable</a></dd>
+</dl>
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../freemarker/template/DefaultObjectWrapper.html" 
title="class in freemarker.template">DefaultObjectWrapper</a>, <a 
href="../../../freemarker/ext/rhino/RhinoWrapper.html" title="class in 
freemarker.ext.rhino">RhinoWrapper</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">BeansWrapper</span>
+extends java.lang.Object
+implements <a 
href="../../../freemarker/template/utility/RichObjectWrapper.html" 
title="interface in freemarker.template.utility">RichObjectWrapper</a>, <a 
href="../../../freemarker/template/utility/WriteProtectable.html" 
title="interface in freemarker.template.utility">WriteProtectable</a></pre>
+<div class="block"><a href="../../../freemarker/template/ObjectWrapper.html" 
title="interface in freemarker.template"><code>ObjectWrapper</code></a> that is 
able to expose the Java API of arbitrary Java objects. This is also the 
superclass of
+ <a href="../../../freemarker/template/DefaultObjectWrapper.html" title="class 
in freemarker.template"><code>DefaultObjectWrapper</code></a>. Note that 
instances of this class generally should be created with a
+ <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class 
in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a>, not with its 
public constructors.
+ 
+ <p>
+ As of 2.3.22, using <a href="../../../freemarker/ext/beans/BeansWrapper.html" 
title="class in freemarker.ext.beans"><code>BeansWrapper</code></a> unextended 
is not recommended. Instead, <a 
href="../../../freemarker/template/DefaultObjectWrapper.html" title="class in 
freemarker.template"><code>DefaultObjectWrapper</code></a> with
+ its <code>incompatibleImprovements</code> property set to 2.3.22 (or higher) 
is the recommended <a href="../../../freemarker/template/ObjectWrapper.html" 
title="interface in freemarker.template"><code>ObjectWrapper</code></a>.
+ 
+ <p>
+ This class is only thread-safe after you have finished calling its setter 
methods, and then safely published it (see
+ JSR 133 and related literature). When used as part of <a 
href="../../../freemarker/template/Configuration.html" title="class in 
freemarker.template"><code>Configuration</code></a>, of course it's enough if 
that was safely
+ published and then left unmodified. Using <a 
href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in 
freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> also guarantees 
thread safety.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Nested Class Summary table, listing nested classes, and an 
explanation">
+<caption><span>Nested Classes</span><span 
class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.MethodAppearanceDecision.html" 
title="class in 
freemarker.ext.beans">BeansWrapper.MethodAppearanceDecision</a></span></code>
+<div class="block">Used for
+ <a 
href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html#process-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision-"><code>MethodAppearanceFineTuner.process(freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput,
 freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision)</code></a>
+ to store the results; see there.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.MethodAppearanceDecisionInput.html"
 title="class in 
freemarker.ext.beans">BeansWrapper.MethodAppearanceDecisionInput</a></span></code>
+<div class="block">Used for <a 
href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html#process-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision-"><code>MethodAppearanceFineTuner.process(freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput,
 freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision)</code></a> as 
input parameter; see there.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#EXPOSE_ALL">EXPOSE_ALL</a></span></code>
+<div class="block">At this level of exposure, all methods and properties of the
+ wrapped objects are exposed to the template.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#EXPOSE_NOTHING">EXPOSE_NOTHING</a></span></code>
+<div class="block">At this level of exposure, no bean properties and methods 
are exposed.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#EXPOSE_PROPERTIES_ONLY">EXPOSE_PROPERTIES_ONLY</a></span></code>
+<div class="block">At this level of exposure, only property getters are 
exposed.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#EXPOSE_SAFE">EXPOSE_SAFE</a></span></code>
+<div class="block">At this level of exposure, all methods and properties of 
the wrapped
+ objects are exposed to the template except methods that are deemed
+ not safe.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a 
name="fields.inherited.from.class.freemarker.template.ObjectWrapperAndUnwrapper">
+<!--   -->
+</a>
+<h3>Fields inherited from interface&nbsp;freemarker.template.<a 
href="../../../freemarker/template/ObjectWrapperAndUnwrapper.html" 
title="interface in freemarker.template">ObjectWrapperAndUnwrapper</a></h3>
+<code><a 
href="../../../freemarker/template/ObjectWrapperAndUnwrapper.html#CANT_UNWRAP_TO_TARGET_CLASS">CANT_UNWRAP_TO_TARGET_CLASS</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a 
name="fields.inherited.from.class.freemarker.template.ObjectWrapper">
+<!--   -->
+</a>
+<h3>Fields inherited from interface&nbsp;freemarker.template.<a 
href="../../../freemarker/template/ObjectWrapper.html" title="interface in 
freemarker.template">ObjectWrapper</a></h3>
+<code><a 
href="../../../freemarker/template/ObjectWrapper.html#BEANS_WRAPPER">BEANS_WRAPPER</a>,
 <a 
href="../../../freemarker/template/ObjectWrapper.html#DEFAULT_WRAPPER">DEFAULT_WRAPPER</a>,
 <a 
href="../../../freemarker/template/ObjectWrapper.html#SIMPLE_WRAPPER">SIMPLE_WRAPPER</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper--">BeansWrapper</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">Use <a 
href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in 
freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> or, in rare cases, 
<a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-"><code>BeansWrapper(Version)</code></a>
 instead.</span></div>
+</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-">BeansWrapper</a></span>(<a
 href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" 
title="class in freemarker.ext.beans">BeansWrapperConfiguration</a>&nbsp;bwConf,
+            boolean&nbsp;writeProtected)</code>
+<div class="block">Same as <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-"><code>BeansWrapper(BeansWrapperConfiguration,
 boolean, boolean)</code></a> with <code>true</code>
+ <code>finalizeConstruction</code> argument.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-">BeansWrapper</a></span>(<a
 href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" 
title="class in freemarker.ext.beans">BeansWrapperConfiguration</a>&nbsp;bwConf,
+            boolean&nbsp;writeProtected,
+            boolean&nbsp;finalizeConstruction)</code>
+<div class="block">Initializes the instance based on the the <a 
href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" 
title="class in 
freemarker.ext.beans"><code>BeansWrapperConfiguration</code></a> 
specified.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-">BeansWrapper</a></span>(<a
 href="../../../freemarker/template/Version.html" title="class in 
freemarker.template">Version</a>&nbsp;incompatibleImprovements)</code>
+<div class="block">Use <a 
href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in 
freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead of the 
public constructors if possible.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span 
class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a 
href="javascript:show(1);">Static Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a 
href="javascript:show(2);">Instance Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a 
href="javascript:show(8);">Concrete Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a 
href="javascript:show(32);">Deprecated Methods</a></span><span 
class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#checkModifiable--">checkModifiable</a></span>()</code>
+<div class="block">If this object is already read-only according to <a 
href="../../../freemarker/template/utility/WriteProtectable.html" 
title="interface in 
freemarker.template.utility"><code>WriteProtectable</code></a>, throws 
<code>IllegalStateException</code>,
+ otherwise does nothing.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#clearClassIntrospecitonCache--">clearClassIntrospecitonCache</a></span>()</code>
+<div class="block">Removes all class introspection data from the cache.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static java.lang.Object</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#coerceBigDecimal-java.math.BigDecimal-java.lang.Class-">coerceBigDecimal</a></span>(java.math.BigDecimal&nbsp;bd,
+                java.lang.Class&lt;?&gt;&nbsp;formalType)</code>
+<div class="block">Converts <code>BigDecimal</code> to the class given in the 
<code>formalType</code> argument if that's a known numerical
+ type, returns the <code>BigDecimal</code> as is otherwise.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#coerceBigDecimals-java.lang.reflect.AccessibleObject-java.lang.Object:A-">coerceBigDecimals</a></span>(java.lang.reflect.AccessibleObject&nbsp;callable,
+                 java.lang.Object[]&nbsp;args)</code>
+<div class="block">Converts any <code>BigDecimal</code>s in the passed array 
to the type of
+ the corresponding formal argument of the method.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#coerceBigDecimals-java.lang.Class:A-java.lang.Object:A-">coerceBigDecimals</a></span>(java.lang.Class&lt;?&gt;[]&nbsp;formalTypes,
+                 java.lang.Object[]&nbsp;args)</code>
+<div class="block">Converts any <code>BigDecimal</code>-s in the passed array 
to the type of
+ the corresponding formal argument of the method via <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#coerceBigDecimal-java.math.BigDecimal-java.lang.Class-"><code>coerceBigDecimal(BigDecimal,
 Class)</code></a>.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#finalizeConstruction-boolean-">finalizeConstruction</a></span>(boolean&nbsp;writeProtected)</code>
+<div class="block">Meant to be called after <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-"><code>BeansWrapper(BeansWrapperConfiguration,
 boolean, boolean)</code></a> when
+ its last argument was <code>false</code>; makes the instance read-only if 
necessary, then registers the model
+ factories in the class introspector.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#finetuneMethodAppearance-java.lang.Class-java.lang.reflect.Method-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision-">finetuneMethodAppearance</a></span>(java.lang.Class&lt;?&gt;&nbsp;clazz,
+                        java.lang.reflect.Method&nbsp;m,
+                        <a 
href="../../../freemarker/ext/beans/BeansWrapper.MethodAppearanceDecision.html" 
title="class in 
freemarker.ext.beans">BeansWrapper.MethodAppearanceDecision</a>&nbsp;decision)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">Use <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setMethodAppearanceFineTuner-freemarker.ext.beans.MethodAppearanceFineTuner-"><code>setMethodAppearanceFineTuner(MethodAppearanceFineTuner)</code></a>;
+     no need to extend this class anymore.
+     Soon this method will be final, so trying to override it will break your 
app.
+     Note that if the <code>methodAppearanceFineTuner</code> property is set 
to non-<code>null</code>, this method is not
+     called anymore.</span></div>
+</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getDefaultDateType--">getDefaultDateType</a></span>()</code>
+<div class="block">Returns the default date type.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>static <a 
href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in 
freemarker.ext.beans">BeansWrapper</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getDefaultInstance--">getDefaultInstance</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">Use <a 
href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in 
freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead. The 
instance returned here is not read-only, so it's
+     dangerous to use.</span></div>
+</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code><a 
href="../../../freemarker/template/TemplateHashModel.html" title="interface in 
freemarker.template">TemplateHashModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getEnumModels--">getEnumModels</a></span>()</code>
+<div class="block">Returns a hash model that represents the so-called class 
enum models.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getExposureLevel--">getExposureLevel</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code><a href="../../../freemarker/template/Version.html" 
title="class in freemarker.template">Version</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getIncompatibleImprovements--">getIncompatibleImprovements</a></span>()</code>
+<div class="block">Returns the version given with <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-"><code>BeansWrapper(Version)</code></a>,
 normalized to the lowest version where a change
+ has occurred.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>protected <a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template">TemplateModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getInstance-java.lang.Object-freemarker.ext.util.ModelFactory-">getInstance</a></span>(java.lang.Object&nbsp;object,
+           <a href="../../../freemarker/ext/util/ModelFactory.html" 
title="interface in freemarker.ext.util">ModelFactory</a>&nbsp;factory)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">override <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getModelFactory-java.lang.Class-"><code>getModelFactory(Class)</code></a>
 instead. Using this
+ method will now bypass wrapper caching (if it's enabled) and always 
+ result in creation of a new wrapper. This method will be removed in 
2.4</span></div>
+</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code><a 
href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" 
title="interface in 
freemarker.ext.beans">MethodAppearanceFineTuner</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getMethodAppearanceFineTuner--">getMethodAppearanceFineTuner</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>protected <a 
href="../../../freemarker/ext/util/ModelFactory.html" title="interface in 
freemarker.ext.util">ModelFactory</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getModelFactory-java.lang.Class-">getModelFactory</a></span>(java.lang.Class&lt;?&gt;&nbsp;clazz)</code>&nbsp;</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code><a 
href="../../../freemarker/template/ObjectWrapper.html" title="interface in 
freemarker.template">ObjectWrapper</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getOuterIdentity--">getOuterIdentity</a></span>()</code>
+<div class="block">By default returns <tt>this</tt>.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getPreferIndexedReadMethod--">getPreferIndexedReadMethod</a></span>()</code>
+<div class="block">Getter pair of <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setPreferIndexedReadMethod-boolean-"><code>setPreferIndexedReadMethod(boolean)</code></a></div>
+</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code><a 
href="../../../freemarker/template/TemplateHashModel.html" title="interface in 
freemarker.template">TemplateHashModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getStaticModels--">getStaticModels</a></span>()</code>
+<div class="block">Returns a hash model that represents the so-called class 
static models.</div>
+</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getTreatDefaultMethodsAsBeanMembers--">getTreatDefaultMethodsAsBeanMembers</a></span>()</code>
+<div class="block">See <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setTreatDefaultMethodsAsBeanMembers-boolean-"><code>setTreatDefaultMethodsAsBeanMembers(boolean)</code></a>.</div>
+</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getUseCache--">getUseCache</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#isClassIntrospectionCacheRestricted--">isClassIntrospectionCacheRestricted</a></span>()</code>
+<div class="block">Tells if this instance acts like if its class introspection 
cache is sharable with other <a 
href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in 
freemarker.ext.beans"><code>BeansWrapper</code></a>-s.</div>
+</td>
+</tr>
+<tr id="i21" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#isExposeFields--">isExposeFields</a></span>()</code>
+<div class="block">Returns whether exposure of public instance fields of 
classes is 
+ enabled.</div>
+</td>
+</tr>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#isSimpleMapWrapper--">isSimpleMapWrapper</a></span>()</code>
+<div class="block">Tells whether Maps are exposed as simple maps, without 
access to their
+ method.</div>
+</td>
+</tr>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#isStrict--">isStrict</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i24" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#isWriteProtected--">isWriteProtected</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code>java.lang.Object</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#newInstance-java.lang.Class-java.util.List-">newInstance</a></span>(java.lang.Class&lt;?&gt;&nbsp;clazz,
+           java.util.List&nbsp;arguments)</code>
+<div class="block">Creates a new instance of the specified class using the 
method call logic of this object wrapper for calling the
+ constructor.</div>
+</td>
+</tr>
+<tr id="i26" class="altColor">
+<td class="colFirst"><code>protected static <a 
href="../../../freemarker/template/Version.html" title="class in 
freemarker.template">Version</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#normalizeIncompatibleImprovementsVersion-freemarker.template.Version-">normalizeIncompatibleImprovementsVersion</a></span>(<a
 href="../../../freemarker/template/Version.html" title="class in 
freemarker.template">Version</a>&nbsp;incompatibleImprovements)</code>
+<div class="block">Returns the lowest version number that is equivalent with 
the parameter version.</div>
+</td>
+</tr>
+<tr id="i27" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#removeFromClassIntrospectionCache-java.lang.Class-">removeFromClassIntrospectionCache</a></span>(java.lang.Class&lt;?&gt;&nbsp;clazz)</code>
+<div class="block">Removes the introspection data for a class from the 
cache.</div>
+</td>
+</tr>
+<tr id="i28" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setDefaultDateType-int-">setDefaultDateType</a></span>(int&nbsp;defaultDateType)</code>
+<div class="block">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>.</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setExposeFields-boolean-">setExposeFields</a></span>(boolean&nbsp;exposeFields)</code>
+<div class="block">Controls whether public instance fields of classes are 
exposed to 
+ templates.</div>
+</td>
+</tr>
+<tr id="i30" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setExposureLevel-int-">setExposureLevel</a></span>(int&nbsp;exposureLevel)</code>
+<div class="block">Sets the method exposure level.</div>
+</td>
+</tr>
+<tr id="i31" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setMethodAppearanceFineTuner-freemarker.ext.beans.MethodAppearanceFineTuner-">setMethodAppearanceFineTuner</a></span>(<a
 href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" 
title="interface in 
freemarker.ext.beans">MethodAppearanceFineTuner</a>&nbsp;methodAppearanceFineTuner)</code>
+<div class="block">Used to tweak certain aspects of how methods appear in the 
data-model;
+ see <a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" 
title="interface in 
freemarker.ext.beans"><code>MethodAppearanceFineTuner</code></a> for more.</div>
+</td>
+</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setMethodsShadowItems-boolean-">setMethodsShadowItems</a></span>(boolean&nbsp;methodsShadowItems)</code>
+<div class="block">Sets whether methods shadow items in beans.</div>
+</td>
+</tr>
+<tr id="i33" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setNullModel-freemarker.template.TemplateModel-">setNullModel</a></span>(<a
 href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template">TemplateModel</a>&nbsp;nullModel)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">Changing the 
<code>null</code> model can cause a lot of confusion; don't do it.</span></div>
+</div>
+</td>
+</tr>
+<tr id="i34" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setOuterIdentity-freemarker.template.ObjectWrapper-">setOuterIdentity</a></span>(<a
 href="../../../freemarker/template/ObjectWrapper.html" title="interface in 
freemarker.template">ObjectWrapper</a>&nbsp;outerIdentity)</code>
+<div class="block">When wrapping an object, the BeansWrapper commonly needs to 
wrap
+ "sub-objects", for example each element in a wrapped collection.</div>
+</td>
+</tr>
+<tr id="i35" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setPreferIndexedReadMethod-boolean-">setPreferIndexedReadMethod</a></span>(boolean&nbsp;preferIndexedReadMethod)</code>
+<div class="block">Sets if when a JavaBean property has both a normal read 
method (like <code>String[] getFoos()</code>) and an indexed
+ read method (like <code>String getFoos(int index)</code>), and the Java 
<code>Introspector</code> exposes both (which only
+ happens since Java 8, apparently), which read method will be used when the 
property is accessed with the
+ shorthand syntax (like <code>myObj.foos</code>).</div>
+</td>
+</tr>
+<tr id="i36" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setSimpleMapWrapper-boolean-">setSimpleMapWrapper</a></span>(boolean&nbsp;simpleMapWrapper)</code>
+<div class="block">When set to <code>true</code>, the keys in 
<code>Map</code>-s won't mix with the method names when looking at them
+ from templates.</div>
+</td>
+</tr>
+<tr id="i37" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setStrict-boolean-">setStrict</a></span>(boolean&nbsp;strict)</code>
+<div class="block">Specifies if an attempt to read a bean property that 
doesn't exist in the
+ wrapped object should throw an <a 
href="../../../freemarker/ext/beans/InvalidPropertyException.html" title="class 
in freemarker.ext.beans"><code>InvalidPropertyException</code></a>.</div>
+</td>
+</tr>
+<tr id="i38" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setTreatDefaultMethodsAsBeanMembers-boolean-">setTreatDefaultMethodsAsBeanMembers</a></span>(boolean&nbsp;treatDefaultMethodsAsBeanMembers)</code>
+<div class="block">Controls whether Java 8 default methods that weren't 
overridden in a class will be recognized as bean property
+ accessors and/or bean actions, and thus will be visible from templates.</div>
+</td>
+</tr>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setUseCache-boolean-">setUseCache</a></span>(boolean&nbsp;useCache)</code>
+<div class="block">Sets whether this wrapper caches the <a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template"><code>TemplateModel</code></a>-s created for the Java 
objects that has wrapped with
+ this object wrapper.</div>
+</td>
+</tr>
+<tr id="i40" class="altColor">
+<td class="colFirst"><code>protected java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#toPropertiesString--">toPropertiesString</a></span>()</code>
+<div class="block">Returns the name-value pairs that describe the 
configuration of this <a href="../../../freemarker/ext/beans/BeansWrapper.html" 
title="class in freemarker.ext.beans"><code>BeansWrapper</code></a>; called from
+ <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#toString--"><code>toString()</code></a>.</div>
+</td>
+</tr>
+<tr id="i41" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#toString--">toString</a></span>()</code>
+<div class="block">Returns the exact class name and the identity hash, also 
the values of the most often used <a 
href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in 
freemarker.ext.beans"><code>BeansWrapper</code></a>
+ configuration properties, also if which (if any) shared class introspection 
cache it uses.</div>
+</td>
+</tr>
+<tr id="i42" class="altColor">
+<td class="colFirst"><code>java.lang.Object</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#tryUnwrapTo-freemarker.template.TemplateModel-java.lang.Class-">tryUnwrapTo</a></span>(<a
 href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template">TemplateModel</a>&nbsp;model,
+           java.lang.Class&lt;?&gt;&nbsp;targetClass)</code>
+<div class="block">Attempts to unwrap a <a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template"><code>TemplateModel</code></a> to a plain Java object 
that's the instance of the given class (or is
+ <code>null</code>).</div>
+</td>
+</tr>
+<tr id="i43" class="rowColor">
+<td class="colFirst"><code>java.lang.Object</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#unwrap-freemarker.template.TemplateModel-">unwrap</a></span>(<a
 href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template">TemplateModel</a>&nbsp;model)</code>
+<div class="block">Attempts to unwrap a model into underlying object.</div>
+</td>
+</tr>
+<tr id="i44" class="altColor">
+<td class="colFirst"><code>java.lang.Object</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#unwrap-freemarker.template.TemplateModel-java.lang.Class-">unwrap</a></span>(<a
 href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template">TemplateModel</a>&nbsp;model,
+      java.lang.Class&lt;?&gt;&nbsp;targetClass)</code>
+<div class="block">Attempts to unwrap a model into an object of the desired 
class.</div>
+</td>
+</tr>
+<tr id="i45" class="rowColor">
+<td class="colFirst"><code><a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template">TemplateModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#wrap-java.lang.Object-">wrap</a></span>(java.lang.Object&nbsp;object)</code>
+<div class="block">Wraps the object with a template model that is most 
specific for the object's
+ class.</div>
+</td>
+</tr>
+<tr id="i46" class="altColor">
+<td class="colFirst"><code><a 
href="../../../freemarker/template/TemplateMethodModelEx.html" title="interface 
in freemarker.template">TemplateMethodModelEx</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#wrap-java.lang.Object-java.lang.reflect.Method-">wrap</a></span>(java.lang.Object&nbsp;object,
+    java.lang.reflect.Method&nbsp;method)</code>
+<div class="block">Wraps a Java method so that it can be called from 
templates, without wrapping its parent ("this") object.</div>
+</td>
+</tr>
+<tr id="i47" class="rowColor">
+<td class="colFirst"><code><a 
href="../../../freemarker/template/TemplateHashModel.html" title="interface in 
freemarker.template">TemplateHashModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#wrapAsAPI-java.lang.Object-">wrapAsAPI</a></span>(java.lang.Object&nbsp;obj)</code>
+<div class="block">Wraps an object to a <a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template"><code>TemplateModel</code></a> that exposes the object's 
"native" (usually, Java) API.</div>
+</td>
+</tr>
+<tr id="i48" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#writeProtect--">writeProtect</a></span>()</code>
+<div class="block">Makes the configuration properties (settings) of this <a 
href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in 
freemarker.ext.beans"><code>BeansWrapper</code></a> object read-only.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, 
wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="EXPOSE_ALL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>EXPOSE_ALL</h4>
+<pre>public static final&nbsp;int EXPOSE_ALL</pre>
+<div class="block">At this level of exposure, all methods and properties of the
+ wrapped objects are exposed to the template.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a 
href="../../../constant-values.html#freemarker.ext.beans.BeansWrapper.EXPOSE_ALL">Constant
 Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="EXPOSE_SAFE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>EXPOSE_SAFE</h4>
+<pre>public static final&nbsp;int EXPOSE_SAFE</pre>
+<div class="block">At this level of exposure, all methods and properties of 
the wrapped
+ objects are exposed to the template except methods that are deemed
+ not safe. The not safe methods are java.lang.Object methods wait() and
+ notify(), java.lang.Class methods getClassLoader() and newInstance(),
+ java.lang.reflect.Method and java.lang.reflect.Constructor invoke() and
+ newInstance() methods, all java.lang.reflect.Field set methods, all 
+ java.lang.Thread and java.lang.ThreadGroup methods that can change its 
+ state, as well as the usual suspects in java.lang.System and
+ java.lang.Runtime.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a 
href="../../../constant-values.html#freemarker.ext.beans.BeansWrapper.EXPOSE_SAFE">Constant
 Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="EXPOSE_PROPERTIES_ONLY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>EXPOSE_PROPERTIES_ONLY</h4>
+<pre>public static final&nbsp;int EXPOSE_PROPERTIES_ONLY</pre>
+<div class="block">At this level of exposure, only property getters are 
exposed.
+ Additionally, property getters that map to unsafe methods are not
+ exposed (i.e. Class.classLoader and Thread.contextClassLoader).</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a 
href="../../../constant-values.html#freemarker.ext.beans.BeansWrapper.EXPOSE_PROPERTIES_ONLY">Constant
 Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="EXPOSE_NOTHING">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>EXPOSE_NOTHING</h4>
+<pre>public static final&nbsp;int EXPOSE_NOTHING</pre>
+<div class="block">At this level of exposure, no bean properties and methods 
are exposed.
+ Only map items, resource bundle items, and objects retrieved through
+ the generic get method (on objects of classes that have a generic get
+ method) can be retrieved through the hash interface. You might want to 
+ call <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setMethodsShadowItems-boolean-"><code>setMethodsShadowItems(boolean)</code></a>
 with <tt>false</tt> value to
+ speed up map item retrieval.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a 
href="../../../constant-values.html#freemarker.ext.beans.BeansWrapper.EXPOSE_NOTHING">Constant
 Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="BeansWrapper--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BeansWrapper</h4>
+<pre>@Deprecated
+public&nbsp;BeansWrapper()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span 
class="deprecationComment">Use <a 
href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in 
freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> or, in rare cases, 
<a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-"><code>BeansWrapper(Version)</code></a>
 instead.</span></div>
+<div class="block">Creates a new instance with the 
incompatible-improvements-version specified in
+ <a 
href="../../../freemarker/template/Configuration.html#DEFAULT_INCOMPATIBLE_IMPROVEMENTS"><code>Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS</code></a>.</div>
+</li>
+</ul>
+<a name="BeansWrapper-freemarker.template.Version-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BeansWrapper</h4>
+<pre>public&nbsp;BeansWrapper(<a 
href="../../../freemarker/template/Version.html" title="class in 
freemarker.template">Version</a>&nbsp;incompatibleImprovements)</pre>
+<div class="block">Use <a 
href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in 
freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead of the 
public constructors if possible.
+ The main disadvantage of using the public constructors is that the instances 
won't share caches. So unless having
+ a private cache is your goal, don't use them. See</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>incompatibleImprovements</code> - Sets which of the 
non-backward-compatible improvements should be enabled. Not <code>null</code>. 
This version number
+   is the same as the FreeMarker version number with which the improvements 
were implemented.
+    
+   <p>For new projects, it's recommended to set this to the FreeMarker version 
that's used during the development.
+   For released products that are still actively developed it's a low risk 
change to increase the 3rd
+   version number further as FreeMarker is updated, but of course you should 
always check the list of effects
+   below. Increasing the 2nd or 1st version number possibly mean substantial 
changes with higher risk of breaking
+   the application, but again, see the list of effects below.
+   
+   <p>The reason it's separate from <a 
href="../../../freemarker/template/Configuration.html#setIncompatibleImprovements-freemarker.template.Version-"><code>Configuration.setIncompatibleImprovements(Version)</code></a>
 is that
+   <a href="../../../freemarker/template/ObjectWrapper.html" title="interface 
in freemarker.template"><code>ObjectWrapper</code></a> objects are often shared 
among multiple <a href="../../../freemarker/template/Configuration.html" 
title="class in freemarker.template"><code>Configuration</code></a>-s, so the 
two version
+   numbers are technically independent. But it's recommended to keep those two 
version numbers the same.
+ 
+   <p>The changes enabled by <code>incompatibleImprovements</code> are:
+   <ul>
+     <li>
+       <p>2.3.0: No changes; this is the starting point, the version used in 
older projects.
+     </li>
+     <li>
+       <p>2.3.21 (or higher):
+       Several glitches were fixed in <em>overloaded</em> method selection. 
This usually just gets
+       rid of errors (like ambiguity exceptions and numerical precision loses 
due to bad overloaded method
+       choices), still, as in some cases the method chosen can be a different 
one now (that was the point of
+       the reworking after all), it can mean a change in the behavior of the 
application. The most important
+       change is that the treatment of <code>null</code> arguments were fixed, 
as earlier they were only seen
+       applicable to parameters of type <code>Object</code>. Now 
<code>null</code>-s are seen to be applicable to any
+       non-primitive parameters, and among those the one with the most 
specific type will be preferred (just
+       like in Java), which is hence never the one with the 
<code>Object</code> parameter type. For more details
+       about overloaded method selection changes see the version history in 
the FreeMarker Manual.
+     </li>
+     <li>
+       <p>2.3.24 (or higher):
+       <code>Iterator</code>-s were always said to be non-empty when using 
<code>?has_content</code> and such (i.e.,
+       operators that check emptiness without reading any elements). Now an 
<code>Iterator</code> counts as
+       empty exactly if it has no elements left. (Note that this bug has never 
affected basic functionality, like
+       <code>&lt;#list ...&gt;</code>.) 
+     </li>  
+     <li>
+       <p>2.3.26 (or higher):
+       The default of <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getTreatDefaultMethodsAsBeanMembers--"><code>getTreatDefaultMethodsAsBeanMembers()</code></a>
 changes from <code>false</code> to
+       <code>true</code>. Thus, Java 8 default methods (and the bean 
properties they define) are exposed, despite that
+       <code>Introspector</code> (the official JavaBeans introspector) ignores 
them, at least as of Java 8. 
+     </li>  
+     <li>
+       <p>2.3.27 (or higher):
+       The default of the <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setPreferIndexedReadMethod-boolean-"><code>preferIndexedReadMethod</code></a>
 setting changes
+       from <code>true</code> to <code>false</code>.
+     </li>  
+   </ul>
+   
+   <p>Note that the version will be normalized to the lowest version where the 
same incompatible
+   <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in 
freemarker.ext.beans"><code>BeansWrapper</code></a> improvements were already 
present, so <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getIncompatibleImprovements--"><code>getIncompatibleImprovements()</code></a>
 might returns
+   a lower version than what you have specified.</dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BeansWrapper</h4>
+<pre>protected&nbsp;BeansWrapper(<a 
href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" 
title="class in freemarker.ext.beans">BeansWrapperConfiguration</a>&nbsp;bwConf,
+                       boolean&nbsp;writeProtected)</pre>
+<div class="block">Same as <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-"><code>BeansWrapper(BeansWrapperConfiguration,
 boolean, boolean)</code></a> with <code>true</code>
+ <code>finalizeConstruction</code> argument.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a 
name="BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>BeansWrapper</h4>
+<pre>protected&nbsp;BeansWrapper(<a 
href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" 
title="class in freemarker.ext.beans">BeansWrapperConfiguration</a>&nbsp;bwConf,
+                       boolean&nbsp;writeProtected,
+                       boolean&nbsp;finalizeConstruction)</pre>
+<div class="block">Initializes the instance based on the the <a 
href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" 
title="class in 
freemarker.ext.beans"><code>BeansWrapperConfiguration</code></a> 
specified.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>writeProtected</code> - Makes the instance's configuration settings 
read-only via
+     <a 
href="../../../freemarker/template/utility/WriteProtectable.html#writeProtect--"><code>WriteProtectable.writeProtect()</code></a>;
 this way it can use the shared class introspection cache.</dd>
+<dd><code>finalizeConstruction</code> - Decides if the construction is 
finalized now, or the caller will do some more
+     adjustments on the instance and then call <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#finalizeConstruction-boolean-"><code>finalizeConstruction(boolean)</code></a>
 itself.</dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.22</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="finalizeConstruction-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>finalizeConstruction</h4>
+<pre>protected&nbsp;void&nbsp;finalizeConstruction(boolean&nbsp;writeProtected)</pre>
+<div class="block">Meant to be called after <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-"><code>BeansWrapper(BeansWrapperConfiguration,
 boolean, boolean)</code></a> when
+ its last argument was <code>false</code>; makes the instance read-only if 
necessary, then registers the model
+ factories in the class introspector. No further changes should be done after 
calling this, if
+ <code>writeProtected</code> was <code>true</code>.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.22</dd>
+</dl>
+</li>
+</ul>
+<a name="writeProtect--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>writeProtect</h4>
+<pre>public&nbsp;void&nbsp;writeProtect()</pre>
+<div class="block">Makes the configuration properties (settings) of this <a 
href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in 
freemarker.ext.beans"><code>BeansWrapper</code></a> object read-only. As 
changing them
+ after the object has become visible to multiple threads leads to undefined 
behavior, it's recommended to call
+ this when you have finished configuring the object.
+ 
+ <p>Consider using <a 
href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in 
freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead, which gives 
an instance that's already
+ write protected and also uses some shared caches/pools.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a 
href="../../../freemarker/template/utility/WriteProtectable.html#writeProtect--">writeProtect</a></code>&nbsp;in
 interface&nbsp;<code><a 
href="../../../freemarker/template/utility/WriteProtectable.html" 
title="interface in 
freemarker.template.utility">WriteProtectable</a></code></dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="isWriteProtected--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isWriteProtected</h4>
+<pre>public&nbsp;boolean&nbsp;isWriteProtected()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a 
href="../../../freemarker/template/utility/WriteProtectable.html#isWriteProtected--">isWriteProtected</a></code>&nbsp;in
 interface&nbsp;<code><a 
href="../../../freemarker/template/utility/WriteProtectable.html" 
title="interface in 
freemarker.template.utility">WriteProtectable</a></code></dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="checkModifiable--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>checkModifiable</h4>
+<pre>protected&nbsp;void&nbsp;checkModifiable()</pre>
+<div class="block">If this object is already read-only according to <a 
href="../../../freemarker/template/utility/WriteProtectable.html" 
title="interface in 
freemarker.template.utility"><code>WriteProtectable</code></a>, throws 
<code>IllegalStateException</code>,
+ otherwise does nothing.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="isStrict--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isStrict</h4>
+<pre>public&nbsp;boolean&nbsp;isStrict()</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setStrict-boolean-"><code>setStrict(boolean)</code></a></dd>
+</dl>
+</li>
+</ul>
+<a name="setStrict-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setStrict</h4>
+<pre>public&nbsp;void&nbsp;setStrict(boolean&nbsp;strict)</pre>
+<div class="block">Specifies if an attempt to read a bean property that 
doesn't exist in the
+ wrapped object should throw an <a 
href="../../../freemarker/ext/beans/InvalidPropertyException.html" title="class 
in freemarker.ext.beans"><code>InvalidPropertyException</code></a>.
+ 
+ <p>If this property is <tt>false</tt> (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>?default('something')</tt> and <tt>?exists</tt> and similar 
built-ins
+ 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
+ <a href="../../../freemarker/ext/beans/InvalidPropertyException.html" 
title="class in 
freemarker.ext.beans"><code>InvalidPropertyException</code></a>, which can't be 
suppressed in the template
+ (not even with <tt>myBean.noSuchProperty?default('something')</tt>). This way
+ <tt>?default('something')</tt> and <tt>?exists</tt> and similar built-ins can 
be used to
+ handle existing properties whose value is <tt>null</tt>, 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.</div>
+</li>
+</ul>
+<a name="setOuterIdentity-freemarker.template.ObjectWrapper-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setOuterIdentity</h4>
+<pre>public&nbsp;void&nbsp;setOuterIdentity(<a 
href="../../../freemarker/template/ObjectWrapper.html" title="interface in 
freemarker.template">ObjectWrapper</a>&nbsp;outerIdentity)</pre>
+<div class="block">When wrapping an object, the BeansWrapper commonly needs to 
wrap
+ "sub-objects", for example each element in a wrapped collection.
+ Normally it wraps these objects using itself. However, this makes
+ it difficult to delegate to a BeansWrapper as part of a custom
+ aggregate ObjectWrapper. This method lets you set the ObjectWrapper
+ which will be used to wrap the sub-objects.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>outerIdentity</code> - the aggregate ObjectWrapper</dd>
+</dl>
+</li>
+</ul>
+<a name="getOuterIdentity--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getOuterIdentity</h4>
+<pre>public&nbsp;<a href="../../../freemarker/template/ObjectWrapper.html" 
title="interface in 
freemarker.template">ObjectWrapper</a>&nbsp;getOuterIdentity()</pre>
+<div class="block">By default returns <tt>this</tt>.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setOuterIdentity-freemarker.template.ObjectWrapper-"><code>setOuterIdentity(ObjectWrapper)</code></a></dd>
+</dl>
+</li>
+</ul>
+<a name="setSimpleMapWrapper-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSimpleMapWrapper</h4>
+<pre>public&nbsp;void&nbsp;setSimpleMapWrapper(boolean&nbsp;simpleMapWrapper)</pre>
+<div class="block">When set to <code>true</code>, the keys in 
<code>Map</code>-s won't mix with the method names when looking at them
+ from templates. The default is <code>false</code> for backward-compatibility, 
but is not recommended.
+ 
+ <p>When this is <code>false</code>, <code>myMap.foo</code> or 
<code>myMap['foo']</code> either returns the method <code>foo</code>,
+ or calls <code>Map.get("foo")</code>. If both exists (the method and the 
<code>Map</code> key), one will hide the other,
+ depending on the <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#isMethodsShadowItems--"><code>isMethodsShadowItems()</code></a>,
 which default to <code>true</code> (the method
+ wins). Some frameworks use this so that you can call 
<code>myMap.get(nonStringKey)</code> from templates [*], but it
+ comes on the cost of polluting the key-set with the method names, and risking 
methods accidentally hiding
+ <code>Map</code> entries (or the other way around). Thus, this setup is not 
recommended.
+ (Technical note: <code>Map</code>-s will be wrapped into <a 
href="../../../freemarker/ext/beans/MapModel.html" title="class in 
freemarker.ext.beans"><code>MapModel</code></a> in this case.)  
+
+ <p>When this is <code>true</code>, <code>myMap.foo</code> or 
<code>myMap['foo']</code> always calls <code>Map.get("foo")</code>.
+ The methods of the <code>Map</code> object aren't visible from templates in 
this case. This, however, spoils the
+ <code>myMap.get(nonStringKey)</code> workaround. But now you can use 
<code>myMap(nonStringKey)</code> instead, that is, you
+ can use the map itself as the <code>get</code> method. 
+ (Technical note: <code>Map</code>-s will be wrapped into <a 
href="../../../freemarker/ext/beans/SimpleMapModel.html" title="class in 
freemarker.ext.beans"><code>SimpleMapModel</code></a> in this case.)
+ 
+ <p>*: For historical reasons, FreeMarker 2.3.X doesn't support non-string 
keys with the <code>[]</code> operator,
+       hence the workarounds. This will be likely fixed in FreeMarker 2.4.0. 
Also note that the method- and
+       the "field"-namespaces aren't separate in FreeMarker, hence 
<code>myMap.get</code> can return the <code>get</code>
+       method.</div>
+</li>
+</ul>
+<a name="isSimpleMapWrapper--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isSimpleMapWrapper</h4>
+<pre>public&nbsp;boolean&nbsp;isSimpleMapWrapper()</pre>
+<div class="block">Tells whether Maps are exposed as simple maps, without 
access to their
+ method. See <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setSimpleMapWrapper-boolean-"><code>setSimpleMapWrapper(boolean)</code></a>
 for details.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if Maps are exposed as simple hashes, false if they're
+ exposed as full JavaBeans.</dd>
+</dl>
+</li>
+</ul>
+<a name="getPreferIndexedReadMethod--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getPreferIndexedReadMethod</h4>
+<pre>public&nbsp;boolean&nbsp;getPreferIndexedReadMethod()</pre>
+<div class="block">Getter pair of <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setPreferIndexedReadMethod-boolean-"><code>setPreferIndexedReadMethod(boolean)</code></a></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.27</dd>
+</dl>
+</li>
+</ul>
+<a name="setPreferIndexedReadMethod-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setPreferIndexedReadMethod</h4>
+<pre>public&nbsp;void&nbsp;setPreferIndexedReadMethod(boolean&nbsp;preferIndexedReadMethod)</pre>
+<div class="block">Sets if when a JavaBean property has both a normal read 
method (like <code>String[] getFoos()</code>) and an indexed
+ read method (like <code>String getFoos(int index)</code>), and the Java 
<code>Introspector</code> exposes both (which only
+ happens since Java 8, apparently), which read method will be used when the 
property is accessed with the
+ shorthand syntax (like <code>myObj.foos</code>). Before <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getIncompatibleImprovements--"><code>incompatibleImprovements</code></a>
+ 2.3.27 it defaults to <code>true</code> for backward compatibility (although 
it's actually less backward compatible if
+ you are just switching to Java 8; see later), but the recommended value and 
the default starting with
+ <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getIncompatibleImprovements--"><code>incompatibleImprovements</code></a>
 2.3.27 is <code>false</code>. This setting has no
+ effect on properties that only has normal read method, or only has indexed 
read method. In case a property has
+ both, using the indexed reader method is disadvantageous, as then FreeMarker 
can't tell what the highest allowed
+ index is, and so the property will be unlistable (<code>&lt;#list foo as 
myObj.foos&gt;</code> will fail).
+ 
+ <p>
+ Apparently, this setting only matters since Java 8, as before that 
<code>Introspector</code> did not expose the
+ indexed reader method if there was also a normal reader method. As with Java 
8 the behavior of
+ <code>Introspector</code> has changed, some old templates started to break, 
as the property has suddenly become
+ unlistable (see earlier why). So setting this to <code>false</code> can be 
seen as a Java 8 compatibility fix.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.27</dd>
+</dl>
+</li>
+</ul>
+<a name="setExposureLevel-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setExposureLevel</h4>
+<pre>public&nbsp;void&nbsp;setExposureLevel(int&nbsp;exposureLevel)</pre>
+<div class="block">Sets the method exposure level. By default, set to 
<code>EXPOSE_SAFE</code>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>exposureLevel</code> - can be any of the <code>EXPOSE_xxx</code>
+ constants.</dd>
+</dl>
+</li>
+</ul>
+<a name="getExposureLevel--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getExposureLevel</h4>
+<pre>public&nbsp;int&nbsp;getExposureLevel()</pre>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="setExposeFields-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setExposeFields</h4>
+<pre>public&nbsp;void&nbsp;setExposeFields(boolean&nbsp;exposeFields)</pre>
+<div class="block">Controls whether public instance fields of classes are 
exposed to 
+ templates.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>exposeFields</code> - if set to true, public instance fields of 
classes 
+ that do not have a property getter defined can be accessed directly by
+ their name. If there is a property getter for a property of the same 
+ name as the field (i.e. getter "getFoo()" and field "foo"), then 
+ referring to "foo" in template invokes the getter. If set to false, no
+ access to public instance fields of classes is given. Default is false.</dd>
+</dl>
+</li>
+</ul>
+<a name="setTreatDefaultMethodsAsBeanMembers-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTreatDefaultMethodsAsBeanMembers</h4>
+<pre>public&nbsp;void&nbsp;setTreatDefaultMethodsAsBeanMembers(boolean&nbsp;treatDefaultMethodsAsBeanMembers)</pre>
+<div class="block">Controls whether Java 8 default methods that weren't 
overridden in a class will be recognized as bean property
+ accessors and/or bean actions, and thus will be visible from templates. (We 
expose bean properties and bean
+ actions, not methods in general.) Before <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getIncompatibleImprovements--"><code>incompatibleImprovements</code></a>
 2.3.26
+ this defaults to <code>false</code> for backward compatibility. Starting with 
<a 
href="../../../freemarker/ext/beans/BeansWrapper.html#getIncompatibleImprovements--"><code>incompatibleImprovements</code></a>
 2.3.26 it defaults to <code>true</code>.
+ <p>
+ Some explanation: FreeMarker uses <code>Introspector</code> to discover the 
bean properties and actions of
+ classes, for maximum conformance to the JavaBeans specification. But for some 
reason (perhaps just a bug in the
+ Oracle/OpenJDK Java 8 implementation) that ignores the Java 8 default methods 
coming from the interfaces. When
+ this setting is <code>true</code>, we search for non-overridden default 
methods ourselves, and add them to the set of
+ discovered bean members.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.26</dd>
+</dl>
+</li>
+</ul>
+<a name="isExposeFields--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isExposeFields</h4>
+<pre>public&nbsp;boolean&nbsp;isExposeFields()</pre>
+<div class="block">Returns whether exposure of public instance fields of 
classes is 
+ enabled. See <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setExposeFields-boolean-"><code>setExposeFields(boolean)</code></a>
 for details.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if public instance fields are exposed, false otherwise.</dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.26</dd>
+</dl>
+</li>
+</ul>
+<a name="getTreatDefaultMethodsAsBeanMembers--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTreatDefaultMethodsAsBeanMembers</h4>
+<pre>public&nbsp;boolean&nbsp;getTreatDefaultMethodsAsBeanMembers()</pre>
+<div class="block">See <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setTreatDefaultMethodsAsBeanMembers-boolean-"><code>setTreatDefaultMethodsAsBeanMembers(boolean)</code></a>.</div>
+</li>
+</ul>
+<a name="getMethodAppearanceFineTuner--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMethodAppearanceFineTuner</h4>
+<pre>public&nbsp;<a 
href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" 
title="interface in 
freemarker.ext.beans">MethodAppearanceFineTuner</a>&nbsp;getMethodAppearanceFineTuner()</pre>
+</li>
+</ul>
+<a 
name="setMethodAppearanceFineTuner-freemarker.ext.beans.MethodAppearanceFineTuner-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMethodAppearanceFineTuner</h4>
+<pre>public&nbsp;void&nbsp;setMethodAppearanceFineTuner(<a 
href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" 
title="interface in 
freemarker.ext.beans">MethodAppearanceFineTuner</a>&nbsp;methodAppearanceFineTuner)</pre>
+<div class="block">Used to tweak certain aspects of how methods appear in the 
data-model;
+ see <a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" 
title="interface in 
freemarker.ext.beans"><code>MethodAppearanceFineTuner</code></a> for more.</div>
+</li>
+</ul>
+<a name="isClassIntrospectionCacheRestricted--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isClassIntrospectionCacheRestricted</h4>
+<pre>public&nbsp;boolean&nbsp;isClassIntrospectionCacheRestricted()</pre>
+<div class="block">Tells if this instance acts like if its class introspection 
cache is sharable with other <a 
href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in 
freemarker.ext.beans"><code>BeansWrapper</code></a>-s.
+ A restricted cache denies certain too "antisocial" operations, like <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#clearClassIntrospecitonCache--"><code>clearClassIntrospecitonCache()</code></a>.
+ The value depends on how the instance
+ was created; with a public constructor (then this is <code>false</code>), or 
with <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" 
title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a>
+ (then it's <code>true</code>). Note that in the last case it's possible that 
the introspection cache
+ will not be actually shared because there's no one to share with, but this 
will <code>true</code> even then.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="setMethodsShadowItems-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMethodsShadowItems</h4>
+<pre>public&nbsp;void&nbsp;setMethodsShadowItems(boolean&nbsp;methodsShadowItems)</pre>
+<div class="block">Sets whether methods shadow items in beans. When true (this 
is the
+ default value), <code>${object.name}</code> will first try to locate
+ a bean method or property with the specified name on the object, and
+ only if it doesn't find it will it try to call
+ <code>object.get(name)</code>, the so-called "generic get method" that
+ is usually used to access items of a container (i.e. elements of a map).
+ When set to false, the lookup order is reversed and generic get method
+ is called first, and only if it returns null is method lookup attempted.</div>
+</li>
+</ul>
+<a name="setDefaultDateType-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultDateType</h4>
+<pre>public&nbsp;void&nbsp;setDefaultDateType(int&nbsp;defaultDateType)</pre>
+<div class="block">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 
href="../../../freemarker/template/TemplateDateModel.html#UNKNOWN"><code>TemplateDateModel.UNKNOWN</code></a>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>defaultDateType</code> - the new default date type.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultDateType--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultDateType</h4>
+<pre>public&nbsp;int&nbsp;getDefaultDateType()</pre>
+<div class="block">Returns the default date type. See <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setDefaultDateType-int-"><code>setDefaultDateType(int)</code></a>
 for
+ details.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the default date type</dd>
+</dl>
+</li>
+</ul>
+<a name="setUseCache-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUseCache</h4>
+<pre>public&nbsp;void&nbsp;setUseCache(boolean&nbsp;useCache)</pre>
+<div class="block">Sets whether this wrapper caches the <a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template"><code>TemplateModel</code></a>-s created for the Java 
objects that has wrapped with
+ this object wrapper. Default is <code>false</code>.
+ When set to <code>true</code>, calling <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#wrap-java.lang.Object-"><code>wrap(Object)</code></a>
 multiple times for
+ the same object will likely return the same model (although there is
+ no guarantee as the cache items can be cleared any time).</div>
+</li>
+</ul>
+<a name="getUseCache--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getUseCache</h4>
+<pre>public&nbsp;boolean&nbsp;getUseCache()</pre>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="setNullModel-freemarker.template.TemplateModel-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setNullModel</h4>
+<pre>@Deprecated
+public&nbsp;void&nbsp;setNullModel(<a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template">TemplateModel</a>&nbsp;nullModel)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span 
class="deprecationComment">Changing the <code>null</code> model can cause a lot 
of confusion; don't do it.</span></div>
+<div class="block">Sets the null model. This model is returned from the <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#wrap-java.lang.Object-"><code>wrap(Object)</code></a>
 method whenever the wrapped object is
+ <code>null</code>. It defaults to <code>null</code>, which is dealt with 
quite strictly on engine level, however you can
+ substitute an arbitrary (perhaps more lenient) model, like an empty string. 
For proper working, the
+ <code>nullModel</code> should be an <a 
href="../../../freemarker/template/AdapterTemplateModel.html" title="interface 
in freemarker.template"><code>AdapterTemplateModel</code></a> that returns 
<code>null</code> for
+ <a 
href="../../../freemarker/template/AdapterTemplateModel.html#getAdaptedObject-java.lang.Class-"><code>AdapterTemplateModel.getAdaptedObject(Class)</code></a>.</div>
+</li>
+</ul>
+<a name="getIncompatibleImprovements--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getIncompatibleImprovements</h4>
+<pre>public&nbsp;<a href="../../../freemarker/template/Version.html" 
title="class in 
freemarker.template">Version</a>&nbsp;getIncompatibleImprovements()</pre>
+<div class="block">Returns the version given with <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-"><code>BeansWrapper(Version)</code></a>,
 normalized to the lowest version where a change
+ has occurred. Thus, this is not necessarily the same version than that was 
given to the constructor.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a 
name="normalizeIncompatibleImprovementsVersion-freemarker.template.Version-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>normalizeIncompatibleImprovementsVersion</h4>
+<pre>protected static&nbsp;<a href="../../../freemarker/template/Version.html" 
title="class in 
freemarker.template">Version</a>&nbsp;normalizeIncompatibleImprovementsVersion(<a
 href="../../../freemarker/template/Version.html" title="class in 
freemarker.template">Version</a>&nbsp;incompatibleImprovements)</pre>
+<div class="block">Returns the lowest version number that is equivalent with 
the parameter version.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultInstance--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultInstance</h4>
+<pre>@Deprecated
+public static final&nbsp;<a 
href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in 
freemarker.ext.beans">BeansWrapper</a>&nbsp;getDefaultInstance()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span 
class="deprecationComment">Use <a 
href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in 
freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead. The 
instance returned here is not read-only, so it's
+     dangerous to use.</span></div>
+<div class="block">Returns the default instance of the wrapper. This instance 
is used
+ when you construct various bean models without explicitly specifying
+ a wrapper. It is also returned by 
+ <a 
href="../../../freemarker/template/ObjectWrapper.html#BEANS_WRAPPER"><code>ObjectWrapper.BEANS_WRAPPER</code></a>
+ and this is the sole instance that is used by the JSP adapter.
+ You can modify the properties of the default instance (caching,
+ exposure level, null model) to affect its operation. By default, the
+ default instance is not caching, uses the <code>EXPOSE_SAFE</code>
+ exposure level, and uses null reference as the null model.</div>
+</li>
+</ul>
+<a name="wrap-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>wrap</h4>
+<pre>public&nbsp;<a href="../../../freemarker/template/TemplateModel.html" 
title="interface in 
freemarker.template">TemplateModel</a>&nbsp;wrap(java.lang.Object&nbsp;object)
+                   throws <a 
href="../../../freemarker/template/TemplateModelException.html" title="class in 
freemarker.template">TemplateModelException</a></pre>
+<div class="block">Wraps the object with a template model that is most 
specific for the object's
+ class. Specifically:
+ <ul>
+ <li>if the object is null, returns the <a 
href="../../../freemarker/ext/beans/BeansWrapper.html#setNullModel-freemarker.template.TemplateModel-"><code>null
 model</code></a>,</li>
+ <li>if the object is a Number returns a <a 
href="../../../freemarker/ext/beans/NumberModel.html" title="class in 
freemarker.ext.beans"><code>NumberModel</code></a> for it,</li>
+ <li>if the object is a Date returns a <a 
href="../../../freemarker/ext/beans/DateModel.html" title="class in 
freemarker.ext.beans"><code>DateModel</code></a> for it,</li>
+ <li>if the object is a Boolean returns 
+ <a 
href="../../../freemarker/template/TemplateBooleanModel.html#TRUE"><code>TemplateBooleanModel.TRUE</code></a>
 or 
+ <a 
href="../../../freemarker/template/TemplateBooleanModel.html#FALSE"><code>TemplateBooleanModel.FALSE</code></a></li>
+ <li>if the object is already a TemplateModel, returns it unchanged,</li>
+ <li>if the object is an array, returns a <a 
href="../../../freemarker/ext/beans/ArrayModel.html" title="class in 
freemarker.ext.beans"><code>ArrayModel</code></a> for it
+ <li>if the object is a Map, returns a <a 
href="../../../freemarker/ext/beans/MapModel.html" title="class in 
freemarker.ext.beans"><code>MapModel</code></a> for it
+ <li>if the object is a Collection, returns a <a 
href="../../../freemarker/ext/beans/CollectionModel.html" title="class in 
freemarker.ext.beans"><code>CollectionModel</code></a> for it
+ <li>if the object is an Iterator, returns a <a 
href="../../../freemarker/ext/beans/IteratorModel.html" title="class in 
freemarker.ext.beans"><code>IteratorModel</code></a> for it
+ <li>if the object is an Enumeration, returns a <a 
href="../../../freemarker/ext/beans/EnumerationModel.html" title="class in 
freemarker.ext.beans"><code>EnumerationModel</code></a> for it
+ <li>if the object is a String, returns a <a 
href="../../../freemarker/ext/beans/StringModel.html" title="class in 
freemarker.ext.beans"><code>StringModel</code></a> for it
+ <li>otherwise, returns a generic <a 
href="../../../freemarker/ext/beans/StringModel.html" title="class in 
freemarker.ext.beans"><code>StringModel</code></a> for it.
+ </ul></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a 
href="../../../freemarker/template/ObjectWrapper.html#wrap-java.lang.Object-">wrap</a></code>&nbsp;in
 interface&nbsp;<code><a href="../../../freemarker/template/ObjectWrapper.html" 
title="interface in freemarker.template">ObjectWrapper</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>object</code> - The object to wrap into a <a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template"><code>TemplateModel</code></a>. If it already implements 
<a href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template"><code>TemplateModel</code></a>,
+      it should just return the object as is. If it's <code>null</code>, the 
method should return <code>null</code>
+      (however, <a href="../../../freemarker/ext/beans/BeansWrapper.html" 
title="class in freemarker.ext.beans"><code>BeansWrapper</code></a>, has a 
legacy option for returning a null model object instead, but it's not
+      a good idea).</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>a <a href="../../../freemarker/template/TemplateModel.html" 
title="interface in freemarker.template"><code>TemplateModel</code></a> wrapper 
of the object passed in. To support un-wrapping, you may consider the
+     return value to implement <a 
href="../../../freemarker/ext/util/WrapperTemplateModel.html" title="interface 
in freemarker.ext.util"><code>WrapperTemplateModel</code></a> and <a 
href="../../../freemarker/template/AdapterTemplateModel.html" title="interface 
in freemarker.template"><code>AdapterTemplateModel</code></a>.  
+     The default expectation is that the <a 
href="../../../freemarker/template/TemplateModel.html" title="interface in 
freemarker.template"><code>TemplateModel</code></a> isn't less thread safe than 
the wrapped object.
+     If the <a href="../../../freemarker/template/ObjectWrapper.html" 
title="interface in freemarker.template"><code>ObjectWrapper</code></a> returns 
less thread safe objects, that should be clearly documented, as it
+     restricts how it can be used, like, then it can't be used to wrap "shared 
variables"
+     (<a 
href="../../../freemarker/template/Configuration.html#setSharedVaribles-java.util.Map-"><code>Configuration.setSharedVaribles(Map)</code></a>).</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../freemarker/template/TemplateModelException.html" 
title="class in freemarker.template">TemplateModelException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="wrap-java.lang.Object-java.lang.reflect.Method-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>wrap</h4>
+<pre>public&nbsp;<a 
href="../../../freemarker/template/TemplateMethodModelEx.html" title="interface 
in 
freemarker.template">TemplateMethodModelEx</a>&nbsp;wrap(java.lang.Object&nbsp;object,
+                                  java.lang.reflect.Method&nbsp;method)</pre>
+<div class="block">Wraps a Java method so that it can be called from 
templates, without wrapping its parent ("this") object. The
+ result

<TRUNCATED>

Reply via email to