diff --git a/core/src/main/java/org/apache/commons/digester3/AbstractMethodRule.java b/core/src/main/java/org/apache/commons/digester3/AbstractMethodRule.java
index b1b8689..26b1c48 100644
--- a/core/src/main/java/org/apache/commons/digester3/AbstractMethodRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/AbstractMethodRule.java
@@ -64,7 +64,7 @@
     /**
      * Construct a "set next" rule with the specified method name. The method's argument type is assumed to be the class
      * of the child object.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      */
     public AbstractMethodRule( final String methodName )
@@ -74,7 +74,7 @@
 
     /**
      * Construct a "set next" rule with the specified method name.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      * @param paramType Java class of the parent method's argument (if you wish to use a primitive type, specify the
      *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
@@ -88,7 +88,7 @@
 
     /**
      * Construct a "set next" rule with the specified method name.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      * @param paramTypeName Java class of the parent method's argument (if you wish to use a primitive type, specify the
      *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
@@ -118,7 +118,7 @@
      * <p>
      * The default setting is to disable exact matches.
      * </p>
-     * 
+     *
      * @return true if exact matching is enabled
      * @since Digester Release 1.1.1
      */
@@ -158,7 +158,7 @@
      * <p>
      * See {@link #isExactMatch()}.
      * </p>
-     * 
+     *
      * @param useExactMatch should this rule use exact method matching
      * @since Digester Release 1.1.1
      */
diff --git a/core/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java b/core/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java
index 1a19a16..4f7b154 100644
--- a/core/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java
+++ b/core/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java
@@ -31,7 +31,7 @@
  * <code>namespaceURI</code> of the <code>Rule</code> will be set correctly before it is passed to
  * <code>registerRule</code>. The subclass can then perform whatever it needs to do to register the rule.
  * </p>
- * 
+ *
  * @since 1.5
  */
 public abstract class AbstractRulesImpl
@@ -109,7 +109,7 @@
     /**
      * Register rule at given pattern. The the Digester and namespaceURI properties of the given <code>Rule</code> can
      * be assumed to have been set properly before this method is called.
-     * 
+     *
      * @param pattern Nesting pattern to be matched for this Rule
      * @param rule Rule instance to be registered
      */
diff --git a/core/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java b/core/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java
index a3ac8c2..6b3a376 100644
--- a/core/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java
@@ -55,7 +55,7 @@
      * <p>
      * Construct rule that sets the given property from the body text.
      * </p>
-     * 
+     *
      * @param propertyName name of property to set
      */
     public BeanPropertySetterRule( final String propertyName )
diff --git a/core/src/main/java/org/apache/commons/digester3/CallParamRule.java b/core/src/main/java/org/apache/commons/digester3/CallParamRule.java
index 936e608..b358352 100644
--- a/core/src/main/java/org/apache/commons/digester3/CallParamRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/CallParamRule.java
@@ -51,7 +51,7 @@
      * automatic type conversion is being applied (ie if the target function takes something other than a string as a
      * parameter) then the conversion will fail if the converter class does not accept an empty string as valid input.
      * </p>
-     * 
+     *
      * @param paramIndex The zero-relative parameter number
      */
     public CallParamRule( final int paramIndex )
@@ -61,7 +61,7 @@
 
     /**
      * Construct a "call parameter" rule that will save the value of the specified attribute as the parameter value.
-     * 
+     *
      * @param paramIndex The zero-relative parameter number
      * @param attributeName The name of the attribute to save
      */
@@ -73,7 +73,7 @@
 
     /**
      * Construct a "call parameter" rule.
-     * 
+     *
      * @param paramIndex The zero-relative parameter number
      * @param fromStack should this parameter be taken from the top of the stack?
      */
@@ -86,7 +86,7 @@
     /**
      * Constructs a "call parameter" rule which sets a parameter from the stack. If the stack contains too few objects,
      * then the parameter will be set to null.
-     * 
+     *
      * @param paramIndex The zero-relative parameter number
      * @param stackIndex the index of the object which will be passed as a parameter. The zeroth object is the top of
      *            the stack, 1 is the next object down and so on.
diff --git a/core/src/main/java/org/apache/commons/digester3/Digester.java b/core/src/main/java/org/apache/commons/digester3/Digester.java
index accf50d..d8c6fd3 100644
--- a/core/src/main/java/org/apache/commons/digester3/Digester.java
+++ b/core/src/main/java/org/apache/commons/digester3/Digester.java
@@ -771,10 +771,10 @@
     }
 
     /**
-     * Set the validating parser flag. This must be called before <code>parse()</code> is called the first time. 
+     * Set the validating parser flag. This must be called before <code>parse()</code> is called the first time.
      * By default the value of this is set to false.
-     * 
-     * It essentially just controls the DTD validation. To use modern schema languages use the 
+     *
+     * It essentially just controls the DTD validation. To use modern schema languages use the
      * {@link #setXMLSchema(Schema)} method to associate a schema to a parser.
      *
      * @param validating The new validating parser flag.
diff --git a/core/src/main/java/org/apache/commons/digester3/NodeCreateRule.java b/core/src/main/java/org/apache/commons/digester3/NodeCreateRule.java
index 27e2bc3..fbef26e 100644
--- a/core/src/main/java/org/apache/commons/digester3/NodeCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/NodeCreateRule.java
@@ -58,7 +58,7 @@
  * <strong>Note</strong> that the current implementation does not set the namespace prefixes in the exported nodes. The
  * (usually more important) namespace URIs are set, of course.
  * </p>
- * 
+ *
  * @since Digester 1.4
  */
 public class NodeCreateRule
@@ -82,7 +82,7 @@
          * Stores the content handler currently used by Digester so it can be reset when done, and initializes the DOM
          * objects needed to build the node.
          * </p>
-         * 
+         *
          * @param doc the document to use to create nodes
          * @param root the root node
          * @throws ParserConfigurationException if the DocumentBuilderFactory could not be instantiated
@@ -177,7 +177,7 @@
          * In this method, we therefore just append the provided text to a "current text" buffer. When the element end
          * is found, or a child element is found then we can check whether we have all-whitespace. See method
          * addTextIfPresent.
-         * 
+         *
          * @param ch the characters from the XML document
          * @param start the start position in the array
          * @param length the number of characters to read from the array
@@ -192,7 +192,7 @@
 
         /**
          * Checks whether control needs to be returned to Digester.
-         * 
+         *
          * @param namespaceURI the namespace URI
          * @param localName the local name
          * @param qName the qualified (prefixed) name
@@ -224,7 +224,7 @@
 
         /**
          * Adds a new {@link org.w3c.dom.ProcessingInstruction ProcessingInstruction} to the current node.
-         * 
+         *
          * @param target the processing instruction target
          * @param data the processing instruction data, or null if none was supplied
          * @throws SAXException if the DOM implementation throws an exception
@@ -245,7 +245,7 @@
 
         /**
          * Adds a new child {@link org.w3c.dom.Element Element} to the current node.
-         * 
+         *
          * @param namespaceURI the namespace URI
          * @param localName the local name
          * @param qName the qualified (prefixed) name
@@ -313,7 +313,7 @@
     /**
      * Constructor. Creates an instance of this rule that will create a DOM {@link org.w3c.dom.Element Element}, but
      * lets you specify the JAXP <code>DocumentBuilder</code> that should be used when constructing the node tree.
-     * 
+     *
      * @param documentBuilder the JAXP <code>DocumentBuilder</code> to use
      */
     public NodeCreateRule( final DocumentBuilder documentBuilder )
@@ -325,7 +325,7 @@
      * Constructor. Creates an instance of this rule that will create either a DOM {@link org.w3c.dom.Element Element}
      * or a DOM {@link org.w3c.dom.DocumentFragment DocumentFragment}, depending on the value of the
      * <code>nodeType</code> parameter.
-     * 
+     *
      * @param nodeType the type of node to create, which can be either {@link org.w3c.dom.Node#ELEMENT_NODE
      *            Node.ELEMENT_NODE} or {@link org.w3c.dom.Node#DOCUMENT_FRAGMENT_NODE Node.DOCUMENT_FRAGMENT_NODE}
      * @throws ParserConfigurationException if a DocumentBuilder cannot be created which satisfies the
@@ -343,7 +343,7 @@
      * or a DOM {@link org.w3c.dom.DocumentFragment DocumentFragment}, depending on the value of the
      * <code>nodeType</code> parameter. This constructor lets you specify the JAXP <code>DocumentBuilder</code> that
      * should be used when constructing the node tree.
-     * 
+     *
      * @param nodeType the type of node to create, which can be either {@link org.w3c.dom.Node#ELEMENT_NODE
      *            Node.ELEMENT_NODE} or {@link org.w3c.dom.Node#DOCUMENT_FRAGMENT_NODE Node.DOCUMENT_FRAGMENT_NODE}
      * @param documentBuilder the JAXP <code>DocumentBuilder</code> to use
@@ -379,7 +379,7 @@
      * resulting in a DOM being built instead of normal digester rule-handling occurring. When the end of the current
      * xml element is encountered, the original content handler is restored (expected to be NULL, allowing normal
      * Digester operations to continue).
-     * 
+     *
      * @param namespaceURI the namespace URI of the matching element, or an empty string if the parser is not namespace
      *            aware or the element has no namespace
      * @param name the local name if the parser is namespace aware, or just the element name otherwise
diff --git a/core/src/main/java/org/apache/commons/digester3/ObjectCreationFactory.java b/core/src/main/java/org/apache/commons/digester3/ObjectCreationFactory.java
index 77687c9..5f12d7b 100644
--- a/core/src/main/java/org/apache/commons/digester3/ObjectCreationFactory.java
+++ b/core/src/main/java/org/apache/commons/digester3/ObjectCreationFactory.java
@@ -55,7 +55,7 @@
     /**
      * Set the {@link Digester} to allow the implementation to do logging, classloading based on the digester's
      * classloader, etc.
-     * 
+     *
      * @param digester parent Digester object
      */
     void setDigester( Digester digester );
diff --git a/core/src/main/java/org/apache/commons/digester3/ObjectParamRule.java b/core/src/main/java/org/apache/commons/digester3/ObjectParamRule.java
index 7b39954..382bbc8 100644
--- a/core/src/main/java/org/apache/commons/digester3/ObjectParamRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/ObjectParamRule.java
@@ -36,7 +36,7 @@
  * matched. See {@link #ObjectParamRule(int paramIndex, String attributeName, Object param)}.
  * </ul>
  * </p>
- * 
+ *
  * @since 1.4
  */
 public class ObjectParamRule
@@ -45,7 +45,7 @@
     // ----------------------------------------------------------- Constructors
     /**
      * Construct a "call parameter" rule that will save the given Object as the parameter value.
-     * 
+     *
      * @param paramIndex The zero-relative parameter number
      * @param param the parameter to pass along
      */
@@ -57,7 +57,7 @@
     /**
      * Construct a "call parameter" rule that will save the given Object as the parameter value, provided that the
      * specified attribute exists.
-     * 
+     *
      * @param paramIndex The zero-relative parameter number
      * @param attributeName The name of the attribute to match
      * @param param the parameter to pass along
diff --git a/core/src/main/java/org/apache/commons/digester3/PathCallParamRule.java b/core/src/main/java/org/apache/commons/digester3/PathCallParamRule.java
index f35cf1d..ddc73dd 100644
--- a/core/src/main/java/org/apache/commons/digester3/PathCallParamRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/PathCallParamRule.java
@@ -29,7 +29,7 @@
  * surrounding <code>CallMethodRule</code>. This Rule is most useful when making extensive use of wildcards in rule
  * patterns.
  * </p>
- * 
+ *
  * @since 1.6
  */
 public class PathCallParamRule
@@ -40,7 +40,7 @@
 
     /**
      * Construct a "call parameter" rule that will save the body text of this element as the parameter value.
-     * 
+     *
      * @param paramIndex The zero-relative parameter number
      */
     public PathCallParamRule( final int paramIndex )
diff --git a/core/src/main/java/org/apache/commons/digester3/RegexMatcher.java b/core/src/main/java/org/apache/commons/digester3/RegexMatcher.java
index 89a9d3b..366f778 100644
--- a/core/src/main/java/org/apache/commons/digester3/RegexMatcher.java
+++ b/core/src/main/java/org/apache/commons/digester3/RegexMatcher.java
@@ -21,7 +21,7 @@
 
 /**
  * Regular expression matching strategy for RegexRules.
- * 
+ *
  * @since 1.5
  */
 public abstract class RegexMatcher
@@ -30,7 +30,7 @@
     /**
      * Returns true if the given pattern matches the given path according to the regex algorithm that this strategy
      * applies.
-     * 
+     *
      * @param pathPattern the standard digester path representing the element
      * @param rulePattern the regex pattern the path will be tested against
      * @return true if the given pattern matches the given path
diff --git a/core/src/main/java/org/apache/commons/digester3/RegexRules.java b/core/src/main/java/org/apache/commons/digester3/RegexRules.java
index dcc5409..464ce4f 100644
--- a/core/src/main/java/org/apache/commons/digester3/RegexRules.java
+++ b/core/src/main/java/org/apache/commons/digester3/RegexRules.java
@@ -33,7 +33,7 @@
  * does not vary. All patterns are tested to see if they match the path using the regex matcher. All those that do are
  * return in the order which the rules were added.
  * </p>
- * 
+ *
  * @since 1.5
  */
 public class RegexRules
@@ -52,7 +52,7 @@
 
     /**
      * Construct sets the Regex matching strategy.
-     * 
+     *
      * @param matcher the regex strategy to be used, not null
      */
     public RegexRules( final RegexMatcher matcher )
@@ -74,7 +74,7 @@
 
     /**
      * Sets the current regex matching strategy.
-     * 
+     *
      * @param matcher use this RegexMatcher, not null
      */
     public void setRegexMatcher( final RegexMatcher matcher )
diff --git a/core/src/main/java/org/apache/commons/digester3/RuleSet.java b/core/src/main/java/org/apache/commons/digester3/RuleSet.java
index b5e072a..f2f47ca 100644
--- a/core/src/main/java/org/apache/commons/digester3/RuleSet.java
+++ b/core/src/main/java/org/apache/commons/digester3/RuleSet.java
@@ -52,7 +52,7 @@
     /**
      * Add the set of Rule instances defined in this RuleSet to the specified <code>Digester</code> instance,
      * associating them with our namespace URI (if any). This method should only be called by a Digester instance.
-     * 
+     *
      * @param digester Digester instance to which the new Rule instances should be added.
      */
     void addRuleInstances( Digester digester );
diff --git a/core/src/main/java/org/apache/commons/digester3/Rules.java b/core/src/main/java/org/apache/commons/digester3/Rules.java
index d3ed197..fe129d3 100644
--- a/core/src/main/java/org/apache/commons/digester3/Rules.java
+++ b/core/src/main/java/org/apache/commons/digester3/Rules.java
@@ -42,7 +42,7 @@
 
     /**
      * Set the Digester instance with which this Rules instance is associated.
-     * 
+     *
      * @param digester The newly associated Digester instance
      */
     void setDigester( Digester digester );
@@ -56,7 +56,7 @@
 
     /**
      * Set the namespace URI that will be applied to all subsequently added <code>Rule</code> objects.
-     * 
+     *
      * @param namespaceURI Namespace URI that must match on all subsequently added rules, or <code>null</code> for
      *            matching regardless of the current namespace URI
      */
@@ -66,7 +66,7 @@
 
     /**
      * Register a new Rule instance matching the specified pattern.
-     * 
+     *
      * @param pattern Nesting pattern to be matched for this Rule
      * @param rule Rule instance to be registered
      */
@@ -81,7 +81,7 @@
      * Return a List of all registered Rule instances that match the specified nesting pattern, or a zero-length List if
      * there are no matches. If more than one Rule instance matches, they <strong>must</strong> be returned in the order
      * originally registered through the <code>add()</code> method.
-     * 
+     *
      * @param namespaceURI Namespace URI for which to select matching rules, or <code>null</code> to match regardless of
      *            namespace URI
      * @param pattern Nesting pattern to be matched
diff --git a/core/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java b/core/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java
index b681f86..4d88342 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java
@@ -44,7 +44,7 @@
  * <p>
  * Example input that can be processed by this rule:
  * </p>
- * 
+ *
  * <pre>
  *   [widget]
  *    [height]7[/height]
@@ -95,7 +95,7 @@
  * created. It should be possible to cache these in normal use (though watch out for when a rule instance is invoked
  * re-entrantly!).
  * </p>
- * 
+ *
  * @since 1.6
  */
 public class SetNestedPropertiesRule
@@ -132,7 +132,7 @@
      * For details about how this works, see
      * {@link #SetNestedPropertiesRule(String[] elementNames, String[] propertyNames)}.
      * </p>
-     * 
+     *
      * @param elementName is the child xml element to match
      * @param propertyName is the java bean property to be assigned the value of the specified xml element. This may be
      *            null, in which case the specified xml element will be ignored.
@@ -161,7 +161,7 @@
      * the <code>alt-state</code> to the <code>state</code> property. All other child elements are mapped as usual using
      * exact name matching. <code><pre>
      *      SetNestedPropertiesRule(
-     *                new String[] {"alt-city", "alt-state"}, 
+     *                new String[] {"alt-city", "alt-state"},
      *                new String[] {"city", "state"});
      * </pre></code>
      * </p>
@@ -171,11 +171,11 @@
      * property. The xml element <code>ignore-me</code> is not mapped, ie is ignored. All other elements are mapped as
      * usual using exact name matching. <code><pre>
      *      SetPropertiesRule(
-     *                new String[] {"class", "ignore-me"}, 
+     *                new String[] {"class", "ignore-me"},
      *                new String[] {"className"});
      * </pre></code>
      * </p>
-     * 
+     *
      * @param elementNames names of elements to map
      * @param propertyNames names of properties mapped to
      */
diff --git a/core/src/main/java/org/apache/commons/digester3/SetNextRule.java b/core/src/main/java/org/apache/commons/digester3/SetNextRule.java
index d125aba..afe22f7 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetNextRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetNextRule.java
@@ -45,7 +45,7 @@
     /**
      * Construct a "set next" rule with the specified method name. The method's argument type is assumed to be the class
      * of the child object.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      */
     public SetNextRule( final String methodName )
@@ -55,7 +55,7 @@
 
     /**
      * Construct a "set next" rule with the specified method name.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      * @param paramType Java class name of the parent method's argument (if you wish to use a primitive type,
      *                  specify the corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code>
@@ -68,7 +68,7 @@
 
     /**
      * Construct a "set next" rule with the specified method name.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      * @param paramType Java class of the parent method's argument (if you wish to use a primitive type, specify the
      *                  corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
diff --git a/core/src/main/java/org/apache/commons/digester3/SetPropertyRule.java b/core/src/main/java/org/apache/commons/digester3/SetPropertyRule.java
index 705dbf2..1fad5b8 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetPropertyRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetPropertyRule.java
@@ -41,7 +41,7 @@
 
     /**
      * Construct a "set property" rule with the specified name and value attributes.
-     * 
+     *
      * @param name Name of the attribute that will contain the name of the property to be set
      * @param value Name of the attribute that will contain the value to which the property should be set
      */
diff --git a/core/src/main/java/org/apache/commons/digester3/SetRootRule.java b/core/src/main/java/org/apache/commons/digester3/SetRootRule.java
index bdcd89f..b2f06c0 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetRootRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetRootRule.java
@@ -39,7 +39,7 @@
     /**
      * Construct a "set root" rule with the specified method name. The method's argument type is assumed to be the class
      * of the child object.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      */
     public SetRootRule( final String methodName )
@@ -49,7 +49,7 @@
 
     /**
      * Construct a "set root" rule with the specified method name.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      * @param paramType Java class name of the parent method's argument (if you wish to use a primitive type,
      *                  specify the corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code>
@@ -62,7 +62,7 @@
 
     /**
      * Construct a "set root" rule with the specified method name.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      * @param paramType Java class of the parent method's argument (if you wish to use a primitive type, specify the
      *                  corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
diff --git a/core/src/main/java/org/apache/commons/digester3/SetTopRule.java b/core/src/main/java/org/apache/commons/digester3/SetTopRule.java
index 065847f..8ab56fd 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetTopRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetTopRule.java
@@ -39,7 +39,7 @@
     /**
      * Construct a "set top" rule with the specified method name. The method's argument type is assumed to be the class
      * of the child object.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      */
     public SetTopRule( final String methodName )
@@ -49,7 +49,7 @@
 
     /**
      * Construct a "set top" rule with the specified method name.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      * @param paramType Java class name of the parent method's argument (if you wish to use a primitive type,
      *                  specify the corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code>
@@ -62,7 +62,7 @@
 
     /**
      * Construct a "set top" rule with the specified method name.
-     * 
+     *
      * @param methodName Method name of the parent method to call
      * @param paramType Java class of the parent method's argument (if you wish to use a primitive type, specify the
      *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
diff --git a/core/src/main/java/org/apache/commons/digester3/SimpleRegexMatcher.java b/core/src/main/java/org/apache/commons/digester3/SimpleRegexMatcher.java
index ba6cabb..09b0f52 100644
--- a/core/src/main/java/org/apache/commons/digester3/SimpleRegexMatcher.java
+++ b/core/src/main/java/org/apache/commons/digester3/SimpleRegexMatcher.java
@@ -34,7 +34,7 @@
  * </ul>
  * Escaping these wildcards is not supported .
  * </p>
- * 
+ *
  * @since 1.5
  */
 public class SimpleRegexMatcher
diff --git a/core/src/main/java/org/apache/commons/digester3/StackAction.java b/core/src/main/java/org/apache/commons/digester3/StackAction.java
index 326e2e3..ea68b5a 100644
--- a/core/src/main/java/org/apache/commons/digester3/StackAction.java
+++ b/core/src/main/java/org/apache/commons/digester3/StackAction.java
@@ -36,7 +36,7 @@
  * from the callback methods. This allows multiple actions to be "chained" together.
  * <p>
  * See also Digester.setStackAction.
- * 
+ *
  * @since 1.8
  */
 public interface StackAction
diff --git a/core/src/main/java/org/apache/commons/digester3/Substitutor.java b/core/src/main/java/org/apache/commons/digester3/Substitutor.java
index ab59a90..280a5f6 100644
--- a/core/src/main/java/org/apache/commons/digester3/Substitutor.java
+++ b/core/src/main/java/org/apache/commons/digester3/Substitutor.java
@@ -34,7 +34,7 @@
  * <p>
  * Different strategies are supported for attributes and body text.
  * </p>
- * 
+ *
  * @since 1.6
  */
 public abstract class Substitutor
@@ -49,7 +49,7 @@
      * can be safely reused. The implementation is therefore free to reuse the same <code>Attributes</code> instance for
      * all calls.
      * </p>
-     * 
+     *
      * @param attributes the <code>Attributes</code> passed into <code>Digester</code> by the SAX parser, not null (but
      *            may be empty)
      * @return <code>Attributes</code> to be passed to the <code>Rule</code> implementations. This method may pass back
@@ -60,7 +60,7 @@
     /**
      * Substitutes for the body text. This method may substitute values into the body text of the elements that Digester
      * parses.
-     * 
+     *
      * @param bodyText the body text (as passed to <code>Digester</code>)
      * @return the body text to be passed to the <code>Rule</code> implementations
      */
diff --git a/core/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java b/core/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java
index de9d3e5..11043eb 100644
--- a/core/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java
+++ b/core/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java
@@ -36,7 +36,7 @@
  * </p>
  * <p>
  * For example,
- * 
+ *
  * <pre>
  *   Rule alpha;
  *   ...
@@ -46,13 +46,13 @@
  *   digester.setRules(rules);
  *   ...
  * </pre>
- * 
+ *
  * when a pattern does not match any other rule, then rule alpha will be called.
  * </p>
  * <p>
  * <code>WithDefaultsRulesWrapper</code> follows the <em>Decorator</em> pattern.
  * </p>
- * 
+ *
  * @since 1.6
  */
 public class WithDefaultsRulesWrapper
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/DigesterRule.java b/core/src/main/java/org/apache/commons/digester3/annotations/DigesterRule.java
index 0980d9a..242709a 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/DigesterRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/DigesterRule.java
@@ -31,7 +31,7 @@
 
 /**
  * Meta-annotation that marks an annotation as part of commons-digester.
- * 
+ *
  * @since 2.1
  */
 @Documented
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/DigesterRuleList.java b/core/src/main/java/org/apache/commons/digester3/annotations/DigesterRuleList.java
index 1a71b16..cf5de9f 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/DigesterRuleList.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/DigesterRuleList.java
@@ -27,7 +27,7 @@
 
 /**
  * Meta-annotation that marks an annotation as a list of commons-digester annotations.
- * 
+ *
  * @since 2.1
  */
 @Documented
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/WithMemoryRulesBinder.java b/core/src/main/java/org/apache/commons/digester3/annotations/WithMemoryRulesBinder.java
index 8368b23..28ef4f3 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/WithMemoryRulesBinder.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/WithMemoryRulesBinder.java
@@ -94,7 +94,7 @@
     }
 
     /**
-     * 
+     *
      *
      * @param bindingClass
      * @return true if the specified element has not yet been marked
@@ -105,7 +105,7 @@
     }
 
     /**
-     * 
+     *
      *
      * @param bindingClass
      * @return true if the specified element has been marked
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/reflect/MethodArgument.java b/core/src/main/java/org/apache/commons/digester3/annotations/reflect/MethodArgument.java
index 80b81d9..ea21f5a 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/reflect/MethodArgument.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/reflect/MethodArgument.java
@@ -24,7 +24,7 @@
 
 /**
  * Class to supply the missing Java {@code AnnotatedElement} for method arguments.
- * 
+ *
  * @since 2.1
  */
 public final class MethodArgument
@@ -48,7 +48,7 @@
 
     /**
      * Creates a new method argument as {@code AnnotatedElement}.
-     * 
+     *
      * @param index the method argument index.
      * @param parameterType the method argument type.
      * @param annotations the method argument annotations.
@@ -71,7 +71,7 @@
 
     /**
      * Returns the method argument index.
-     * 
+     *
      * @return the method argument index.
      */
     public int getIndex()
@@ -81,7 +81,7 @@
 
     /**
      * Returns the method argument type.
-     * 
+     *
      * @return the method argument type.
      */
     public Class<?> getParameterType()
@@ -125,7 +125,7 @@
 
     /**
      * Returns an annotations array, copy of the declared annotations in this method argument.
-     * 
+     *
      * @return an annotations array, copy of the declared annotations in this method argument.
      */
     private Annotation[] getAnnotationsArrayCopy()
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/rules/CreationRule.java b/core/src/main/java/org/apache/commons/digester3/annotations/rules/CreationRule.java
index e2c0244..e96cdc3 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/rules/CreationRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/rules/CreationRule.java
@@ -27,7 +27,7 @@
 
 /**
  * Marks a Digester rule as a creation rule, that's crucial for the {@code setNext} rule.
- * 
+ *
  * @since 2.1
  */
 @Documented
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/rules/FactoryCreate.java b/core/src/main/java/org/apache/commons/digester3/annotations/rules/FactoryCreate.java
index 27dfce8..79c9ac1 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/rules/FactoryCreate.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/rules/FactoryCreate.java
@@ -34,7 +34,7 @@
 
 /**
  * Classes annotated with {@code FactoryCreate} will be bound with {@code FactoryCreateRule} digester rule.
- * 
+ *
  * @see org.apache.commons.digester3.Digester#addFactoryCreate(String,org.apache.commons.digester3.ObjectCreationFactory,boolean)
  * @since 2.1
  */
@@ -77,7 +77,7 @@
 
     /**
      * Defines several {@code @FactoryCreate} annotations on the same element.
-     * 
+     *
      * @see FactoryCreate
      */
     @Documented
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/rules/SetNext.java b/core/src/main/java/org/apache/commons/digester3/annotations/rules/SetNext.java
index aacc8a9..2a307d7 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/rules/SetNext.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/rules/SetNext.java
@@ -31,7 +31,7 @@
 
 /**
  * Methods annotated with {@code SetNext} will be bound with {@code SetNextRule} digester rule.
- * 
+ *
  * @see org.apache.commons.digester3.Digester#addSetNext(String,String,String)
  * @since 2.1
  */
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/rules/SetRoot.java b/core/src/main/java/org/apache/commons/digester3/annotations/rules/SetRoot.java
index d046f0a..a1e25f5 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/rules/SetRoot.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/rules/SetRoot.java
@@ -31,7 +31,7 @@
 
 /**
  * Methods annotated with {@code SetRoot} will be bound with {@code SetRootRule} digester rule.
- * 
+ *
  * @see org.apache.commons.digester3.Digester#addSetRoot(String,String,String)
  * @since 2.1
  */
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/utils/AnnotationUtils.java b/core/src/main/java/org/apache/commons/digester3/annotations/utils/AnnotationUtils.java
index 02bbc65..bed4731 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/utils/AnnotationUtils.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/utils/AnnotationUtils.java
@@ -25,7 +25,7 @@
 
 /**
  * Simple utility class to introspect annotations.
- * 
+ *
  * @since 2.1
  */
 public class AnnotationUtils
@@ -61,7 +61,7 @@
 
     /**
      * Extract the {@code value()} from annotation.
-     * 
+     *
      * @param annotation the annotation has to be introspected.
      * @return the annotation {@code value()}.
      */
@@ -72,7 +72,7 @@
 
     /**
      * Extract the {@code pattern()} from annotation.
-     * 
+     *
      * @param annotation the annotation has to be introspected.
      * @return the annotation {@code pattern()}.
      */
@@ -120,7 +120,7 @@
 
     /**
      * Extract the Annotations array {@code value()} from annotation if present, nul otherwise.
-     * 
+     *
      * @param annotation the annotation has to be introspected.
      * @return the annotation {@code value()} as Annotations array.
      */
@@ -137,7 +137,7 @@
 
     /**
      * Invokes an annotation method.
-     * 
+     *
      * @param annotationn the annotation has to be introspected.
      * @param method the method name to execute.
      * @return the annotation method value, null if any error occurs.
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/AbstractParamTypeBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/AbstractParamTypeBuilder.java
index 2714b99..18211d9 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/AbstractParamTypeBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/AbstractParamTypeBuilder.java
@@ -56,7 +56,7 @@
 
     /**
      * Sets the Java class of the method's argument.
-     * 
+     *
      * If you wish to use a primitive type, specify the corresonding
      * Java wrapper class instead, such as {@code java.lang.Boolean}
      * for a {@code boolean} parameter.
@@ -77,7 +77,7 @@
 
     /**
      * Sets the Java class name of the method's argument.
-     * 
+     *
      * If you wish to use a primitive type, specify the corresonding
      * Java wrapper class instead, such as {@code java.lang.Boolean}
      * for a {@code boolean} parameter.
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java b/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
index 328eafd..237a199 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
@@ -309,7 +309,7 @@
     /**
      * Sets a flag indicating whether the requested feature is supported by the underlying implementation of
      * <code>org.xml.sax.XMLReader</code>.
-     * 
+     *
      * @see org.apache.commons.digester3.Digester#setFeature(String, boolean)
      * @param feature Name of the feature to set the status for
      * @param value The new value for this feature
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/ErrorMessage.java b/core/src/main/java/org/apache/commons/digester3/binder/ErrorMessage.java
index 33aa960..7159572 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/ErrorMessage.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/ErrorMessage.java
@@ -70,7 +70,7 @@
 
     /**
      * Gets the error message text.
-     * 
+     *
      * @return The error message text
      */
     public String getMessage()
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/PluginCreateRuleBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/PluginCreateRuleBuilder.java
index 35bddc9..a177f19 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/PluginCreateRuleBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/PluginCreateRuleBuilder.java
@@ -138,7 +138,7 @@
     }
 
     /**
-     * Sets the xml attribute which the input xml uses to indicate to a 
+     * Sets the xml attribute which the input xml uses to indicate to a
      * PluginCreateRule which plugin declaration is being referenced.
      *
      * @param attrName The attribute name
@@ -156,7 +156,7 @@
     }
 
     /**
-     * Sets the xml attribute which the input xml uses to indicate to a 
+     * Sets the xml attribute which the input xml uses to indicate to a
      * PluginCreateRule which plugin declaration is being referenced.
      *
      * @param namespaceUri The attribute NameSpace
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/Declaration.java b/core/src/main/java/org/apache/commons/digester3/plugins/Declaration.java
index 9c62ec3..46a4952 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/Declaration.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/Declaration.java
@@ -27,7 +27,7 @@
 /**
  * Represents a Class that can be instantiated by a PluginCreateRule, plus info on how to load custom digester rules for
  * mapping xml into that plugged-in class.
- * 
+ *
  * @since 1.6
  */
 public class Declaration
@@ -111,7 +111,7 @@
 
     /**
      * Return the id associated with this declaration. For plugins declared "inline", null will be returned.
-     * 
+     *
      * @return The id value. May be null.
      */
     public String getId()
@@ -138,7 +138,7 @@
 
     /**
      * Return plugin class associated with this declaration.
-     * 
+     *
      * @return The pluginClass.
      */
     public Class<?> getPluginClass()
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/InitializableRule.java b/core/src/main/java/org/apache/commons/digester3/plugins/InitializableRule.java
index 2099d24..fda1ddb 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/InitializableRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/InitializableRule.java
@@ -22,7 +22,7 @@
 /**
  * Defines an interface that a Rule class can implement if it wishes to get an initialisation callback after the rule
  * has been added to the set of Rules within a PluginRules instance.
- * 
+ *
  * @since 1.6
  */
 public interface InitializableRule
@@ -31,7 +31,7 @@
     /**
      * Called after this Rule object has been added to the list of all Rules. Note that if a single InitializableRule
      * instance is associated with more than one pattern, then this method will be called more than once.
-     * 
+     *
      * @param pattern is the digester match pattern that will trigger this rule.
      */
     void postRegisterInit( String pattern );
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginAssertionFailure.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginAssertionFailure.java
index d092a6f..7d84237 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginAssertionFailure.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginAssertionFailure.java
@@ -29,7 +29,7 @@
  * This difference in design is because throwing Error objects is not good in a container-based architecture.
  * <p>
  * Example:
- * 
+ *
  * <pre>
  * if ( impossibleCondition )
  * {
@@ -40,7 +40,7 @@
  * Note that PluginAssertionFailure should <i>not</i> be thrown when user input is bad, or when code external to the
  * Digester module passes invalid parameters to a plugins method. It should be used only in checks for problems which
  * indicate internal bugs within the plugins module.
- * 
+ *
  * @since 1.6
  */
 public class PluginAssertionFailure
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginConfigurationException.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginConfigurationException.java
index 1ae1dc8..02cb1d5 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginConfigurationException.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginConfigurationException.java
@@ -23,7 +23,7 @@
  * Thrown when an error occurs due to the way the calling application uses the plugins module. Because the pre-existing
  * Digester API doesn't provide any option for throwing checked exceptions at some points where Plugins can potentially
  * fail, this exception extends RuntimeException so that it can "tunnel" through these points.
- * 
+ *
  * @since 1.6
  */
 public class PluginConfigurationException
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginContext.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginContext.java
index 57df61b..9b24787 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginContext.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginContext.java
@@ -42,7 +42,7 @@
  * ServletContext object provides access to the container's services such as obtaining global configuration parameters
  * for the container, or getting access to logging services. For plugins, a Digester instance can be regarded as
  * "the container".
- * 
+ *
  * @since 1.6
  */
 public class PluginContext
@@ -128,29 +128,29 @@
      * instantiated.
      * <p>
      * Example:
-     * 
+     *
      * <pre>
      * setPluginClassAttribute( null, &quot;class&quot; );
      * </pre>
-     * 
+     *
      * will allow this in the input xml:
-     * 
+     *
      * <pre>
      *  &lt;root&gt;
      *    &lt;some-plugin class="com.acme.widget"&gt; ......
      * </pre>
-     * 
+     *
      * instead of the default syntax:
-     * 
+     *
      * <pre>
      *  &lt;root&gt;
      *    &lt;some-plugin plugin-class="com.acme.widget"&gt; ......
      * </pre>
-     * 
+     *
      * This is particularly useful if the input xml document is not in English.
      * <p>
      * Note that the xml attributes used by PluginDeclarationRules are not affected by this method.
-     * 
+     *
      * @param namespaceUri is the namespace uri that the specified attribute is in. If the attribute is in no namespace,
      *            then this should be null. Note that if a namespace is used, the attrName value should <i>not</i>
      *            contain any kind of namespace-prefix. Note also that if you are using a non-namespace-aware parser,
@@ -168,29 +168,29 @@
      * being referenced.
      * <p>
      * Example:
-     * 
+     *
      * <pre>
      * setPluginIdAttribute( null, &quot;id&quot; );
      * </pre>
-     * 
+     *
      * will allow this in the input xml:
-     * 
+     *
      * <pre>
      *  &lt;root&gt;
      *    &lt;some-plugin id="widget"&gt; ......
      * </pre>
-     * 
+     *
      * rather than the default behavior:
-     * 
+     *
      * <pre>
      *  &lt;root&gt;
      *    &lt;some-plugin plugin-id="widget"&gt; ......
      * </pre>
-     * 
+     *
      * This is particularly useful if the input xml document is not in English.
      * <p>
      * Note that the xml attributes used by PluginDeclarationRules are not affected by this method.
-     * 
+     *
      * @param namespaceUri is the namespace uri that the specified attribute is in. If the attribute is in no namespace,
      *            then this should be null. Note that if a namespace is used, the attrName value should <i>not</i>
      *            contain any kind of namespace-prefix. Note also that if you are using a non-namespace-aware parser,
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginCreateRule.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginCreateRule.java
index 02db582..599943d 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginCreateRule.java
@@ -28,7 +28,7 @@
 /**
  * Allows the original rules for parsing the configuration file to define points at which plugins are allowed, by
  * configuring a PluginCreateRule with the appropriate pattern.
- * 
+ *
  * @since 1.6
  */
 public class PluginCreateRule
@@ -72,7 +72,7 @@
 
     /**
      * Create a plugin rule where the user <i>must</i> specify a plugin-class or plugin-id.
-     * 
+     *
      * @param baseClass is the class which any specified plugin <i>must</i> be descended from.
      */
     public PluginCreateRule( final Class<?> baseClass )
@@ -83,7 +83,7 @@
     /**
      * Create a plugin rule where the user <i>may</i> specify a plugin. If the user doesn't specify a plugin, then the
      * default class specified in this constructor is used.
-     * 
+     *
      * @param baseClass is the class which any specified plugin <i>must</i> be descended from.
      * @param dfltPluginClass is the class which will be used if the user doesn't specify any plugin-class or plugin-id.
      *            This class will have custom rules installed for it just like a declared plugin.
@@ -100,7 +100,7 @@
     /**
      * Create a plugin rule where the user <i>may</i> specify a plugin. If the user doesn't specify a plugin, then the
      * default class specified in this constructor is used.
-     * 
+     *
      * @param baseClass is the class which any specified plugin <i>must</i> be descended from.
      * @param dfltPluginClass is the class which will be used if the user doesn't specify any plugin-class or plugin-id.
      *            This class will have custom rules installed for it just like a declared plugin.
@@ -141,7 +141,7 @@
      * being referenced.
      * <p>
      * See {@link PluginRules#setPluginIdAttribute} for more info.
-     * 
+     *
      * @param namespaceUri is the namespace uri that the specified attribute is in. If the attribute is in no namespace,
      *            then this should be null. Note that if a namespace is used, the attrName value should <i>not</i>
      *            contain any kind of namespace-prefix. Note also that if you are using a non-namespace-aware parser,
@@ -302,7 +302,7 @@
      * then created and set as the digester's default Rules object. Any custom rules associated with the plugin class
      * are then loaded into that new Rules object. Finally, any custom rules that are associated with the current
      * pattern (such as SetPropertiesRules) have their begin methods executed.
-     * 
+     *
      * @param namespace the namespace URI of the matching element, or an empty string if the parser is not namespace
      *            aware or the element has no namespace
      * @param name the local name if the parser is namespace aware, or just the element name otherwise
@@ -496,7 +496,7 @@
      * only function correctly when associated with a single pattern. It is possible to fix this, but I can't be
      * bothered just now because this feature is unlikely to be used.
      * </p>
-     * 
+     *
      * @return The pattern value
      */
     public String getPattern()
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginDeclarationRule.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginDeclarationRule.java
index ce1e657..e9d2d2b 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginDeclarationRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginDeclarationRule.java
@@ -31,7 +31,7 @@
  * <p>
  * Normally, a PluginDeclarationRule is added to a Digester instance with the pattern "{root}/plugin" or "* /plugin"
  * where {root} is the name of the root tag in the input document.
- * 
+ *
  * @since 1.6
  */
 public class PluginDeclarationRule
@@ -53,7 +53,7 @@
      * <li>id</li>
      * <li>class</li>
      * </ul>
-     * 
+     *
      * @param namespace The xml namespace in which the xml element which triggered this rule resides.
      * @param name The name of the xml element which triggered this rule.
      * @param attributes The set of attributes on the xml element which triggered this rule.
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginException.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginException.java
index 1232856..e18c8b2 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginException.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginException.java
@@ -21,7 +21,7 @@
 
 /**
  * Thrown when some plugin-related error has occurred, and none of the other exception types are appropriate.
- * 
+ *
  * @since 1.6
  */
 public class PluginException
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginInvalidInputException.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginInvalidInputException.java
index c3bdcdc..5fec4a5 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginInvalidInputException.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginInvalidInputException.java
@@ -21,7 +21,7 @@
 
 /**
  * Thrown when an error occurs due to bad data in the file being parsed.
- * 
+ *
  * @since 1.6
  */
 public class PluginInvalidInputException
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginManager.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginManager.java
index 8462483..35a2076 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginManager.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginManager.java
@@ -32,7 +32,7 @@
  * instances of these rules.
  * <p>
  * One instance of this class exists per PluginRules instance.
- * 
+ *
  * @since 1.6
  */
 public class PluginManager
@@ -70,7 +70,7 @@
      * "child" to retrieve a declaration, it delegates the search to its parent if it does not hold a matching entry
      * itself.
      * <p>
-     * 
+     *
      * @param parent must be non-null.
      */
     public PluginManager( final PluginManager parent )
@@ -86,7 +86,7 @@
      * <p>
      * TODO: somehow get a reference to a Digester object so that we can really log here. Currently, all logging is
      * disabled from this method.
-     * 
+     *
      * @param decl an object representing a plugin class.
      */
     public void addDeclaration( final Declaration decl )
@@ -129,7 +129,7 @@
 
     /**
      * Return the declaration object with the specified id. If no such plugin is known, null is returned.
-     * 
+     *
      * @param id Description of the Parameter
      * @return The declaration value
      */
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/PluginRules.java b/core/src/main/java/org/apache/commons/digester3/plugins/PluginRules.java
index 0a0c61e..a0c31d1 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/PluginRules.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/PluginRules.java
@@ -42,7 +42,7 @@
  * <p>
  * When the end of the xml element is encountered (and therefore the PluginCreateRule end method fires), the stack of
  * Rules objects is popped, so that Digester.getRules returns the previous Rules object.
- * 
+ *
  * @since 1.6
  */
 public class PluginRules
@@ -113,7 +113,7 @@
      * <p>
      * One of these is created each time a PluginCreateRule's begin method fires, in order to manage the custom rules
      * associated with whatever concrete plugin class the user has specified.
-     * 
+     *
      * @param digester is the object this rules will be associated with.
      * @param mountPoint is the digester match path for the element matching a PluginCreateRule which caused this
      *            "nested parsing scope" to begin. This is expected to be equal to digester.getMatch().
@@ -171,7 +171,7 @@
 
     /**
      * Set the Digester instance with which this Rules instance is associated.
-     * 
+     *
      * @param digester The newly associated Digester instance
      */
     @Override
@@ -194,7 +194,7 @@
 
     /**
      * Set the namespace URI that will be applied to all subsequently added <code>Rule</code> objects.
-     * 
+     *
      * @param namespaceURI Namespace URI that must match on all subsequently added rules, or <code>null</code> for
      *            matching regardless of the current namespace URI
      */
@@ -206,7 +206,7 @@
 
     /**
      * Return the object which "knows" about all declared plugins.
-     * 
+     *
      * @return The pluginManager value
      */
     public PluginManager getPluginManager()
@@ -272,7 +272,7 @@
      * Return the list of rules registered with this object, in the order they were registered with this object.
      * <p>
      * Note that Rule objects stored in parent Rules objects are not returned by this method.
-     * 
+     *
      * @return list of all Rule objects known to this Rules instance.
      */
     @Override
@@ -283,7 +283,7 @@
 
     /**
      * Register a new Rule instance matching the specified pattern.
-     * 
+     *
      * @param pattern Nesting pattern to be matched for this Rule. This parameter treats equally patterns that begin
      *            with and without a leading slash ('/').
      * @param rule Rule instance to be registered
@@ -416,7 +416,7 @@
 
     /**
      * See {@link PluginContext#setPluginIdAttribute}.
-     * 
+     *
      * @param namespaceUri is the namespace uri that the specified attribute is in. If the attribute is in no namespace,
      *            then this should be null. Note that if a namespace is used, the attrName value should <i>not</i>
      *            contain any kind of namespace-prefix. Note also that if you are using a non-namespace-aware parser,
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/RuleFinder.java b/core/src/main/java/org/apache/commons/digester3/plugins/RuleFinder.java
index 27aa5cd..d745328 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/RuleFinder.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/RuleFinder.java
@@ -34,7 +34,7 @@
  * <p>
  * This is an abstract class rather than an interface in order to make it possible to enhance this class in future
  * without breaking binary compatibility; it is possible to add methods to an abstract class, but not to an interface.
- * 
+ *
  * @since 1.6
  */
 public abstract class RuleFinder
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/RuleLoader.java b/core/src/main/java/org/apache/commons/digester3/plugins/RuleLoader.java
index 44f1508..68008db 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/RuleLoader.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/RuleLoader.java
@@ -29,7 +29,7 @@
  * <p>
  * This is an abstract class rather than an interface in order to make it possible to enhance this class in future
  * without breaking binary compatibility; it is possible to add methods to an abstract class, but not to an interface.
- * 
+ *
  * @since 1.6
  */
 public abstract class RuleLoader
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/RulesFactory.java b/core/src/main/java/org/apache/commons/digester3/plugins/RulesFactory.java
index 1f8b31a..36e61fb 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/RulesFactory.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/RulesFactory.java
@@ -28,7 +28,7 @@
  * <p>
  * Users of the plugins module can specify a subclass of this one to control the creation of that Rules object. In
  * particular, it can set up default rules within the returned instance which are applicable to all plugged-in classes.
- * 
+ *
  * @since 1.6
  */
 public abstract class RulesFactory
@@ -38,7 +38,7 @@
      * Return an instance of some Rules implementation that the plugged-in class shall use to match its private parsing
      * rules.
      * <p>
-     * 
+     *
      * @param d is the digester that the returned rules object will be associated with.
      * @param pluginClass is the class that is to be configured using rules added to the returned object.
      * @return an instance of some Rules implementation that the plugged-in class shall use to match its private parsing
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromClass.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromClass.java
index 18523d4..1a1b334 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromClass.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromClass.java
@@ -28,7 +28,7 @@
 
 /**
  * A rule-finding algorithm which expects the caller to specify a classname and methodname as plugin properties.
- * 
+ *
  * @since 1.6
  */
 public class FinderFromClass
@@ -57,7 +57,7 @@
     /**
      * Create a rule-finder which invokes a user-specified method on a user-specified class whenever dynamic rules for a
      * plugin need to be loaded. See the findRules method for more info.
-     * 
+     *
      * @param ruleClassAttr must be non-null.
      * @param methodAttr may be null.
      * @param dfltMethodName may be null.
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltClass.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltClass.java
index 884ef4f..e03f4a7 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltClass.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltClass.java
@@ -29,7 +29,7 @@
 /**
  * A rule-finding algorithm which looks for a method with a specific name on a class whose name is derived from the
  * plugin class name.
- * 
+ *
  * @since 1.6
  */
 public class FinderFromDfltClass
@@ -52,7 +52,7 @@
     /**
      * Create a rule-finder which invokes a method on a class whenever dynamic rules for a plugin need to be loaded. See
      * the findRules method for more info.
-     * 
+     *
      * @param rulesClassSuffix must be non-null.
      * @param methodName may be null.
      */
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltMethod.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltMethod.java
index 6431579..57d49b2 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltMethod.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltMethod.java
@@ -29,7 +29,7 @@
 
 /**
  * A rule-finding algorithm which looks for a method with a specific name on the plugin class.
- * 
+ *
  * @since 1.6
  */
 public class FinderFromDfltMethod
@@ -48,7 +48,7 @@
     /**
      * Create a rule-finder which invokes a specific method on the plugin class whenever dynamic rules for a plugin need
      * to be loaded. See the findRules method for more info.
-     * 
+     *
      * @param methodName must be non-null.
      */
     public FinderFromDfltMethod( final String methodName )
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltResource.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltResource.java
index cc85cd0..8e826cc 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltResource.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltResource.java
@@ -32,7 +32,7 @@
  * name plus a specified suffix.
  * <p>
  * If the resource-file is found, then it is expected to define a set of Digester rules in xmlrules format.
- * 
+ *
  * @since 1.6
  */
 public class FinderFromDfltResource
@@ -52,7 +52,7 @@
     /**
      * Create a rule-finder which can load an xmlrules file, cache the rules away, and later add them as a plugin's
      * custom rules when that plugin is referenced.
-     * 
+     *
      * @param resourceSuffix must be non-null.
      */
     public FinderFromDfltResource( final String resourceSuffix )
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromFile.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromFile.java
index 22cc2ef..51735ea 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromFile.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromFile.java
@@ -33,7 +33,7 @@
  * A rule-finding algorithm which expects the user to specify an absolute or relative path in the plugin declaration.
  * <p>
  * The file is expected to contain Digester rules in xmlrules format.
- * 
+ *
  * @since 1.6
  */
 public class FinderFromFile
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromMethod.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromMethod.java
index 9086187..ca0b22f 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromMethod.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromMethod.java
@@ -29,7 +29,7 @@
 /**
  * A rule-finding algorithm which expects the caller to specify a methodname as a plugin property, where the method
  * exists on the plugin class.
- * 
+ *
  * @since 1.6
  */
 public class FinderFromMethod
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromResource.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromResource.java
index 031548f..5561cc6 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromResource.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromResource.java
@@ -31,7 +31,7 @@
 /**
  * A rule-finding algorithm which expects the user to specify a resource name (ie a file in the classpath). The file is
  * expected to contain Digester rules in xmlrules format.
- * 
+ *
  * @since 1.6
  */
 public class FinderFromResource
@@ -106,7 +106,7 @@
     /**
      * Open the specified resource file (ie a file in the classpath, including being within a jar in the classpath), run
      * it through the xmlrules module and return an object encapsulating those rules.
-     * 
+     *
      * @param d is the digester into which rules will eventually be loaded.
      * @param pluginClass is the class whose xml params the rules are parsing.
      * @param is is where the xmlrules will be read from, and must be non-null.
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderSetProperties.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderSetProperties.java
index 2b2c3d0..ca0f9a6 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderSetProperties.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderSetProperties.java
@@ -36,7 +36,7 @@
  * <p>
  * This RuleFinder is typically used as the <i>last</i> RuleFinder, so that automatic property setting only occurs if
  * there is no other source of custom rules available.
- * 
+ *
  * @since 1.6
  */
 public class FinderSetProperties
@@ -62,7 +62,7 @@
      * that xml attributes map to bean properties.
      * <p>
      * Param falseval will commonly be the string "false" for config files written in English.
-     * 
+     *
      * @param propsAttr must be non-null.
      * @param falseval must be non-null.
      */
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromClass.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromClass.java
index eab7a65..8c2f1e6 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromClass.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromClass.java
@@ -31,7 +31,7 @@
 /**
  * A RuleLoader which invokes a static method on a target class, leaving that method to actually instantiate and add new
  * rules to a Digester instance.
- * 
+ *
  * @since 1.6
  */
 public class LoaderFromClass
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromStream.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromStream.java
index d8600df..d9794d4 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromStream.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromStream.java
@@ -37,7 +37,7 @@
  * A rule-finding algorithm which loads an xmlplugins-format file.
  * <p>
  * Note that the "include" feature of xmlrules is not supported.
- * 
+ *
  * @since 1.6
  */
 public class LoaderFromStream
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderSetProperties.java b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderSetProperties.java
index 0ce7e9c..6b3d859 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderSetProperties.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderSetProperties.java
@@ -29,7 +29,7 @@
  * <p>
  * This loader ensures that any xml attributes on the plugin tag get mapped to equivalent properties on a javabean. This
  * allows JavaBean classes to be used as plugins without any requirement to create custom plugin rules.
- * 
+ *
  * @since 1.6
  */
 public class LoaderSetProperties
diff --git a/core/src/main/java/org/apache/commons/digester3/substitution/MultiVariableExpander.java b/core/src/main/java/org/apache/commons/digester3/substitution/MultiVariableExpander.java
index 23e10aa..aada65a 100644
--- a/core/src/main/java/org/apache/commons/digester3/substitution/MultiVariableExpander.java
+++ b/core/src/main/java/org/apache/commons/digester3/substitution/MultiVariableExpander.java
@@ -26,7 +26,7 @@
  * <p>
  * Expands variable references from multiple sources.
  * </p>
- * 
+ *
  * @since 1.6
  */
 public class MultiVariableExpander
diff --git a/core/src/main/java/org/apache/commons/digester3/substitution/VariableAttributes.java b/core/src/main/java/org/apache/commons/digester3/substitution/VariableAttributes.java
index d0bb200..a8f1fdd 100644
--- a/core/src/main/java/org/apache/commons/digester3/substitution/VariableAttributes.java
+++ b/core/src/main/java/org/apache/commons/digester3/substitution/VariableAttributes.java
@@ -27,7 +27,7 @@
  * Wrapper for an {@link Attributes} object which expands any "variables" referenced in the attribute value via
  * ${foo} or similar. This is only done when something actually asks for the attribute value, thereby imposing no
  * performance penalty if the attribute is not used.
- * 
+ *
  * @since 1.6
  */
 public class VariableAttributes
diff --git a/core/src/main/java/org/apache/commons/digester3/substitution/VariableExpander.java b/core/src/main/java/org/apache/commons/digester3/substitution/VariableExpander.java
index 6c7b37b..b93e45b 100644
--- a/core/src/main/java/org/apache/commons/digester3/substitution/VariableExpander.java
+++ b/core/src/main/java/org/apache/commons/digester3/substitution/VariableExpander.java
@@ -25,7 +25,7 @@
  * of the "reference", and the mechanism for determining the corresponding value to be used is up to the concrete
  * implementation.
  * </p>
- * 
+ *
  * @since 1.6
  */
 public interface VariableExpander
diff --git a/core/src/main/java/org/apache/commons/digester3/substitution/VariableSubstitutor.java b/core/src/main/java/org/apache/commons/digester3/substitution/VariableSubstitutor.java
index 76e9a1a..2c78710 100644
--- a/core/src/main/java/org/apache/commons/digester3/substitution/VariableSubstitutor.java
+++ b/core/src/main/java/org/apache/commons/digester3/substitution/VariableSubstitutor.java
@@ -27,7 +27,7 @@
  * Substitutor implementation that support variable replacement for both attributes and body text. The actual expansion
  * of variables into text is delegated to {@link VariableExpander} implementations. Supports setting an expander just
  * for body text or just for attributes. Also supported is setting no expanders for body text and for attributes.
- * 
+ *
  * @since 1.6
  */
 public class VariableSubstitutor
@@ -52,7 +52,7 @@
 
     /**
      * Constructs a Substitutor which uses the same VariableExpander for both body text and attibutes.
-     * 
+     *
      * @param expander VariableExpander implementation, null if no substitutions are to be performed
      */
     public VariableSubstitutor( final VariableExpander expander )
@@ -62,7 +62,7 @@
 
     /**
      * Constructs a Substitutor.
-     * 
+     *
      * @param attributesExpander VariableExpander implementation to be used for attributes, null if no attribute
      *            substitutions are to be performed
      * @param bodyTextExpander VariableExpander implementation to be used for bodyTextExpander, null if no attribute
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/AbstractXmlMethodRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/AbstractXmlMethodRule.java
index 3af03b5..96f0bac 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/AbstractXmlMethodRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/AbstractXmlMethodRule.java
@@ -24,7 +24,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 abstract class AbstractXmlMethodRule
     extends AbstractXmlRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/AbstractXmlRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/AbstractXmlRule.java
index e5d219d..dd49478 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/AbstractXmlRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/AbstractXmlRule.java
@@ -24,7 +24,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 abstract class AbstractXmlRule
     extends PatternRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/BeanPropertySetterRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/BeanPropertySetterRule.java
index 140c3f3..df5fe86 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/BeanPropertySetterRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/BeanPropertySetterRule.java
@@ -25,7 +25,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 final class BeanPropertySetterRule
     extends AbstractXmlRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/CallMethodRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/CallMethodRule.java
index 015165d..b9fd28c 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/CallMethodRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/CallMethodRule.java
@@ -27,7 +27,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 final class CallMethodRule
     extends AbstractXmlRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/CallParamRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/CallParamRule.java
index b166eed..d23127f 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/CallParamRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/CallParamRule.java
@@ -25,7 +25,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 final class CallParamRule
     extends AbstractXmlRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/FactoryCreateRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/FactoryCreateRule.java
index d235823..605cbaa 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/FactoryCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/FactoryCreateRule.java
@@ -24,7 +24,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 final class FactoryCreateRule
     extends AbstractXmlRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/NameSpaceURIRulesBinder.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/NameSpaceURIRulesBinder.java
index 852bf9e..5997bd4 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/NameSpaceURIRulesBinder.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/NameSpaceURIRulesBinder.java
@@ -43,7 +43,7 @@
     }
 
     /**
-     * 
+     *
      * @param namespaceURI
      */
     public void addNamespaceURI( final String namespaceURI )
@@ -52,7 +52,7 @@
     }
 
     /**
-     * 
+     *
      */
     public void removeNamespaceURI()
     {
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/NodeCreateRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/NodeCreateRule.java
index 90dd2c1..bc7fa62 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/NodeCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/NodeCreateRule.java
@@ -28,7 +28,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 final class NodeCreateRule
     extends AbstractXmlRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/PatternRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/PatternRule.java
index e05e61f..b08c34c 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/PatternRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/PatternRule.java
@@ -23,7 +23,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 class PatternRule
     extends Rule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNextRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNextRule.java
index c41e3f9..b71fc80 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNextRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNextRule.java
@@ -24,7 +24,7 @@
 import org.apache.commons.digester3.binder.SetNextBuilder;
 
 /**
- * 
+ *
  */
 final class SetNextRule
     extends AbstractXmlMethodRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertyRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertyRule.java
index 2895455..a390894 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertyRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertyRule.java
@@ -24,7 +24,7 @@
 import org.xml.sax.Attributes;
 
 /**
- * 
+ *
  */
 final class SetPropertyRule
     extends AbstractXmlRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetRootRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetRootRule.java
index bf5c522..095bccd 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetRootRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetRootRule.java
@@ -24,7 +24,7 @@
 import org.apache.commons.digester3.binder.SetRootBuilder;
 
 /**
- * 
+ *
  */
 final class SetRootRule
     extends AbstractXmlMethodRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetTopRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetTopRule.java
index 4b0eae5..c0fd3a4 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetTopRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetTopRule.java
@@ -24,7 +24,7 @@
 import org.apache.commons.digester3.binder.SetTopBuilder;
 
 /**
- * 
+ *
  */
 final class SetTopRule
     extends AbstractXmlMethodRule
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/WithMemoryRulesBinder.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/WithMemoryRulesBinder.java
index e703623..be490c4 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/WithMemoryRulesBinder.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/WithMemoryRulesBinder.java
@@ -27,7 +27,7 @@
 import org.apache.commons.digester3.binder.RulesModule;
 
 /**
- * 
+ *
  */
 class WithMemoryRulesBinder
     implements RulesBinder
diff --git a/core/src/test/java/org/apache/commons/digester3/CallMethodRuleTestCase.java b/core/src/test/java/org/apache/commons/digester3/CallMethodRuleTestCase.java
index 08d5af0..5fc7443 100644
--- a/core/src/test/java/org/apache/commons/digester3/CallMethodRuleTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/CallMethodRuleTestCase.java
@@ -40,7 +40,7 @@
 /**
  * <p>
  * Tests for the <code>CallMethodRule</code> and associated <code>CallParamRule</code>.
- * 
+ *
  * @author Christopher Lenz
  */
 public class CallMethodRuleTestCase
@@ -703,7 +703,7 @@
 
     /**
      * Return an appropriate InputStream for the specified test file (which must be inside our current package.
-     * 
+     *
      * @param name Name of the test file we want
      * @throws IOException if an input/output error occurs
      */
diff --git a/core/src/test/java/org/apache/commons/digester3/NamespaceSnapshotTestCase.java b/core/src/test/java/org/apache/commons/digester3/NamespaceSnapshotTestCase.java
index 7d2e850..590cff9 100644
--- a/core/src/test/java/org/apache/commons/digester3/NamespaceSnapshotTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/NamespaceSnapshotTestCase.java
@@ -142,7 +142,7 @@
 
     /**
      * Return an appropriate InputStream for the specified test file (which must be inside our current package.
-     * 
+     *
      * @param name Name of the test file we want
      * @throws IOException if an input/output error occurs
      */
diff --git a/core/src/test/java/org/apache/commons/digester3/ObjectCreationFactoryTestImpl.java b/core/src/test/java/org/apache/commons/digester3/ObjectCreationFactoryTestImpl.java
index bda47b0..f280957 100644
--- a/core/src/test/java/org/apache/commons/digester3/ObjectCreationFactoryTestImpl.java
+++ b/core/src/test/java/org/apache/commons/digester3/ObjectCreationFactoryTestImpl.java
@@ -23,7 +23,7 @@
 
 /**
  * Object creation factory used for testing.
- * 
+ *
  * @author Robert Burrell Donkin
  */
 
diff --git a/core/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java b/core/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java
index 07de3a3..2bb2775 100644
--- a/core/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java
@@ -34,7 +34,7 @@
 /**
  * <p>
  * Tests for the <code>ObjectParamRuleTestCase</code>
- * 
+ *
  * @author Mark Huisman
  */
 public class ObjectParamRuleTestCase
diff --git a/core/src/test/java/org/apache/commons/digester3/OtherTestObjectCreationFactory.java b/core/src/test/java/org/apache/commons/digester3/OtherTestObjectCreationFactory.java
index e962a38..a115caa 100644
--- a/core/src/test/java/org/apache/commons/digester3/OtherTestObjectCreationFactory.java
+++ b/core/src/test/java/org/apache/commons/digester3/OtherTestObjectCreationFactory.java
@@ -20,7 +20,7 @@
 
 /**
  * Another Object creation factory used for testing.
- * 
+ *
  * @author Robert Burrell Donkin
  */
 
diff --git a/core/src/test/java/org/apache/commons/digester3/ParamBean.java b/core/src/test/java/org/apache/commons/digester3/ParamBean.java
index d9f3c49..2206d63 100644
--- a/core/src/test/java/org/apache/commons/digester3/ParamBean.java
+++ b/core/src/test/java/org/apache/commons/digester3/ParamBean.java
@@ -20,7 +20,7 @@
 
 /**
  * This bean is used to replicate a reasonably complex use case whose behavior has changed from Digester 1.3 to 1.4.
- * 
+ *
  * @author robert burrell donkin
  */
 public class ParamBean
diff --git a/core/src/test/java/org/apache/commons/digester3/PrimitiveBean.java b/core/src/test/java/org/apache/commons/digester3/PrimitiveBean.java
index bcb05aa..47926c4 100644
--- a/core/src/test/java/org/apache/commons/digester3/PrimitiveBean.java
+++ b/core/src/test/java/org/apache/commons/digester3/PrimitiveBean.java
@@ -20,7 +20,7 @@
 
 /**
  * A simple bean with primitive properties. At the moment only need a boolean property. Feel free to add others later.
- * 
+ *
  * @author robert burrell donkin
  */
 public class PrimitiveBean
diff --git a/core/src/test/java/org/apache/commons/digester3/TestFactoryCreate.java b/core/src/test/java/org/apache/commons/digester3/TestFactoryCreate.java
index b420157..135ca5c 100644
--- a/core/src/test/java/org/apache/commons/digester3/TestFactoryCreate.java
+++ b/core/src/test/java/org/apache/commons/digester3/TestFactoryCreate.java
@@ -34,7 +34,7 @@
 
 /**
  * Test case for factory create rules.
- * 
+ *
  * @author Robert Burrell Donkin
  */
 @RunWith(value = Parameterized.class)
diff --git a/core/src/test/java/org/apache/commons/digester3/TestRule.java b/core/src/test/java/org/apache/commons/digester3/TestRule.java
index 8d33e7d..074c539 100644
--- a/core/src/test/java/org/apache/commons/digester3/TestRule.java
+++ b/core/src/test/java/org/apache/commons/digester3/TestRule.java
@@ -28,7 +28,7 @@
  * This rule implementation is intended to help test digester. The idea is that you can test which rule matches by
  * looking at the identifier.
  * </p>
- * 
+ *
  * @author Robert Burrell Donkin
  */
 
@@ -51,7 +51,7 @@
 
     /**
      * Base constructor.
-     * 
+     *
      * @param identifier Used to tell which TestRule is which
      */
     public TestRule( final String identifier )
@@ -62,7 +62,7 @@
 
     /**
      * Constructor sets namespace URI.
-     * 
+     *
      * @param identifier Used to tell which TestRule is which
      * @param namespaceURI Set rule namespace
      */
diff --git a/core/src/test/java/org/apache/commons/digester3/XIncludeTestCase.java b/core/src/test/java/org/apache/commons/digester3/XIncludeTestCase.java
index f3fb8c0..72cc315 100644
--- a/core/src/test/java/org/apache/commons/digester3/XIncludeTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/XIncludeTestCase.java
@@ -93,7 +93,7 @@
 
     /**
      * Return an appropriate InputStream for the specified test file (which must be inside our current package.
-     * 
+     *
      * @param name Name of the test file we want
      * @throws IOException if an input/output error occurs
      */
diff --git a/core/src/test/java/org/apache/commons/digester3/XMLSchemaTestCase.java b/core/src/test/java/org/apache/commons/digester3/XMLSchemaTestCase.java
index 6754c97..f0db2c8 100644
--- a/core/src/test/java/org/apache/commons/digester3/XMLSchemaTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/XMLSchemaTestCase.java
@@ -140,7 +140,7 @@
 
     /**
      * Return an appropriate InputStream for the specified test file (which must be inside our current package.
-     * 
+     *
      * @param name Name of the test file we want
      * @throws IOException if an input/output error occurs
      */
diff --git a/core/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java b/core/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java
index ee19fa0..601ae58 100644
--- a/core/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java
@@ -29,7 +29,7 @@
 
 /**
  * Abstract implementation of Class-&gt;Digester Rules-&gt;parse & confronting.
- * 
+ *
  * @since 2.1
  */
 public abstract class AbstractAnnotatedPojoTestCase
diff --git a/core/src/test/java/org/apache/commons/digester3/plugins/Utils.java b/core/src/test/java/org/apache/commons/digester3/plugins/Utils.java
index 1dee034..417bbaa 100644
--- a/core/src/test/java/org/apache/commons/digester3/plugins/Utils.java
+++ b/core/src/test/java/org/apache/commons/digester3/plugins/Utils.java
@@ -22,7 +22,7 @@
 
 /**
  * Entry point for all plugins package tests.
- * 
+ *
  * @author Simon Kitching
  */
 public class Utils
@@ -30,7 +30,7 @@
 
     /**
      * Return an appropriate InputStream for the specified test file (which must be inside our current package.
-     * 
+     *
      * @param caller is always "this" for the calling object.
      * @param name is the test file we want
      * @throws IOException if an input/output error occurs
diff --git a/core/src/test/java/org/apache/commons/digester3/xmlrules/CallParamTestObject.java b/core/src/test/java/org/apache/commons/digester3/xmlrules/CallParamTestObject.java
index 839f21a..b8f8d70 100644
--- a/core/src/test/java/org/apache/commons/digester3/xmlrules/CallParamTestObject.java
+++ b/core/src/test/java/org/apache/commons/digester3/xmlrules/CallParamTestObject.java
@@ -20,7 +20,7 @@
 
 /**
  * Object for use with testing call param rules.
- * 
+ *
  * @author Robert Burrell Donkin
  */
 public class CallParamTestObject
diff --git a/core/src/test/java/org/apache/commons/digester3/xmlrules/DigesterRulesSourceTestImpl.java b/core/src/test/java/org/apache/commons/digester3/xmlrules/DigesterRulesSourceTestImpl.java
index 9eba931..a8df8eb 100644
--- a/core/src/test/java/org/apache/commons/digester3/xmlrules/DigesterRulesSourceTestImpl.java
+++ b/core/src/test/java/org/apache/commons/digester3/xmlrules/DigesterRulesSourceTestImpl.java
@@ -23,7 +23,7 @@
 /**
  * A test class, for validating FromXmlRuleSet's ability to 'include' programmatically-created rules from within an XML
  * rules file.
- * 
+ *
  * @author David H. Martin - Initial Contribution
  * @author Scott Sanders - Added ASL, removed external dependencies
  */
diff --git a/core/src/test/java/org/apache/commons/digester3/xmlrules/FromXmlRuleSetTest.java b/core/src/test/java/org/apache/commons/digester3/xmlrules/FromXmlRuleSetTest.java
index f124d73..44833a2 100644
--- a/core/src/test/java/org/apache/commons/digester3/xmlrules/FromXmlRuleSetTest.java
+++ b/core/src/test/java/org/apache/commons/digester3/xmlrules/FromXmlRuleSetTest.java
@@ -310,7 +310,7 @@
                 + "   </pattern>"
                 + " </pattern>"
                 + "</digester-rules>";
-                
+
         final String xml = "<?xml version='1.0' ?>"
                      + "<root><foo attr='long'><bar>short</bar><foobar><ping>tosh</ping></foobar></foo></root>";
 
@@ -325,7 +325,7 @@
         assertEquals( "Incorrect right value", "", testObject.getRight() );
     }
 
-    /** 
+    /**
      * Test the FromXmlRules.addRuleInstances(digester, path) method, ie
      * test loading rules at a base position other than the root.
      */
diff --git a/core/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java b/core/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java
index 730e6e7..d28ea6f 100644
--- a/core/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java
+++ b/core/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java
@@ -23,7 +23,7 @@
 
 /**
  * Test harness object for holding results of digestion.
- * 
+ *
  * @author David H. Martin - Initial Contribution
  * @author Scott Sanders - Added ASL, removed external dependencies
  * @author Tim O'Brien - Added bean property to test bean property setter rule
diff --git a/core/src/test/java/org/apache/commons/digester3/xmlrules/ThrowExceptionCreationFactory.java b/core/src/test/java/org/apache/commons/digester3/xmlrules/ThrowExceptionCreationFactory.java
index fe0275f..c5cfe94 100644
--- a/core/src/test/java/org/apache/commons/digester3/xmlrules/ThrowExceptionCreationFactory.java
+++ b/core/src/test/java/org/apache/commons/digester3/xmlrules/ThrowExceptionCreationFactory.java
@@ -23,7 +23,7 @@
 
 /**
  * Object creation factory used for testing exception propagation.
- * 
+ *
  * @author Robert Burrell Donkin
  */
 
diff --git a/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Address.java b/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Address.java
index da94bc2..bf7afbd 100644
--- a/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Address.java
+++ b/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Address.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 /**
  * See Main.java.
@@ -78,7 +78,7 @@
 
     /**
      * Sets the value of street.
-     * 
+     *
      * @param street The value to assign to street.
      */
     public void setStreet( final String street )
@@ -96,7 +96,7 @@
 
     /**
      * Sets the value of city.
-     * 
+     *
      * @param city The value to assign to city.
      */
     public void setCity( final String city )
@@ -114,7 +114,7 @@
 
     /**
      * Sets the value of state.
-     * 
+     *
      * @param state The value to assign to state.
      */
     public void setState( final String state )
@@ -132,7 +132,7 @@
 
     /**
      * Sets the value of zip.
-     * 
+     *
      * @param zip The value to assign to zip.
      */
     public void setZip( final String zip )
@@ -150,7 +150,7 @@
 
     /**
      * Sets the value of country.
-     * 
+     *
      * @param country The value to assign to country.
      */
     public void setCountry( final String country )
@@ -168,7 +168,7 @@
 
     /**
      * Sets the value of type.
-     * 
+     *
      * @param type The value to assign to type.
      */
     public void setType( final String type )
diff --git a/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/AddressBook.java b/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/AddressBook.java
index 890ac9a..b03cd51 100644
--- a/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/AddressBook.java
+++ b/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/AddressBook.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.util.LinkedList;
 
diff --git a/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Main.java b/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Main.java
index c70f6f5..ee726cb 100644
--- a/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Main.java
+++ b/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Main.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import org.apache.commons.digester3.Digester;
 
@@ -29,7 +29,7 @@
  * <p>
  * As with all code, there are many ways of achieving the same goal;
  * the solution here is only one possible solution to the problem.
-* <p> 
+* <p>
  * Very verbose comments are included here, as this class is intended
  * as a tutorial; if you look closely at method "addRules", you will
  * see that the amount of code required to use the Digester is actually
diff --git a/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Person.java b/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Person.java
index b4c49e8..ea9c5d6 100644
--- a/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Person.java
+++ b/examples/api/addressbook/src/main/java/org/apache/commons/digester3/examples/api/addressbook/Person.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/AudioVisual.java b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/AudioVisual.java
index 0b20d47..5495603 100644
--- a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/AudioVisual.java
+++ b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/AudioVisual.java
@@ -7,16 +7,16 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
- 
+ */
+
 /**
  *  See Main.java.
  */
diff --git a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Book.java b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Book.java
index 8b6c212..35e1db5 100644
--- a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Book.java
+++ b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Book.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 /**
  * See Main.java.
diff --git a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/BookFactory.java b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/BookFactory.java
index 7bfee92..0c2727c 100644
--- a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/BookFactory.java
+++ b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/BookFactory.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import org.apache.commons.digester3.AbstractObjectCreationFactory;
 import org.xml.sax.Attributes;
@@ -25,7 +25,7 @@
  * standard digester ObjectCreateRule can't be used to create instances
  * of it.
  * <p>
- * To resolve this issue, the FactoryCreateRule can be used in 
+ * To resolve this issue, the FactoryCreateRule can be used in
  * conjunction with an appropriate factory class, like this one.
  * The "createObject" method of the factory is invoked to generate
  * object instances when required.
@@ -58,7 +58,7 @@
  * <p>
  * And don't forget, either, that factories may be implemented as
  * inner classes or anonymous classes if appropriate, reducing the
- * overhead of using this functionality in many cases. 
+ * overhead of using this functionality in many cases.
  */
 public class BookFactory
     extends AbstractObjectCreationFactory<Book>
diff --git a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Catalog.java b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Catalog.java
index 7a60e32..69df1ce 100644
--- a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Catalog.java
+++ b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Catalog.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.util.LinkedList;
 
diff --git a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Item.java b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Item.java
index 0b8752b..9ad0769 100644
--- a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Item.java
+++ b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Item.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 /**
  * See Main.java.
diff --git a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Main.java b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Main.java
index 9c81266..c3fdac7 100644
--- a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Main.java
+++ b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Main.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import org.apache.commons.digester3.Digester;
 
@@ -30,7 +30,7 @@
  * <p>
  * As with all code, there are many ways of achieving the same goal;
  * the solution here is only one possible implementation.
-* <p> 
+* <p>
  * Very verbose comments are included here, as this class is intended
  * as a tutorial; if you look closely at method "addRules", you will
  * see that the amount of code required to use the Digester is actually
diff --git a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Main.java b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Main.java
index 0736bda..b584db5 100644
--- a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Main.java
+++ b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Main.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.io.File;
 import java.io.IOException;
@@ -30,13 +30,13 @@
  * up in-memory representations of the parsed data. This example also shows
  * how to write a custom Rule class.
  * <p>
- * This code will parse the provided "example.xml" file, and immediately 
+ * This code will parse the provided "example.xml" file, and immediately
  * insert the processed data into a database as each row tag is parsed,
- * instead of building up an in-memory representation. Actually, in order 
- * to keep this example simple and easy to run, sql insert statements are 
- * printed out rather than actually performing database inserts, but the 
+ * instead of building up an in-memory representation. Actually, in order
+ * to keep this example simple and easy to run, sql insert statements are
+ * printed out rather than actually performing database inserts, but the
  * principle remains.
- * <p> 
+ * <p>
  * Very verbose comments are included here, as this class is intended
  * as a tutorial; if you look closely at method "addRules", you will
  * see that the amount of code required to use the Digester is actually
diff --git a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Row.java b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Row.java
index 9e7198d..c3e6a21 100644
--- a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Row.java
+++ b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Row.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.util.List;
 import java.util.LinkedList;
diff --git a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/RowInserterRule.java b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/RowInserterRule.java
index fd50482..b0c698c 100644
--- a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/RowInserterRule.java
+++ b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/RowInserterRule.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.sql.Connection;
 
diff --git a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Table.java b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Table.java
index 6e1c01b..c33cdf9 100644
--- a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Table.java
+++ b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Table.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 /**
  * See Main.java.
diff --git a/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/Main.java b/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/Main.java
index f32924e..f9580db 100644
--- a/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/Main.java
+++ b/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/Main.java
@@ -7,19 +7,19 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.io.StringReader;
 
-/** 
+/**
  * A simple "test harness" which demonstrates how the MarkupDigester class
  * (plus the supporting interface/rule classes) can process "document-markup"
  * style xml data.
@@ -50,11 +50,11 @@
         System.out.println( "Bold: [" + text + "]" );
     }
 
-    /** 
-     * Invoked via a standard Digester CallMethodRule, passing the 
+    /**
+     * Invoked via a standard Digester CallMethodRule, passing the
      * "body text" of the top-level xml element. This demonstrates
      * the default behavior of Digester (which is not suitable for
-     * processing markup-style xml). 
+     * processing markup-style xml).
      */
     public void addAllText( final String text )
     {
diff --git a/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/MarkupDigester.java b/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/MarkupDigester.java
index ee7da58..6ae5730 100644
--- a/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/MarkupDigester.java
+++ b/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/MarkupDigester.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import org.apache.commons.digester3.Digester;
 import org.apache.commons.digester3.Rule;
@@ -90,7 +90,7 @@
      * @param qName The qualified name (with prefix), or the empty
      *   string if qualified names are not available.
      * @param list The attributes attached to the element. If there are
-     *   no attributes, it shall be an empty Attributes object. 
+     *   no attributes, it shall be an empty Attributes object.
      * @throws SAXException if a parsing error is to be reported
      */
     @Override
diff --git a/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/SetTextSegmentRule.java b/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/SetTextSegmentRule.java
index df86b28..1741778 100644
--- a/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/SetTextSegmentRule.java
+++ b/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/SetTextSegmentRule.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import org.apache.commons.beanutils.MethodUtils;
 import org.apache.commons.digester3.Rule;
diff --git a/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/TextSegmentHandler.java b/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/TextSegmentHandler.java
index 76a989e..1a18e40 100644
--- a/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/TextSegmentHandler.java
+++ b/examples/api/document-markup/src/main/java/org/apache/commons/digester3/examples/api/documentmarkup/TextSegmentHandler.java
@@ -7,9 +7,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
diff --git a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CaseTransform.java b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CaseTransform.java
index b692a5f..db4bcb5 100644
--- a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CaseTransform.java
+++ b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CaseTransform.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 /**
  * An implementation of the Transform interface which converts all
diff --git a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CompoundTransform.java b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CompoundTransform.java
index e84d4ee..8414754 100644
--- a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CompoundTransform.java
+++ b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CompoundTransform.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.util.LinkedList;
 
@@ -27,7 +27,7 @@
  * a sequence of "subtransforms", and applies them one by one to the input
  * data.
  * <p>
- * This demonstrates that a plugged-in class can itself define plugin-points 
+ * This demonstrates that a plugged-in class can itself define plugin-points
  * for user-defined classes if it wishes.
  */
 public class CompoundTransform
diff --git a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/Pipeline.java b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/Pipeline.java
index 6b7a1a0..59f11cd 100644
--- a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/Pipeline.java
+++ b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/Pipeline.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import org.apache.commons.digester3.Digester;
 import org.apache.commons.digester3.plugins.PluginRules;
@@ -33,7 +33,7 @@
  * the config file, and an output file.
  * <p>
  * The contents of the input file is then passed to the transform objects,
- * and the output written to the output file. 
+ * and the output written to the output file.
  * <p>
  * Why not try writing your own transform classes, and plugging them in.
  * Note that they can configure themselves from the main config file in
diff --git a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/SubstituteTransform.java b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/SubstituteTransform.java
index b759346..db975b2 100644
--- a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/SubstituteTransform.java
+++ b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/SubstituteTransform.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import org.apache.commons.digester3.Digester;
 
diff --git a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/Transform.java b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/Transform.java
index a28b2a9..02c6758 100644
--- a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/Transform.java
+++ b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/Transform.java
@@ -7,9 +7,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
diff --git a/examples/rss/src/main/java/org/apache/commons/digester3/rss/Channel.java b/examples/rss/src/main/java/org/apache/commons/digester3/rss/Channel.java
index 9096971..65ecf87 100644
--- a/examples/rss/src/main/java/org/apache/commons/digester3/rss/Channel.java
+++ b/examples/rss/src/main/java/org/apache/commons/digester3/rss/Channel.java
@@ -7,9 +7,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -35,7 +35,7 @@
 {
 
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = -7358941908590407568L;
 
diff --git a/examples/rss/src/main/java/org/apache/commons/digester3/rss/Image.java b/examples/rss/src/main/java/org/apache/commons/digester3/rss/Image.java
index 30a354b..0c62550 100644
--- a/examples/rss/src/main/java/org/apache/commons/digester3/rss/Image.java
+++ b/examples/rss/src/main/java/org/apache/commons/digester3/rss/Image.java
@@ -7,9 +7,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -30,7 +30,7 @@
 {
 
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = 7651966908064015194L;
 
diff --git a/examples/rss/src/main/java/org/apache/commons/digester3/rss/Item.java b/examples/rss/src/main/java/org/apache/commons/digester3/rss/Item.java
index ec141df..9f55d24 100644
--- a/examples/rss/src/main/java/org/apache/commons/digester3/rss/Item.java
+++ b/examples/rss/src/main/java/org/apache/commons/digester3/rss/Item.java
@@ -7,9 +7,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -28,7 +28,7 @@
 public class Item implements Serializable {
 
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = -2535241576243936839L;
 
diff --git a/examples/rss/src/main/java/org/apache/commons/digester3/rss/RSSDigester.java b/examples/rss/src/main/java/org/apache/commons/digester3/rss/RSSDigester.java
index 12149f5..bc40434 100644
--- a/examples/rss/src/main/java/org/apache/commons/digester3/rss/RSSDigester.java
+++ b/examples/rss/src/main/java/org/apache/commons/digester3/rss/RSSDigester.java
@@ -7,9 +7,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
diff --git a/examples/rss/src/main/java/org/apache/commons/digester3/rss/TextInput.java b/examples/rss/src/main/java/org/apache/commons/digester3/rss/TextInput.java
index 7b73040..fa1204f 100644
--- a/examples/rss/src/main/java/org/apache/commons/digester3/rss/TextInput.java
+++ b/examples/rss/src/main/java/org/apache/commons/digester3/rss/TextInput.java
@@ -7,9 +7,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -30,7 +30,7 @@
 public class TextInput implements Serializable {
 
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = -147615076863607237L;
 
diff --git a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Address.java b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Address.java
index 354cdeb..c659293 100644
--- a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Address.java
+++ b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Address.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.io.PrintStream;
 
@@ -80,7 +80,7 @@
 
     /**
      * Sets the value of street.
-     * 
+     *
      * @param street The value to assign to street.
      */
     public void setStreet( final String street )
@@ -98,7 +98,7 @@
 
     /**
      * Sets the value of city.
-     * 
+     *
      * @param city The value to assign to city.
      */
     public void setCity( final String city )
@@ -116,7 +116,7 @@
 
     /**
      * Sets the value of state.
-     * 
+     *
      * @param state The value to assign to state.
      */
     public void setState( final String state )
@@ -134,7 +134,7 @@
 
     /**
      * Sets the value of zip.
-     * 
+     *
      * @param zip The value to assign to zip.
      */
     public void setZip( final String zip )
@@ -152,7 +152,7 @@
 
     /**
      * Sets the value of country.
-     * 
+     *
      * @param country The value to assign to country.
      */
     public void setCountry( final String country )
@@ -170,7 +170,7 @@
 
     /**
      * Sets the value of type.
-     * 
+     *
      * @param type The value to assign to type.
      */
     public void setType( final String type )
diff --git a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/AddressBook.java b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/AddressBook.java
index 39f5625..cf1e797 100644
--- a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/AddressBook.java
+++ b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/AddressBook.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.util.LinkedList;
 
diff --git a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Main.java b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Main.java
index 103f164..dcd287a 100644
--- a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Main.java
+++ b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Main.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import static org.apache.commons.digester3.binder.DigesterLoader.newLoader;
 
@@ -37,7 +37,7 @@
  * Unlike the "addressbook" example in the "api" section, this implementation
  * has no parsing rules hard-wired into the code in this class. Instead, the
  * parsing rules are loaded from an external file at runtime. This allows
- * the parsing rules to be modified without compiling the code, and 
+ * the parsing rules to be modified without compiling the code, and
  * potentially makes it somewhat easier to review the parsing rules.
  * <p>
  * Note, however, that there is tyically quite a tight coupling between
@@ -45,7 +45,7 @@
  * that it may not be all that common for parsing rules to be altered
  * without the application code also being altered, so only in some cases
  * will this prove of benefit. As with all software, it must be determined
- * whether this feature provides a true benefit in the context of the 
+ * whether this feature provides a true benefit in the context of the
  * application it is being applied to.
  * <p>
  * Usage: java Main xmlrules.xml example.xml
diff --git a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Person.java b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Person.java
index 1851871..4d6bd6d 100644
--- a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Person.java
+++ b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Person.java
@@ -7,15 +7,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 
 import java.util.ArrayList;
 import java.util.HashMap;
