You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/11/21 17:55:19 UTC

[commons-digester] branch master updated: Use final.

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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-digester.git


The following commit(s) were added to refs/heads/master by this push:
     new 0f655f7  Use final.
0f655f7 is described below

commit 0f655f76d227e5fd186460cda44a5bd1ffe3bbe9
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Nov 21 12:55:14 2020 -0500

    Use final.
---
 .../commons/digester3/AbstractMethodRule.java      |  20 +-
 .../digester3/AbstractObjectCreationFactory.java   |   2 +-
 .../commons/digester3/AbstractRulesImpl.java       |   6 +-
 .../commons/digester3/BeanPropertySetterRule.java  |  16 +-
 .../apache/commons/digester3/CallMethodRule.java   |  38 +--
 .../apache/commons/digester3/CallParamRule.java    |  20 +-
 .../digester3/DefaultThrowingErrorHandler.java     |   6 +-
 .../org/apache/commons/digester3/Digester.java     | 333 +++++++++++----------
 .../commons/digester3/ExtendedBaseRules.java       |  38 +--
 .../commons/digester3/FactoryCreateRule.java       |  42 +--
 .../apache/commons/digester3/NodeCreateRule.java   |  34 +--
 .../apache/commons/digester3/ObjectCreateRule.java |  44 +--
 .../apache/commons/digester3/ObjectParamRule.java  |   8 +-
 .../commons/digester3/PathCallParamRule.java       |   8 +-
 .../commons/digester3/PatternRuleMatcher.java      |  10 +-
 .../commons/digester3/RecordedInvocation.java      |  14 +-
 .../org/apache/commons/digester3/RegexRules.java   |  18 +-
 .../java/org/apache/commons/digester3/Rule.java    |  10 +-
 .../org/apache/commons/digester3/RuleSetBase.java  |   2 +-
 .../org/apache/commons/digester3/RulesBase.java    |  20 +-
 .../commons/digester3/SetNestedPropertiesRule.java |  58 ++--
 .../org/apache/commons/digester3/SetNextRule.java  |   6 +-
 .../commons/digester3/SetPropertiesRule.java       |  22 +-
 .../apache/commons/digester3/SetPropertyRule.java  |  12 +-
 .../org/apache/commons/digester3/SetRootRule.java  |   6 +-
 .../org/apache/commons/digester3/SetTopRule.java   |   6 +-
 .../commons/digester3/SimpleRegexMatcher.java      |  10 +-
 .../digester3/WithDefaultsRulesWrapper.java        |  16 +-
 .../DefaultAnnotationHandlerFactory.java           |   2 +-
 .../annotations/FromAnnotationsRuleModule.java     |  30 +-
 .../annotations/WithMemoryRulesBinder.java         |  12 +-
 .../handlers/AbstractMethodHandler.java            |  36 +--
 .../handlers/BeanPropertySetterHandler.java        |   2 +-
 .../annotations/handlers/CallMethodHandler.java    |   4 +-
 .../annotations/handlers/CallParamHandler.java     |   4 +-
 .../annotations/handlers/FactoryCreateHandler.java |   4 +-
 .../annotations/handlers/ObjectCreateHandler.java  |   6 +-
 .../annotations/handlers/PathCallParamHandler.java |   2 +-
 .../annotations/handlers/SetNextHandler.java       |   4 +-
 .../annotations/handlers/SetPropertiesHandler.java |   4 +-
 .../annotations/handlers/SetRootHandler.java       |   4 +-
 .../annotations/handlers/SetTopHandler.java        |   2 +-
 .../annotations/reflect/MethodArgument.java        |  12 +-
 .../digester3/annotations/rules/FactoryCreate.java |   2 +-
 .../annotations/utils/AnnotationUtils.java         |  22 +-
 .../binder/AbstractBackToLinkedRuleBuilder.java    |   4 +-
 .../AbstractNamespaceURIBasedRulesModule.java      |   4 +-
 .../digester3/binder/AbstractParamTypeBuilder.java |  14 +-
 .../digester3/binder/AbstractRulesModule.java      |  10 +-
 .../commons/digester3/binder/AddAliasBuilder.java  |   4 +-
 .../binder/BeanPropertySetterBuilder.java          |  10 +-
 .../digester3/binder/BinderClassLoader.java        |  10 +-
 .../commons/digester3/binder/ByRuleBuilder.java    |   4 +-
 .../digester3/binder/ByRuleProviderBuilder.java    |   4 +-
 .../digester3/binder/CallMethodBuilder.java        |  18 +-
 .../commons/digester3/binder/CallParamBuilder.java |  10 +-
 .../digester3/binder/DefaultRulesBinder.java       |  20 +-
 .../commons/digester3/binder/DigesterLoader.java   |  68 ++---
 .../digester3/binder/DigesterLoadingException.java |   6 +-
 .../commons/digester3/binder/ErrorMessage.java     |   4 +-
 .../digester3/binder/FactoryCreateBuilder.java     |  18 +-
 .../digester3/binder/FromBinderRuleSet.java        |  24 +-
 .../digester3/binder/LinkedRuleBuilder.java        |  24 +-
 .../digester3/binder/NestedPropertiesBuilder.java  |  16 +-
 .../digester3/binder/NodeCreateRuleProvider.java   |  10 +-
 .../digester3/binder/ObjectCreateBuilder.java      |  24 +-
 .../digester3/binder/ObjectParamBuilder.java       |   8 +-
 .../digester3/binder/PathCallParamBuilder.java     |   6 +-
 .../digester3/binder/PluginCreateRuleBuilder.java  |  24 +-
 .../binder/PluginDeclarationRuleBuilder.java       |   4 +-
 .../commons/digester3/binder/SetNextBuilder.java   |   4 +-
 .../digester3/binder/SetPropertiesBuilder.java     |  14 +-
 .../digester3/binder/SetPropertyBuilder.java       |   6 +-
 .../commons/digester3/binder/SetRootBuilder.java   |   4 +-
 .../commons/digester3/binder/SetTopBuilder.java    |   4 +-
 .../commons/digester3/plugins/Declaration.java     |  24 +-
 .../apache/commons/digester3/plugins/LogUtils.java |   2 +-
 .../digester3/plugins/PluginAssertionFailure.java  |   6 +-
 .../plugins/PluginConfigurationException.java      |   6 +-
 .../commons/digester3/plugins/PluginContext.java   |   6 +-
 .../digester3/plugins/PluginCreateRule.java        |  98 +++---
 .../digester3/plugins/PluginDeclarationRule.java   |  22 +-
 .../commons/digester3/plugins/PluginException.java |   6 +-
 .../plugins/PluginInvalidInputException.java       |   6 +-
 .../commons/digester3/plugins/PluginManager.java   |  32 +-
 .../commons/digester3/plugins/PluginRules.java     |  30 +-
 .../plugins/strategies/FinderFromClass.java        |   8 +-
 .../plugins/strategies/FinderFromDfltClass.java    |   8 +-
 .../plugins/strategies/FinderFromDfltMethod.java   |   6 +-
 .../plugins/strategies/FinderFromDfltResource.java |   8 +-
 .../plugins/strategies/FinderFromFile.java         |  14 +-
 .../plugins/strategies/FinderFromMethod.java       |   6 +-
 .../plugins/strategies/FinderFromResource.java     |  16 +-
 .../plugins/strategies/FinderSetProperties.java    |   6 +-
 .../plugins/strategies/LoaderFromClass.java        |  22 +-
 .../plugins/strategies/LoaderFromStream.java       |  14 +-
 .../plugins/strategies/LoaderSetProperties.java    |   6 +-
 .../substitution/CompoundSubstitutor.java          |   6 +-
 .../substitution/MultiVariableExpander.java        |  18 +-
 .../digester3/substitution/VariableAttributes.java |  28 +-
 .../substitution/VariableSubstitutor.java          |   8 +-
 .../digester3/xmlrules/AbstractXmlMethodRule.java  |  12 +-
 .../digester3/xmlrules/AbstractXmlRule.java        |   4 +-
 .../digester3/xmlrules/BeanPropertySetterRule.java |   8 +-
 .../commons/digester3/xmlrules/CallMethodRule.java |  18 +-
 .../commons/digester3/xmlrules/CallParamRule.java  |  14 +-
 .../digester3/xmlrules/FactoryCreateRule.java      |   4 +-
 .../digester3/xmlrules/FromXmlRulesModule.java     |  36 +--
 .../commons/digester3/xmlrules/IncludeRule.java    |  20 +-
 .../xmlrules/NameSpaceURIRulesBinder.java          |  12 +-
 .../commons/digester3/xmlrules/NodeCreateRule.java |   8 +-
 .../digester3/xmlrules/ObjectCreateRule.java       |  18 +-
 .../digester3/xmlrules/ObjectParamRule.java        |  18 +-
 .../commons/digester3/xmlrules/PatternRule.java    |   8 +-
 .../commons/digester3/xmlrules/PatternStack.java   |   4 +-
 .../digester3/xmlrules/PrefixedRulesBinder.java    |   8 +-
 .../digester3/xmlrules/SetNamespaceURIRule.java    |   6 +-
 .../xmlrules/SetNestedPropertiesAliasRule.java     |   8 +-
 .../xmlrules/SetNestedPropertiesIgnoreRule.java    |   6 +-
 .../xmlrules/SetNestedPropertiesRule.java          |  10 +-
 .../commons/digester3/xmlrules/SetNextRule.java    |   8 +-
 .../digester3/xmlrules/SetPropertiesAliasRule.java |   8 +-
 .../xmlrules/SetPropertiesIgnoreRule.java          |   6 +-
 .../digester3/xmlrules/SetPropertiesRule.java      |  10 +-
 .../digester3/xmlrules/SetPropertyRule.java        |   8 +-
 .../commons/digester3/xmlrules/SetRootRule.java    |   8 +-
 .../commons/digester3/xmlrules/SetTopRule.java     |   8 +-
 .../digester3/xmlrules/WithMemoryRulesBinder.java  |  10 +-
 .../commons/digester3/xmlrules/XmlRulesModule.java |  10 +-
 .../java/org/apache/commons/digester3/Address.java |  16 +-
 .../org/apache/commons/digester3/AlphaBean.java    |   8 +-
 .../commons/digester3/AsyncReaderTestCase.java     |  16 +-
 .../digester3/BeanPropertySetterRuleTestCase.java  |  24 +-
 .../org/apache/commons/digester3/BetaBean.java     |   6 +-
 .../java/org/apache/commons/digester3/Box.java     |  12 +-
 .../commons/digester3/CallMethodRuleTestCase.java  | 108 +++----
 .../commons/digester3/DTDValidationTestCase.java   |   6 +-
 .../commons/digester3/Digester133TestCase.java     |  14 +-
 .../commons/digester3/Digester153TestCase.java     |  28 +-
 .../commons/digester3/Digester162TestCase.java     |   4 +-
 .../commons/digester3/Digester171TestCase.java     |   2 +-
 .../apache/commons/digester3/DigesterTestCase.java | 114 +++----
 .../org/apache/commons/digester3/Employee.java     |  22 +-
 .../apache/commons/digester3/ErrorHandlerTest.java |  32 +-
 .../digester3/ExtendedBaseRulesTestCase.java       |   4 +-
 .../commons/digester3/LocationTrackerTestCase.java |  22 +-
 .../org/apache/commons/digester3/NamedBean.java    |   6 +-
 .../digester3/NamespaceSnapshotTestCase.java       |  18 +-
 .../apache/commons/digester3/NamespacedBox.java    |   2 +-
 .../commons/digester3/NodeCreateRuleTestCase.java  | 108 +++----
 .../digester3/ObjectCreationFactoryTestImpl.java   |   2 +-
 .../commons/digester3/ObjectParamRuleTestCase.java |   4 +-
 .../OverlappingCallMethodRuleTestCase.java         |  36 +--
 .../org/apache/commons/digester3/ParamBean.java    |   4 +-
 .../apache/commons/digester3/PrimitiveBean.java    |   4 +-
 .../commons/digester3/RegexRulesTestCase.java      |  18 +-
 .../org/apache/commons/digester3/RuleTestCase.java |  72 ++---
 .../commons/digester3/RulesBaseTestCase.java       |   8 +-
 .../digester3/SetNestedPropertiesRuleTestCase.java |  68 ++---
 .../digester3/SetPropertiesRuleTestCase.java       |  22 +-
 .../commons/digester3/SetPropertyRuleTestCase.java |  15 +-
 .../apache/commons/digester3/SimpleTestBean.java   |  12 +-
 .../org/apache/commons/digester3/TestBean.java     |  44 +--
 .../commons/digester3/TestEntityResolution.java    |   6 +-
 .../commons/digester3/TestFactoryCreate.java       |  12 +-
 .../org/apache/commons/digester3/TestRule.java     |  18 +-
 .../org/apache/commons/digester3/TestRuleSet.java  |   6 +-
 .../org/apache/commons/digester3/URLTestCase.java  |   4 +-
 .../WithDefaultsRulesWrapperTestCase.java          |   6 +-
 .../apache/commons/digester3/XIncludeTestCase.java |  10 +-
 .../commons/digester3/XMLSchemaTestCase.java       |  18 +-
 .../annotations/AbstractAnnotatedPojoTestCase.java |  12 +-
 .../digester3/annotations/addressbook/Address.java |  16 +-
 .../annotations/addressbook/AddressBook.java       |   6 +-
 .../addressbook/AddressBookTestCase.java           |   2 +-
 .../digester3/annotations/addressbook/Person.java  |  16 +-
 .../digester3/annotations/catalog/AudioVisual.java |  14 +-
 .../digester3/annotations/catalog/Book.java        |  12 +-
 .../digester3/annotations/catalog/BookFactory.java |   4 +-
 .../digester3/annotations/catalog/Catalog.java     |   8 +-
 .../annotations/catalog/CatalogTestCase.java       |   4 +-
 .../digester3/annotations/employee/Address.java    |  16 +-
 .../digester3/annotations/employee/Employee.java   |  10 +-
 .../annotations/employee/EmployeeTestCase.java     |   4 +-
 .../failingtests/BeanWithFakeHandler.java          |   2 +-
 .../FailingDigesterLoaderHandlerFactory.java       |   2 +-
 .../annotations/failingtests/FakeHandler.java      |   2 +-
 .../digester3/annotations/person/Person.java       |  14 +-
 .../annotations/person/PersonTestCase.java         |   2 +-
 .../commons/digester3/annotations/rss/Channel.java |  16 +-
 .../commons/digester3/annotations/rss/Image.java   |  16 +-
 .../commons/digester3/annotations/rss/Item.java    |  10 +-
 .../digester3/annotations/rss/RssTestCase.java     |   4 +-
 .../annotations/servletbean/ServletBean.java       |  12 +-
 .../servletbean/ServletBeanTestCase.java           |   2 +-
 .../binder/BinderClassLoaderTestCase.java          |  50 ++--
 .../digester3/binder/Digester163TestCase.java      |  12 +-
 .../digester3/binder/DigesterLoaderTestCase.java   |  24 +-
 .../apache/commons/digester3/binder/Entity.java    |   2 +-
 .../commons/digester3/plugins/Container.java       |   2 +-
 .../digester3/plugins/ContainerCustomRules.java    |   6 +-
 .../commons/digester3/plugins/DumperRule.java      |  12 +-
 .../commons/digester3/plugins/ObjectTestImpl.java  |   2 +-
 .../apache/commons/digester3/plugins/Slider.java   |  16 +-
 .../plugins/TestConfigurablePluginAttributes.java  |  58 ++--
 .../commons/digester3/plugins/TestDeclaration.java |  14 +-
 .../digester3/plugins/TestDefaultPlugin.java       |  40 +--
 .../commons/digester3/plugins/TestDelegate.java    |   8 +-
 .../commons/digester3/plugins/TestInline.java      |  32 +-
 .../commons/digester3/plugins/TestLocalRules.java  |  36 +--
 .../commons/digester3/plugins/TestRecursion.java   |  20 +-
 .../commons/digester3/plugins/TestRuleInfo.java    |  48 +--
 .../commons/digester3/plugins/TestXmlRuleInfo.java |  48 +--
 .../commons/digester3/plugins/TextLabel.java       |   4 +-
 .../commons/digester3/plugins/TextLabel2.java      |   4 +-
 .../digester3/plugins/TextLabel2RuleInfo.java      |   4 +-
 .../apache/commons/digester3/plugins/Utils.java    |   2 +-
 .../substitution/CompoundSubstitutorTestCase.java  |  28 +-
 .../substitution/VariableExpansionTestCase.java    |  88 +++---
 .../xmlrules/BeanPropertySetterRuleTestCase.java   |   4 +-
 .../digester3/xmlrules/CallParamTestObject.java    |  10 +-
 .../apache/commons/digester3/xmlrules/Entry.java   |  10 +-
 .../apache/commons/digester3/xmlrules/Feed.java    |  12 +-
 .../digester3/xmlrules/FromXmlRuleSetTest.java     |  95 +++---
 .../commons/digester3/xmlrules/IncludeTest.java    |  16 +-
 .../commons/digester3/xmlrules/ObjectTestImpl.java |  16 +-
 .../xmlrules/SetNamespaceURITestCase.java          |   6 +-
 .../xmlrules/ThrowExceptionCreationFactory.java    |   2 +-
 .../commons/digester3/annotations/atom/Entry.java  |  10 +-
 .../commons/digester3/annotations/atom/Feed.java   |  12 +-
 .../commons/digester3/annotations/atom/Main.java   |  14 +-
 .../examples/api/addressbook/Address.java          |  18 +-
 .../examples/api/addressbook/AddressBook.java      |   4 +-
 .../digester3/examples/api/addressbook/Main.java   |  16 +-
 .../digester3/examples/api/addressbook/Person.java |  16 +-
 .../examples/api/catalog/AudioVisual.java          |  12 +-
 .../digester3/examples/api/catalog/Book.java       |   8 +-
 .../examples/api/catalog/BookFactory.java          |   4 +-
 .../digester3/examples/api/catalog/Catalog.java    |   4 +-
 .../digester3/examples/api/catalog/Main.java       |  30 +-
 .../digester3/examples/api/dbinsert/Main.java      |  18 +-
 .../digester3/examples/api/dbinsert/Row.java       |   4 +-
 .../examples/api/dbinsert/RowInserterRule.java     |  18 +-
 .../digester3/examples/api/dbinsert/Table.java     |   2 +-
 .../examples/api/documentmarkup/Main.java          |  14 +-
 .../api/documentmarkup/MarkupDigester.java         |  22 +-
 .../api/documentmarkup/SetTextSegmentRule.java     |   8 +-
 .../apache/commons/digester3/edsl/atom/Entry.java  |  10 +-
 .../apache/commons/digester3/edsl/atom/Feed.java   |  12 +-
 .../apache/commons/digester3/edsl/atom/Main.java   |  14 +-
 .../examples/plugins/pipeline/CaseTransform.java   |   4 +-
 .../plugins/pipeline/CompoundTransform.java        |   8 +-
 .../examples/plugins/pipeline/Pipeline.java        |  30 +-
 .../plugins/pipeline/SubstituteTransform.java      |  12 +-
 .../org/apache/commons/digester3/rss/Channel.java  |  74 ++---
 .../org/apache/commons/digester3/rss/Image.java    |  14 +-
 .../org/apache/commons/digester3/rss/Item.java     |   8 +-
 .../apache/commons/digester3/rss/RSSDigester.java  |  26 +-
 .../apache/commons/digester3/rss/TextInput.java    |  10 +-
 .../examples/xmlrules/addressbook/Address.java     |  18 +-
 .../examples/xmlrules/addressbook/AddressBook.java |   4 +-
 .../examples/xmlrules/addressbook/Main.java        |  14 +-
 .../examples/xmlrules/addressbook/Person.java      |  16 +-
 263 files changed, 2239 insertions(+), 2234 deletions(-)

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 2e8ee77..f755096 100644
--- a/core/src/main/java/org/apache/commons/digester3/AbstractMethodRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/AbstractMethodRule.java
@@ -67,7 +67,7 @@ public abstract class AbstractMethodRule
      * 
      * @param methodName Method name of the parent method to call
      */
-    public AbstractMethodRule( String methodName )
+    public AbstractMethodRule( final String methodName )
     {
         this( methodName, (String) null );
     }
@@ -80,7 +80,7 @@ public abstract class AbstractMethodRule
      *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
      *            <code>boolean</code> parameter)
      */
-    public AbstractMethodRule( String methodName, Class<?> paramType )
+    public AbstractMethodRule( final String methodName, final Class<?> paramType )
     {
         this( methodName, paramType.getName() );
         this.paramType = paramType;
@@ -94,7 +94,7 @@ public abstract class AbstractMethodRule
      *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
      *            <code>boolean</code> parameter)
      */
-    public AbstractMethodRule( String methodName, String paramTypeName )
+    public AbstractMethodRule( final String methodName, final String paramTypeName )
     {
         this.methodName = methodName;
         this.paramTypeName = paramTypeName;
@@ -134,7 +134,7 @@ public abstract class AbstractMethodRule
      * @param fireOnBegin flag to mark this rule be invoked when {@link #begin(String, String, Attributes)} (true)
      *                    or {@link #end(String, String)} (false) methods are invoked, false by default.
      */
-    public void setFireOnBegin( boolean fireOnBegin )
+    public void setFireOnBegin( final boolean fireOnBegin )
     {
         this.fireOnBegin = fireOnBegin;
     }
@@ -162,7 +162,7 @@ public abstract class AbstractMethodRule
      * @param useExactMatch should this rule use exact method matching
      * @since Digester Release 1.1.1
      */
-    public void setExactMatch( boolean useExactMatch )
+    public void setExactMatch( final boolean useExactMatch )
     {
         this.useExactMatch = useExactMatch;
     }
@@ -171,7 +171,7 @@ public abstract class AbstractMethodRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         if ( fireOnBegin )
@@ -184,7 +184,7 @@ public abstract class AbstractMethodRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         if ( !fireOnBegin )
@@ -202,8 +202,8 @@ public abstract class AbstractMethodRule
         throws Exception
     {
         // Identify the objects to be used
-        Object child = getChild();
-        Object parent = getParent();
+        final Object child = getChild();
+        final Object parent = getParent();
         if ( getDigester().getLogger().isDebugEnabled() )
         {
             if ( parent == null )
@@ -226,7 +226,7 @@ public abstract class AbstractMethodRule
         }
 
         // Call the specified method
-        Class<?> paramTypes[] = new Class<?>[1];
+        final Class<?> paramTypes[] = new Class<?>[1];
         if ( paramType != null )
         {
             paramTypes[0] = getDigester().getClassLoader().loadClass( paramTypeName );
diff --git a/core/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java b/core/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java
index 9c16466..a222cba 100644
--- a/core/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java
+++ b/core/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java
@@ -60,7 +60,7 @@ public abstract class AbstractObjectCreationFactory<T>
     /**
      * {@inheritDoc}
      */
-    public void setDigester( Digester digester )
+    public void setDigester( final Digester digester )
     {
         this.digester = digester;
     }
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 7c942fa..1e70b59 100644
--- a/core/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java
+++ b/core/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java
@@ -59,7 +59,7 @@ public abstract class AbstractRulesImpl
     /**
      * {@inheritDoc}
      */
-    public void setDigester( Digester digester )
+    public void setDigester( final Digester digester )
     {
         this.digester = digester;
     }
@@ -75,7 +75,7 @@ public abstract class AbstractRulesImpl
     /**
      * {@inheritDoc}
      */
-    public void setNamespaceURI( String namespaceURI )
+    public void setNamespaceURI( final String namespaceURI )
     {
         this.namespaceURI = namespaceURI;
     }
@@ -85,7 +85,7 @@ public abstract class AbstractRulesImpl
     /**
      * {@inheritDoc}
      */
-    public final void add( String pattern, Rule rule )
+    public final void add( final String pattern, final Rule rule )
     {
         // set up rule
         if ( this.digester != null )
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 90183cb..a3ac8c2 100644
--- a/core/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java
@@ -58,7 +58,7 @@ public class BeanPropertySetterRule
      * 
      * @param propertyName name of property to set
      */
-    public BeanPropertySetterRule( String propertyName )
+    public BeanPropertySetterRule( final String propertyName )
     {
         this.propertyName = propertyName;
     }
@@ -109,7 +109,7 @@ public class BeanPropertySetterRule
      * @param propertyNameFromAttribute the attribute name from which the property name has to be extracted.
      * @since 3.0
      */
-    public void setPropertyNameFromAttribute( String propertyNameFromAttribute )
+    public void setPropertyNameFromAttribute( final String propertyNameFromAttribute )
     {
         this.propertyNameFromAttribute = propertyNameFromAttribute;
     }
@@ -128,7 +128,7 @@ public class BeanPropertySetterRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         if ( propertyNameFromAttribute != null )
@@ -144,7 +144,7 @@ public class BeanPropertySetterRule
      * {@inheritDoc}
      */
     @Override
-    public void body( String namespace, String name, String text )
+    public void body( final String namespace, final String name, final String text )
         throws Exception
     {
         // log some debugging information
@@ -162,7 +162,7 @@ public class BeanPropertySetterRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         String property = propertyName;
@@ -175,7 +175,7 @@ public class BeanPropertySetterRule
         }
 
         // Get a reference to the top object
-        Object top = getDigester().peek();
+        final Object top = getDigester().peek();
 
         // log some debugging information
         if ( getDigester().getLogger().isDebugEnabled() )
@@ -191,7 +191,7 @@ public class BeanPropertySetterRule
         // (BeanUtils.setProperty() silently returns in this case)
         if ( top instanceof DynaBean )
         {
-            DynaProperty desc = ( (DynaBean) top ).getDynaClass().getDynaProperty( property );
+            final DynaProperty desc = ( (DynaBean) top ).getDynaClass().getDynaProperty( property );
             if ( desc == null )
             {
                 throw new NoSuchMethodException( "Bean has no property named " + property );
@@ -200,7 +200,7 @@ public class BeanPropertySetterRule
         else
         /* this is a standard JavaBean */
         {
-            PropertyDescriptor desc = getPropertyDescriptor( top, property );
+            final PropertyDescriptor desc = getPropertyDescriptor( top, property );
             if ( desc == null )
             {
                 throw new NoSuchMethodException( "Bean has no property named " + property );
diff --git a/core/src/main/java/org/apache/commons/digester3/CallMethodRule.java b/core/src/main/java/org/apache/commons/digester3/CallMethodRule.java
index c4d3137..4fae6d0 100644
--- a/core/src/main/java/org/apache/commons/digester3/CallMethodRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/CallMethodRule.java
@@ -97,7 +97,7 @@ public class CallMethodRule
      * @param paramCount The number of parameters to collect, or zero for a single argument from the body of this
      *            element.
      */
-    public CallMethodRule( String methodName, int paramCount )
+    public CallMethodRule( final String methodName, final int paramCount )
     {
         this( 0, methodName, paramCount );
     }
@@ -113,7 +113,7 @@ public class CallMethodRule
      * @param paramCount The number of parameters to collect, or zero for a single argument from the body of this
      *            element.
      */
-    public CallMethodRule( int targetOffset, String methodName, int paramCount )
+    public CallMethodRule( final int targetOffset, final String methodName, final int paramCount )
     {
         this.targetOffset = targetOffset;
         this.methodName = methodName;
@@ -134,7 +134,7 @@ public class CallMethodRule
      *
      * @param methodName Method name of the parent method to call
      */
-    public CallMethodRule( String methodName )
+    public CallMethodRule( final String methodName )
     {
         this( 0, methodName, 0, (Class[]) null );
     }
@@ -147,7 +147,7 @@ public class CallMethodRule
      *            the stack.
      * @param methodName Method name of the parent method to call
      */
-    public CallMethodRule( int targetOffset, String methodName )
+    public CallMethodRule( final int targetOffset, final String methodName )
     {
         this( targetOffset, methodName, 0, (Class[]) null );
     }
@@ -163,7 +163,7 @@ public class CallMethodRule
      *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
      *            <code>boolean</code> parameter)
      */
-    public CallMethodRule( String methodName, int paramCount, String[] paramTypes )
+    public CallMethodRule( final String methodName, final int paramCount, final String[] paramTypes )
     {
         this( 0, methodName, paramCount, paramTypes );
     }
@@ -182,7 +182,7 @@ public class CallMethodRule
      *            corresponding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
      *            <code>boolean</code> parameter)
      */
-    public CallMethodRule( int targetOffset, String methodName, int paramCount, String[] paramTypes )
+    public CallMethodRule( final int targetOffset, final String methodName, final int paramCount, final String[] paramTypes )
     {
         this.targetOffset = targetOffset;
         this.methodName = methodName;
@@ -212,7 +212,7 @@ public class CallMethodRule
      *            a primitive type, specify the corresponding Java wrapper class instead, such as
      *            <code>java.lang.Boolean.TYPE</code> for a <code>boolean</code> parameter)
      */
-    public CallMethodRule( String methodName, int paramCount, Class<?> paramTypes[] )
+    public CallMethodRule( final String methodName, final int paramCount, final Class<?> paramTypes[] )
     {
         this( 0, methodName, paramCount, paramTypes );
     }
@@ -231,7 +231,7 @@ public class CallMethodRule
      *            a primitive type, specify the corresponding Java wrapper class instead, such as
      *            <code>java.lang.Boolean.TYPE</code> for a <code>boolean</code> parameter)
      */
-    public CallMethodRule( int targetOffset, String methodName, int paramCount, Class<?>[] paramTypes )
+    public CallMethodRule( final int targetOffset, final String methodName, final int paramCount, final Class<?>[] paramTypes )
     {
         this.targetOffset = targetOffset;
         this.methodName = methodName;
@@ -306,7 +306,7 @@ public class CallMethodRule
      *
      * @param useExactMatch The <code>MethodUtils.invokeExactMethod</code> flag
      */
-    public void setUseExactMatch( boolean useExactMatch )
+    public void setUseExactMatch( final boolean useExactMatch )
     {
         this.useExactMatch = useExactMatch;
     }
@@ -315,7 +315,7 @@ public class CallMethodRule
      * {@inheritDoc}
      */
     @Override
-    public void setDigester( Digester digester )
+    public void setDigester( final Digester digester )
     {
         // call superclass
         super.setDigester( digester );
@@ -329,7 +329,7 @@ public class CallMethodRule
                 {
                     this.paramTypes[i] = digester.getClassLoader().loadClass( this.paramClassNames[i] );
                 }
-                catch ( ClassNotFoundException e )
+                catch ( final ClassNotFoundException e )
                 {
                     throw new RuntimeException( format( "[CallMethodRule] Cannot load class %s at position %s",
                                                         this.paramClassNames[i], i ), e );
@@ -342,13 +342,13 @@ public class CallMethodRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         // Push an array to capture the parameter values if necessary
         if ( paramCount > 0 )
         {
-            Object parameters[] = new Object[paramCount];
+            final Object parameters[] = new Object[paramCount];
             fill( parameters, null );
             getDigester().pushParams( parameters );
         }
@@ -358,7 +358,7 @@ public class CallMethodRule
      * {@inheritDoc}
      */
     @Override
-    public void body( String namespace, String name, String text )
+    public void body( final String namespace, final String name, final String text )
         throws Exception
     {
         if ( paramCount == 0 )
@@ -371,7 +371,7 @@ public class CallMethodRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         // Retrieve or construct the parameter values array
@@ -438,7 +438,7 @@ public class CallMethodRule
         // Construct the parameter values array we will need
         // We only do the conversion if the param value is a String and
         // the specified paramType is not String.
-        Object[] paramValues = new Object[paramTypes.length];
+        final Object[] paramValues = new Object[paramTypes.length];
         for ( int i = 0; i < paramTypes.length; i++ )
         {
             // convert nulls and convert stringy parameters
@@ -474,7 +474,7 @@ public class CallMethodRule
         // Invoke the required method on the top object
         if ( getDigester().getLogger().isDebugEnabled() )
         {
-            Formatter formatter =
+            final Formatter formatter =
                 new Formatter().format( "[CallMethodRule]{%s} Call %s.%s(",
                                         getDigester().getMatch(),
                                         target.getClass().getName(),
@@ -518,7 +518,7 @@ public class CallMethodRule
      *
      * @param result the Object returned by the method invoked, possibly null
      */
-    protected void processMethodCallResult( Object result )
+    protected void processMethodCallResult( final Object result )
     {
         // do nothing
     }
@@ -529,7 +529,7 @@ public class CallMethodRule
     @Override
     public String toString()
     {
-        Formatter formatter = new Formatter().format( "CallMethodRule[methodName=%s, paramCount=%s, paramTypes={",
+        final Formatter formatter = new Formatter().format( "CallMethodRule[methodName=%s, paramCount=%s, paramTypes={",
                                                       methodName, paramCount );
         if ( paramTypes != null )
         {
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 5c486f8..936e608 100644
--- a/core/src/main/java/org/apache/commons/digester3/CallParamRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/CallParamRule.java
@@ -54,7 +54,7 @@ public class CallParamRule
      * 
      * @param paramIndex The zero-relative parameter number
      */
-    public CallParamRule( int paramIndex )
+    public CallParamRule( final int paramIndex )
     {
         this( paramIndex, null );
     }
@@ -65,7 +65,7 @@ public class CallParamRule
      * @param paramIndex The zero-relative parameter number
      * @param attributeName The name of the attribute to save
      */
-    public CallParamRule( int paramIndex, String attributeName )
+    public CallParamRule( final int paramIndex, final String attributeName )
     {
         this.paramIndex = paramIndex;
         this.attributeName = attributeName;
@@ -77,7 +77,7 @@ public class CallParamRule
      * @param paramIndex The zero-relative parameter number
      * @param fromStack should this parameter be taken from the top of the stack?
      */
-    public CallParamRule( int paramIndex, boolean fromStack )
+    public CallParamRule( final int paramIndex, final boolean fromStack )
     {
         this.paramIndex = paramIndex;
         this.fromStack = fromStack;
@@ -91,7 +91,7 @@ public class CallParamRule
      * @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.
      */
-    public CallParamRule( int paramIndex, int stackIndex )
+    public CallParamRule( final int paramIndex, final int stackIndex )
     {
         this.paramIndex = paramIndex;
         this.fromStack = true;
@@ -133,7 +133,7 @@ public class CallParamRule
      * @param attributeName The attribute from which to save the parameter value
      * @since 3.0
      */
-    public void setAttributeName( String attributeName )
+    public void setAttributeName( final String attributeName )
     {
         this.attributeName = attributeName;
     }
@@ -142,7 +142,7 @@ public class CallParamRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         Object param = null;
@@ -174,7 +174,7 @@ public class CallParamRule
 
         if ( param != null )
         {
-            Object parameters[] = getDigester().peekParams();
+            final Object parameters[] = getDigester().peekParams();
             parameters[paramIndex] = param;
         }
     }
@@ -183,7 +183,7 @@ public class CallParamRule
      * {@inheritDoc}
      */
     @Override
-    public void body( String namespace, String name, String text )
+    public void body( final String namespace, final String name, final String text )
         throws Exception
     {
         if ( attributeName == null && !fromStack )
@@ -203,12 +203,12 @@ public class CallParamRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
     {
         if ( bodyTextStack != null && !bodyTextStack.empty() )
         {
             // what we do now is push one parameter onto the top set of parameters
-            Object parameters[] = getDigester().peekParams();
+            final Object parameters[] = getDigester().peekParams();
             parameters[paramIndex] = bodyTextStack.pop();
         }
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/DefaultThrowingErrorHandler.java b/core/src/main/java/org/apache/commons/digester3/DefaultThrowingErrorHandler.java
index b182df5..5dc6ec7 100644
--- a/core/src/main/java/org/apache/commons/digester3/DefaultThrowingErrorHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/DefaultThrowingErrorHandler.java
@@ -33,7 +33,7 @@ public class DefaultThrowingErrorHandler
     /**
      * {@inheritDoc}
      */
-    public void warning( SAXParseException e )
+    public void warning( final SAXParseException e )
         throws SAXException
     {
         throw e;
@@ -42,7 +42,7 @@ public class DefaultThrowingErrorHandler
     /**
      * {@inheritDoc}
      */
-    public void fatalError( SAXParseException e )
+    public void fatalError( final SAXParseException e )
         throws SAXException
     {
         throw e;
@@ -51,7 +51,7 @@ public class DefaultThrowingErrorHandler
     /**
      * {@inheritDoc}
      */
-    public void error( SAXParseException e )
+    public void error( final SAXParseException e )
         throws SAXException
     {
         throw e;
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 222c82f..e89619a 100644
--- a/core/src/main/java/org/apache/commons/digester3/Digester.java
+++ b/core/src/main/java/org/apache/commons/digester3/Digester.java
@@ -112,7 +112,7 @@ public class Digester
      *
      * @param parser The SAXParser used to parse XML streams
      */
-    public Digester( SAXParser parser )
+    public Digester( final SAXParser parser )
     {
         this.parser = parser;
     }
@@ -124,7 +124,7 @@ public class Digester
      *
      * @param reader The XMLReader used to parse XML streams
      */
-    public Digester( XMLReader reader )
+    public Digester( final XMLReader reader )
     {
         this.reader = reader;
     }
@@ -320,9 +320,9 @@ public class Digester
      * @param prefix Prefix to look up
      * @return the currently mapped namespace URI for the specified prefix
      */
-    public String findNamespaceURI( String prefix )
+    public String findNamespaceURI( final String prefix )
     {
-        Stack<String> nsStack = namespaces.get( prefix );
+        final Stack<String> nsStack = namespaces.get( prefix );
         if ( nsStack == null )
         {
             return null;
@@ -331,7 +331,7 @@ public class Digester
         {
             return ( nsStack.peek() );
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             return null;
         }
@@ -357,7 +357,7 @@ public class Digester
         }
         if ( this.useContextClassLoader )
         {
-            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+            final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
             if ( classLoader != null )
             {
                 return ( classLoader );
@@ -371,7 +371,7 @@ public class Digester
      *
      * @param classLoader The new class loader to use, or <code>null</code> to revert to the standard rules
      */
-    public void setClassLoader( ClassLoader classLoader )
+    public void setClassLoader( final ClassLoader classLoader )
     {
         this.classLoader = classLoader;
     }
@@ -394,7 +394,7 @@ public class Digester
     public String getCurrentElementName()
     {
         String elementName = match;
-        int lastSlash = elementName.lastIndexOf( '/' );
+        final int lastSlash = elementName.lastIndexOf( '/' );
         if ( lastSlash >= 0 )
         {
             elementName = elementName.substring( lastSlash + 1 );
@@ -417,7 +417,7 @@ public class Digester
      *
      * @param errorHandler The new error handler
      */
-    public void setErrorHandler( ErrorHandler errorHandler )
+    public void setErrorHandler( final ErrorHandler errorHandler )
     {
         this.errorHandler = errorHandler;
     }
@@ -452,7 +452,7 @@ public class Digester
      * @throws SAXNotRecognizedException if the property name is not recognized
      * @throws SAXNotSupportedException if the property name is recognized but not supported
      */
-    public boolean getFeature( String feature )
+    public boolean getFeature( final String feature )
         throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException
     {
         return ( getFactory().getFeature( feature ) );
@@ -471,7 +471,7 @@ public class Digester
      * @throws SAXNotRecognizedException if the property name is not recognized
      * @throws SAXNotSupportedException if the property name is recognized but not supported
      */
-    public void setFeature( String feature, boolean value )
+    public void setFeature( final String feature, final boolean value )
         throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException
     {
         getFactory().setFeature( feature, value );
@@ -492,7 +492,7 @@ public class Digester
      *
      * @param log the current logger for this Digester.
      */
-    public void setLogger( Log log )
+    public void setLogger( final Log log )
     {
         this.log = log;
     }
@@ -514,7 +514,7 @@ public class Digester
      * @param saxLog the logger used for logging SAX-related information, not null
      * @since 1.6
      */
-    public void setSAXLogger( Log saxLog )
+    public void setSAXLogger( final Log saxLog )
     {
         this.saxLog = saxLog;
     }
@@ -557,7 +557,7 @@ public class Digester
      *
      * @param namespaceAware The new "namespace aware" flag
      */
-    public void setNamespaceAware( boolean namespaceAware )
+    public void setNamespaceAware( final boolean namespaceAware )
     {
         this.namespaceAware = namespaceAware;
     }
@@ -582,7 +582,7 @@ public class Digester
      * @see #setNamespaceAware(boolean)
      * @since 2.0
      */
-    public void setXIncludeAware( boolean xincludeAware )
+    public void setXIncludeAware( final boolean xincludeAware )
     {
         this.xincludeAware = xincludeAware;
     }
@@ -592,7 +592,7 @@ public class Digester
      *
      * @param publicId the DTD/Schema public's id.
      */
-    public void setPublicId( String publicId )
+    public void setPublicId( final String publicId )
     {
         this.publicId = publicId;
     }
@@ -623,7 +623,7 @@ public class Digester
      * @param ruleNamespaceURI Namespace URI that must match on all subsequently added rules, or <code>null</code> for
      *            matching regardless of the current namespace URI
      */
-    public void setRuleNamespaceURI( String ruleNamespaceURI )
+    public void setRuleNamespaceURI( final String ruleNamespaceURI )
     {
         getRules().setNamespaceURI( ruleNamespaceURI );
     }
@@ -648,7 +648,7 @@ public class Digester
         {
             parser = getFactory().newSAXParser();
         }
-        catch ( Exception e )
+        catch ( final Exception e )
         {
             log.error( "Digester.getParser: ", e );
             return ( null );
@@ -668,7 +668,7 @@ public class Digester
      * @throws SAXNotRecognizedException if the property name is not recognized
      * @throws SAXNotSupportedException if the property name is recognized but not supported
      */
-    public Object getProperty( String property )
+    public Object getProperty( final String property )
         throws SAXNotRecognizedException, SAXNotSupportedException
     {
         return ( getParser().getProperty( property ) );
@@ -683,7 +683,7 @@ public class Digester
      * @throws SAXNotRecognizedException if the property name is not recognized
      * @throws SAXNotSupportedException if the property name is recognized but not supported
      */
-    public void setProperty( String property, Object value )
+    public void setProperty( final String property, final Object value )
         throws SAXNotRecognizedException, SAXNotSupportedException
     {
         getParser().setProperty( property, value );
@@ -710,7 +710,7 @@ public class Digester
      *
      * @param rules New Rules implementation
      */
-    public void setRules( Rules rules )
+    public void setRules( final Rules rules )
     {
         this.rules = rules;
         this.rules.setDigester( this );
@@ -733,7 +733,7 @@ public class Digester
      * @param schema The {@link Schema} instance to use.
      * @since 2.0
      */
-    public void setXMLSchema( Schema schema )
+    public void setXMLSchema( final Schema schema )
     {
         this.schema = schema;
     }
@@ -755,7 +755,7 @@ public class Digester
      *
      * @param use determines whether to use Context ClassLoader.
      */
-    public void setUseContextClassLoader( boolean use )
+    public void setUseContextClassLoader( final boolean use )
     {
         useContextClassLoader = use;
     }
@@ -780,7 +780,7 @@ public class Digester
      * @param validating The new validating parser flag.
      * @see javax.xml.parsers.SAXParserFactory#setValidating(boolean) for more detail.
      */
-    public void setValidating( boolean validating )
+    public void setValidating( final boolean validating )
     {
         this.validating = validating;
     }
@@ -842,7 +842,7 @@ public class Digester
      * @param substitutor the Substitutor to be used to convert attributes and body text or null if not substitution of
      *            these values is to be performed.
      */
-    public void setSubstitutor( Substitutor substitutor )
+    public void setSubstitutor( final Substitutor substitutor )
     {
         this.substitutor = substitutor;
     }
@@ -890,7 +890,7 @@ public class Digester
      * @param handler the custom SAX ContentHandler where events are redirected.
      * @since 1.7
      */
-    public void setCustomContentHandler( ContentHandler handler )
+    public void setCustomContentHandler( final ContentHandler handler )
     {
         customContentHandler = handler;
     }
@@ -903,7 +903,7 @@ public class Digester
      *        object stack, or popped off one.
      * @since 1.8
      */
-    public void setStackAction( StackAction stackAction )
+    public void setStackAction( final StackAction stackAction )
     {
         this.stackAction = stackAction;
     }
@@ -935,14 +935,14 @@ public class Digester
         {
             log.warn( "Digester is not namespace aware" );
         }
-        Map<String, String> currentNamespaces = new HashMap<String, String>();
-        for ( Map.Entry<String, Stack<String>> nsEntry : namespaces.entrySet() )
+        final Map<String, String> currentNamespaces = new HashMap<String, String>();
+        for ( final Map.Entry<String, Stack<String>> nsEntry : namespaces.entrySet() )
         {
             try
             {
                 currentNamespaces.put( nsEntry.getKey(), nsEntry.getValue().peek() );
             }
-            catch ( RuntimeException e )
+            catch ( final RuntimeException e )
             {
                 // rethrow, after logging
                 log.error( e.getMessage(), e );
@@ -969,7 +969,7 @@ public class Digester
      * @param executorService the executor service to run asynchronous parse method
      * @since 3.1
      */
-    public void setExecutorService( ExecutorService executorService )
+    public void setExecutorService( final ExecutorService executorService )
     {
         this.executorService = executorService;
     }
@@ -980,7 +980,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void characters( char buffer[], int start, int length )
+    public void characters( final char buffer[], final int start, final int length )
         throws SAXException
     {
         if ( customContentHandler != null )
@@ -1018,18 +1018,18 @@ public class Digester
         }
 
         // Fire "finish" events for all defined rules
-        for ( Rule rule : getRules().rules() )
+        for ( final Rule rule : getRules().rules() )
         {
             try
             {
                 rule.finish();
             }
-            catch ( Exception e )
+            catch ( final Exception e )
             {
                 log.error( "Finish event threw exception", e );
                 throw createSAXException( e );
             }
-            catch ( Error e )
+            catch ( final Error e )
             {
                 log.error( "Finish event threw error", e );
                 throw e;
@@ -1044,7 +1044,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void endElement( String namespaceURI, String localName, String qName )
+    public void endElement( final String namespaceURI, final String localName, final String qName )
         throws SAXException
     {
         if ( customContentHandler != null )
@@ -1054,7 +1054,7 @@ public class Digester
             return;
         }
 
-        boolean debug = log.isDebugEnabled();
+        final boolean debug = log.isDebugEnabled();
 
         if ( debug )
         {
@@ -1075,16 +1075,16 @@ public class Digester
         }
 
         // Fire "body" events for all relevant rules
-        List<Rule> rules = matches.pop();
+        final List<Rule> rules = matches.pop();
         if ( ( rules != null ) && ( rules.size() > 0 ) )
         {
             String bodyText = this.bodyText.toString();
-            Substitutor substitutor = getSubstitutor();
+            final Substitutor substitutor = getSubstitutor();
             if ( substitutor != null )
             {
                 bodyText = substitutor.substitute( bodyText );
             }
-            for (Rule rule : rules) {
+            for (final Rule rule : rules) {
                 try
                 {
                     if ( debug )
@@ -1093,12 +1093,12 @@ public class Digester
                     }
                     rule.body( namespaceURI, name, bodyText );
                 }
-                catch ( Exception e )
+                catch ( final Exception e )
                 {
                     log.error( "Body event threw exception", e );
                     throw createSAXException( e );
                 }
-                catch ( Error e )
+                catch ( final Error e )
                 {
                     log.error( "Body event threw error", e );
                     throw e;
@@ -1125,22 +1125,22 @@ public class Digester
         {
             for ( int i = 0; i < rules.size(); i++ )
             {
-                int j = ( rules.size() - i ) - 1;
+                final int j = ( rules.size() - i ) - 1;
                 try
                 {
-                    Rule rule = rules.get( j );
+                    final Rule rule = rules.get( j );
                     if ( debug )
                     {
                         log.debug( "  Fire end() for " + rule );
                     }
                     rule.end( namespaceURI, name );
                 }
-                catch ( Exception e )
+                catch ( final Exception e )
                 {
                     log.error( "End event threw exception", e );
                     throw createSAXException( e );
                 }
-                catch ( Error e )
+                catch ( final Error e )
                 {
                     log.error( "End event threw error", e );
                     throw e;
@@ -1149,7 +1149,7 @@ public class Digester
         }
 
         // Recover the previous match expression
-        int slash = match.lastIndexOf( '/' );
+        final int slash = match.lastIndexOf( '/' );
         if ( slash >= 0 )
         {
             match = match.substring( 0, slash );
@@ -1164,7 +1164,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void endPrefixMapping( String prefix )
+    public void endPrefixMapping( final String prefix )
         throws SAXException
     {
         if ( saxLog.isDebugEnabled() )
@@ -1173,7 +1173,7 @@ public class Digester
         }
 
         // Deregister this prefix mapping
-        Stack<String> stack = namespaces.get( prefix );
+        final Stack<String> stack = namespaces.get( prefix );
         if ( stack == null )
         {
             return;
@@ -1186,7 +1186,7 @@ public class Digester
                 namespaces.remove( prefix );
             }
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             throw createSAXException( "endPrefixMapping popped too many times" );
         }
@@ -1196,7 +1196,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void ignorableWhitespace( char buffer[], int start, int len )
+    public void ignorableWhitespace( final char buffer[], final int start, final int len )
         throws SAXException
     {
         if ( saxLog.isDebugEnabled() )
@@ -1211,7 +1211,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void processingInstruction( String target, String data )
+    public void processingInstruction( final String target, final String data )
         throws SAXException
     {
         if ( customContentHandler != null )
@@ -1243,7 +1243,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void setDocumentLocator( Locator locator )
+    public void setDocumentLocator( final Locator locator )
     {
         if ( saxLog.isDebugEnabled() )
         {
@@ -1257,7 +1257,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void skippedEntity( String name )
+    public void skippedEntity( final String name )
         throws SAXException
     {
         if ( saxLog.isDebugEnabled() )
@@ -1290,10 +1290,10 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void startElement( String namespaceURI, String localName, String qName, Attributes list )
+    public void startElement( final String namespaceURI, final String localName, final String qName, Attributes list )
         throws SAXException
     {
-        boolean debug = log.isDebugEnabled();
+        final boolean debug = log.isDebugEnabled();
 
         if ( customContentHandler != null )
         {
@@ -1324,7 +1324,7 @@ public class Digester
         }
 
         // Compute the current matching rule
-        StringBuilder sb = new StringBuilder( match );
+        final StringBuilder sb = new StringBuilder( match );
         if ( match.length() > 0 )
         {
             sb.append( '/' );
@@ -1337,16 +1337,16 @@ public class Digester
         }
 
         // Fire "begin" events for all relevant rules
-        List<Rule> rules = getRules().match( namespaceURI, match, localName, list );
+        final List<Rule> rules = getRules().match( namespaceURI, match, localName, list );
         matches.push( rules );
         if ( ( rules != null ) && ( rules.size() > 0 ) )
         {
-            Substitutor substitutor = getSubstitutor();
+            final Substitutor substitutor = getSubstitutor();
             if ( substitutor != null )
             {
                 list = substitutor.substitute( list );
             }
-            for (Rule rule : rules) {
+            for (final Rule rule : rules) {
                 try
                 {
                     if ( debug )
@@ -1355,12 +1355,12 @@ public class Digester
                     }
                     rule.begin( namespaceURI, name, list );
                 }
-                catch ( Exception e )
+                catch ( final Exception e )
                 {
                     log.error( "Begin event threw exception", e );
                     throw createSAXException( e );
                 }
-                catch ( Error e )
+                catch ( final Error e )
                 {
                     log.error( "Begin event threw error", e );
                     throw e;
@@ -1380,7 +1380,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void startPrefixMapping( String prefix, String namespaceURI )
+    public void startPrefixMapping( final String prefix, final String namespaceURI )
         throws SAXException
     {
         if ( saxLog.isDebugEnabled() )
@@ -1404,7 +1404,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void notationDecl( String name, String publicId, String systemId )
+    public void notationDecl( final String name, final String publicId, final String systemId )
     {
         if ( saxLog.isDebugEnabled() )
         {
@@ -1416,7 +1416,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void unparsedEntityDecl( String name, String publicId, String systemId, String notation )
+    public void unparsedEntityDecl( final String name, final String publicId, final String systemId, final String notation )
     {
         if ( saxLog.isDebugEnabled() )
         {
@@ -1432,7 +1432,7 @@ public class Digester
      *
      * @param entityResolver a class that implement the <code>EntityResolver</code> interface.
      */
-    public void setEntityResolver( EntityResolver entityResolver )
+    public void setEntityResolver( final EntityResolver entityResolver )
     {
         this.entityResolver = entityResolver;
     }
@@ -1451,7 +1451,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public InputSource resolveEntity( String publicId, String systemId )
+    public InputSource resolveEntity( final String publicId, final String systemId )
         throws SAXException
     {
         if ( saxLog.isDebugEnabled() )
@@ -1498,7 +1498,7 @@ public class Digester
             {
                 entityURL = new URL( systemId );
             }
-            catch ( MalformedURLException e )
+            catch ( final MalformedURLException e )
             {
                 throw new IllegalArgumentException( "Malformed URL '" + systemId + "' : " + e.getMessage() );
             }
@@ -1514,7 +1514,7 @@ public class Digester
         {
             return createInputSourceFromURL( entityURL );
         }
-        catch ( Exception e )
+        catch ( final Exception e )
         {
             throw createSAXException( e );
         }
@@ -1526,7 +1526,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void error( SAXParseException exception )
+    public void error( final SAXParseException exception )
         throws SAXException
     {
     	log.error( "Parse Error at line " + exception.getLineNumber() + " column " + exception.getColumnNumber() + ": "
@@ -1537,7 +1537,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void fatalError( SAXParseException exception )
+    public void fatalError( final SAXParseException exception )
         throws SAXException
     {
         log.error( "Parse Fatal Error at line " + exception.getLineNumber() + " column " + exception.getColumnNumber()
@@ -1548,7 +1548,7 @@ public class Digester
      * {@inheritDoc}
      */
     @Override
-    public void warning( SAXParseException exception )
+    public void warning( final SAXParseException exception )
         throws SAXException
     {
         log.warn( "Parse Warning Error at line " + exception.getLineNumber() + " column "
@@ -1567,7 +1567,7 @@ public class Digester
      * @throws IOException if an input/output error occurs
      * @throws SAXException if a parsing exception occurs
      */
-    public <T> T parse( File file )
+    public <T> T parse( final File file )
         throws IOException, SAXException
     {
         if ( file == null )
@@ -1575,7 +1575,7 @@ public class Digester
             throw new IllegalArgumentException( "File to parse is null" );
         }
 
-        InputSource input = new InputSource( new FileInputStream( file ) );
+        final InputSource input = new InputSource( new FileInputStream( file ) );
         input.setSystemId( file.toURI().toURL().toString() );
 
         return ( this.<T> parse( input ) );
@@ -1614,7 +1614,7 @@ public class Digester
      * @throws IOException if an input/output error occurs
      * @throws SAXException if a parsing exception occurs
      */
-    public <T> T parse( InputSource input )
+    public <T> T parse( final InputSource input )
         throws IOException, SAXException
     {
         if ( input == null )
@@ -1634,7 +1634,7 @@ public class Digester
         {
             getXMLReader().parse( input );
         }
-        catch ( IOException e )
+        catch ( final IOException e )
         {
             log.error( format( "An error occurred while reading stream from '%s', see nested exceptions", systemId ),
                        e );
@@ -1677,7 +1677,7 @@ public class Digester
      * @throws IOException if an input/output error occurs
      * @throws SAXException if a parsing exception occurs
      */
-    public <T> T parse( InputStream input )
+    public <T> T parse( final InputStream input )
         throws IOException, SAXException
     {
         if ( input == null )
@@ -1721,7 +1721,7 @@ public class Digester
      * @throws IOException if an input/output error occurs
      * @throws SAXException if a parsing exception occurs
      */
-    public <T> T parse( Reader reader )
+    public <T> T parse( final Reader reader )
         throws IOException, SAXException
     {
         if ( reader == null )
@@ -1765,7 +1765,7 @@ public class Digester
      * @throws IOException if an input/output error occurs
      * @throws SAXException if a parsing exception occurs
      */
-    public <T> T parse( String uri )
+    public <T> T parse( final String uri )
         throws IOException, SAXException
     {
         if ( uri == null )
@@ -1810,7 +1810,7 @@ public class Digester
      * @throws SAXException if a parsing exception occurs
      * @since 1.8
      */
-    public <T> T parse( URL url )
+    public <T> T parse( final URL url )
         throws IOException, SAXException
     {
         if ( url == null )
@@ -1852,7 +1852,7 @@ public class Digester
      * @return a Future that can be used to track when the parse has been fully processed.
      * @since 3.1
      */
-    private <T> Future<T> asyncParse( Callable<T> callable )
+    private <T> Future<T> asyncParse( final Callable<T> callable )
     {
         if ( executorService == null )
         {
@@ -1884,7 +1884,7 @@ public class Digester
      * @param entityURL The URL to use for reading this DTD
      * @since 1.8
      */
-    public void register( String publicId, URL entityURL )
+    public void register( final String publicId, final URL entityURL )
     {
         if ( log.isDebugEnabled() )
         {
@@ -1901,7 +1901,7 @@ public class Digester
      * @param publicId Public identifier of the entity to be resolved
      * @param entityURL The URL to use for reading this entity
      */
-    public void register( String publicId, String entityURL )
+    public void register( final String publicId, final String entityURL )
     {
         if ( log.isDebugEnabled() )
         {
@@ -1911,7 +1911,7 @@ public class Digester
         {
             entityValidator.put( publicId, new URL( entityURL ) );
         }
-        catch ( MalformedURLException e )
+        catch ( final MalformedURLException e )
         {
             throw new IllegalArgumentException( "Malformed URL '" + entityURL + "' : " + e.getMessage() );
         }
@@ -1924,7 +1924,7 @@ public class Digester
      *                        identifier that corresponds.
      * @since 3.0
      */
-    public void registerAll( Map<String, URL> entityValidator )
+    public void registerAll( final Map<String, URL> entityValidator )
     {
         this.entityValidator.putAll( entityValidator );
     }
@@ -1971,13 +1971,13 @@ public class Digester
      * @throws IOException if any error occurs while reading the input URL
      * @since 1.8
      */
-    public InputSource createInputSourceFromURL( URL url )
+    public InputSource createInputSourceFromURL( final URL url )
         throws IOException
     {
-        URLConnection connection = url.openConnection();
+        final URLConnection connection = url.openConnection();
         connection.setUseCaches( false );
-        InputStream stream = connection.getInputStream();
-        InputSource source = new InputSource( stream );
+        final InputStream stream = connection.getInputStream();
+        final InputSource source = new InputSource( stream );
         source.setSystemId( url.toExternalForm() );
         inputSources.add( source );
         return source;
@@ -1993,7 +1993,7 @@ public class Digester
      * @throws IOException if any error occurs while reading the input URL
      * @since 1.8
      */
-    public InputSource createInputSourceFromURL( String url )
+    public InputSource createInputSourceFromURL( final String url )
         throws IOException
     {
         return createInputSourceFromURL( new URL( url ) );
@@ -2010,7 +2010,7 @@ public class Digester
      * @param pattern Element matching pattern
      * @param rule Rule to be registered
      */
-    public void addRule( String pattern, Rule rule )
+    public void addRule( final String pattern, final Rule rule )
     {
         rule.setDigester( this );
         getRules().add( pattern, rule );
@@ -2021,10 +2021,10 @@ public class Digester
      *
      * @param ruleSet The RuleSet instance to configure from
      */
-    public void addRuleSet( RuleSet ruleSet )
+    public void addRuleSet( final RuleSet ruleSet )
     {
-        String oldNamespaceURI = getRuleNamespaceURI();
-        String newNamespaceURI = ruleSet.getNamespaceURI();
+        final String oldNamespaceURI = getRuleNamespaceURI();
+        final String newNamespaceURI = ruleSet.getNamespaceURI();
         if ( log.isDebugEnabled() )
         {
             if ( newNamespaceURI == null )
@@ -2047,7 +2047,7 @@ public class Digester
      * @param pattern Element matching pattern
      * @see BeanPropertySetterRule
      */
-    public void addBeanPropertySetter( String pattern )
+    public void addBeanPropertySetter( final String pattern )
     {
         addRule( pattern, new BeanPropertySetterRule() );
     }
@@ -2059,7 +2059,7 @@ public class Digester
      * @param propertyName Name of property to set
      * @see BeanPropertySetterRule
      */
-    public void addBeanPropertySetter( String pattern, String propertyName )
+    public void addBeanPropertySetter( final String pattern, final String propertyName )
     {
         addRule( pattern, new BeanPropertySetterRule( propertyName ) );
     }
@@ -2071,7 +2071,7 @@ public class Digester
      * @param methodName Method name to be called
      * @see CallMethodRule
      */
-    public void addCallMethod( String pattern, String methodName )
+    public void addCallMethod( final String pattern, final String methodName )
     {
         addRule( pattern, new CallMethodRule( methodName ) );
     }
@@ -2084,7 +2084,7 @@ public class Digester
      * @param paramCount Number of expected parameters (or zero for a single parameter from the body of this element)
      * @see CallMethodRule
      */
-    public void addCallMethod( String pattern, String methodName, int paramCount )
+    public void addCallMethod( final String pattern, final String methodName, final int paramCount )
     {
         addRule( pattern, new CallMethodRule( methodName, paramCount ) );
     }
@@ -2102,7 +2102,7 @@ public class Digester
      *            <code>java.lang.Boolean</code> for a <code>boolean</code> parameter)
      * @see CallMethodRule
      */
-    public void addCallMethod( String pattern, String methodName, int paramCount, String paramTypes[] )
+    public void addCallMethod( final String pattern, final String methodName, final int paramCount, final String paramTypes[] )
     {
         addRule( pattern, new CallMethodRule( methodName, paramCount, paramTypes ) );
     }
@@ -2120,7 +2120,7 @@ public class Digester
      *            <code>boolean</code> parameter)
      * @see CallMethodRule
      */
-    public void addCallMethod( String pattern, String methodName, int paramCount, Class<?> paramTypes[] )
+    public void addCallMethod( final String pattern, final String methodName, final int paramCount, final Class<?> paramTypes[] )
     {
         addRule( pattern, new CallMethodRule( methodName, paramCount, paramTypes ) );
     }
@@ -2132,7 +2132,7 @@ public class Digester
      * @param paramIndex Zero-relative parameter index to set (from the body of this element)
      * @see CallParamRule
      */
-    public void addCallParam( String pattern, int paramIndex )
+    public void addCallParam( final String pattern, final int paramIndex )
     {
         addRule( pattern, new CallParamRule( paramIndex ) );
     }
@@ -2145,7 +2145,7 @@ public class Digester
      * @param attributeName Attribute whose value is used as the parameter value
      * @see CallParamRule
      */
-    public void addCallParam( String pattern, int paramIndex, String attributeName )
+    public void addCallParam( final String pattern, final int paramIndex, final String attributeName )
     {
         addRule( pattern, new CallParamRule( paramIndex, attributeName ) );
     }
@@ -2159,7 +2159,7 @@ public class Digester
      * @param fromStack Should the call parameter be taken from the top of the stack?
      * @see CallParamRule
      */
-    public void addCallParam( String pattern, int paramIndex, boolean fromStack )
+    public void addCallParam( final String pattern, final int paramIndex, final boolean fromStack )
     {
         addRule( pattern, new CallParamRule( paramIndex, fromStack ) );
     }
@@ -2174,7 +2174,7 @@ public class Digester
      *            stack, 1 the next element down and so on
      * @see CallMethodRule
      */
-    public void addCallParam( String pattern, int paramIndex, int stackIndex )
+    public void addCallParam( final String pattern, final int paramIndex, final int stackIndex )
     {
         addRule( pattern, new CallParamRule( paramIndex, stackIndex ) );
     }
@@ -2187,7 +2187,7 @@ public class Digester
      * @param paramIndex The zero-relative parameter number
      * @see CallMethodRule
      */
-    public void addCallParamPath( String pattern, int paramIndex )
+    public void addCallParamPath( final String pattern, final int paramIndex )
     {
         addRule( pattern, new PathCallParamRule( paramIndex ) );
     }
@@ -2207,7 +2207,7 @@ public class Digester
      * @see CallMethodRule
      * @since 1.6
      */
-    public void addObjectParam( String pattern, int paramIndex, Object paramObj )
+    public void addObjectParam( final String pattern, final int paramIndex, final Object paramObj )
     {
         addRule( pattern, new ObjectParamRule( paramIndex, paramObj ) );
     }
@@ -2220,7 +2220,7 @@ public class Digester
      * @param className Java class name of the object creation factory class
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, String className )
+    public void addFactoryCreate( final String pattern, final String className )
     {
         addFactoryCreate( pattern, className, false );
     }
@@ -2233,7 +2233,7 @@ public class Digester
      * @param clazz Java class of the object creation factory class
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, Class<? extends ObjectCreationFactory<?>> clazz )
+    public void addFactoryCreate( final String pattern, final Class<? extends ObjectCreationFactory<?>> clazz )
     {
         addFactoryCreate( pattern, clazz, false );
     }
@@ -2247,7 +2247,7 @@ public class Digester
      * @param attributeName Attribute name which, if present, overrides the value specified by <code>className</code>
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, String className, String attributeName )
+    public void addFactoryCreate( final String pattern, final String className, final String attributeName )
     {
         addFactoryCreate( pattern, className, attributeName, false );
     }
@@ -2261,8 +2261,8 @@ public class Digester
      * @param attributeName Attribute name which, if present, overrides the value specified by <code>className</code>
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, Class<? extends ObjectCreationFactory<?>> clazz,
-                                  String attributeName )
+    public void addFactoryCreate( final String pattern, final Class<? extends ObjectCreationFactory<?>> clazz,
+                                  final String attributeName )
     {
         addFactoryCreate( pattern, clazz, attributeName, false );
     }
@@ -2275,7 +2275,7 @@ public class Digester
      * @param creationFactory Previously instantiated ObjectCreationFactory to be utilized
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, ObjectCreationFactory<?> creationFactory )
+    public void addFactoryCreate( final String pattern, final ObjectCreationFactory<?> creationFactory )
     {
         addFactoryCreate( pattern, creationFactory, false );
     }
@@ -2289,7 +2289,7 @@ public class Digester
      *            ignored.
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, String className, boolean ignoreCreateExceptions )
+    public void addFactoryCreate( final String pattern, final String className, final boolean ignoreCreateExceptions )
     {
         addRule( pattern, new FactoryCreateRule( className, ignoreCreateExceptions ) );
     }
@@ -2303,8 +2303,8 @@ public class Digester
      *            ignored.
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, Class<? extends ObjectCreationFactory<?>> clazz,
-                                  boolean ignoreCreateExceptions )
+    public void addFactoryCreate( final String pattern, final Class<? extends ObjectCreationFactory<?>> clazz,
+                                  final boolean ignoreCreateExceptions )
     {
         addRule( pattern, new FactoryCreateRule( clazz, ignoreCreateExceptions ) );
     }
@@ -2319,8 +2319,8 @@ public class Digester
      *            ignored.
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, String className, String attributeName,
-                                  boolean ignoreCreateExceptions )
+    public void addFactoryCreate( final String pattern, final String className, final String attributeName,
+                                  final boolean ignoreCreateExceptions )
     {
         addRule( pattern, new FactoryCreateRule( className, attributeName, ignoreCreateExceptions ) );
     }
@@ -2335,8 +2335,8 @@ public class Digester
      *            ignored.
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, Class<? extends ObjectCreationFactory<?>> clazz,
-                                  String attributeName, boolean ignoreCreateExceptions )
+    public void addFactoryCreate( final String pattern, final Class<? extends ObjectCreationFactory<?>> clazz,
+                                  final String attributeName, final boolean ignoreCreateExceptions )
     {
         addRule( pattern, new FactoryCreateRule( clazz, attributeName, ignoreCreateExceptions ) );
     }
@@ -2350,8 +2350,8 @@ public class Digester
      *            ignored.
      * @see FactoryCreateRule
      */
-    public void addFactoryCreate( String pattern, ObjectCreationFactory<?> creationFactory,
-                                  boolean ignoreCreateExceptions )
+    public void addFactoryCreate( final String pattern, final ObjectCreationFactory<?> creationFactory,
+                                  final boolean ignoreCreateExceptions )
     {
         creationFactory.setDigester( this );
         addRule( pattern, new FactoryCreateRule( creationFactory, ignoreCreateExceptions ) );
@@ -2364,7 +2364,7 @@ public class Digester
      * @param className Java class name to be created
      * @see ObjectCreateRule
      */
-    public void addObjectCreate( String pattern, String className )
+    public void addObjectCreate( final String pattern, final String className )
     {
         addRule( pattern, new ObjectCreateRule( className ) );
     }
@@ -2376,7 +2376,7 @@ public class Digester
      * @param clazz Java class to be created
      * @see ObjectCreateRule
      */
-    public void addObjectCreate( String pattern, Class<?> clazz )
+    public void addObjectCreate( final String pattern, final Class<?> clazz )
     {
         addRule( pattern, new ObjectCreateRule( clazz ) );
     }
@@ -2389,7 +2389,7 @@ public class Digester
      * @param attributeName Attribute name that optionally overrides the default Java class name to be created
      * @see ObjectCreateRule
      */
-    public void addObjectCreate( String pattern, String className, String attributeName )
+    public void addObjectCreate( final String pattern, final String className, final String attributeName )
     {
         addRule( pattern, new ObjectCreateRule( className, attributeName ) );
     }
@@ -2402,7 +2402,7 @@ public class Digester
      * @param clazz Default Java class to be created the default Java class name to be created
      * @see ObjectCreateRule
      */
-    public void addObjectCreate( String pattern, String attributeName, Class<?> clazz )
+    public void addObjectCreate( final String pattern, final String attributeName, final Class<?> clazz )
     {
         addRule( pattern, new ObjectCreateRule( attributeName, clazz ) );
     }
@@ -2413,7 +2413,7 @@ public class Digester
      * @param pattern register the rule with this pattern
      * @since 1.6
      */
-    public void addSetNestedProperties( String pattern )
+    public void addSetNestedProperties( final String pattern )
     {
         addRule( pattern, new SetNestedPropertiesRule() );
     }
@@ -2426,7 +2426,7 @@ public class Digester
      * @param propertyName property name of the element mapped from
      * @since 1.6
      */
-    public void addSetNestedProperties( String pattern, String elementName, String propertyName )
+    public void addSetNestedProperties( final String pattern, final String elementName, final String propertyName )
     {
         addRule( pattern, new SetNestedPropertiesRule( elementName, propertyName ) );
     }
@@ -2439,7 +2439,7 @@ public class Digester
      * @param propertyNames property names that (in order) elements are mapped to
      * @since 1.6
      */
-    public void addSetNestedProperties( String pattern, String[] elementNames, String[] propertyNames )
+    public void addSetNestedProperties( final String pattern, final String[] elementNames, final String[] propertyNames )
     {
         addRule( pattern, new SetNestedPropertiesRule( elementNames, propertyNames ) );
     }
@@ -2451,7 +2451,7 @@ public class Digester
      * @param methodName Method name to call on the parent element
      * @see SetNextRule
      */
-    public void addSetNext( String pattern, String methodName )
+    public void addSetNext( final String pattern, final String methodName )
     {
         addRule( pattern, new SetNextRule( methodName ) );
     }
@@ -2466,7 +2466,7 @@ public class Digester
      *            <code>boolean</code> parameter)
      * @see SetNextRule
      */
-    public void addSetNext( String pattern, String methodName, String paramType )
+    public void addSetNext( final String pattern, final String methodName, final String paramType )
     {
         addRule( pattern, new SetNextRule( methodName, paramType ) );
     }
@@ -2478,7 +2478,7 @@ public class Digester
      * @param methodName Method name to call on the root object
      * @see SetRootRule
      */
-    public void addSetRoot( String pattern, String methodName )
+    public void addSetRoot( final String pattern, final String methodName )
     {
         addRule( pattern, new SetRootRule( methodName ) );
     }
@@ -2491,7 +2491,7 @@ public class Digester
      * @param paramType Java class name of the expected parameter type
      * @see SetRootRule
      */
-    public void addSetRoot( String pattern, String methodName, String paramType )
+    public void addSetRoot( final String pattern, final String methodName, final String paramType )
     {
         addRule( pattern, new SetRootRule( methodName, paramType ) );
     }
@@ -2502,7 +2502,7 @@ public class Digester
      * @param pattern Element matching pattern
      * @see SetPropertiesRule
      */
-    public void addSetProperties( String pattern )
+    public void addSetProperties( final String pattern )
     {
         addRule( pattern, new SetPropertiesRule() );
     }
@@ -2516,7 +2516,7 @@ public class Digester
      * @param propertyName to this property
      * @see SetPropertiesRule
      */
-    public void addSetProperties( String pattern, String attributeName, String propertyName )
+    public void addSetProperties( final String pattern, final String attributeName, final String propertyName )
     {
         addRule( pattern, new SetPropertiesRule( attributeName, propertyName ) );
     }
@@ -2530,7 +2530,7 @@ public class Digester
      * @param propertyNames property names these attributes map to
      * @see SetPropertiesRule
      */
-    public void addSetProperties( String pattern, String[] attributeNames, String[] propertyNames )
+    public void addSetProperties( final String pattern, final String[] attributeNames, final String[] propertyNames )
     {
         addRule( pattern, new SetPropertiesRule( attributeNames, propertyNames ) );
     }
@@ -2543,7 +2543,7 @@ public class Digester
      * @param value Attribute name containing the property value to set
      * @see SetPropertyRule
      */
-    public void addSetProperty( String pattern, String name, String value )
+    public void addSetProperty( final String pattern, final String name, final String value )
     {
         addRule( pattern, new SetPropertyRule( name, value ) );
     }
@@ -2555,7 +2555,7 @@ public class Digester
      * @param methodName Method name to call on the parent element
      * @see SetTopRule
      */
-    public void addSetTop( String pattern, String methodName )
+    public void addSetTop( final String pattern, final String methodName )
     {
         addRule( pattern, new SetTopRule( methodName ) );
     }
@@ -2570,7 +2570,7 @@ public class Digester
      *            <code>boolean</code> parameter)
      * @see SetTopRule
      */
-    public void addSetTop( String pattern, String methodName, String paramType )
+    public void addSetTop( final String pattern, final String methodName, final String paramType )
     {
         addRule( pattern, new SetTopRule( methodName, paramType ) );
     }
@@ -2614,7 +2614,7 @@ public class Digester
         {
             return this.<T> npeSafeCast( stack.peek() );
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             log.warn( "Empty stack (returning null)" );
             return ( null );
@@ -2629,9 +2629,9 @@ public class Digester
      * @param n Index of the desired element, where 0 is the top of the stack, 1 is the next element down, and so on.
      * @return the n'th object down the stack
      */
-    public <T> T peek( int n )
+    public <T> T peek( final int n )
     {
-        int index = ( stack.size() - 1 ) - n;
+        final int index = ( stack.size() - 1 ) - n;
         if ( index < 0 )
         {
             log.warn( "Empty stack (returning null)" );
@@ -2641,7 +2641,7 @@ public class Digester
         {
             return this.<T> npeSafeCast( stack.get( index ) );
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             log.warn( "Empty stack (returning null)" );
             return ( null );
@@ -2666,7 +2666,7 @@ public class Digester
             }
             return popped;
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             log.warn( "Empty stack (returning null)" );
             return ( null );
@@ -2702,7 +2702,7 @@ public class Digester
      * @param value the Object to be pushed onto the named stack.
      * @since 1.6
      */
-    public <T> void push( String stackName, T value )
+    public <T> void push( final String stackName, T value )
     {
         if ( stackAction != null )
         {
@@ -2732,9 +2732,9 @@ public class Digester
      *         if the stack is either empty or has not been created yet
      * @since 1.6
      */
-    public <T> T pop( String stackName )
+    public <T> T pop( final String stackName )
     {
-        Stack<Object> namedStack = stacksByName.get( stackName );
+        final Stack<Object> namedStack = stacksByName.get( stackName );
         if ( namedStack == null )
         {
             if ( log.isDebugEnabled() )
@@ -2767,7 +2767,7 @@ public class Digester
      * @return the top <code>Object</code> on the stack or null if the stack is either empty or has not been created yet
      * @since 1.6
      */
-    public <T> T peek( String stackName )
+    public <T> T peek( final String stackName )
     {
         return this.<T> npeSafeCast( peek( stackName, 0 ) );
     }
@@ -2786,10 +2786,10 @@ public class Digester
      * @return the specified <code>Object</code> on the stack.
      * @since 1.6
      */
-    public <T> T peek( String stackName, int n )
+    public <T> T peek( final String stackName, final int n )
     {
         T result;
-        Stack<Object> namedStack = stacksByName.get( stackName );
+        final Stack<Object> namedStack = stacksByName.get( stackName );
         if ( namedStack == null )
         {
             if ( log.isDebugEnabled() )
@@ -2799,7 +2799,7 @@ public class Digester
             throw new EmptyStackException();
         }
 
-        int index = ( namedStack.size() - 1 ) - n;
+        final int index = ( namedStack.size() - 1 ) - n;
         if ( index < 0 )
         {
             throw new EmptyStackException();
@@ -2821,10 +2821,10 @@ public class Digester
      * @return true if the given stack if empty
      * @since 1.6
      */
-    public boolean isEmpty( String stackName )
+    public boolean isEmpty( final String stackName )
     {
         boolean result = true;
-        Stack<Object> namedStack = stacksByName.get( stackName );
+        final Stack<Object> namedStack = stacksByName.get( stackName );
         if ( namedStack != null )
         {
             result = namedStack.isEmpty();
@@ -2888,13 +2888,13 @@ public class Digester
     {
         // If we created any InputSource objects in this instance,
         // they each have an input stream that should be closed
-        for ( InputSource source : inputSources )
+        for ( final InputSource source : inputSources )
         {
             try
             {
                 source.getByteStream().close();
             }
-            catch ( IOException e )
+            catch ( final IOException e )
             {
                 // Fall through so we get them all
                 if ( log.isWarnEnabled() )
@@ -2993,7 +2993,7 @@ public class Digester
         {
             return ( params.peek() );
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             log.warn( "Empty stack (returning null)" );
             return ( null );
@@ -3012,9 +3012,9 @@ public class Digester
      * @param n Index of the desired element, where 0 is the top of the stack, 1 is the next element down, and so on.
      * @return the n'th object down the parameters stack
      */
-    public Object[] peekParams( int n )
+    public Object[] peekParams( final int n )
     {
-        int index = ( params.size() - 1 ) - n;
+        final int index = ( params.size() - 1 ) - n;
         if ( index < 0 )
         {
             log.warn( "Empty stack (returning null)" );
@@ -3024,7 +3024,7 @@ public class Digester
         {
             return ( params.get( index ) );
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             log.warn( "Empty stack (returning null)" );
             return ( null );
@@ -3052,7 +3052,7 @@ public class Digester
             }
             return ( params.pop() );
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             log.warn( "Empty stack (returning null)" );
             return ( null );
@@ -3069,7 +3069,7 @@ public class Digester
      *
      * @param object The new object
      */
-    public void pushParams( Object... object )
+    public void pushParams( final Object... object )
     {
         if ( log.isTraceEnabled() )
         {
@@ -3085,11 +3085,11 @@ public class Digester
      * @param e the exception cause
      * @return the new SAX exception
      */
-    public SAXException createSAXException( String message, Exception e )
+    public SAXException createSAXException( final String message, Exception e )
     {
         if ( ( e != null ) && ( e instanceof InvocationTargetException ) )
         {
-            Throwable t = ( (InvocationTargetException) e ).getTargetException();
+            final Throwable t = ( (InvocationTargetException) e ).getTargetException();
             if ( ( t != null ) && ( t instanceof Exception ) )
             {
                 e = (Exception) t;
@@ -3097,7 +3097,7 @@ public class Digester
         }
         if ( locator != null )
         {
-            String error =
+            final String error =
                 "Error at line " + locator.getLineNumber() + " char " + locator.getColumnNumber() + ": " + message;
             if ( e != null )
             {
@@ -3123,7 +3123,7 @@ public class Digester
     {
         if ( e instanceof InvocationTargetException )
         {
-            Throwable t = ( (InvocationTargetException) e ).getTargetException();
+            final Throwable t = ( (InvocationTargetException) e ).getTargetException();
             if ( ( t != null ) && ( t instanceof Exception ) )
             {
                 e = (Exception) t;
@@ -3138,7 +3138,7 @@ public class Digester
      * @param message the custom SAX exception message
      * @return the new SAX exception
      */
-    public SAXException createSAXException( String message )
+    public SAXException createSAXException( final String message )
     {
         return createSAXException( message, null );
     }
@@ -3151,7 +3151,7 @@ public class Digester
      * @param obj the object has to be cast.
      * @return the casted object, if input object is not null, null otherwise.
      */
-    private <T> T npeSafeCast( Object obj )
+    private <T> T npeSafeCast( final Object obj )
     {
         if ( obj == null )
         {
@@ -3159,6 +3159,7 @@ public class Digester
         }
 
         @SuppressWarnings( "unchecked" )
+        final
         T result = (T) obj;
         return result;
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/ExtendedBaseRules.java b/core/src/main/java/org/apache/commons/digester3/ExtendedBaseRules.java
index 2f9446f..f1c6bba 100644
--- a/core/src/main/java/org/apache/commons/digester3/ExtendedBaseRules.java
+++ b/core/src/main/java/org/apache/commons/digester3/ExtendedBaseRules.java
@@ -164,7 +164,7 @@ public class ExtendedBaseRules
      * {@inheritDoc}
      */
     @Override
-    protected void registerRule( String pattern, Rule rule )
+    protected void registerRule( final String pattern, final Rule rule )
     {
         super.registerRule( pattern, rule );
         counter++;
@@ -175,12 +175,12 @@ public class ExtendedBaseRules
      * {@inheritDoc}
      */
     @Override
-    public List<Rule> match( String namespaceURI, String pattern, String name, Attributes attributes )
+    public List<Rule> match( final String namespaceURI, final String pattern, final String name, final Attributes attributes )
     {
         // calculate the pattern of the parent
         // (if the element has one)
         String parentPattern = "";
-        int lastIndex = pattern.lastIndexOf( '/' );
+        final int lastIndex = pattern.lastIndexOf( '/' );
 
         boolean hasParent = true;
         if ( lastIndex == -1 )
@@ -195,7 +195,7 @@ public class ExtendedBaseRules
         }
 
         // we keep the list of universal matches separate
-        List<Rule> universalList = new ArrayList<Rule>( counter );
+        final List<Rule> universalList = new ArrayList<Rule>( counter );
 
         // Universal wildcards ('*') in the middle of the pattern-string
         List<Rule> recList = null;
@@ -299,7 +299,7 @@ public class ExtendedBaseRules
 
             // find out if it's a univeral pattern
             // set a flag
-            boolean isUniversal = key.startsWith( "!" );
+            final boolean isUniversal = key.startsWith( "!" );
             if ( isUniversal )
             {
                 // and find the underlying key
@@ -307,8 +307,8 @@ public class ExtendedBaseRules
             }
 
             // don't need to check exact matches
-            boolean wildcardMatchStart = key.startsWith( "*/" );
-            boolean wildcardMatchEnd = key.endsWith( "/*" );
+            final boolean wildcardMatchStart = key.startsWith( "*/" );
+            final boolean wildcardMatchEnd = key.endsWith( "/*" );
             if ( wildcardMatchStart || ( isUniversal && wildcardMatchEnd ) )
             {
 
@@ -316,7 +316,7 @@ public class ExtendedBaseRules
                 boolean basicMatched = false;
                 boolean ancesterMatched = false;
 
-                boolean parentMatchEnd = key.endsWith( "/?" );
+                final boolean parentMatchEnd = key.endsWith( "/?" );
                 if ( parentMatchEnd )
                 {
                     // try for a parent match
@@ -328,7 +328,7 @@ public class ExtendedBaseRules
                     // check for ancester match
                     if ( wildcardMatchStart )
                     {
-                        String patternBody = key.substring( 2, key.length() - 2 );
+                        final String patternBody = key.substring( 2, key.length() - 2 );
                         if ( pattern.endsWith( patternBody ) )
                         {
                             ancesterMatched = true;
@@ -340,7 +340,7 @@ public class ExtendedBaseRules
                     }
                     else
                     {
-                        String bodyPattern = key.substring( 0, key.length() - 2 );
+                        final String bodyPattern = key.substring( 0, key.length() - 2 );
                         if ( pattern.startsWith( bodyPattern ) )
                         {
                             if ( pattern.length() == bodyPattern.length() )
@@ -430,11 +430,11 @@ public class ExtendedBaseRules
         if ( namespaceURI != null )
         {
             // remove invalid namespaces
-            Iterator<Rule> it = universalList.iterator();
+            final Iterator<Rule> it = universalList.iterator();
             while ( it.hasNext() )
             {
-                Rule rule = it.next();
-                String nsUri = rule.getNamespaceURI();
+                final Rule rule = it.next();
+                final String nsUri = rule.getNamespaceURI();
                 if ( nsUri != null && !nsUri.equals( namespaceURI ) )
                 {
                     it.remove();
@@ -447,11 +447,11 @@ public class ExtendedBaseRules
         Collections.sort( universalList, new Comparator<Rule>()
         {
 
-            public int compare( Rule r1, Rule r2 )
+            public int compare( final Rule r1, final Rule r2 )
             {
                 // Get the entry order from the map
-                Integer i1 = order.get( r1 );
-                Integer i2 = order.get( r2 );
+                final Integer i1 = order.get( r1 );
+                final Integer i2 = order.get( r2 );
 
                 // and use that to perform the comparison
                 if ( i1 == null )
@@ -483,7 +483,7 @@ public class ExtendedBaseRules
      * @param parentPattern The pattern where looking for the key
      * @return true, if {@code key} is found inside {@code parentPattern}, false otherwise
      */
-    private boolean parentMatch( String key, String parentPattern )
+    private boolean parentMatch( final String key, final String parentPattern )
     {
         return parentPattern.endsWith( key.substring( 1, key.length() - 2 ) );
     }
@@ -495,7 +495,7 @@ public class ExtendedBaseRules
      * @param pattern The pattern where looking for the key
      * @return true, if {@code key} is found inside {@code pattern}, false otherwise
      */
-    private boolean basicMatch( String key, String pattern )
+    private boolean basicMatch( final String key, final String pattern )
     {
         return ( pattern.equals( key.substring( 2 ) ) || pattern.endsWith( key.substring( 1 ) ) );
     }
@@ -506,7 +506,7 @@ public class ExtendedBaseRules
      * @param parentPattern The input pattern
      * @return A list of {@code Rule} related to the input pattern
      */
-    private List<Rule> findExactAncesterMatch( String parentPattern )
+    private List<Rule> findExactAncesterMatch( final String parentPattern )
     {
         List<Rule> matchingRules = null;
         int lastIndex = parentPattern.length();
diff --git a/core/src/main/java/org/apache/commons/digester3/FactoryCreateRule.java b/core/src/main/java/org/apache/commons/digester3/FactoryCreateRule.java
index 69c734e..1a6856e 100644
--- a/core/src/main/java/org/apache/commons/digester3/FactoryCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/FactoryCreateRule.java
@@ -61,7 +61,7 @@ public class FactoryCreateRule
      *
      * @param className Java class name of the object creation factory class
      */
-    public FactoryCreateRule( String className )
+    public FactoryCreateRule( final String className )
     {
         this( className, false );
     }
@@ -77,7 +77,7 @@ public class FactoryCreateRule
      *
      * @param clazz Java class name of the object creation factory class
      */
-    public FactoryCreateRule( Class<? extends ObjectCreationFactory<?>> clazz )
+    public FactoryCreateRule( final Class<? extends ObjectCreationFactory<?>> clazz )
     {
         this( clazz, false );
     }
@@ -96,7 +96,7 @@ public class FactoryCreateRule
      * @param attributeName Attribute name which, if present, contains an override of the class name of the object
      *            creation factory to create.
      */
-    public FactoryCreateRule( String className, String attributeName )
+    public FactoryCreateRule( final String className, final String attributeName )
     {
         this( className, attributeName, false );
     }
@@ -115,7 +115,7 @@ public class FactoryCreateRule
      * @param attributeName Attribute name which, if present, contains an override of the class name of the object
      *            creation factory to create.
      */
-    public FactoryCreateRule( Class<? extends ObjectCreationFactory<?>> clazz, String attributeName )
+    public FactoryCreateRule( final Class<? extends ObjectCreationFactory<?>> clazz, final String attributeName )
     {
         this( clazz, attributeName, false );
     }
@@ -130,7 +130,7 @@ public class FactoryCreateRule
      *
      * @param creationFactory called on to create the object.
      */
-    public FactoryCreateRule( ObjectCreationFactory<?> creationFactory )
+    public FactoryCreateRule( final ObjectCreationFactory<?> creationFactory )
     {
         this( creationFactory, false );
     }
@@ -142,7 +142,7 @@ public class FactoryCreateRule
      * @param className Java class name of the object creation factory class
      * @param ignoreCreateExceptions if true, exceptions thrown by the object creation factory will be ignored.
      */
-    public FactoryCreateRule( String className, boolean ignoreCreateExceptions )
+    public FactoryCreateRule( final String className, final boolean ignoreCreateExceptions )
     {
         this( className, null, ignoreCreateExceptions );
     }
@@ -154,7 +154,7 @@ public class FactoryCreateRule
      * @param clazz Java class name of the object creation factory class
      * @param ignoreCreateExceptions if true, exceptions thrown by the object creation factory will be ignored.
      */
-    public FactoryCreateRule( Class<? extends ObjectCreationFactory<?>> clazz, boolean ignoreCreateExceptions )
+    public FactoryCreateRule( final Class<? extends ObjectCreationFactory<?>> clazz, final boolean ignoreCreateExceptions )
     {
         this( clazz, null, ignoreCreateExceptions );
     }
@@ -169,7 +169,7 @@ public class FactoryCreateRule
      *            creation factory to create.
      * @param ignoreCreateExceptions if true, exceptions thrown by the object creation factory will be ignored.
      */
-    public FactoryCreateRule( String className, String attributeName, boolean ignoreCreateExceptions )
+    public FactoryCreateRule( final String className, final String attributeName, final boolean ignoreCreateExceptions )
     {
         this.className = className;
         this.attributeName = attributeName;
@@ -186,8 +186,8 @@ public class FactoryCreateRule
      *            creation factory to create.
      * @param ignoreCreateExceptions if true, exceptions thrown by the object creation factory will be ignored.
      */
-    public FactoryCreateRule( Class<? extends ObjectCreationFactory<?>> clazz, String attributeName,
-                              boolean ignoreCreateExceptions )
+    public FactoryCreateRule( final Class<? extends ObjectCreationFactory<?>> clazz, final String attributeName,
+                              final boolean ignoreCreateExceptions )
     {
         this( clazz.getName(), attributeName, ignoreCreateExceptions );
     }
@@ -198,7 +198,7 @@ public class FactoryCreateRule
      * @param creationFactory called on to create the object.
      * @param ignoreCreateExceptions if true, exceptions thrown by the object creation factory will be ignored.
      */
-    public FactoryCreateRule( ObjectCreationFactory<?> creationFactory, boolean ignoreCreateExceptions )
+    public FactoryCreateRule( final ObjectCreationFactory<?> creationFactory, final boolean ignoreCreateExceptions )
     {
         this.creationFactory = creationFactory;
         this.ignoreCreateExceptions = ignoreCreateExceptions;
@@ -228,7 +228,7 @@ public class FactoryCreateRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         if ( ignoreCreateExceptions )
@@ -240,7 +240,7 @@ public class FactoryCreateRule
 
             try
             {
-                Object instance = getFactory( attributes ).createObject( attributes );
+                final Object instance = getFactory( attributes ).createObject( attributes );
 
                 if ( getDigester().getLogger().isDebugEnabled() )
                 {
@@ -253,7 +253,7 @@ public class FactoryCreateRule
                 exceptionIgnoredStack.push( Boolean.FALSE );
 
             }
-            catch ( Exception e )
+            catch ( final Exception e )
             {
                 // log message and error
                 if ( getDigester().getLogger().isInfoEnabled() )
@@ -273,7 +273,7 @@ public class FactoryCreateRule
         }
         else
         {
-            Object instance = getFactory( attributes ).createObject( attributes );
+            final Object instance = getFactory( attributes ).createObject( attributes );
 
             if ( getDigester().getLogger().isDebugEnabled() )
             {
@@ -290,7 +290,7 @@ public class FactoryCreateRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         // check if object was created
@@ -310,7 +310,7 @@ public class FactoryCreateRule
             return;
         }
 
-        Object top = getDigester().pop();
+        final Object top = getDigester().pop();
         if ( getDigester().getLogger().isDebugEnabled() )
         {
             getDigester().getLogger().debug( format( "[FactoryCreateRule]{%s} Pop %s",
@@ -338,7 +338,7 @@ public class FactoryCreateRule
     @Override
     public String toString()
     {
-        Formatter formatter = new Formatter().format( "FactoryCreateRule[className=%s, attributeName=%s",
+        final Formatter formatter = new Formatter().format( "FactoryCreateRule[className=%s, attributeName=%s",
                                                       className, attributeName );
         if ( creationFactory != null )
         {
@@ -357,7 +357,7 @@ public class FactoryCreateRule
      * @return An instance of our associated object creation factory, creating one if necessary
      * @throws Exception if any error occurs
      */
-    protected ObjectCreationFactory<?> getFactory( Attributes attributes )
+    protected ObjectCreationFactory<?> getFactory( final Attributes attributes )
         throws Exception
     {
         if ( creationFactory == null )
@@ -365,7 +365,7 @@ public class FactoryCreateRule
             String realClassName = className;
             if ( attributeName != null )
             {
-                String value = attributes.getValue( attributeName );
+                final String value = attributes.getValue( attributeName );
                 if ( value != null )
                 {
                     realClassName = value;
@@ -376,7 +376,7 @@ public class FactoryCreateRule
                 getDigester().getLogger().debug( format( "[FactoryCreateRule]{%s} New factory %s",
                                                          getDigester().getMatch(), realClassName ) );
             }
-            Class<?> clazz = getDigester().getClassLoader().loadClass( realClassName );
+            final Class<?> clazz = getDigester().getClassLoader().loadClass( realClassName );
             creationFactory = (ObjectCreationFactory<?>) clazz.newInstance();
             creationFactory.setDigester( getDigester() );
         }
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 241b7cb..cc5b619 100644
--- a/core/src/main/java/org/apache/commons/digester3/NodeCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/NodeCreateRule.java
@@ -88,7 +88,7 @@ public class NodeCreateRule
          * @throws ParserConfigurationException if the DocumentBuilderFactory could not be instantiated
          * @throws SAXException if the XMLReader could not be instantiated by Digester (should not happen)
          */
-        public NodeBuilder( Document doc, Node root )
+        public NodeBuilder( final Document doc, final Node root )
             throws ParserConfigurationException, SAXException
         {
             this.doc = doc;
@@ -141,7 +141,7 @@ public class NodeCreateRule
         {
             if ( topText.length() > 0 )
             {
-                String str = topText.toString();
+                final String str = topText.toString();
                 topText.setLength( 0 );
 
                 if ( str.trim().length() > 0 )
@@ -153,7 +153,7 @@ public class NodeCreateRule
                     {
                         top.appendChild( doc.createTextNode( str ) );
                     }
-                    catch ( DOMException e )
+                    catch ( final DOMException e )
                     {
                         throw new SAXException( e.getMessage() );
                     }
@@ -184,7 +184,7 @@ public class NodeCreateRule
          * @throws SAXException if the DOM implementation throws an exception
          */
         @Override
-        public void characters( char[] ch, int start, int length )
+        public void characters( final char[] ch, final int start, final int length )
             throws SAXException
         {
             topText.append( ch, start, length );
@@ -199,7 +199,7 @@ public class NodeCreateRule
          * @throws SAXException if the DOM implementation throws an exception
          */
         @Override
-        public void endElement( String namespaceURI, String localName, String qName )
+        public void endElement( final String namespaceURI, final String localName, final String qName )
             throws SAXException
         {
             addTextIfPresent();
@@ -216,7 +216,7 @@ public class NodeCreateRule
                 top = top.getParentNode();
                 depth--;
             }
-            catch ( DOMException e )
+            catch ( final DOMException e )
             {
                 throw new SAXException( e.getMessage() );
             }
@@ -230,14 +230,14 @@ public class NodeCreateRule
          * @throws SAXException if the DOM implementation throws an exception
          */
         @Override
-        public void processingInstruction( String target, String data )
+        public void processingInstruction( final String target, final String data )
             throws SAXException
         {
             try
             {
                 top.appendChild( doc.createProcessingInstruction( target, data ) );
             }
-            catch ( DOMException e )
+            catch ( final DOMException e )
             {
                 throw new SAXException( e.getMessage() );
             }
@@ -253,14 +253,14 @@ public class NodeCreateRule
          * @throws SAXException if the DOM implementation throws an exception
          */
         @Override
-        public void startElement( String namespaceURI, String localName, String qName, Attributes atts )
+        public void startElement( final String namespaceURI, final String localName, final String qName, final Attributes atts )
             throws SAXException
         {
             addTextIfPresent();
 
             try
             {
-                Node previousTop = top;
+                final Node previousTop = top;
                 if ( ( localName == null ) || ( localName.length() == 0 ) )
                 {
                     top = doc.createElement( qName );
@@ -288,7 +288,7 @@ public class NodeCreateRule
                 previousTop.appendChild( top );
                 depth++;
             }
-            catch ( DOMException e )
+            catch ( final DOMException e )
             {
                 throw new SAXException( e.getMessage() );
             }
@@ -316,7 +316,7 @@ public class NodeCreateRule
      * 
      * @param documentBuilder the JAXP <code>DocumentBuilder</code> to use
      */
-    public NodeCreateRule( DocumentBuilder documentBuilder )
+    public NodeCreateRule( final DocumentBuilder documentBuilder )
     {
         this( Node.ELEMENT_NODE, documentBuilder );
     }
@@ -332,7 +332,7 @@ public class NodeCreateRule
      *         configuration requested.
      * @see DocumentBuilderFactory#newDocumentBuilder()
      */
-    public NodeCreateRule( int nodeType )
+    public NodeCreateRule( final int nodeType )
         throws ParserConfigurationException
     {
         this( nodeType, DocumentBuilderFactory.newInstance().newDocumentBuilder() );
@@ -348,7 +348,7 @@ public class NodeCreateRule
      *            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
      */
-    public NodeCreateRule( int nodeType, DocumentBuilder documentBuilder )
+    public NodeCreateRule( final int nodeType, final DocumentBuilder documentBuilder )
     {
         if ( !( ( nodeType == Node.DOCUMENT_FRAGMENT_NODE ) || ( nodeType == Node.ELEMENT_NODE ) ) )
         {
@@ -387,10 +387,10 @@ public class NodeCreateRule
      * @throws Exception indicates a JAXP configuration problem
      */
     @Override
-    public void begin( String namespaceURI, String name, Attributes attributes )
+    public void begin( final String namespaceURI, final String name, final Attributes attributes )
         throws Exception
     {
-        Document doc = documentBuilder.newDocument();
+        final Document doc = documentBuilder.newDocument();
         NodeBuilder builder = null;
         if ( nodeType == Node.ELEMENT_NODE )
         {
@@ -429,7 +429,7 @@ public class NodeCreateRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         getDigester().pop();
diff --git a/core/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java b/core/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java
index ef98c45..1ea2b11 100644
--- a/core/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java
@@ -52,16 +52,16 @@ public class ObjectCreateRule
         ArrayList<RecordedInvocation> invocations = new ArrayList<RecordedInvocation>();
         Object delegate;
 
-        DeferredConstructionCallback( Constructor<?> constructor, Object[] constructorArgs )
+        DeferredConstructionCallback( final Constructor<?> constructor, final Object[] constructorArgs )
         {
             this.constructor = constructor;
             this.constructorArgs = constructorArgs;
         }
 
-        public Object intercept( Object obj, Method method, Object[] args, MethodProxy proxy )
+        public Object intercept( final Object obj, final Method method, final Object[] args, final MethodProxy proxy )
             throws Throwable
         {
-            boolean hasDelegate = delegate != null;
+            final boolean hasDelegate = delegate != null;
             if ( !hasDelegate )
             {
                 invocations.add( new RecordedInvocation( method, args ) );
@@ -78,7 +78,7 @@ public class ObjectCreateRule
         {
             convertTo( constructor.getParameterTypes(), constructorArgs );
             delegate = constructor.newInstance( constructorArgs );
-            for ( RecordedInvocation invocation : invocations )
+            for ( final RecordedInvocation invocation : invocations )
             {
                 invocation.getInvokedMethod().invoke( delegate, invocation.getArguments() );
             }
@@ -97,12 +97,12 @@ public class ObjectCreateRule
         private final boolean hasDefaultConstructor;
         private Factory factory;
 
-        ProxyManager( Class<?> clazz, Constructor<?> constructor, Object[] constructorArguments, Digester digester )
+        ProxyManager( final Class<?> clazz, final Constructor<?> constructor, final Object[] constructorArguments, final Digester digester )
         {
             this.clazz = clazz;
             hasDefaultConstructor = getAccessibleConstructor( clazz, new Class[0] ) != null;
             this.constructor = constructor;
-            Class<?>[] argTypes = constructor.getParameterTypes();
+            final Class<?>[] argTypes = constructor.getParameterTypes();
             templateConstructorArguments = new Object[argTypes.length];
             if ( constructorArguments == null )
             {
@@ -137,18 +137,18 @@ public class ObjectCreateRule
 
         Object createProxy()
         {
-            Object[] constructorArguments = new Object[templateConstructorArguments.length];
+            final Object[] constructorArguments = new Object[templateConstructorArguments.length];
             arraycopy( templateConstructorArguments, 0, constructorArguments, 0, constructorArguments.length );
             digester.pushParams( constructorArguments );
 
-            DeferredConstructionCallback callback =
+            final DeferredConstructionCallback callback =
                 new DeferredConstructionCallback( constructor, constructorArguments );
 
             Object result;
 
             if ( factory == null )
             {
-                Enhancer enhancer = new Enhancer();
+                final Enhancer enhancer = new Enhancer();
                 enhancer.setSuperclass( clazz );
                 enhancer.setCallback( callback );
                 enhancer.setClassLoader( digester.getClassLoader() );
@@ -177,7 +177,7 @@ public class ObjectCreateRule
             return result;
         }
 
-        void finalize( Object proxy )
+        void finalize( final Object proxy )
             throws Exception
         {
             digester.popParams();
@@ -192,7 +192,7 @@ public class ObjectCreateRule
      *
      * @param className Java class name of the object to be created
      */
-    public ObjectCreateRule( String className )
+    public ObjectCreateRule( final String className )
     {
         this( className, (String) null );
     }
@@ -202,7 +202,7 @@ public class ObjectCreateRule
      *
      * @param clazz Java class name of the object to be created
      */
-    public ObjectCreateRule( Class<?> clazz )
+    public ObjectCreateRule( final Class<?> clazz )
     {
         this( clazz.getName(), (String) null );
         this.clazz = clazz;
@@ -215,7 +215,7 @@ public class ObjectCreateRule
      * @param className Java class name of the object to be created
      * @param attributeName Attribute name which, if present, contains an override of the class name to create
      */
-    public ObjectCreateRule( String className, String attributeName )
+    public ObjectCreateRule( final String className, final String attributeName )
     {
         this.className = className;
         this.attributeName = attributeName;
@@ -227,7 +227,7 @@ public class ObjectCreateRule
      * @param attributeName Attribute name which, if present, contains an
      * @param clazz Java class name of the object to be created override of the class name to create
      */
-    public ObjectCreateRule( String attributeName, Class<?> clazz )
+    public ObjectCreateRule( final String attributeName, final Class<?> clazz )
     {
         this( clazz != null ? clazz.getName() : null, attributeName );
         this.clazz = clazz;
@@ -279,7 +279,7 @@ public class ObjectCreateRule
      * @param constructorArgumentTypes the constructor argument types
      * @since 3.2
      */
-    public void setConstructorArgumentTypes( Class<?>... constructorArgumentTypes )
+    public void setConstructorArgumentTypes( final Class<?>... constructorArgumentTypes )
     {
         if ( constructorArgumentTypes == null )
         {
@@ -298,7 +298,7 @@ public class ObjectCreateRule
      * @param constructorArguments the default constructor arguments.
      * @since 3.2
      */
-    public void setDefaultConstructorArguments( Object... constructorArguments )
+    public void setDefaultConstructorArguments( final Object... constructorArguments )
     {
         if ( constructorArguments == null )
         {
@@ -312,7 +312,7 @@ public class ObjectCreateRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         Class<?> clazz = this.clazz;
@@ -323,7 +323,7 @@ public class ObjectCreateRule
             String realClassName = className;
             if ( attributeName != null )
             {
-                String value = attributes.getValue( attributeName );
+                final String value = attributes.getValue( attributeName );
                 if ( value != null )
                 {
                     realClassName = value;
@@ -357,7 +357,7 @@ public class ObjectCreateRule
         {
             if ( proxyManager == null )
             {
-                Constructor<?> constructor = getAccessibleConstructor( clazz, constructorArgumentTypes );
+                final Constructor<?> constructor = getAccessibleConstructor( clazz, constructorArgumentTypes );
 
                 if ( constructor == null )
                 {
@@ -378,10 +378,10 @@ public class ObjectCreateRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
-        Object top = getDigester().pop();
+        final Object top = getDigester().pop();
 
         if ( proxyManager != null )
         {
@@ -405,7 +405,7 @@ public class ObjectCreateRule
         return format( "ObjectCreateRule[className=%s, attributeName=%s]", className, attributeName );
     }
 
-    private static void convertTo( Class<?>[] types, Object[] array )
+    private static void convertTo( final Class<?>[] types, final Object[] array )
     {
         if ( array.length != types.length )
         {
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 ef11a69..7b39954 100644
--- a/core/src/main/java/org/apache/commons/digester3/ObjectParamRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/ObjectParamRule.java
@@ -49,7 +49,7 @@ public class ObjectParamRule
      * @param paramIndex The zero-relative parameter number
      * @param param the parameter to pass along
      */
-    public ObjectParamRule( int paramIndex, Object param )
+    public ObjectParamRule( final int paramIndex, final Object param )
     {
         this( paramIndex, null, param );
     }
@@ -62,7 +62,7 @@ public class ObjectParamRule
      * @param attributeName The name of the attribute to match
      * @param param the parameter to pass along
      */
-    public ObjectParamRule( int paramIndex, String attributeName, Object param )
+    public ObjectParamRule( final int paramIndex, final String attributeName, final Object param )
     {
         this.paramIndex = paramIndex;
         this.attributeName = attributeName;
@@ -92,11 +92,11 @@ public class ObjectParamRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         Object anAttribute = null;
-        Object parameters[] = getDigester().peekParams();
+        final Object parameters[] = getDigester().peekParams();
 
         if ( attributeName != null )
         {
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 dac416b..f35cf1d 100644
--- a/core/src/main/java/org/apache/commons/digester3/PathCallParamRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/PathCallParamRule.java
@@ -43,7 +43,7 @@ public class PathCallParamRule
      * 
      * @param paramIndex The zero-relative parameter number
      */
-    public PathCallParamRule( int paramIndex )
+    public PathCallParamRule( final int paramIndex )
     {
         this.paramIndex = paramIndex;
     }
@@ -61,14 +61,14 @@ public class PathCallParamRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
-        String param = getDigester().getMatch();
+        final String param = getDigester().getMatch();
 
         if ( param != null )
         {
-            Object parameters[] = getDigester().peekParams();
+            final Object parameters[] = getDigester().peekParams();
             parameters[paramIndex] = param;
         }
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/PatternRuleMatcher.java b/core/src/main/java/org/apache/commons/digester3/PatternRuleMatcher.java
index d558dfc..9a1abf2 100644
--- a/core/src/main/java/org/apache/commons/digester3/PatternRuleMatcher.java
+++ b/core/src/main/java/org/apache/commons/digester3/PatternRuleMatcher.java
@@ -34,12 +34,12 @@ final class PatternRuleMatcher
 
     private final String namespaceURI;
 
-    public PatternRuleMatcher( String pattern )
+    public PatternRuleMatcher( final String pattern )
     {
         this( pattern, null );
     }
 
-    public PatternRuleMatcher( String pattern, /* @Nullable */String namespaceURI )
+    public PatternRuleMatcher( final String pattern, /* @Nullable */final String namespaceURI )
     {
         if ( pattern == null )
         {
@@ -53,7 +53,7 @@ final class PatternRuleMatcher
     /**
      * {@inheritDoc}
      */
-    public boolean match( String namespace, String pattern, String name, Attributes attributes )
+    public boolean match( final String namespace, final String pattern, final String name, final Attributes attributes )
     {
         if ( namespaceURI != null && !namespace.equals( namespaceURI ) )
         {
@@ -86,7 +86,7 @@ final class PatternRuleMatcher
     }
 
     @Override
-    public boolean equals( Object obj )
+    public boolean equals( final Object obj )
     {
         if ( this == obj )
         {
@@ -103,7 +103,7 @@ final class PatternRuleMatcher
             return false;
         }
 
-        PatternRuleMatcher other = (PatternRuleMatcher) obj;
+        final PatternRuleMatcher other = (PatternRuleMatcher) obj;
         if ( namespaceURI == null )
         {
             if ( other.getNamespaceURI() != null )
diff --git a/core/src/main/java/org/apache/commons/digester3/RecordedInvocation.java b/core/src/main/java/org/apache/commons/digester3/RecordedInvocation.java
index 466124a..3b34e93 100644
--- a/core/src/main/java/org/apache/commons/digester3/RecordedInvocation.java
+++ b/core/src/main/java/org/apache/commons/digester3/RecordedInvocation.java
@@ -48,7 +48,7 @@ final class RecordedInvocation
      * @param invokedMethod
      * @param arguments
      */
-    public RecordedInvocation( Method invokedMethod, Object[] arguments )
+    public RecordedInvocation( final Method invokedMethod, final Object[] arguments )
     {
         this.invokedMethod = invokedMethod;
         this.arguments = arguments;
@@ -84,15 +84,15 @@ final class RecordedInvocation
     @Override
     public String toString()
     {
-        StringBuilder buffer = new StringBuilder();
+        final StringBuilder buffer = new StringBuilder();
         buffer.append( invokedMethod.getDeclaringClass().getName() );
         buffer.append( "." );
         buffer.append( invokedMethod.getName() );
         buffer.append( "(" );
-        int count = arguments.length;
+        final int count = arguments.length;
         for ( int i = 0; i < count; i++ )
         {
-            Object arg = arguments[i];
+            final Object arg = arguments[i];
             if ( i > 0 )
             {
                 buffer.append( ", " );
@@ -109,7 +109,7 @@ final class RecordedInvocation
      * @param buffer the buffer to append the string representation of the input object.
      * @param input the input object has to be serialized to string.
      */
-    protected void convert( StringBuilder buffer, Object input )
+    protected void convert( final StringBuilder buffer, final Object input )
     {
         if ( input == null )
         {
@@ -128,8 +128,8 @@ final class RecordedInvocation
             buffer.append( "(" );
             buffer.append( input.getClass().getSimpleName() );
             buffer.append( "){" );
-            Object[] array = (Object[]) input;
-            int count = array.length;
+            final Object[] array = (Object[]) input;
+            final int count = array.length;
             for ( int i = 0; i < count; i++ )
             {
                 if ( i > 0 )
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 1d20aba..d7ec183 100644
--- a/core/src/main/java/org/apache/commons/digester3/RegexRules.java
+++ b/core/src/main/java/org/apache/commons/digester3/RegexRules.java
@@ -55,7 +55,7 @@ public class RegexRules
      * 
      * @param matcher the regex strategy to be used, not null
      */
-    public RegexRules( RegexMatcher matcher )
+    public RegexRules( final RegexMatcher matcher )
     {
         setRegexMatcher( matcher );
     }
@@ -77,7 +77,7 @@ public class RegexRules
      * 
      * @param matcher use this RegexMatcher, not null
      */
-    public void setRegexMatcher( RegexMatcher matcher )
+    public void setRegexMatcher( final RegexMatcher matcher )
     {
         if ( matcher == null )
         {
@@ -92,7 +92,7 @@ public class RegexRules
      * {@inheritDoc}
      */
     @Override
-    protected void registerRule( String pattern, Rule rule )
+    protected void registerRule( final String pattern, final Rule rule )
     {
         registeredRules.add( new RegisteredRule( pattern, rule ) );
     }
@@ -108,7 +108,7 @@ public class RegexRules
     /**
      * {@inheritDoc}
      */
-    public List<Rule> match( String namespaceURI, String pattern, String name, Attributes attributes )
+    public List<Rule> match( final String namespaceURI, final String pattern, final String name, final Attributes attributes )
     {
         //
         // not a particularly quick implementation
@@ -118,8 +118,8 @@ public class RegexRules
         //
         // XXX FIX ME - Time And Optimize
         //
-        ArrayList<Rule> rules = new ArrayList<Rule>( registeredRules.size() );
-        for ( RegisteredRule rr : registeredRules )
+        final ArrayList<Rule> rules = new ArrayList<Rule>( registeredRules.size() );
+        for ( final RegisteredRule rr : registeredRules )
         {
             if ( matcher.match( pattern, rr.pattern ) )
             {
@@ -134,8 +134,8 @@ public class RegexRules
      */
     public List<Rule> rules()
     {
-        ArrayList<Rule> rules = new ArrayList<Rule>( registeredRules.size() );
-        for ( RegisteredRule rr : registeredRules )
+        final ArrayList<Rule> rules = new ArrayList<Rule>( registeredRules.size() );
+        for ( final RegisteredRule rr : registeredRules )
         {
             rules.add( rr.rule );
         }
@@ -149,7 +149,7 @@ public class RegexRules
 
         Rule rule;
 
-        RegisteredRule( String pattern, Rule rule )
+        RegisteredRule( final String pattern, final Rule rule )
         {
             this.pattern = pattern;
             this.rule = rule;
diff --git a/core/src/main/java/org/apache/commons/digester3/Rule.java b/core/src/main/java/org/apache/commons/digester3/Rule.java
index 45bcb05..b4072ed 100644
--- a/core/src/main/java/org/apache/commons/digester3/Rule.java
+++ b/core/src/main/java/org/apache/commons/digester3/Rule.java
@@ -81,7 +81,7 @@ import org.xml.sax.Attributes;
      *
      * @param digester the <code>Digester</code> with which this <code>Rule</code> is associated
      */
-    public void setDigester( Digester digester )
+    public void setDigester( final Digester digester )
     {
         this.digester = digester;
     }
@@ -102,7 +102,7 @@ import org.xml.sax.Attributes;
      * @param namespaceURI Namespace URI for which this Rule is relevant, or <code>null</code> to match independent of
      *            namespace.
      */
-    public void setNamespaceURI( String namespaceURI )
+    public void setNamespaceURI( final String namespaceURI )
     {
         this.namespaceURI = namespaceURI;
     }
@@ -119,7 +119,7 @@ import org.xml.sax.Attributes;
      * @throws Exception if any error occurs
      * @since Digester 1.4
      */
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         // The default implementation does nothing
@@ -136,7 +136,7 @@ import org.xml.sax.Attributes;
      * @throws Exception if any error occurs
      * @since Digester 1.4
      */
-    public void body( String namespace, String name, String text )
+    public void body( final String namespace, final String name, final String text )
         throws Exception
     {
         // The default implementation does nothing
@@ -151,7 +151,7 @@ import org.xml.sax.Attributes;
      * @throws Exception if any error occurs
      * @since Digester 1.4
      */
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         // The default implementation does nothing
diff --git a/core/src/main/java/org/apache/commons/digester3/RuleSetBase.java b/core/src/main/java/org/apache/commons/digester3/RuleSetBase.java
index 14e42a0..9a44001 100644
--- a/core/src/main/java/org/apache/commons/digester3/RuleSetBase.java
+++ b/core/src/main/java/org/apache/commons/digester3/RuleSetBase.java
@@ -52,7 +52,7 @@ public abstract class RuleSetBase
      * @param namespaceURI The namespace URI that all Rule instances will be associated with.
      * @since 3.0
      */
-    public RuleSetBase( String namespaceURI )
+    public RuleSetBase( final String namespaceURI )
     {
         this.namespaceURI = namespaceURI;
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/RulesBase.java b/core/src/main/java/org/apache/commons/digester3/RulesBase.java
index 0828a10..4dc0137 100644
--- a/core/src/main/java/org/apache/commons/digester3/RulesBase.java
+++ b/core/src/main/java/org/apache/commons/digester3/RulesBase.java
@@ -77,10 +77,10 @@ public class RulesBase
      * {@inheritDoc}
      */
     @Override
-    public void setDigester( Digester digester )
+    public void setDigester( final Digester digester )
     {
         super.setDigester( digester );
-        for ( Rule rule : rules )
+        for ( final Rule rule : rules )
         {
             rule.setDigester( digester );
         }
@@ -92,10 +92,10 @@ public class RulesBase
      * {@inheritDoc}
      */
     @Override
-    protected void registerRule( String pattern, Rule rule )
+    protected void registerRule( String pattern, final Rule rule )
     {
         // to help users who accidently add '/' to the end of their patterns
-        int patternLength = pattern.length();
+        final int patternLength = pattern.length();
         if ( patternLength > 1 && pattern.endsWith( "/" ) )
         {
             pattern = pattern.substring( 0, patternLength - 1 );
@@ -128,7 +128,7 @@ public class RulesBase
     /**
      * {@inheritDoc}
      */
-    public List<Rule> match( String namespaceURI, String pattern, String name, Attributes attributes )
+    public List<Rule> match( final String namespaceURI, final String pattern, final String name, final Attributes attributes )
     {
         // List rulesList = (List) this.cache.get(pattern);
         List<Rule> rulesList = lookup( namespaceURI, pattern );
@@ -136,7 +136,7 @@ public class RulesBase
         {
             // Find the longest key, ie more discriminant
             String longKey = "";
-            for ( String key : wildcardCache )
+            for ( final String key : wildcardCache )
             {
                 if ( ( pattern.equals( key.substring( 1 ) ) || pattern.endsWith( key ) )
                     && key.length() > longKey.length() )
@@ -175,10 +175,10 @@ public class RulesBase
      * @param pattern Pattern to be matched
      * @return a List of Rule instances for the specified pattern that also match the specified namespace URI (if any)
      */
-    protected List<Rule> lookup( String namespaceURI, String pattern )
+    protected List<Rule> lookup( final String namespaceURI, final String pattern )
     {
         // Optimize when no namespace URI is specified
-        List<Rule> list = this.cache.get( pattern );
+        final List<Rule> list = this.cache.get( pattern );
         if ( list == null )
         {
             return ( null );
@@ -189,8 +189,8 @@ public class RulesBase
         }
 
         // Select only Rules that match on the specified namespace URI
-        ArrayList<Rule> results = new ArrayList<Rule>();
-        for ( Rule item : list )
+        final ArrayList<Rule> results = new ArrayList<Rule>();
+        for ( final Rule item : list )
         {
             if ( ( namespaceURI.equals( item.getNamespaceURI() ) ) || ( item.getNamespaceURI() == null ) )
             {
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 1b358f5..d337af5 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java
@@ -137,7 +137,7 @@ public class SetNestedPropertiesRule
      * @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.
      */
-    public SetNestedPropertiesRule( String elementName, String propertyName )
+    public SetNestedPropertiesRule( final String elementName, final String propertyName )
     {
         elementNames.put( elementName, propertyName );
     }
@@ -179,7 +179,7 @@ public class SetNestedPropertiesRule
      * @param elementNames names of elements to map
      * @param propertyNames names of properties mapped to
      */
-    public SetNestedPropertiesRule( String[] elementNames, String[] propertyNames )
+    public SetNestedPropertiesRule( final String[] elementNames, final String[] propertyNames )
     {
         for ( int i = 0, size = elementNames.length; i < size; i++ )
         {
@@ -199,7 +199,7 @@ public class SetNestedPropertiesRule
      * @param elementNames names of elements->properties to map
      * @since 3.0
      */
-    public SetNestedPropertiesRule( Map<String, String> elementNames )
+    public SetNestedPropertiesRule( final Map<String, String> elementNames )
     {
         if ( elementNames != null && !elementNames.isEmpty() )
         {
@@ -213,7 +213,7 @@ public class SetNestedPropertiesRule
      * {@inheritDoc}
      */
     @Override
-    public void setDigester( Digester digester )
+    public void setDigester( final Digester digester )
     {
         super.setDigester( digester );
         log = digester.getLogger();
@@ -225,7 +225,7 @@ public class SetNestedPropertiesRule
      *
      * @param trimData flag to have leading and trailing whitespace removed
      */
-    public void setTrimData( boolean trimData )
+    public void setTrimData( final boolean trimData )
     {
         this.trimData = trimData;
     }
@@ -255,7 +255,7 @@ public class SetNestedPropertiesRule
      * @param allowUnknownChildElements flag to ignore any child element for which there is no corresponding
      *        object property
      */
-    public void setAllowUnknownChildElements( boolean allowUnknownChildElements )
+    public void setAllowUnknownChildElements( final boolean allowUnknownChildElements )
     {
         this.allowUnknownChildElements = allowUnknownChildElements;
     }
@@ -275,13 +275,13 @@ public class SetNestedPropertiesRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
-        Rules oldRules = getDigester().getRules();
-        AnyChildRule anyChildRule = new AnyChildRule();
+        final Rules oldRules = getDigester().getRules();
+        final AnyChildRule anyChildRule = new AnyChildRule();
         anyChildRule.setDigester( getDigester() );
-        AnyChildRules newRules = new AnyChildRules( anyChildRule );
+        final AnyChildRules newRules = new AnyChildRules( anyChildRule );
         newRules.init( getDigester().getMatch() + "/", oldRules );
         getDigester().setRules( newRules );
     }
@@ -290,10 +290,10 @@ public class SetNestedPropertiesRule
      * {@inheritDoc}
      */
     @Override
-    public void body( String namespace, String name, String text )
+    public void body( final String namespace, final String name, final String text )
         throws Exception
     {
-        AnyChildRules newRules = (AnyChildRules) getDigester().getRules();
+        final AnyChildRules newRules = (AnyChildRules) getDigester().getRules();
         getDigester().setRules( newRules.getOldRules() );
     }
 
@@ -307,7 +307,7 @@ public class SetNestedPropertiesRule
      * @param elementName the xml-element has to be mapped
      * @param propertyName the property name target
      */
-    public void addAlias( String elementName, String propertyName )
+    public void addAlias( final String elementName, final String propertyName )
     {
         elementNames.put( elementName, propertyName );
     }
@@ -338,7 +338,7 @@ public class SetNestedPropertiesRule
 
         private final AnyChildRule rule;
 
-        public AnyChildRules( AnyChildRule rule )
+        public AnyChildRules( final AnyChildRule rule )
         {
             this.rule = rule;
             rules.add( rule );
@@ -349,7 +349,7 @@ public class SetNestedPropertiesRule
             return null;
         }
 
-        public void setDigester( Digester digester )
+        public void setDigester( final Digester digester )
         {
         }
 
@@ -358,11 +358,11 @@ public class SetNestedPropertiesRule
             return null;
         }
 
-        public void setNamespaceURI( String namespaceURI )
+        public void setNamespaceURI( final String namespaceURI )
         {
         }
 
-        public void add( String pattern, Rule rule )
+        public void add( final String pattern, final Rule rule )
         {
         }
 
@@ -370,9 +370,9 @@ public class SetNestedPropertiesRule
         {
         }
 
-        public List<Rule> match( String namespaceURI, String matchPath, String name, Attributes attributes )
+        public List<Rule> match( final String namespaceURI, final String matchPath, final String name, final Attributes attributes )
         {
-            List<Rule> match = decoratedRules.match( namespaceURI, matchPath, name, attributes );
+            final List<Rule> match = decoratedRules.match( namespaceURI, matchPath, name, attributes );
 
             if ( ( matchPath.startsWith( matchPrefix ) ) && ( matchPath.indexOf( '/', matchPrefix.length() ) == -1 ) )
             {
@@ -396,7 +396,7 @@ public class SetNestedPropertiesRule
                 //
                 // It might not be safe to modify the returned list,
                 // so clone it first.
-                LinkedList<Rule> newMatch = new LinkedList<Rule>( match );
+                final LinkedList<Rule> newMatch = new LinkedList<Rule>( match );
                 newMatch.addLast( rule );
                 return newMatch;
             }
@@ -423,7 +423,7 @@ public class SetNestedPropertiesRule
             return decoratedRules.rules();
         }
 
-        public void init( String prefix, Rules rules )
+        public void init( final String prefix, final Rules rules )
         {
             matchPrefix = prefix;
             decoratedRules = rules;
@@ -442,14 +442,14 @@ public class SetNestedPropertiesRule
         private String currChildElementName = null;
 
         @Override
-        public void begin( String namespaceURI, String name, Attributes attributes )
+        public void begin( final String namespaceURI, final String name, final Attributes attributes )
             throws Exception
         {
             currChildElementName = name;
         }
 
         @Override
-        public void body( String namespace, String name, String text )
+        public void body( final String namespace, final String name, String text )
             throws Exception
         {
             String propName = currChildElementName;
@@ -464,7 +464,7 @@ public class SetNestedPropertiesRule
                 }
             }
 
-            boolean debug = log.isDebugEnabled();
+            final boolean debug = log.isDebugEnabled();
 
             if ( debug )
             {
@@ -473,7 +473,7 @@ public class SetNestedPropertiesRule
             }
 
             // Populate the corresponding properties of the top object
-            Object top = getDigester().peek();
+            final Object top = getDigester().peek();
             if ( debug )
             {
                 if ( top != null )
@@ -498,7 +498,7 @@ public class SetNestedPropertiesRule
                 // (BeanUtils.setProperty() silently returns in this case)
                 if ( top instanceof DynaBean )
                 {
-                    DynaProperty desc = ( (DynaBean) top ).getDynaClass().getDynaProperty( propName );
+                    final DynaProperty desc = ( (DynaBean) top ).getDynaClass().getDynaProperty( propName );
                     if ( desc == null )
                     {
                         throw new NoSuchMethodException( "Bean has no property named " + propName );
@@ -507,7 +507,7 @@ public class SetNestedPropertiesRule
                 else
                 /* this is a standard JavaBean */
                 {
-                    PropertyDescriptor desc = getPropertyDescriptor( top, propName );
+                    final PropertyDescriptor desc = getPropertyDescriptor( top, propName );
                     if ( desc == null )
                     {
                         throw new NoSuchMethodException( "Bean has no property named " + propName );
@@ -519,7 +519,7 @@ public class SetNestedPropertiesRule
             {
                 setProperty( top, propName, text );
             }
-            catch ( NullPointerException e )
+            catch ( final NullPointerException e )
             {
                 log.error( "NullPointerException: " + "top=" + top + ",propName=" + propName + ",value=" + text + "!" );
                 throw e;
@@ -527,7 +527,7 @@ public class SetNestedPropertiesRule
         }
 
         @Override
-        public void end( String namespace, String name )
+        public void end( final String namespace, final String name )
             throws Exception
         {
             currChildElementName = null;
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 ed2bd1c..d125aba 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetNextRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetNextRule.java
@@ -48,7 +48,7 @@ public class SetNextRule
      * 
      * @param methodName Method name of the parent method to call
      */
-    public SetNextRule( String methodName )
+    public SetNextRule( final String methodName )
     {
         super( methodName );
     }
@@ -61,7 +61,7 @@ public class SetNextRule
      *                  specify the corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code>
      *                  for a <code>boolean</code> parameter)
      */
-    public SetNextRule( String methodName, String paramType )
+    public SetNextRule( final String methodName, final String paramType )
     {
         super( methodName, paramType );
     }
@@ -74,7 +74,7 @@ public class SetNextRule
      *                  corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
      *                  <code>boolean</code> parameter)
      */
-    public SetNextRule( String methodName, Class<?> paramType )
+    public SetNextRule( final String methodName, final Class<?> paramType )
     {
         super( methodName, paramType );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/SetPropertiesRule.java b/core/src/main/java/org/apache/commons/digester3/SetPropertiesRule.java
index 8ae1384..5494c5f 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetPropertiesRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetPropertiesRule.java
@@ -65,7 +65,7 @@ public class SetPropertiesRule
      * @param attributeName map this attribute
      * @param propertyName to a property with this name
      */
-    public SetPropertiesRule( String attributeName, String propertyName )
+    public SetPropertiesRule( final String attributeName, final String propertyName )
     {
         aliases.put( attributeName, propertyName );
     }
@@ -105,7 +105,7 @@ public class SetPropertiesRule
      * @param attributeNames names of attributes to map
      * @param propertyNames names of properties mapped to
      */
-    public SetPropertiesRule( String[] attributeNames, String[] propertyNames )
+    public SetPropertiesRule( final String[] attributeNames, final String[] propertyNames )
     {
         for ( int i = 0, size = attributeNames.length; i < size; i++ )
         {
@@ -125,7 +125,7 @@ public class SetPropertiesRule
      * @param aliases attribute->property mapping
      * @since 3.0
      */
-    public SetPropertiesRule( Map<String, String> aliases )
+    public SetPropertiesRule( final Map<String, String> aliases )
     {
         if ( aliases != null && !aliases.isEmpty() )
         {
@@ -149,11 +149,11 @@ public class SetPropertiesRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         // Build a set of attribute names and corresponding values
-        Map<String, String> values = new HashMap<String, String>();
+        final Map<String, String> values = new HashMap<String, String>();
 
         for ( int i = 0; i < attributes.getLength(); i++ )
         {
@@ -162,7 +162,7 @@ public class SetPropertiesRule
             {
                 attributeName = attributes.getQName( i );
             }
-            String value = attributes.getValue( i );
+            final String value = attributes.getValue( i );
 
             // alias lookup has complexity O(1)
             if ( aliases.containsKey( attributeName ) )
@@ -199,8 +199,8 @@ public class SetPropertiesRule
                 // compared and the PropertyUtils functionality does appear
                 // compatible so we'll accept the risk here.
 
-                Object top = getDigester().peek();
-                boolean test = isWriteable( top, attributeName );
+                final Object top = getDigester().peek();
+                final boolean test = isWriteable( top, attributeName );
                 if ( !test )
                 {
                     throw new NoSuchMethodException( "Property " + attributeName + " can't be set" );
@@ -214,7 +214,7 @@ public class SetPropertiesRule
         }
 
         // Populate the corresponding properties of the top object
-        Object top = getDigester().peek();
+        final Object top = getDigester().peek();
         if ( getDigester().getLogger().isDebugEnabled() )
         {
             if ( top != null )
@@ -238,7 +238,7 @@ public class SetPropertiesRule
      * @param attributeName the attribute name has to be mapped
      * @param propertyName the target property name
      */
-    public void addAlias( String attributeName, String propertyName )
+    public void addAlias( final String attributeName, final String propertyName )
     {
         aliases.put( attributeName, propertyName );
     }
@@ -275,7 +275,7 @@ public class SetPropertiesRule
      *
      * @param ignoreMissingProperty false to stop the parsing on unmatched attributes.
      */
-    public void setIgnoreMissingProperty( boolean ignoreMissingProperty )
+    public void setIgnoreMissingProperty( final boolean ignoreMissingProperty )
     {
         this.ignoreMissingProperty = ignoreMissingProperty;
     }
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 0166df5..705dbf2 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetPropertyRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetPropertyRule.java
@@ -45,7 +45,7 @@ public class SetPropertyRule
      * @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
      */
-    public SetPropertyRule( String name, String value )
+    public SetPropertyRule( final String name, final String value )
     {
         this.name = name;
         this.value = value;
@@ -69,7 +69,7 @@ public class SetPropertyRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         if ( attributes.getLength() == 0 )
@@ -87,7 +87,7 @@ public class SetPropertyRule
             {
                 attributeName = attributes.getQName( i );
             }
-            String value = attributes.getValue( i );
+            final String value = attributes.getValue( i );
             if ( attributeName.equals( this.name ) )
             {
                 actualName = value;
@@ -99,7 +99,7 @@ public class SetPropertyRule
         }
 
         // Get a reference to the top object
-        Object top = getDigester().peek();
+        final Object top = getDigester().peek();
 
         // Log some debugging information
         if ( getDigester().getLogger().isDebugEnabled() )
@@ -118,7 +118,7 @@ public class SetPropertyRule
         // like SetPropertiesRule does.
         if ( top instanceof DynaBean )
         {
-            DynaProperty desc = ( (DynaBean) top ).getDynaClass().getDynaProperty( actualName );
+            final DynaProperty desc = ( (DynaBean) top ).getDynaClass().getDynaProperty( actualName );
             if ( desc == null )
             {
                 throw new NoSuchMethodException( "Bean has no property named " + actualName );
@@ -127,7 +127,7 @@ public class SetPropertyRule
         else
         /* this is a standard JavaBean */
         {
-            PropertyDescriptor desc = getPropertyDescriptor( top, actualName );
+            final PropertyDescriptor desc = getPropertyDescriptor( top, actualName );
             if ( desc == null )
             {
                 throw new NoSuchMethodException( "Bean has no property named " + actualName );
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 35a935c..bdcd89f 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetRootRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetRootRule.java
@@ -42,7 +42,7 @@ public class SetRootRule
      * 
      * @param methodName Method name of the parent method to call
      */
-    public SetRootRule( String methodName )
+    public SetRootRule( final String methodName )
     {
         super( methodName );
     }
@@ -55,7 +55,7 @@ public class SetRootRule
      *                  specify the corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code>
      *                  for a <code>boolean</code> parameter)
      */
-    public SetRootRule( String methodName, String paramType )
+    public SetRootRule( final String methodName, final String paramType )
     {
         super( methodName, paramType );
     }
@@ -68,7 +68,7 @@ public class SetRootRule
      *                  corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
      *                  <code>boolean</code> parameter)
      */
-    public SetRootRule( String methodName, Class<?> paramType )
+    public SetRootRule( final String methodName, final Class<?> paramType )
     {
         super( methodName, paramType );
     }
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 985f610..065847f 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetTopRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetTopRule.java
@@ -42,7 +42,7 @@ public class SetTopRule
      * 
      * @param methodName Method name of the parent method to call
      */
-    public SetTopRule( String methodName )
+    public SetTopRule( final String methodName )
     {
         super( methodName );
     }
@@ -55,7 +55,7 @@ public class SetTopRule
      *                  specify the corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code>
      *                  for a <code>boolean</code> parameter)
      */
-    public SetTopRule( String methodName, String paramType )
+    public SetTopRule( final String methodName, final String paramType )
     {
         super( methodName, paramType );
     }
@@ -68,7 +68,7 @@ public class SetTopRule
      *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
      *            <code>boolean</code> parameter)
      */
-    public SetTopRule( String methodName, Class<?> paramType )
+    public SetTopRule( final String methodName, final Class<?> paramType )
     {
         super( methodName, paramType );
     }
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 d9c9d46..ba6cabb 100644
--- a/core/src/main/java/org/apache/commons/digester3/SimpleRegexMatcher.java
+++ b/core/src/main/java/org/apache/commons/digester3/SimpleRegexMatcher.java
@@ -66,7 +66,7 @@ public class SimpleRegexMatcher
      *
      * @param log the current <code>Log</code> implementation used by this class.
      */
-    public void setLog( Log log )
+    public void setLog( final Log log )
     {
         this.log = log;
     }
@@ -77,7 +77,7 @@ public class SimpleRegexMatcher
      * {@inheritDoc}
      */
     @Override
-    public boolean match( String basePattern, String regexPattern )
+    public boolean match( final String basePattern, final String regexPattern )
     {
         // check for nulls
         if ( basePattern == null || regexPattern == null )
@@ -97,7 +97,7 @@ public class SimpleRegexMatcher
      * @param baseAt FIXME
      * @param regexAt FIXME
      */
-    private boolean match( String basePattern, String regexPattern, int baseAt, int regexAt )
+    private boolean match( final String basePattern, final String regexPattern, int baseAt, int regexAt )
     {
         if ( log.isTraceEnabled() )
         {
@@ -127,7 +127,7 @@ public class SimpleRegexMatcher
         }
 
         // ok both within bounds
-        char regexCurrent = regexPattern.charAt( regexAt );
+        final char regexCurrent = regexPattern.charAt( regexAt );
         switch ( regexCurrent )
         {
             case '*':
@@ -140,7 +140,7 @@ public class SimpleRegexMatcher
                 }
                 // go through every subsequent apperance of the next character
                 // and so if the rest of the regex matches
-                char nextRegex = regexPattern.charAt( regexAt );
+                final char nextRegex = regexPattern.charAt( regexAt );
                 if ( log.isTraceEnabled() )
                 {
                     log.trace( "Searching for next '" + nextRegex + "' char" );
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 da91686..21384e6 100644
--- a/core/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java
+++ b/core/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java
@@ -77,7 +77,7 @@ public class WithDefaultsRulesWrapper
      *
      * @param wrappedRules the wrapped <code>Rules</code> implementation, not null
      */
-    public WithDefaultsRulesWrapper( Rules wrappedRules )
+    public WithDefaultsRulesWrapper( final Rules wrappedRules )
     {
         if ( wrappedRules == null )
         {
@@ -99,10 +99,10 @@ public class WithDefaultsRulesWrapper
     /**
      * {@inheritDoc}
      */
-    public void setDigester( Digester digester )
+    public void setDigester( final Digester digester )
     {
         wrappedRules.setDigester( digester );
-        for ( Rule rule : defaultRules )
+        for ( final Rule rule : defaultRules )
         {
             rule.setDigester( digester );
         }
@@ -119,7 +119,7 @@ public class WithDefaultsRulesWrapper
     /**
      * {@inheritDoc}
      */
-    public void setNamespaceURI( String namespaceURI )
+    public void setNamespaceURI( final String namespaceURI )
     {
         wrappedRules.setNamespaceURI( namespaceURI );
     }
@@ -139,9 +139,9 @@ public class WithDefaultsRulesWrapper
     /**
      * {@inheritDoc}
      */
-    public List<Rule> match( String namespaceURI, String pattern, String name, Attributes attributes )
+    public List<Rule> match( final String namespaceURI, final String pattern, final String name, final Attributes attributes )
     {
-        List<Rule> matches = wrappedRules.match( namespaceURI, pattern, name, attributes );
+        final List<Rule> matches = wrappedRules.match( namespaceURI, pattern, name, attributes );
         if ( matches == null || matches.isEmpty() )
         {
             // a little bit of defensive programming
@@ -156,7 +156,7 @@ public class WithDefaultsRulesWrapper
      *
      * @param rule a Rule to be fired when wrapped implementation returns no matches
      **/
-    public void addDefault( Rule rule )
+    public void addDefault( final Rule rule )
     {
         // set up rule
         if ( wrappedRules.getDigester() != null )
@@ -194,7 +194,7 @@ public class WithDefaultsRulesWrapper
     /**
      * {@inheritDoc}
      */
-    public void add( String pattern, Rule rule )
+    public void add( final String pattern, final Rule rule )
     {
         wrappedRules.add( pattern, rule );
         allRules.add( rule );
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/DefaultAnnotationHandlerFactory.java b/core/src/main/java/org/apache/commons/digester3/annotations/DefaultAnnotationHandlerFactory.java
index 1e8fcf4..db51d73 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/DefaultAnnotationHandlerFactory.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/DefaultAnnotationHandlerFactory.java
@@ -34,7 +34,7 @@ final class DefaultAnnotationHandlerFactory
     /**
      * {@inheritDoc}
      */
-    public <L extends AnnotationHandler<? extends Annotation, ? extends AnnotatedElement>> L newInstance( Class<L> type )
+    public <L extends AnnotationHandler<? extends Annotation, ? extends AnnotatedElement>> L newInstance( final Class<L> type )
         throws Exception
     {
         return type.newInstance();
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/FromAnnotationsRuleModule.java b/core/src/main/java/org/apache/commons/digester3/annotations/FromAnnotationsRuleModule.java
index 86ccc4a..db09ad9 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/FromAnnotationsRuleModule.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/FromAnnotationsRuleModule.java
@@ -83,7 +83,7 @@ public abstract class FromAnnotationsRuleModule
      * @param annotationHandlerFactory A custom {@link AnnotationHandlerFactory} to create
      *        {@link AnnotationHandler} instances
      */
-    protected final void useAnnotationHandlerFactory( AnnotationHandlerFactory annotationHandlerFactory )
+    protected final void useAnnotationHandlerFactory( final AnnotationHandlerFactory annotationHandlerFactory )
     {
         if ( annotationHandlerFactory == null )
         {
@@ -158,7 +158,7 @@ public abstract class FromAnnotationsRuleModule
      * @param <AE>
      * @param action
      */
-    private <AE extends AnnotatedElement> void visitElements( PrivilegedAction<AE[]> action )
+    private <AE extends AnnotatedElement> void visitElements( final PrivilegedAction<AE[]> action )
     {
         AE[] annotatedElements = null;
         if ( System.getSecurityManager() != null )
@@ -177,11 +177,11 @@ public abstract class FromAnnotationsRuleModule
      *
      * @param annotatedElements
      */
-    private void visitElements( AnnotatedElement... annotatedElements )
+    private void visitElements( final AnnotatedElement... annotatedElements )
     {
-        for ( AnnotatedElement element : annotatedElements )
+        for ( final AnnotatedElement element : annotatedElements )
         {
-            for ( Annotation annotation : element.getAnnotations() )
+            for ( final Annotation annotation : element.getAnnotations() )
             {
                 handle( annotation, element );
             }
@@ -194,14 +194,14 @@ public abstract class FromAnnotationsRuleModule
                 if ( element instanceof Constructor )
                 {
                     // constructor args
-                    Constructor<?> construcotr = (Constructor<?>) element;
+                    final Constructor<?> construcotr = (Constructor<?>) element;
                     parameterAnnotations = construcotr.getParameterAnnotations();
                     parameterTypes = construcotr.getParameterTypes();
                 }
                 else
                 {
                     // method args
-                    Method method = (Method) element;
+                    final Method method = (Method) element;
                     parameterAnnotations = method.getParameterAnnotations();
                     parameterTypes = method.getParameterTypes();
                 }
@@ -222,18 +222,18 @@ public abstract class FromAnnotationsRuleModule
      * @param element the current visited element.
      */
     @SuppressWarnings( "unchecked" )
-    private <A extends Annotation, E extends AnnotatedElement, R extends Rule> void handle( A annotation, E element )
+    private <A extends Annotation, E extends AnnotatedElement, R extends Rule> void handle( final A annotation, final E element )
     {
-        Class<?> annotationType = annotation.annotationType();
+        final Class<?> annotationType = annotation.annotationType();
 
         // check if it is one of the @*.List annotation
         if ( annotationType.isAnnotationPresent( DigesterRuleList.class ) )
         {
-            Annotation[] annotations = getAnnotationsArrayValue( annotation );
+            final Annotation[] annotations = getAnnotationsArrayValue( annotation );
             if ( annotations != null && annotations.length > 0 )
             {
                 // if it is an annotations array, process them
-                for ( Annotation ptr : annotations )
+                for ( final Annotation ptr : annotations )
                 {
                     handle( ptr, element );
                 }
@@ -241,20 +241,20 @@ public abstract class FromAnnotationsRuleModule
         }
         else if ( annotationType.isAnnotationPresent( DigesterRule.class ) )
         {
-            DigesterRule digesterRule = annotationType.getAnnotation( DigesterRule.class );
+            final DigesterRule digesterRule = annotationType.getAnnotation( DigesterRule.class );
 
             // the default behavior if the handler is not specified
-            Class<? extends AnnotationHandler<Annotation, AnnotatedElement>> handlerType =
+            final Class<? extends AnnotationHandler<Annotation, AnnotatedElement>> handlerType =
                 (Class<? extends AnnotationHandler<Annotation, AnnotatedElement>>) digesterRule.handledBy();
             try
             {
-                AnnotationHandler<Annotation, AnnotatedElement> handler =
+                final AnnotationHandler<Annotation, AnnotatedElement> handler =
                     annotationHandlerFactory.newInstance( handlerType );
 
                 // run!
                 handler.handle( annotation, element, this.rulesBinder );
             }
-            catch ( Exception e )
+            catch ( final Exception e )
             {
                 rulesBinder.addError( e );
             }
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 ff16e4c..4266a2b 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
@@ -59,7 +59,7 @@ final class WithMemoryRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( String messagePattern, Object... arguments )
+    public void addError( final String messagePattern, final Object... arguments )
     {
         wrappedRulesBinder.addError( messagePattern, arguments );
     }
@@ -67,7 +67,7 @@ final class WithMemoryRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( Throwable t )
+    public void addError( final Throwable t )
     {
         wrappedRulesBinder.addError( t );
     }
@@ -75,7 +75,7 @@ final class WithMemoryRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void install( RulesModule rulesModule )
+    public void install( final RulesModule rulesModule )
     {
         wrappedRulesBinder.install( rulesModule );
     }
@@ -83,7 +83,7 @@ final class WithMemoryRulesBinder
     /**
      * {@inheritDoc}
      */
-    public LinkedRuleBuilder forPattern( String pattern )
+    public LinkedRuleBuilder forPattern( final String pattern )
     {
         return wrappedRulesBinder.forPattern( pattern );
     }
@@ -94,7 +94,7 @@ final class WithMemoryRulesBinder
      * @param bindingClass
      * @return true if the specified element has not yet been marked
      */
-    public boolean markAsBound( Class<?> bindingClass )
+    public boolean markAsBound( final Class<?> bindingClass )
     {
         return boundClasses.add( bindingClass );
     }
@@ -105,7 +105,7 @@ final class WithMemoryRulesBinder
      * @param bindingClass
      * @return true if the specified element has been marked
      */
-    public boolean isAlreadyBound( Class<?> bindingClass )
+    public boolean isAlreadyBound( final Class<?> bindingClass )
     {
         return boundClasses.contains( bindingClass );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/AbstractMethodHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/AbstractMethodHandler.java
index 33e0031..8bde8d6 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/AbstractMethodHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/AbstractMethodHandler.java
@@ -56,18 +56,18 @@ abstract class AbstractMethodHandler<A extends Annotation> implements Annotation
     /**
      * {@inheritDoc}
      */
-    public void handle( A annotation, Method element, RulesBinder rulesBinder )
+    public void handle( final A annotation, final Method element, final RulesBinder rulesBinder )
     {
         if ( SUPPORTED_ARGS != element.getParameterTypes().length )
         {
-            DigesterRule rule = annotation.annotationType().getAnnotation( DigesterRule.class );
+            final DigesterRule rule = annotation.annotationType().getAnnotation( DigesterRule.class );
 
             rulesBinder.addError( "Methods annotated with digester annotation rule @%s must have just one argument",
                                   rule.reflectsRule().getName() );
             return;
         }
 
-        Object explicitTypesObject = getAnnotationValue( annotation );
+        final Object explicitTypesObject = getAnnotationValue( annotation );
         if ( explicitTypesObject == null || !explicitTypesObject.getClass().isArray()
             || Class.class != explicitTypesObject.getClass().getComponentType() )
         {
@@ -76,13 +76,13 @@ abstract class AbstractMethodHandler<A extends Annotation> implements Annotation
             return;
         }
 
-        Class<?>[] explicitTypes = (Class<?>[]) explicitTypesObject;
-        Class<?> paramType = element.getParameterTypes()[0];
-        boolean fireOnBegin = getFireOnBegin( annotation );
+        final Class<?>[] explicitTypes = (Class<?>[]) explicitTypesObject;
+        final Class<?> paramType = element.getParameterTypes()[0];
+        final boolean fireOnBegin = getFireOnBegin( annotation );
 
         if ( explicitTypes.length > 0 )
         {
-            for ( Class<?> explicitType : explicitTypes )
+            for ( final Class<?> explicitType : explicitTypes )
             {
                 if ( !paramType.isAssignableFrom( explicitType ) )
                 {
@@ -101,8 +101,8 @@ abstract class AbstractMethodHandler<A extends Annotation> implements Annotation
         }
     }
 
-    private void doHandle( A methodAnnotation, Method method, Class<?> type, boolean fireOnBegin,
-                           RulesBinder rulesBinder )
+    private void doHandle( final A methodAnnotation, final Method method, final Class<?> type, final boolean fireOnBegin,
+                           final RulesBinder rulesBinder )
     {
         if ( type.isInterface() && Modifier.isAbstract( type.getModifiers() ) )
         {
@@ -111,22 +111,22 @@ abstract class AbstractMethodHandler<A extends Annotation> implements Annotation
             return;
         }
 
-        for ( Annotation annotation : type.getAnnotations() )
+        for ( final Annotation annotation : type.getAnnotations() )
         {
             doHandle( methodAnnotation, annotation, method, type, fireOnBegin, rulesBinder );
         }
 
-        for ( Constructor<?> constructor : type.getConstructors() )
+        for ( final Constructor<?> constructor : type.getConstructors() )
         {
-            for ( Annotation annotation : constructor.getAnnotations() )
+            for ( final Annotation annotation : constructor.getAnnotations() )
             {
                 doHandle( methodAnnotation, annotation, method, type, fireOnBegin, rulesBinder );
             }
         }
     }
 
-    private void doHandle( A methodAnnotation, Annotation annotation, Method method, final Class<?> type,
-                           boolean fireOnBegin, RulesBinder rulesBinder )
+    private void doHandle( final A methodAnnotation, final Annotation annotation, final Method method, final Class<?> type,
+                           final boolean fireOnBegin, final RulesBinder rulesBinder )
     {
         if ( annotation.annotationType().isAnnotationPresent( DigesterRule.class )
             && annotation.annotationType().isAnnotationPresent( CreationRule.class ) )
@@ -142,18 +142,18 @@ abstract class AbstractMethodHandler<A extends Annotation> implements Annotation
 
             } );
 
-            String pattern = getAnnotationPattern( annotation );
-            String namespaceURI = getAnnotationNamespaceURI( annotation );
+            final String pattern = getAnnotationPattern( annotation );
+            final String namespaceURI = getAnnotationNamespaceURI( annotation );
             doBind( pattern, namespaceURI, method, type, fireOnBegin, rulesBinder );
         }
         else if ( annotation.annotationType().isAnnotationPresent( DigesterRuleList.class ) )
         {
             // check if it is one of the *.List annotation
-            Annotation[] annotations = getAnnotationsArrayValue( annotation );
+            final Annotation[] annotations = getAnnotationsArrayValue( annotation );
             if ( annotations != null )
             {
                 // if it is an annotations array, process them
-                for ( Annotation ptr : annotations )
+                for ( final Annotation ptr : annotations )
                 {
                     doHandle( methodAnnotation, ptr, method, type, fireOnBegin, rulesBinder );
                 }
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/BeanPropertySetterHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/BeanPropertySetterHandler.java
index 6ed1a87..f50fb2d 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/BeanPropertySetterHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/BeanPropertySetterHandler.java
@@ -37,7 +37,7 @@ public final class BeanPropertySetterHandler
     /**
      * {@inheritDoc}
      */
-    public void handle( BeanPropertySetter annotation, Field element, RulesBinder rulesBinder )
+    public void handle( final BeanPropertySetter annotation, final Field element, final RulesBinder rulesBinder )
     {
         rulesBinder.forPattern( annotation.pattern() )
             .withNamespaceURI( annotation.namespaceURI() )
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/CallMethodHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/CallMethodHandler.java
index 03481a2..45b317d 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/CallMethodHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/CallMethodHandler.java
@@ -38,9 +38,9 @@ public class CallMethodHandler
     /**
      * {@inheritDoc}
      */
-    public void handle( CallMethod annotation, Method element, RulesBinder rulesBinder )
+    public void handle( final CallMethod annotation, final Method element, final RulesBinder rulesBinder )
     {
-        CallMethodBuilder callMethodBuilder = rulesBinder
+        final CallMethodBuilder callMethodBuilder = rulesBinder
             .forPattern( annotation.pattern() )
             .withNamespaceURI( annotation.namespaceURI() )
             .callMethod( element.getName() )
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/CallParamHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/CallParamHandler.java
index 24f7dbe..33380ac 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/CallParamHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/CallParamHandler.java
@@ -37,9 +37,9 @@ public final class CallParamHandler
     /**
      * {@inheritDoc}
      */
-    public void handle( CallParam annotation, MethodArgument element, RulesBinder rulesBinder )
+    public void handle( final CallParam annotation, final MethodArgument element, final RulesBinder rulesBinder )
     {
-        CallParamBuilder builder = rulesBinder
+        final CallParamBuilder builder = rulesBinder
             .forPattern( annotation.pattern() )
             .withNamespaceURI( annotation.namespaceURI() )
             .callParam()
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/FactoryCreateHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/FactoryCreateHandler.java
index 60f82fa..6765717 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/FactoryCreateHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/FactoryCreateHandler.java
@@ -36,9 +36,9 @@ public final class FactoryCreateHandler
     /**
      * {@inheritDoc}
      */
-    public void handle( FactoryCreate annotation, Class<?> element, RulesBinder rulesBinder )
+    public void handle( final FactoryCreate annotation, final Class<?> element, final RulesBinder rulesBinder )
     {
-        FactoryCreateBuilder builder = rulesBinder.forPattern( annotation.pattern() )
+        final FactoryCreateBuilder builder = rulesBinder.forPattern( annotation.pattern() )
             .withNamespaceURI( annotation.namespaceURI() )
             .factoryCreate()
             .overriddenByAttribute( annotation.attributeName().length() > 0 ? annotation.attributeName() : null )
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/ObjectCreateHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/ObjectCreateHandler.java
index b664984..9fb7c4d 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/ObjectCreateHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/ObjectCreateHandler.java
@@ -39,7 +39,7 @@ public final class ObjectCreateHandler
     /**
      * {@inheritDoc}
      */
-    public void handle( ObjectCreate annotation, AnnotatedElement element, RulesBinder rulesBinder )
+    public void handle( final ObjectCreate annotation, final AnnotatedElement element, final RulesBinder rulesBinder )
     {
         Class<?> type = null;
         if ( element instanceof Class<?> )
@@ -57,7 +57,7 @@ public final class ObjectCreateHandler
             return;
         }
 
-        ObjectCreateBuilder builder = rulesBinder
+        final ObjectCreateBuilder builder = rulesBinder
                 .forPattern( annotation.pattern() )
                 .withNamespaceURI( annotation.namespaceURI() )
                 .createObject()
@@ -66,7 +66,7 @@ public final class ObjectCreateHandler
 
         if ( element instanceof Constructor<?> )
         {
-            Constructor<?> method = (Constructor<?>) element;
+            final Constructor<?> method = (Constructor<?>) element;
             builder.usingConstructor( method.getParameterTypes() );
         }
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/PathCallParamHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/PathCallParamHandler.java
index d7465fb..354a6ab 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/PathCallParamHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/PathCallParamHandler.java
@@ -36,7 +36,7 @@ public final class PathCallParamHandler
     /**
      * {@inheritDoc}
      */
-    public void handle( PathCallParam annotation, MethodArgument element, RulesBinder rulesBinder )
+    public void handle( final PathCallParam annotation, final MethodArgument element, final RulesBinder rulesBinder )
     {
         rulesBinder
             .forPattern( annotation.pattern() )
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetNextHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetNextHandler.java
index b227e6b..1962140 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetNextHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetNextHandler.java
@@ -37,8 +37,8 @@ public final class SetNextHandler
      * {@inheritDoc}
      */
     @Override
-    protected void doBind( String pattern, String namespaceURI, Method method, Class<?> type, boolean fireOnBegin,
-                           RulesBinder rulesBinder )
+    protected void doBind( final String pattern, final String namespaceURI, final Method method, final Class<?> type, final boolean fireOnBegin,
+                           final RulesBinder rulesBinder )
     {
         rulesBinder.forPattern( pattern )
                    .withNamespaceURI( namespaceURI )
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesHandler.java
index c3e6b17..c2c89b8 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesHandler.java
@@ -38,9 +38,9 @@ public final class SetPropertiesHandler
     /**
      * {@inheritDoc}
      */
-    public void handle( SetProperty annotation, Field element, RulesBinder rulesBinder )
+    public void handle( final SetProperty annotation, final Field element, final RulesBinder rulesBinder )
     {
-        SetPropertiesBuilder builder = rulesBinder
+        final SetPropertiesBuilder builder = rulesBinder
             .forPattern( annotation.pattern() )
             .withNamespaceURI( annotation.namespaceURI() )
             .setProperties();
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetRootHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetRootHandler.java
index ee39f01..c6e8f3d 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetRootHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetRootHandler.java
@@ -37,8 +37,8 @@ public final class SetRootHandler
      * {@inheritDoc}
      */
     @Override
-    protected void doBind( String pattern, String namespaceURI, Method method, Class<?> type, boolean fireOnBegin,
-                           RulesBinder rulesBinder )
+    protected void doBind( final String pattern, final String namespaceURI, final Method method, final Class<?> type, final boolean fireOnBegin,
+                           final RulesBinder rulesBinder )
     {
         rulesBinder.forPattern( pattern )
                    .withNamespaceURI( namespaceURI )
diff --git a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetTopHandler.java b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetTopHandler.java
index c081b89..4561f89 100644
--- a/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetTopHandler.java
+++ b/core/src/main/java/org/apache/commons/digester3/annotations/handlers/SetTopHandler.java
@@ -37,7 +37,7 @@ public final class SetTopHandler
     /**
      * {@inheritDoc}
      */
-    public void handle( SetTop annotation, Method element, RulesBinder rulesBinder )
+    public void handle( final SetTop annotation, final Method element, final RulesBinder rulesBinder )
     {
         if ( element.getParameterTypes().length != 1 )
         {
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 3890c79..2d8a9c4 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
@@ -55,7 +55,7 @@ public final class MethodArgument
      * @param parameterType the method argument type.
      * @param annotations the method argument annotations.
      */
-    public MethodArgument( int index, Class<?> parameterType, Annotation[] annotations )
+    public MethodArgument( final int index, final Class<?> parameterType, final Annotation[] annotations )
     {
         if ( parameterType == null )
         {
@@ -96,9 +96,9 @@ public final class MethodArgument
     /**
      * {@inheritDoc}
      */
-    public <T extends Annotation> T getAnnotation( Class<T> annotationType )
+    public <T extends Annotation> T getAnnotation( final Class<T> annotationType )
     {
-        for ( Annotation annotation : this.annotations )
+        for ( final Annotation annotation : this.annotations )
         {
             if ( annotationType == annotation.annotationType() )
             {
@@ -131,7 +131,7 @@ public final class MethodArgument
      */
     private Annotation[] getAnnotationsArrayCopy()
     {
-        Annotation[] annotations = new Annotation[this.annotations.length];
+        final Annotation[] annotations = new Annotation[this.annotations.length];
         System.arraycopy( this.annotations, 0, annotations, 0, annotations.length );
         return annotations;
     }
@@ -139,9 +139,9 @@ public final class MethodArgument
     /**
      * {@inheritDoc}
      */
-    public boolean isAnnotationPresent( Class<? extends Annotation> annotationType )
+    public boolean isAnnotationPresent( final Class<? extends Annotation> annotationType )
     {
-        for ( Annotation annotation : this.annotations )
+        for ( final Annotation annotation : this.annotations )
         {
             if ( annotationType == annotation.annotationType() )
             {
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 4d0053f..27dfce8 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
@@ -100,7 +100,7 @@ public @interface FactoryCreate
          * {@inheritDoc}
          */
         @Override
-        public Object createObject( Attributes attributes )
+        public Object createObject( final Attributes attributes )
             throws Exception
         {
             // do nothing
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 3294279..02bbc65 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
@@ -65,7 +65,7 @@ public class AnnotationUtils
      * @param annotation the annotation has to be introspected.
      * @return the annotation {@code value()}.
      */
-    public static Object getAnnotationValue( Annotation annotation )
+    public static Object getAnnotationValue( final Annotation annotation )
     {
         return invokeAnnotationMethod( annotation, VALUE );
     }
@@ -76,9 +76,9 @@ public class AnnotationUtils
      * @param annotation the annotation has to be introspected.
      * @return the annotation {@code pattern()}.
      */
-    public static String getAnnotationPattern( Annotation annotation )
+    public static String getAnnotationPattern( final Annotation annotation )
     {
-        Object ret = invokeAnnotationMethod( annotation, PATTERN );
+        final Object ret = invokeAnnotationMethod( annotation, PATTERN );
         if ( ret != null )
         {
             return (String) ret;
@@ -92,9 +92,9 @@ public class AnnotationUtils
      * @param annotation The annotation has to be introspected
      * @return The annotation {@code namespaceURI()}
      */
-    public static String getAnnotationNamespaceURI( Annotation annotation )
+    public static String getAnnotationNamespaceURI( final Annotation annotation )
     {
-        Object ret = invokeAnnotationMethod( annotation, NAMESPACE_URI );
+        final Object ret = invokeAnnotationMethod( annotation, NAMESPACE_URI );
         if ( ret != null )
         {
             return (String) ret;
@@ -108,9 +108,9 @@ public class AnnotationUtils
      * @param annotation The annotation has to be introspected
      * @return The annotation {@code fireOnBegin()}
      */
-    public static boolean getFireOnBegin( Annotation annotation )
+    public static boolean getFireOnBegin( final Annotation annotation )
     {
-        Object ret = invokeAnnotationMethod( annotation, FIRE_ON_BEGIN );
+        final Object ret = invokeAnnotationMethod( annotation, FIRE_ON_BEGIN );
         if ( ret != null )
         {
             return (Boolean) ret;
@@ -124,9 +124,9 @@ public class AnnotationUtils
      * @param annotation the annotation has to be introspected.
      * @return the annotation {@code value()} as Annotations array.
      */
-    public static Annotation[] getAnnotationsArrayValue( Annotation annotation )
+    public static Annotation[] getAnnotationsArrayValue( final Annotation annotation )
     {
-        Object value = getAnnotationValue( annotation );
+        final Object value = getAnnotationValue( annotation );
         if ( value != null && value.getClass().isArray()
             && Annotation.class.isAssignableFrom( value.getClass().getComponentType() ) )
         {
@@ -142,13 +142,13 @@ public class AnnotationUtils
      * @param method the method name to execute.
      * @return the annotation method value, null if any error occurs.
      */
-    private static Object invokeAnnotationMethod( Annotation annotation, String method )
+    private static Object invokeAnnotationMethod( final Annotation annotation, final String method )
     {
         try
         {
             return invokeExactMethod( annotation, method, null );
         }
-        catch ( Throwable t )
+        catch ( final Throwable t )
         {
             return null;
         }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/AbstractBackToLinkedRuleBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/AbstractBackToLinkedRuleBuilder.java
index 5ad52e6..bb8b654 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/AbstractBackToLinkedRuleBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/AbstractBackToLinkedRuleBuilder.java
@@ -72,7 +72,7 @@ abstract class AbstractBackToLinkedRuleBuilder<R extends Rule>
      */
     public final R get()
     {
-        R rule = this.createRule();
+        final R rule = this.createRule();
         if ( rule != null && this.namespaceURI != null )
         {
             rule.setNamespaceURI( this.namespaceURI );
@@ -80,7 +80,7 @@ abstract class AbstractBackToLinkedRuleBuilder<R extends Rule>
         return rule;
     }
 
-    protected final void reportError( String methodChain, String message )
+    protected final void reportError( final String methodChain, final String message )
     {
         this.mainBinder.addError( "{ forPattern( \"%s\" ).%s } %s", this.keyPattern, methodChain, message );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/AbstractNamespaceURIBasedRulesModule.java b/core/src/main/java/org/apache/commons/digester3/binder/AbstractNamespaceURIBasedRulesModule.java
index b0c0905..baa6652 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/AbstractNamespaceURIBasedRulesModule.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/AbstractNamespaceURIBasedRulesModule.java
@@ -38,7 +38,7 @@ public abstract class AbstractNamespaceURIBasedRulesModule
      * @param namespaceURI Namespace URI for which this Rule is relevant, or <code>null</code> to match
      *        independent of namespace.
      */
-    public AbstractNamespaceURIBasedRulesModule( /* @Nullable */String namespaceURI )
+    public AbstractNamespaceURIBasedRulesModule( /* @Nullable */final String namespaceURI )
     {
         this.namespaceURI = namespaceURI;
     }
@@ -47,7 +47,7 @@ public abstract class AbstractNamespaceURIBasedRulesModule
      * {@inheritDoc}
      */
     @Override
-    protected LinkedRuleBuilder forPattern( String pattern )
+    protected LinkedRuleBuilder forPattern( final String pattern )
     {
         return super.forPattern( pattern ).withNamespaceURI( namespaceURI );
     }
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 dcc2038..2714b99 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
@@ -46,8 +46,8 @@ public abstract class AbstractParamTypeBuilder<R extends AbstractMethodRule>
 
     private boolean fireOnBegin = false;
 
-    AbstractParamTypeBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                              LinkedRuleBuilder mainBuilder, String methodName, ClassLoader classLoader )
+    AbstractParamTypeBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                              final LinkedRuleBuilder mainBuilder, final String methodName, final ClassLoader classLoader )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
         this.methodName = methodName;
@@ -64,7 +64,7 @@ public abstract class AbstractParamTypeBuilder<R extends AbstractMethodRule>
      * @param paramType The Java class of the method's argument
      * @return this builder instance
      */
-    public final AbstractParamTypeBuilder<R> withParameterType( Class<?> paramType )
+    public final AbstractParamTypeBuilder<R> withParameterType( final Class<?> paramType )
     {
         if ( paramType == null )
         {
@@ -85,7 +85,7 @@ public abstract class AbstractParamTypeBuilder<R extends AbstractMethodRule>
      * @param paramType The Java class name of the method's argument
      * @return this builder instance
      */
-    public final AbstractParamTypeBuilder<R> withParameterType( String paramType )
+    public final AbstractParamTypeBuilder<R> withParameterType( final String paramType )
     {
         if ( paramType == null )
         {
@@ -99,7 +99,7 @@ public abstract class AbstractParamTypeBuilder<R extends AbstractMethodRule>
             {
                 this.paramType = classLoader.loadClass( paramType );
             }
-            catch ( ClassNotFoundException e )
+            catch ( final ClassNotFoundException e )
             {
                 this.reportError( format( ".%s.withParameterType( Class<?> )", methodName ),
                                   format( "class '%s' cannot be load", paramType ) );
@@ -114,7 +114,7 @@ public abstract class AbstractParamTypeBuilder<R extends AbstractMethodRule>
      * @param useExactMatch The exact matching being used
      * @return this builder instance
      */
-    public final AbstractParamTypeBuilder<R> useExactMatch( boolean useExactMatch )
+    public final AbstractParamTypeBuilder<R> useExactMatch( final boolean useExactMatch )
     {
         this.useExactMatch = useExactMatch;
         return this;
@@ -126,7 +126,7 @@ public abstract class AbstractParamTypeBuilder<R extends AbstractMethodRule>
      * @param fireOnBegin true, to invoke the rule at {@code begin}, false for {@code end}
      * @return this builder instance
      */
-    public final AbstractParamTypeBuilder<R> fireOnBegin( boolean fireOnBegin )
+    public final AbstractParamTypeBuilder<R> fireOnBegin( final boolean fireOnBegin )
     {
         this.fireOnBegin = fireOnBegin;
         return this;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/AbstractRulesModule.java b/core/src/main/java/org/apache/commons/digester3/binder/AbstractRulesModule.java
index 3717b38..c809bf8 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/AbstractRulesModule.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/AbstractRulesModule.java
@@ -33,7 +33,7 @@ public abstract class AbstractRulesModule
     /**
      * {@inheritDoc}
      */
-    public final void configure( RulesBinder rulesBinder )
+    public final void configure( final RulesBinder rulesBinder )
     {
         if ( this.rulesBinder != null )
         {
@@ -66,7 +66,7 @@ public abstract class AbstractRulesModule
      * @param arguments Arguments referenced by the format specifiers in the format string
      * @see RulesBinder#addError(String, Object...)
      */
-    protected void addError( String messagePattern, Object... arguments )
+    protected void addError( final String messagePattern, final Object... arguments )
     {
         rulesBinder.addError( messagePattern, arguments );
     }
@@ -78,7 +78,7 @@ public abstract class AbstractRulesModule
      * @param t The exception has to be recorded
      * @see RulesBinder#addError(Throwable)
      */
-    protected void addError( Throwable t )
+    protected void addError( final Throwable t )
     {
         rulesBinder.addError( t );
     }
@@ -89,7 +89,7 @@ public abstract class AbstractRulesModule
      * @param rulesModule The module used to configure more bindings
      * @see RulesBinder#install(RulesModule)
      */
-    protected void install( RulesModule rulesModule )
+    protected void install( final RulesModule rulesModule )
     {
         rulesBinder.install( rulesModule );
     }
@@ -101,7 +101,7 @@ public abstract class AbstractRulesModule
      * @return The Digester rules builder
      * @see RulesBinder#forPattern(String)
      */
-    protected LinkedRuleBuilder forPattern( String pattern )
+    protected LinkedRuleBuilder forPattern( final String pattern )
     {
         return rulesBinder.forPattern( pattern );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/AddAliasBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/AddAliasBuilder.java
index 7f5afa2..6d0881d 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/AddAliasBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/AddAliasBuilder.java
@@ -34,7 +34,7 @@ public final class AddAliasBuilder<B>
 
     private final String alias;
 
-    AddAliasBuilder( B parentBuilder, Map<String, String> aliases, String alias )
+    AddAliasBuilder( final B parentBuilder, final Map<String, String> aliases, final String alias )
     {
         this.parentBuilder = parentBuilder;
         this.aliases = aliases;
@@ -47,7 +47,7 @@ public final class AddAliasBuilder<B>
      * @param propertyName The java bean property to be assigned the value
      * @return the parent builder to chain.
      */
-    public B forProperty( /*@Nullable*/ String propertyName )
+    public B forProperty( /*@Nullable*/ final String propertyName )
     {
         if ( alias != null )
         {
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/BeanPropertySetterBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/BeanPropertySetterBuilder.java
index f556b98..a9ab1b3 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/BeanPropertySetterBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/BeanPropertySetterBuilder.java
@@ -32,8 +32,8 @@ public final class BeanPropertySetterBuilder
 
     private String attribute;
 
-    BeanPropertySetterBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                               LinkedRuleBuilder mainBuilder )
+    BeanPropertySetterBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                               final LinkedRuleBuilder mainBuilder )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
     }
@@ -44,7 +44,7 @@ public final class BeanPropertySetterBuilder
      * @param propertyName The name of property to set
      * @return this builder instance
      */
-    public BeanPropertySetterBuilder withName( /* @Nullable */String propertyName )
+    public BeanPropertySetterBuilder withName( /* @Nullable */final String propertyName )
     {
         this.propertyName = propertyName;
         return this;
@@ -56,7 +56,7 @@ public final class BeanPropertySetterBuilder
      * @param attribute The attribute name from which extracting the name of property to set
      * @return this builder instance
      */
-    public BeanPropertySetterBuilder extractPropertyNameFromAttribute( String attribute )
+    public BeanPropertySetterBuilder extractPropertyNameFromAttribute( final String attribute )
     {
         if ( attribute == null )
         {
@@ -73,7 +73,7 @@ public final class BeanPropertySetterBuilder
     @Override
     protected BeanPropertySetterRule createRule()
     {
-        BeanPropertySetterRule rule = new BeanPropertySetterRule( propertyName );
+        final BeanPropertySetterRule rule = new BeanPropertySetterRule( propertyName );
         rule.setPropertyNameFromAttribute( attribute );
         return rule;
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/BinderClassLoader.java b/core/src/main/java/org/apache/commons/digester3/binder/BinderClassLoader.java
index eb32e79..09150c9 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/BinderClassLoader.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/BinderClassLoader.java
@@ -35,7 +35,7 @@ final class BinderClassLoader
     private static final Map<String, Class<?>> PRIMITIVE_TYPES;
     static
     {
-        HashMap<String, Class<?>> primitiveTypes = new HashMap<String, Class<?>>();
+        final HashMap<String, Class<?>> primitiveTypes = new HashMap<String, Class<?>>();
         primitiveTypes.put( "boolean", boolean.class );
         primitiveTypes.put( "byte", byte.class );
         primitiveTypes.put( "short", short.class );
@@ -49,7 +49,7 @@ final class BinderClassLoader
 
     public static BinderClassLoader createBinderClassLoader( final ClassLoader adaptedClassLoader )
     {
-        PrivilegedAction<BinderClassLoader> action = new PrivilegedAction<BinderClassLoader>()
+        final PrivilegedAction<BinderClassLoader> action = new PrivilegedAction<BinderClassLoader>()
         {
 
             public BinderClassLoader run()
@@ -66,7 +66,7 @@ final class BinderClassLoader
         return action.run();
     }
 
-    private BinderClassLoader( ClassLoader adaptedClassLoader )
+    private BinderClassLoader( final ClassLoader adaptedClassLoader )
     {
         super( adaptedClassLoader );
     }
@@ -80,7 +80,7 @@ final class BinderClassLoader
      * {@inheritDoc}
      */
     @Override
-    protected synchronized Class<?> loadClass( String name, boolean resolve )
+    protected synchronized Class<?> loadClass( final String name, final boolean resolve )
         throws ClassNotFoundException
     {
         if ( PRIMITIVE_TYPES.containsKey( name ) )
@@ -94,7 +94,7 @@ final class BinderClassLoader
      * {@inheritDoc}
      */
     @Override
-    public URL getResource( String name )
+    public URL getResource( final String name )
     {
         return getAdaptedClassLoader().getResource( name );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/ByRuleBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/ByRuleBuilder.java
index 3081ca6..04d548b 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/ByRuleBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/ByRuleBuilder.java
@@ -32,8 +32,8 @@ public final class ByRuleBuilder<R extends Rule>
 
     private final R rule;
 
-    ByRuleBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder, LinkedRuleBuilder mainBuilder,
-                   R rule )
+    ByRuleBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder, final LinkedRuleBuilder mainBuilder,
+                   final R rule )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
         this.rule = rule;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/ByRuleProviderBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/ByRuleProviderBuilder.java
index e6e57ed..28139e6 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/ByRuleProviderBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/ByRuleProviderBuilder.java
@@ -34,8 +34,8 @@ public final class ByRuleProviderBuilder<R extends Rule>
 
     private final RuleProvider<R> provider;
 
-    ByRuleProviderBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                           LinkedRuleBuilder mainBuilder, RuleProvider<R> provider )
+    ByRuleProviderBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                           final LinkedRuleBuilder mainBuilder, final RuleProvider<R> provider )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
         this.provider = provider;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/CallMethodBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/CallMethodBuilder.java
index c409e9f..b5bff30 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/CallMethodBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/CallMethodBuilder.java
@@ -46,8 +46,8 @@ public final class CallMethodBuilder
 
     private boolean useExactMatch = false;
 
-    CallMethodBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder, LinkedRuleBuilder mainBuilder,
-                       String methodName, ClassLoader classLoader )
+    CallMethodBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder, final LinkedRuleBuilder mainBuilder,
+                       final String methodName, final ClassLoader classLoader )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
         this.methodName = methodName;
@@ -63,7 +63,7 @@ public final class CallMethodBuilder
      * @param targetOffset location of the target object.
      * @return this builder instance
      */
-    public CallMethodBuilder withTargetOffset( int targetOffset )
+    public CallMethodBuilder withTargetOffset( final int targetOffset )
     {
         this.targetOffset = targetOffset;
         return this;
@@ -78,7 +78,7 @@ public final class CallMethodBuilder
      * @param paramTypeNames The Java classes names that represent the parameter types of the method arguments
      * @return this builder instance
      */
-    public CallMethodBuilder withParamTypes( String... paramTypeNames )
+    public CallMethodBuilder withParamTypes( final String... paramTypeNames )
     {
         Class<?>[] paramTypes = null;
         if ( paramTypeNames != null )
@@ -90,7 +90,7 @@ public final class CallMethodBuilder
                 {
                     paramTypes[i] = classLoader.loadClass( paramTypeNames[i] );
                 }
-                catch ( ClassNotFoundException e )
+                catch ( final ClassNotFoundException e )
                 {
                     this.reportError( format( "callMethod( \"%s\" ).withParamTypes( %s )", this.methodName,
                                                      Arrays.toString( paramTypeNames ) ),
@@ -111,7 +111,7 @@ public final class CallMethodBuilder
      * @param paramTypes The Java classes that represent the parameter types of the method arguments
      * @return this builder instance
      */
-    public CallMethodBuilder withParamTypes( Class<?>... paramTypes )
+    public CallMethodBuilder withParamTypes( final Class<?>... paramTypes )
     {
         this.paramTypes = paramTypes;
 
@@ -133,7 +133,7 @@ public final class CallMethodBuilder
      * @param useExactMatch Flag to mark exact matching or not
      * @return this builder instance
      */
-    public CallMethodBuilder useExactMatch( boolean useExactMatch )
+    public CallMethodBuilder useExactMatch( final boolean useExactMatch )
     {
         this.useExactMatch = useExactMatch;
         return this;
@@ -146,7 +146,7 @@ public final class CallMethodBuilder
      *        from the body of this element.
      * @return this builder instance
      */
-    public CallMethodBuilder withParamCount( int paramCount )
+    public CallMethodBuilder withParamCount( final int paramCount )
     {
         if ( paramCount < 0 )
         {
@@ -190,7 +190,7 @@ public final class CallMethodBuilder
     @Override
     protected CallMethodRule createRule()
     {
-        CallMethodRule callMethodRule = new CallMethodRule( targetOffset, methodName, paramCount, paramTypes );
+        final CallMethodRule callMethodRule = new CallMethodRule( targetOffset, methodName, paramCount, paramTypes );
         callMethodRule.setUseExactMatch( useExactMatch );
         return callMethodRule;
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/CallParamBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/CallParamBuilder.java
index fd195fa..e192de7 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/CallParamBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/CallParamBuilder.java
@@ -38,7 +38,7 @@ public final class CallParamBuilder
 
     private String attributeName;
 
-    CallParamBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder, LinkedRuleBuilder mainBuilder )
+    CallParamBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder, final LinkedRuleBuilder mainBuilder )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
     }
@@ -49,7 +49,7 @@ public final class CallParamBuilder
      * @param paramIndex The zero-relative parameter number
      * @return this builder instance
      */
-    public CallParamBuilder ofIndex( int paramIndex )
+    public CallParamBuilder ofIndex( final int paramIndex )
     {
         if ( paramIndex < 0 )
         {
@@ -66,7 +66,7 @@ public final class CallParamBuilder
      * @param attributeName The attribute from which to save the parameter value
      * @return this builder instance
      */
-    public CallParamBuilder fromAttribute( /* @Nullable */String attributeName )
+    public CallParamBuilder fromAttribute( /* @Nullable */final String attributeName )
     {
         this.attributeName = attributeName;
         return this;
@@ -78,7 +78,7 @@ public final class CallParamBuilder
      * @param fromStack the parameter flag to be set from the stack
      * @return this builder instance
      */
-    public CallParamBuilder fromStack( boolean fromStack )
+    public CallParamBuilder fromStack( final boolean fromStack )
     {
         this.fromStack = fromStack;
         return this;
@@ -90,7 +90,7 @@ public final class CallParamBuilder
      * @param stackIndex The position of the object from the top of the stack
      * @return this builder instance
      */
-    public CallParamBuilder withStackIndex( int stackIndex )
+    public CallParamBuilder withStackIndex( final int stackIndex )
     {
         this.stackIndex = stackIndex;
         this.fromStack = true;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/DefaultRulesBinder.java b/core/src/main/java/org/apache/commons/digester3/binder/DefaultRulesBinder.java
index e96053a..655fec2 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/DefaultRulesBinder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/DefaultRulesBinder.java
@@ -55,7 +55,7 @@ final class DefaultRulesBinder
      *
      * @param classLoader
      */
-    void initialize( ClassLoader classLoader )
+    void initialize( final ClassLoader classLoader )
     {
         this.classLoader = classLoader;
         fromBinderRuleSet.clear();
@@ -73,9 +73,9 @@ final class DefaultRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( String messagePattern, Object... arguments )
+    public void addError( String messagePattern, final Object... arguments )
     {
-        StackTraceElement[] stackTrace = new Exception().getStackTrace();
+        final StackTraceElement[] stackTrace = new Exception().getStackTrace();
         StackTraceElement element = null;
 
         int stackIndex = stackTrace.length - 1;
@@ -87,7 +87,7 @@ final class DefaultRulesBinder
                 // check if the set ClassLoader resolves the Class in the StackTrace
                 moduleClass = Class.forName( stackTrace[stackIndex].getClassName(), false, this.classLoader );
             }
-            catch ( ClassNotFoundException e )
+            catch ( final ClassNotFoundException e )
             {
                 try
                 {
@@ -95,7 +95,7 @@ final class DefaultRulesBinder
                     moduleClass =
                         Class.forName( stackTrace[stackIndex].getClassName(), false, this.getClass().getClassLoader() );
                 }
-                catch ( ClassNotFoundException e1 )
+                catch ( final ClassNotFoundException e1 )
                 {
                     // Class in the StackTrace can't be found, don't write the file name:line number detail in the
                     // message
@@ -121,9 +121,9 @@ final class DefaultRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( Throwable t )
+    public void addError( final Throwable t )
     {
-        String message = "An exception was caught and reported. Message: " + t.getMessage();
+        final String message = "An exception was caught and reported. Message: " + t.getMessage();
         addError( new ErrorMessage( message, t ) );
     }
 
@@ -133,7 +133,7 @@ final class DefaultRulesBinder
      *
      * @param errorMessage The error to record.
      */
-    private void addError( ErrorMessage errorMessage )
+    private void addError( final ErrorMessage errorMessage )
     {
         this.errors.add( errorMessage );
     }
@@ -141,7 +141,7 @@ final class DefaultRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void install( RulesModule rulesModule )
+    public void install( final RulesModule rulesModule )
     {
         rulesModule.configure( this );
     }
@@ -149,7 +149,7 @@ final class DefaultRulesBinder
     /**
      * {@inheritDoc}
      */
-    public LinkedRuleBuilder forPattern( String pattern )
+    public LinkedRuleBuilder forPattern( final String pattern )
     {
         final String keyPattern;
 
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 f6499e9..328eafd 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
@@ -68,7 +68,7 @@ public final class DigesterLoader
      * @param rulesModules The modules containing the {@code Rule} binding
      * @return A new {@link DigesterLoader} instance
      */
-    public static DigesterLoader newLoader( RulesModule... rulesModules )
+    public static DigesterLoader newLoader( final RulesModule... rulesModules )
     {
         if ( rulesModules == null || rulesModules.length == 0 )
         {
@@ -83,7 +83,7 @@ public final class DigesterLoader
      * @param rulesModules The modules containing the {@code Rule} binding
      * @return A new {@link DigesterLoader} instance
      */
-    public static DigesterLoader newLoader( Iterable<RulesModule> rulesModules )
+    public static DigesterLoader newLoader( final Iterable<RulesModule> rulesModules )
     {
         if ( rulesModules == null )
         {
@@ -158,7 +158,7 @@ public final class DigesterLoader
      *
      * @param rulesModules The modules containing the {@code Rule} binding
      */
-    private DigesterLoader( Iterable<RulesModule> rulesModules )
+    private DigesterLoader( final Iterable<RulesModule> rulesModules )
     {
         this.rulesModules = rulesModules;
         setUseContextClassLoader( true );
@@ -174,7 +174,7 @@ public final class DigesterLoader
      * @param useContextClassLoader determines whether to use Context ClassLoader.
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader setUseContextClassLoader( boolean useContextClassLoader )
+    public DigesterLoader setUseContextClassLoader( final boolean useContextClassLoader )
     {
         if ( useContextClassLoader )
         {
@@ -193,7 +193,7 @@ public final class DigesterLoader
      * @param classLoader the class loader to be used for instantiating application objects when required.
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader setClassLoader( ClassLoader classLoader )
+    public DigesterLoader setClassLoader( final ClassLoader classLoader )
     {
         if ( classLoader == null )
         {
@@ -203,7 +203,7 @@ public final class DigesterLoader
         this.classLoader = createBinderClassLoader( classLoader );
 
         rulesBinder.initialize( this.classLoader );
-        for ( RulesModule rulesModule : rulesModules )
+        for ( final RulesModule rulesModule : rulesModules )
         {
             rulesModule.configure( rulesBinder );
         }
@@ -218,7 +218,7 @@ public final class DigesterLoader
      *        or null if not substitution of these values is to be performed.
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader setSubstitutor( Substitutor substitutor )
+    public DigesterLoader setSubstitutor( final Substitutor substitutor )
     {
         this.substitutor = substitutor;
         return this;
@@ -230,7 +230,7 @@ public final class DigesterLoader
      * @param namespaceAware The new "namespace aware" flag
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader setNamespaceAware( boolean namespaceAware )
+    public DigesterLoader setNamespaceAware( final boolean namespaceAware )
     {
         factory.setNamespaceAware( namespaceAware );
         return this;
@@ -254,7 +254,7 @@ public final class DigesterLoader
      * @return This loader instance, useful to chain methods.
      * @see #setNamespaceAware(boolean)
      */
-    public DigesterLoader setXIncludeAware( boolean xIncludeAware )
+    public DigesterLoader setXIncludeAware( final boolean xIncludeAware )
     {
         factory.setXIncludeAware( xIncludeAware );
         return this;
@@ -278,7 +278,7 @@ public final class DigesterLoader
      * @return This loader instance, useful to chain methods.
      * @see javax.xml.parsers.SAXParserFactory#setValidating(boolean)
      */
-    public DigesterLoader setValidating( boolean validating )
+    public DigesterLoader setValidating( final boolean validating )
     {
         factory.setValidating( validating );
         return this;
@@ -300,7 +300,7 @@ public final class DigesterLoader
      * @param schema The {@link Schema} instance to use.
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader setSchema( Schema schema )
+    public DigesterLoader setSchema( final Schema schema )
     {
         factory.setSchema( schema );
         return this;
@@ -319,7 +319,7 @@ public final class DigesterLoader
      * @throws SAXNotSupportedException if the property name is recognized but not supported
      * @since 3.3
      */
-    public DigesterLoader setFeature( String feature, boolean value )
+    public DigesterLoader setFeature( final String feature, final boolean value )
         throws SAXNotRecognizedException, SAXNotSupportedException, ParserConfigurationException
     {
         factory.setFeature(feature, value);
@@ -348,7 +348,7 @@ public final class DigesterLoader
      * @param entityURL The URL to use for reading this DTD
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader register( String publicId, URL entityURL )
+    public DigesterLoader register( final String publicId, final URL entityURL )
     {
         entityValidator.put( publicId, entityURL );
         return this;
@@ -362,13 +362,13 @@ public final class DigesterLoader
      * @param entityURL The URL to use for reading this entity
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader register( String publicId, String entityURL )
+    public DigesterLoader register( final String publicId, final String entityURL )
     {
         try
         {
             return register( publicId, new URL( entityURL ) );
         }
-        catch ( MalformedURLException e )
+        catch ( final MalformedURLException e )
         {
             throw new IllegalArgumentException( "Malformed URL '" + entityURL + "' : " + e.getMessage() );
         }
@@ -391,7 +391,7 @@ public final class DigesterLoader
      * @param entityResolver a class that implement the <code>EntityResolver</code> interface.
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader setEntityResolver( EntityResolver entityResolver )
+    public DigesterLoader setEntityResolver( final EntityResolver entityResolver )
     {
         this.entityResolver = entityResolver;
         return this;
@@ -404,7 +404,7 @@ public final class DigesterLoader
      *        or named stacks.
      * @return This loader instance, useful to chain methods.
      */
-    public DigesterLoader setStackAction( StackAction stackAction )
+    public DigesterLoader setStackAction( final StackAction stackAction )
     {
         this.stackAction = stackAction;
         return this;
@@ -428,7 +428,7 @@ public final class DigesterLoader
      * @return This loader instance, useful to chain methods.
      * @since 3.1
      */
-    public DigesterLoader setExecutorService( ExecutorService executorService )
+    public DigesterLoader setExecutorService( final ExecutorService executorService )
     {
         this.executorService = executorService;
         return this;
@@ -452,7 +452,7 @@ public final class DigesterLoader
      * @return This loader instance, useful to chain methods.
      * @since 3.2
      */
-    public DigesterLoader setErrorHandler( ErrorHandler errorHandler )
+    public DigesterLoader setErrorHandler( final ErrorHandler errorHandler )
     {
         this.errorHandler = errorHandler;
         return this;
@@ -476,7 +476,7 @@ public final class DigesterLoader
      * @return This loader instance, useful to chain methods.
      * @since 3.2
      */
-    public DigesterLoader setDocumentLocator( Locator locator )
+    public DigesterLoader setDocumentLocator( final Locator locator )
     {
         this.locator = locator;
         return this;
@@ -498,17 +498,17 @@ public final class DigesterLoader
      * @param rules The custom user define {@link Rules} implementation
      * @return a new {@link Digester} instance
      */
-    public Digester newDigester( Rules rules )
+    public Digester newDigester( final Rules rules )
     {
         try
         {
             return this.newDigester( this.factory.newSAXParser(), rules );
         }
-        catch ( ParserConfigurationException e )
+        catch ( final ParserConfigurationException e )
         {
             throw new DigesterLoadingException( "SAX Parser misconfigured", e );
         }
-        catch ( SAXException e )
+        catch ( final SAXException e )
         {
             throw new DigesterLoadingException( "An error occurred while initializing the SAX Parser", e );
         }
@@ -521,7 +521,7 @@ public final class DigesterLoader
      * @param parser the user defined {@code SAXParser}
      * @return a new {@link Digester} instance
      */
-    public Digester newDigester( SAXParser parser )
+    public Digester newDigester( final SAXParser parser )
     {
         return newDigester( parser, new RulesBase() );
     }
@@ -534,7 +534,7 @@ public final class DigesterLoader
      * @param rules The custom user define {@link Rules} implementation
      * @return a new {@link Digester} instance
      */
-    public Digester newDigester( SAXParser parser, Rules rules )
+    public Digester newDigester( final SAXParser parser, final Rules rules )
     {
         if ( parser == null )
         {
@@ -545,7 +545,7 @@ public final class DigesterLoader
         {
             return this.newDigester( parser.getXMLReader(), rules );
         }
-        catch ( SAXException e )
+        catch ( final SAXException e )
         {
             throw new DigesterLoadingException( "An error occurred while creating the XML Reader", e );
         }
@@ -561,7 +561,7 @@ public final class DigesterLoader
      * @param reader The user defined {@code XMLReader}
      * @return a new {@link Digester} instance
      */
-    public Digester newDigester( XMLReader reader )
+    public Digester newDigester( final XMLReader reader )
     {
         return this.newDigester( reader, new RulesBase() );
     }
@@ -577,7 +577,7 @@ public final class DigesterLoader
      * @param rules The custom user define {@link Rules} implementation
      * @return a new {@link Digester} instance
      */
-    public Digester newDigester( XMLReader reader, Rules rules )
+    public Digester newDigester( final XMLReader reader, final Rules rules )
     {
         if ( reader == null )
         {
@@ -588,7 +588,7 @@ public final class DigesterLoader
             throw new DigesterLoadingException( "Impossible to create a new Digester with null Rules" );
         }
 
-        Digester digester = new Digester( reader );
+        final Digester digester = new Digester( reader );
         // the ClassLoader adapter is no needed anymore
         digester.setClassLoader( classLoader.getAdaptedClassLoader() );
         digester.setRules( rules );
@@ -613,7 +613,7 @@ public final class DigesterLoader
      */
     public void addRules( final Digester digester )
     {
-        RuleSet ruleSet = createRuleSet();
+        final RuleSet ruleSet = createRuleSet();
         ruleSet.addRuleInstances( digester );
     }
 
@@ -626,17 +626,17 @@ public final class DigesterLoader
     {
         if ( rulesBinder.hasError() )
         {
-            Formatter fmt = new Formatter().format( HEADING );
+            final Formatter fmt = new Formatter().format( HEADING );
             int index = 1;
 
-            for ( ErrorMessage errorMessage : rulesBinder.getErrors() )
+            for ( final ErrorMessage errorMessage : rulesBinder.getErrors() )
             {
                 fmt.format( "%s) %s%n", index++, errorMessage.getMessage() );
 
-                Throwable cause = errorMessage.getCause();
+                final Throwable cause = errorMessage.getCause();
                 if ( cause != null )
                 {
-                    StringWriter writer = new StringWriter();
+                    final StringWriter writer = new StringWriter();
                     cause.printStackTrace( new PrintWriter( writer ) );
                     fmt.format( "Caused by: %s", writer.getBuffer() );
                 }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoadingException.java b/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoadingException.java
index 9307300..fffc267 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoadingException.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoadingException.java
@@ -39,7 +39,7 @@ public final class DigesterLoadingException
      * @param message the detail message.
      * @param cause the cause.
      */
-    public DigesterLoadingException( String message, Throwable cause )
+    public DigesterLoadingException( final String message, final Throwable cause )
     {
         super( message, cause );
     }
@@ -49,7 +49,7 @@ public final class DigesterLoadingException
      *
      * @param message the detail message.
      */
-    public DigesterLoadingException( String message )
+    public DigesterLoadingException( final String message )
     {
         super( message );
     }
@@ -59,7 +59,7 @@ public final class DigesterLoadingException
      *
      * @param cause the cause.
      */
-    public DigesterLoadingException( Throwable cause )
+    public DigesterLoadingException( final Throwable cause )
     {
         super( cause );
     }
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 33f7993..33aa960 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
@@ -51,7 +51,7 @@ final class ErrorMessage
      * @param messagePattern The error message text pattern
      * @param arguments Arguments referenced by the format specifiers in the format string
      */
-    public ErrorMessage( String messagePattern, Object... arguments )
+    public ErrorMessage( final String messagePattern, final Object... arguments )
     {
         this( format( messagePattern, arguments ), (Throwable) null );
     }
@@ -62,7 +62,7 @@ final class ErrorMessage
      * @param message The error message text
      * @param cause The throwable that caused this message
      */
-    public ErrorMessage( String message, Throwable cause )
+    public ErrorMessage( final String message, final Throwable cause )
     {
         this.message = message;
         this.cause = cause;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/FactoryCreateBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/FactoryCreateBuilder.java
index 7cd12a5..87bc79a 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/FactoryCreateBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/FactoryCreateBuilder.java
@@ -41,8 +41,8 @@ public final class FactoryCreateBuilder
 
     private ObjectCreationFactory<?> creationFactory;
 
-    FactoryCreateBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                          LinkedRuleBuilder mainBuilder, ClassLoader classLoader )
+    FactoryCreateBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                          final LinkedRuleBuilder mainBuilder, final ClassLoader classLoader )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
         this.classLoader = classLoader;
@@ -56,7 +56,7 @@ public final class FactoryCreateBuilder
      * @return this builder instance
      */
     @SuppressWarnings( "unchecked" ) // if class not assignable, will be notified via exception
-    public FactoryCreateBuilder ofType( String className )
+    public FactoryCreateBuilder ofType( final String className )
     {
         if ( className == null )
         {
@@ -65,7 +65,7 @@ public final class FactoryCreateBuilder
 
         try
         {
-            Class<?> type = this.classLoader.loadClass( className );
+            final Class<?> type = this.classLoader.loadClass( className );
             if ( !ObjectCreationFactory.class.isAssignableFrom( type ) )
             {
                 reportError( "factoryCreate().ofType( String )", "NULL Java type not allowed" );
@@ -74,7 +74,7 @@ public final class FactoryCreateBuilder
 
             this.type = (Class<? extends ObjectCreationFactory<?>>) type;
         }
-        catch ( ClassNotFoundException e )
+        catch ( final ClassNotFoundException e )
         {
             reportError( "factoryCreate().ofType( String )", String.format( "class '%s' cannot be load", className ) );
         }
@@ -89,7 +89,7 @@ public final class FactoryCreateBuilder
      * @param type Java class of the object creation factory class
      * @return this builder instance
      */
-    public FactoryCreateBuilder ofType( Class<? extends ObjectCreationFactory<?>> type )
+    public FactoryCreateBuilder ofType( final Class<? extends ObjectCreationFactory<?>> type )
     {
         if ( type == null )
         {
@@ -109,7 +109,7 @@ public final class FactoryCreateBuilder
      * @param creationFactory called on to create the object
      * @return this builder instance
      */
-    public <T> FactoryCreateBuilder usingFactory( /* @Nullable */ObjectCreationFactory<T> creationFactory )
+    public <T> FactoryCreateBuilder usingFactory( /* @Nullable */final ObjectCreationFactory<T> creationFactory )
     {
         this.creationFactory = creationFactory;
         return this;
@@ -121,7 +121,7 @@ public final class FactoryCreateBuilder
      * @param attributeName The attribute containing an override class name if it is present
      * @return this builder instance
      */
-    public FactoryCreateBuilder overriddenByAttribute( /* @Nullable */String attributeName )
+    public FactoryCreateBuilder overriddenByAttribute( /* @Nullable */final String attributeName )
     {
         this.attributeName = attributeName;
         return this;
@@ -133,7 +133,7 @@ public final class FactoryCreateBuilder
      * @param ignoreCreateExceptions if true, exceptions thrown by the object creation factory will be ignored
      * @return this builder instance
      */
-    public FactoryCreateBuilder ignoreCreateExceptions( boolean ignoreCreateExceptions )
+    public FactoryCreateBuilder ignoreCreateExceptions( final boolean ignoreCreateExceptions )
     {
         this.ignoreCreateExceptions = ignoreCreateExceptions;
         return this;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/FromBinderRuleSet.java b/core/src/main/java/org/apache/commons/digester3/binder/FromBinderRuleSet.java
index f9ebdb1..00f7f7e 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/FromBinderRuleSet.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/FromBinderRuleSet.java
@@ -58,11 +58,11 @@ final class FromBinderRuleSet
      * @param <RB> The Digester rule builder type
      * @param ruleBuilder The input rule builder instance.
      */
-    public <R extends Rule, RB extends AbstractBackToLinkedRuleBuilder<R>> void registerProvider( RB ruleBuilder )
+    public <R extends Rule, RB extends AbstractBackToLinkedRuleBuilder<R>> void registerProvider( final RB ruleBuilder )
     {
         this.providers.add( ruleBuilder );
 
-        Key key = new Key( ruleBuilder.getPattern(), ruleBuilder.getNamespaceURI() );
+        final Key key = new Key( ruleBuilder.getPattern(), ruleBuilder.getNamespaceURI() );
 
         // O(1)
         Collection<AbstractBackToLinkedRuleBuilder<? extends Rule>> indexedProviders = this.providersIndex.get( key );
@@ -88,13 +88,13 @@ final class FromBinderRuleSet
      * @param type the rule builder type the client is looking for
      * @return the rule builder of input type, if any
      */
-    public <R extends Rule, RB extends AbstractBackToLinkedRuleBuilder<R>> RB getProvider( String keyPattern,
-    /* @Nullable */String namespaceURI, Class<RB> type )
+    public <R extends Rule, RB extends AbstractBackToLinkedRuleBuilder<R>> RB getProvider( final String keyPattern,
+    /* @Nullable */final String namespaceURI, final Class<RB> type )
     {
-        Key key = new Key( keyPattern, namespaceURI );
+        final Key key = new Key( keyPattern, namespaceURI );
 
         // O(1)
-        Collection<AbstractBackToLinkedRuleBuilder<? extends Rule>> indexedProviders = this.providersIndex.get( key );
+        final Collection<AbstractBackToLinkedRuleBuilder<? extends Rule>> indexedProviders = this.providersIndex.get( key );
 
         if ( indexedProviders == null || indexedProviders.isEmpty() )
         {
@@ -102,7 +102,7 @@ final class FromBinderRuleSet
         }
 
         // FIXME O(n) not so good
-        for ( AbstractBackToLinkedRuleBuilder<? extends Rule> ruleProvider : indexedProviders )
+        for ( final AbstractBackToLinkedRuleBuilder<? extends Rule> ruleProvider : indexedProviders )
         {
             if ( type.isInstance( ruleProvider ) )
             {
@@ -125,9 +125,9 @@ final class FromBinderRuleSet
     /**
      * {@inheritDoc}
      */
-    public void addRuleInstances( Digester digester )
+    public void addRuleInstances( final Digester digester )
     {
-        for ( AbstractBackToLinkedRuleBuilder<? extends Rule> provider : providers )
+        for ( final AbstractBackToLinkedRuleBuilder<? extends Rule> provider : providers )
         {
             digester.addRule( provider.getPattern(), provider.get() );
         }
@@ -151,7 +151,7 @@ final class FromBinderRuleSet
 
         private final String namespaceURI;
 
-        public Key( String pattern, String namespaceURI )
+        public Key( final String pattern, final String namespaceURI )
         {
             this.pattern = pattern;
             this.namespaceURI = namespaceURI;
@@ -184,7 +184,7 @@ final class FromBinderRuleSet
          * {@inheritDoc}
          */
         @Override
-        public boolean equals( Object obj )
+        public boolean equals( final Object obj )
         {
             if ( this == obj )
             {
@@ -201,7 +201,7 @@ final class FromBinderRuleSet
                 return false;
             }
 
-            Key other = (Key) obj;
+            final Key other = (Key) obj;
             if ( namespaceURI == null )
             {
                 if ( other.getNamespaceURI() != null )
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/LinkedRuleBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/LinkedRuleBuilder.java
index 7601279..7569895 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/LinkedRuleBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/LinkedRuleBuilder.java
@@ -66,7 +66,7 @@ public final class LinkedRuleBuilder
      * @param methodName Method name of the parent object to call
      * @return a new {@link CallMethodBuilder} instance.
      */
-    public CallMethodBuilder callMethod( String methodName )
+    public CallMethodBuilder callMethod( final String methodName )
     {
         if ( methodName == null || methodName.length() == 0 )
         {
@@ -128,7 +128,7 @@ public final class LinkedRuleBuilder
      * @param paramObj The parameter to pass along
      * @return a new {@link ObjectParamBuilder} instance.
      */
-    public <T> ObjectParamBuilder<T> objectParam( /* @Nullable */T paramObj )
+    public <T> ObjectParamBuilder<T> objectParam( /* @Nullable */final T paramObj )
     {
         return addProvider( new ObjectParamBuilder<T>( keyPattern, namespaceURI, mainBinder, this, paramObj ) );
     }
@@ -142,7 +142,7 @@ public final class LinkedRuleBuilder
     public NestedPropertiesBuilder setNestedProperties()
     {
         // that would be useful when adding rules via automatically generated rules binding (such annotations)
-        NestedPropertiesBuilder nestedPropertiesBuilder =
+        final NestedPropertiesBuilder nestedPropertiesBuilder =
             fromBinderRuleSet.getProvider( keyPattern, namespaceURI, NestedPropertiesBuilder.class );
         if ( nestedPropertiesBuilder != null )
         {
@@ -159,7 +159,7 @@ public final class LinkedRuleBuilder
      * @param methodName Method name of the parent method to call
      * @return a new {@link SetNextBuilder} instance.
      */
-    public SetNextBuilder setNext( String methodName )
+    public SetNextBuilder setNext( final String methodName )
     {
         if ( methodName == null || methodName.length() == 0 )
         {
@@ -178,7 +178,7 @@ public final class LinkedRuleBuilder
     public SetPropertiesBuilder setProperties()
     {
         // that would be useful when adding rules via automatically generated rules binding (such annotations)
-        SetPropertiesBuilder setPropertiesBuilder =
+        final SetPropertiesBuilder setPropertiesBuilder =
             fromBinderRuleSet.getProvider( keyPattern, namespaceURI, SetPropertiesBuilder.class );
         if ( setPropertiesBuilder != null )
         {
@@ -194,7 +194,7 @@ public final class LinkedRuleBuilder
      * @param attributePropertyName Name of the attribute that will contain the name of the property to be set
      * @return a new {@link SetPropertyBuilder} instance.
      */
-    public SetPropertyBuilder setProperty( String attributePropertyName )
+    public SetPropertyBuilder setProperty( final String attributePropertyName )
     {
         if ( attributePropertyName == null || attributePropertyName.length() == 0 )
         {
@@ -216,7 +216,7 @@ public final class LinkedRuleBuilder
      * @param methodName Method name of the parent method to call
      * @return a new {@link SetRootBuilder} instance.
      */
-    public SetRootBuilder setRoot( String methodName )
+    public SetRootBuilder setRoot( final String methodName )
     {
         if ( methodName == null || methodName.length() == 0 )
         {
@@ -233,7 +233,7 @@ public final class LinkedRuleBuilder
      * @param methodName Method name of the "set parent" method to call
      * @return a new {@link SetTopBuilder} instance.
      */
-    public SetTopBuilder setTop( String methodName )
+    public SetTopBuilder setTop( final String methodName )
     {
         if ( methodName == null || methodName.length() == 0 )
         {
@@ -294,7 +294,7 @@ public final class LinkedRuleBuilder
      * @param rule The custom user rule
      * @return a new {@link ByRuleBuilder} instance.
      */
-    public <R extends Rule> ByRuleBuilder<R> addRule( R rule )
+    public <R extends Rule> ByRuleBuilder<R> addRule( final R rule )
     {
         if ( rule == null )
         {
@@ -311,7 +311,7 @@ public final class LinkedRuleBuilder
      * @param provider The rule provider
      * @return a new {@link ByRuleProviderBuilder} instance.
      */
-    public <R extends Rule> ByRuleProviderBuilder<R> addRuleCreatedBy( RuleProvider<R> provider )
+    public <R extends Rule> ByRuleProviderBuilder<R> addRuleCreatedBy( final RuleProvider<R> provider )
     {
         if ( provider == null )
         {
@@ -328,7 +328,7 @@ public final class LinkedRuleBuilder
      * @param namespaceURI the namespace URI associated to the rule pattern.
      * @return this {@link LinkedRuleBuilder} instance
      */
-    public LinkedRuleBuilder withNamespaceURI( /* @Nullable */String namespaceURI )
+    public LinkedRuleBuilder withNamespaceURI( /* @Nullable */final String namespaceURI )
     {
         if ( namespaceURI == null || namespaceURI.length() > 0 )
         {
@@ -350,7 +350,7 @@ public final class LinkedRuleBuilder
      * @param provider The provider has to be stored in the data structure
      * @return The provider itself has to be stored in the data structure
      */
-    private <R extends Rule, RB extends AbstractBackToLinkedRuleBuilder<R>> RB addProvider( RB provider )
+    private <R extends Rule, RB extends AbstractBackToLinkedRuleBuilder<R>> RB addProvider( final RB provider )
     {
         fromBinderRuleSet.registerProvider( provider );
         return provider;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/NestedPropertiesBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/NestedPropertiesBuilder.java
index 7b10cda..3fdaa13 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/NestedPropertiesBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/NestedPropertiesBuilder.java
@@ -39,8 +39,8 @@ public final class NestedPropertiesBuilder
 
     private boolean allowUnknownChildElements = false;
 
-    NestedPropertiesBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                                    LinkedRuleBuilder mainBuilder )
+    NestedPropertiesBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                                    final LinkedRuleBuilder mainBuilder )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
     }
@@ -51,7 +51,7 @@ public final class NestedPropertiesBuilder
      * @param elementName The child xml element to be ignored
      * @return this builder instance
      */
-    public NestedPropertiesBuilder ignoreElement( String elementName )
+    public NestedPropertiesBuilder ignoreElement( final String elementName )
     {
         if ( elementName == null )
         {
@@ -69,7 +69,7 @@ public final class NestedPropertiesBuilder
      * @deprecated
      */
     @Deprecated
-    public NestedPropertiesBuilder addAlias( String elementName, String propertyName )
+    public NestedPropertiesBuilder addAlias( final String elementName, final String propertyName )
     {
         return addAlias( elementName ).forProperty( propertyName );
     }
@@ -81,7 +81,7 @@ public final class NestedPropertiesBuilder
      * @return the property alias builder
      * @since 3.2
      */
-    public AddAliasBuilder<NestedPropertiesBuilder> addAlias( String elementName )
+    public AddAliasBuilder<NestedPropertiesBuilder> addAlias( final String elementName )
     {
         if ( elementName == null )
         {
@@ -99,7 +99,7 @@ public final class NestedPropertiesBuilder
      *                 and trailing whitespace removed
      * @return this builder instance
      */
-    public NestedPropertiesBuilder trimData( boolean trimData )
+    public NestedPropertiesBuilder trimData( final boolean trimData )
     {
         this.trimData = trimData;
         return this;
@@ -113,7 +113,7 @@ public final class NestedPropertiesBuilder
      *        object property
      * @return this builder instance
      */
-    public NestedPropertiesBuilder allowUnknownChildElements( boolean allowUnknownChildElements )
+    public NestedPropertiesBuilder allowUnknownChildElements( final boolean allowUnknownChildElements )
     {
         this.allowUnknownChildElements = allowUnknownChildElements;
         return this;
@@ -125,7 +125,7 @@ public final class NestedPropertiesBuilder
     @Override
     protected SetNestedPropertiesRule createRule()
     {
-        SetNestedPropertiesRule rule = new SetNestedPropertiesRule( elementNames );
+        final SetNestedPropertiesRule rule = new SetNestedPropertiesRule( elementNames );
         rule.setTrimData( trimData );
         rule.setAllowUnknownChildElements( allowUnknownChildElements );
         return rule;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/NodeCreateRuleProvider.java b/core/src/main/java/org/apache/commons/digester3/binder/NodeCreateRuleProvider.java
index 83954e9..6bb8f88 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/NodeCreateRuleProvider.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/NodeCreateRuleProvider.java
@@ -50,8 +50,8 @@ public final class NodeCreateRuleProvider
 
     private DocumentBuilder documentBuilder;
 
-    NodeCreateRuleProvider( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                            LinkedRuleBuilder mainBuilder )
+    NodeCreateRuleProvider( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                            final LinkedRuleBuilder mainBuilder )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
     }
@@ -66,7 +66,7 @@ public final class NodeCreateRuleProvider
      *                 {@link org.w3c.dom.Node#DOCUMENT_FRAGMENT_NODE Node.DOCUMENT_FRAGMENT_NODE}
      * @return this builder instance
      */
-    public NodeCreateRuleProvider ofType( NodeType nodeType )
+    public NodeCreateRuleProvider ofType( final NodeType nodeType )
     {
         if ( nodeType == null )
         {
@@ -84,7 +84,7 @@ public final class NodeCreateRuleProvider
      * @param documentBuilder the JAXP <code>DocumentBuilder</code> to use
      * @return this builder instance
      */
-    public NodeCreateRuleProvider usingDocumentBuilder( DocumentBuilder documentBuilder )
+    public NodeCreateRuleProvider usingDocumentBuilder( final DocumentBuilder documentBuilder )
     {
         this.documentBuilder = documentBuilder;
         return this;
@@ -102,7 +102,7 @@ public final class NodeCreateRuleProvider
             {
                 return new NodeCreateRule( nodeType.getDocumentType() );
             }
-            catch ( ParserConfigurationException e )
+            catch ( final ParserConfigurationException e )
             {
                 throw new RuntimeException( e );
             }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/ObjectCreateBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/ObjectCreateBuilder.java
index ee0b7da..7756c58 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/ObjectCreateBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/ObjectCreateBuilder.java
@@ -54,8 +54,8 @@ public final class ObjectCreateBuilder
      */
     private Object[] defaultConstructorArguments;
 
-    ObjectCreateBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder, LinkedRuleBuilder mainBuilder,
-                         ClassLoader classLoader )
+    ObjectCreateBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder, final LinkedRuleBuilder mainBuilder,
+                         final ClassLoader classLoader )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
         this.classLoader = classLoader;
@@ -67,7 +67,7 @@ public final class ObjectCreateBuilder
      * @param className Java class name of the object to be created
      * @return this builder instance
      */
-    public ObjectCreateBuilder ofType( String className )
+    public ObjectCreateBuilder ofType( final String className )
     {
         if ( className == null )
         {
@@ -79,7 +79,7 @@ public final class ObjectCreateBuilder
         {
             return ofType( this.classLoader.loadClass( className ) );
         }
-        catch ( ClassNotFoundException e )
+        catch ( final ClassNotFoundException e )
         {
             reportError( "createObject().ofType( String )", String.format( "class '%s' cannot be load", className ) );
             return this;
@@ -93,7 +93,7 @@ public final class ObjectCreateBuilder
      * @param type Java class of the object to be created
      * @return this builder instance
      */
-    public <T> ObjectCreateBuilder ofType( Class<T> type )
+    public <T> ObjectCreateBuilder ofType( final Class<T> type )
     {
         if ( type == null )
         {
@@ -112,7 +112,7 @@ public final class ObjectCreateBuilder
      * @param attributeName The attribute containing an override class name if it is present
      * @return this builder instance
      */
-    public ObjectCreateBuilder ofTypeSpecifiedByAttribute( /* @Nullable */String attributeName )
+    public ObjectCreateBuilder ofTypeSpecifiedByAttribute( /* @Nullable */final String attributeName )
     {
         this.attributeName = attributeName;
         return this;
@@ -125,7 +125,7 @@ public final class ObjectCreateBuilder
      * @return this builder instance
      * @since 3.2
      */
-    public ObjectCreateBuilder usingConstructor( String...paramTypeNames )
+    public ObjectCreateBuilder usingConstructor( final String...paramTypeNames )
     {
         if ( paramTypeNames == null )
         {
@@ -133,14 +133,14 @@ public final class ObjectCreateBuilder
             return this;
         }
 
-        Class<?>[] paramTypes = new Class<?>[paramTypeNames.length];
+        final Class<?>[] paramTypes = new Class<?>[paramTypeNames.length];
         for ( int i = 0; i < paramTypeNames.length; i++ )
         {
             try
             {
                 paramTypes[i] = classLoader.loadClass( paramTypeNames[i] );
             }
-            catch ( ClassNotFoundException e )
+            catch ( final ClassNotFoundException e )
             {
                 this.reportError( format( "createObject().usingConstructor( %s )",
                                           Arrays.toString( paramTypeNames ) ),
@@ -158,7 +158,7 @@ public final class ObjectCreateBuilder
      * @return this builder instance
      * @since 3.2
      */
-    public ObjectCreateBuilder usingConstructor( Class<?>... constructorArgumentTypes )
+    public ObjectCreateBuilder usingConstructor( final Class<?>... constructorArgumentTypes )
     {
         if ( constructorArgumentTypes == null )
         {
@@ -179,7 +179,7 @@ public final class ObjectCreateBuilder
      * @return this builder instance
      * @since 3.2
      */
-    public ObjectCreateBuilder usingDefaultConstructorArguments( Object... defaultConstructorArguments )
+    public ObjectCreateBuilder usingDefaultConstructorArguments( final Object... defaultConstructorArguments )
     {
         if ( defaultConstructorArguments == null )
         {
@@ -200,7 +200,7 @@ public final class ObjectCreateBuilder
     @Override
     protected ObjectCreateRule createRule()
     {
-        ObjectCreateRule objectCreateRule = new ObjectCreateRule( attributeName, type );
+        final ObjectCreateRule objectCreateRule = new ObjectCreateRule( attributeName, type );
 
         if ( constructorArgumentsType != null )
         {
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/ObjectParamBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/ObjectParamBuilder.java
index a7259fa..704905b 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/ObjectParamBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/ObjectParamBuilder.java
@@ -37,8 +37,8 @@ public final class ObjectParamBuilder<T>
 
     private String attributeName;
 
-    ObjectParamBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder, LinkedRuleBuilder mainBuilder,
-                        /* @Nullable */T paramObj )
+    ObjectParamBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder, final LinkedRuleBuilder mainBuilder,
+                        /* @Nullable */final T paramObj )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
         this.paramObj = paramObj;
@@ -50,7 +50,7 @@ public final class ObjectParamBuilder<T>
      * @param paramIndex The zero-relative index of the parameter we are saving
      * @return this builder instance
      */
-    public ObjectParamBuilder<T> ofIndex( int paramIndex )
+    public ObjectParamBuilder<T> ofIndex( final int paramIndex )
     {
         if ( paramIndex < 0 )
         {
@@ -67,7 +67,7 @@ public final class ObjectParamBuilder<T>
      * @param attributeName The attribute which we are attempting to match
      * @return this builder instance
      */
-    public ObjectParamBuilder<T> matchingAttribute( /* @Nullable */String attributeName )
+    public ObjectParamBuilder<T> matchingAttribute( /* @Nullable */final String attributeName )
     {
         this.attributeName = attributeName;
         return this;
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/PathCallParamBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/PathCallParamBuilder.java
index 81e8002..0fecde9 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/PathCallParamBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/PathCallParamBuilder.java
@@ -32,8 +32,8 @@ public final class PathCallParamBuilder
 
     private int paramIndex = 0;
 
-    PathCallParamBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                          LinkedRuleBuilder mainBuilder )
+    PathCallParamBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                          final LinkedRuleBuilder mainBuilder )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
     }
@@ -44,7 +44,7 @@ public final class PathCallParamBuilder
      * @param paramIndex The zero-relative parameter number
      * @return this builder instance
      */
-    public PathCallParamBuilder ofIndex( int paramIndex )
+    public PathCallParamBuilder ofIndex( final int paramIndex )
     {
         if ( paramIndex < 0 )
         {
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 ddefc28..35bddc9 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
@@ -45,8 +45,8 @@ public final class PluginCreateRuleBuilder
 
     private RuleLoader dfltPluginRuleLoader;
 
-    PluginCreateRuleBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                                    LinkedRuleBuilder mainBuilder )
+    PluginCreateRuleBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                                    final LinkedRuleBuilder mainBuilder )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
     }
@@ -58,7 +58,7 @@ public final class PluginCreateRuleBuilder
      * @param type the class which any specified plugin <i>must</i> be descended from
      * @return this builder instance
      */
-    public <T> PluginCreateRuleBuilder ofType( Class<T> type )
+    public <T> PluginCreateRuleBuilder ofType( final Class<T> type )
     {
         if ( type == null )
         {
@@ -78,7 +78,7 @@ public final class PluginCreateRuleBuilder
      * @param type the class which will be used if the user doesn't specify any plugin-class or plugin-id.
      * @return this builder instance
      */
-    public <T> PluginCreateRuleBuilder usingDefaultPluginClass( /* @Nullable */Class<T> type )
+    public <T> PluginCreateRuleBuilder usingDefaultPluginClass( /* @Nullable */final Class<T> type )
     {
         this.dfltPluginClass = type;
         return this;
@@ -92,7 +92,7 @@ public final class PluginCreateRuleBuilder
      *        the default plugin.
      * @return this builder instance
      */
-    public <RL extends RuleLoader> PluginCreateRuleBuilder usingRuleLoader( /* @Nullable */RL ruleLoader )
+    public <RL extends RuleLoader> PluginCreateRuleBuilder usingRuleLoader( /* @Nullable */final RL ruleLoader )
     {
         this.dfltPluginRuleLoader = ruleLoader;
         return this;
@@ -106,7 +106,7 @@ public final class PluginCreateRuleBuilder
      *                 PluginCreateRule which class should be instantiated.
      * @return this builder instance
      */
-    public PluginCreateRuleBuilder setPluginClassAttribute( String attrName )
+    public PluginCreateRuleBuilder setPluginClassAttribute( final String attrName )
     {
         if ( attrName == null )
         {
@@ -125,7 +125,7 @@ public final class PluginCreateRuleBuilder
      * @param attrName The attribute name
      * @return this builder instance
      */
-    public PluginCreateRuleBuilder setPluginClassAttribute( /* @Nullable */String namespaceUri, String attrName )
+    public PluginCreateRuleBuilder setPluginClassAttribute( /* @Nullable */final String namespaceUri, final String attrName )
     {
         if ( attrName == null )
         {
@@ -144,7 +144,7 @@ public final class PluginCreateRuleBuilder
      * @param attrName The attribute name
      * @return this builder instance
      */
-    public PluginCreateRuleBuilder setPluginIdAttribute( String attrName )
+    public PluginCreateRuleBuilder setPluginIdAttribute( final String attrName )
     {
         if ( attrName == null )
         {
@@ -163,7 +163,7 @@ public final class PluginCreateRuleBuilder
      * @param attrName The attribute name
      * @return this builder instance
      */
-    public PluginCreateRuleBuilder setPluginIdAttribute( /* @Nullable */String namespaceUri, String attrName )
+    public PluginCreateRuleBuilder setPluginIdAttribute( /* @Nullable */final String namespaceUri, final String attrName )
     {
         if ( attrName == null )
         {
@@ -182,7 +182,7 @@ public final class PluginCreateRuleBuilder
      * @param attrName The attribute name
      * @return this builder instance
      */
-    private PluginCreateRuleBuilder addToMap( Map<String, String> map, String namespaceUri, String attrName )
+    private PluginCreateRuleBuilder addToMap( final Map<String, String> map, final String namespaceUri, final String attrName )
     {
         map.put( namespaceUri, attrName );
         return this;
@@ -216,12 +216,12 @@ public final class PluginCreateRuleBuilder
             rule = new PluginCreateRule( baseClass );
         }
 
-        for ( Entry<String, String> entry : pluginClassAttributes.entrySet() )
+        for ( final Entry<String, String> entry : pluginClassAttributes.entrySet() )
         {
             rule.setPluginClassAttribute( entry.getKey(), entry.getValue() );
         }
 
-        for ( Entry<String, String> entry : pluginIdAttributes.entrySet() )
+        for ( final Entry<String, String> entry : pluginIdAttributes.entrySet() )
         {
             rule.setPluginIdAttribute( entry.getKey(), entry.getValue() );
         }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/PluginDeclarationRuleBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/PluginDeclarationRuleBuilder.java
index 032a7bf..0490b7a 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/PluginDeclarationRuleBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/PluginDeclarationRuleBuilder.java
@@ -30,8 +30,8 @@ public final class PluginDeclarationRuleBuilder
     extends AbstractBackToLinkedRuleBuilder<PluginDeclarationRule>
 {
 
-    PluginDeclarationRuleBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                                  LinkedRuleBuilder mainBuilder )
+    PluginDeclarationRuleBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                                  final LinkedRuleBuilder mainBuilder )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/SetNextBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/SetNextBuilder.java
index 033eb61..d1ab2ed 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/SetNextBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/SetNextBuilder.java
@@ -30,8 +30,8 @@ public final class SetNextBuilder
     extends AbstractParamTypeBuilder<SetNextRule>
 {
 
-    SetNextBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                           LinkedRuleBuilder mainBuilder, String methodName, ClassLoader classLoader )
+    SetNextBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                           final LinkedRuleBuilder mainBuilder, final String methodName, final ClassLoader classLoader )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder, methodName, classLoader );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/SetPropertiesBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/SetPropertiesBuilder.java
index c392315..e9da2de 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/SetPropertiesBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/SetPropertiesBuilder.java
@@ -35,8 +35,8 @@ public final class SetPropertiesBuilder
 
     private boolean ignoreMissingProperty = true;
 
-    SetPropertiesBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                          LinkedRuleBuilder mainBuilder )
+    SetPropertiesBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                          final LinkedRuleBuilder mainBuilder )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
     }
@@ -50,7 +50,7 @@ public final class SetPropertiesBuilder
      * @deprecated
      */
     @Deprecated
-    public SetPropertiesBuilder addAlias( String attributeName, String propertyName )
+    public SetPropertiesBuilder addAlias( final String attributeName, final String propertyName )
     {
         return addAlias( attributeName ).forProperty( propertyName );
     }
@@ -62,7 +62,7 @@ public final class SetPropertiesBuilder
      * @return the property alias builder
      * @since 3.2
      */
-    public AddAliasBuilder<SetPropertiesBuilder> addAlias( String attributeName )
+    public AddAliasBuilder<SetPropertiesBuilder> addAlias( final String attributeName )
     {
         if ( attributeName == null )
         {
@@ -77,7 +77,7 @@ public final class SetPropertiesBuilder
      * @param attributeName The attribute to match has to be ignored
      * @return this builder instance
      */
-    public SetPropertiesBuilder ignoreAttribute( String attributeName )
+    public SetPropertiesBuilder ignoreAttribute( final String attributeName )
     {
         if ( attributeName == null )
         {
@@ -96,7 +96,7 @@ public final class SetPropertiesBuilder
      * @param ignoreMissingProperty false to stop the parsing on unmatched attributes
      * @return this builder instance
      */
-    public SetPropertiesBuilder ignoreMissingProperty( boolean ignoreMissingProperty )
+    public SetPropertiesBuilder ignoreMissingProperty( final boolean ignoreMissingProperty )
     {
         this.ignoreMissingProperty = ignoreMissingProperty;
         return this;
@@ -108,7 +108,7 @@ public final class SetPropertiesBuilder
     @Override
     protected SetPropertiesRule createRule()
     {
-        SetPropertiesRule rule = new SetPropertiesRule( aliases );
+        final SetPropertiesRule rule = new SetPropertiesRule( aliases );
         rule.setIgnoreMissingProperty( ignoreMissingProperty );
         return rule;
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/SetPropertyBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/SetPropertyBuilder.java
index eb1640a..8f2c463 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/SetPropertyBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/SetPropertyBuilder.java
@@ -36,8 +36,8 @@ public final class SetPropertyBuilder
 
     private String valueAttributeName;
 
-    SetPropertyBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder, LinkedRuleBuilder mainBuilder,
-                        String attributePropertyName )
+    SetPropertyBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder, final LinkedRuleBuilder mainBuilder,
+                        final String attributePropertyName )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder );
         this.attributePropertyName = attributePropertyName;
@@ -49,7 +49,7 @@ public final class SetPropertyBuilder
      * @param valueAttributeName Name of the attribute that will contain the value to which the property should be set.
      * @return this builder instance
      */
-    public SetPropertyBuilder extractingValueFromAttribute( String valueAttributeName )
+    public SetPropertyBuilder extractingValueFromAttribute( final String valueAttributeName )
     {
         if ( attributePropertyName == null || attributePropertyName.length() == 0 )
         {
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/SetRootBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/SetRootBuilder.java
index a26b0ec..e79c976 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/SetRootBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/SetRootBuilder.java
@@ -30,8 +30,8 @@ public final class SetRootBuilder
     extends AbstractParamTypeBuilder<SetRootRule>
 {
 
-    SetRootBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                           LinkedRuleBuilder mainBuilder, String methodName, ClassLoader classLoader )
+    SetRootBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                           final LinkedRuleBuilder mainBuilder, final String methodName, final ClassLoader classLoader )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder, methodName, classLoader );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/binder/SetTopBuilder.java b/core/src/main/java/org/apache/commons/digester3/binder/SetTopBuilder.java
index 62dd313..3dff5b1 100644
--- a/core/src/main/java/org/apache/commons/digester3/binder/SetTopBuilder.java
+++ b/core/src/main/java/org/apache/commons/digester3/binder/SetTopBuilder.java
@@ -30,8 +30,8 @@ public final class SetTopBuilder
     extends AbstractParamTypeBuilder<SetTopRule>
 {
 
-    SetTopBuilder( String keyPattern, String namespaceURI, RulesBinder mainBinder,
-                           LinkedRuleBuilder mainBuilder, String methodName, ClassLoader classLoader )
+    SetTopBuilder( final String keyPattern, final String namespaceURI, final RulesBinder mainBinder,
+                           final LinkedRuleBuilder mainBuilder, final String methodName, final ClassLoader classLoader )
     {
         super( keyPattern, namespaceURI, mainBinder, mainBuilder, methodName, classLoader );
     }
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 e14e6e7..9779e33 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
@@ -60,7 +60,7 @@ public class Declaration
      *
      * @param pluginClassName The name of the class of the object to be instantiated (will be load in the init method)
      */
-    public Declaration( String pluginClassName )
+    public Declaration( final String pluginClassName )
     {
         // We can't load the pluginClass at this time, because we don't
         // have a digester instance yet to load it through. So just
@@ -74,7 +74,7 @@ public class Declaration
      *
      * @param pluginClass The class of the object to be instantiated (will be load in the init method)
      */
-    public Declaration( Class<?> pluginClass )
+    public Declaration( final Class<?> pluginClass )
     {
         this.pluginClass = pluginClass;
         this.pluginClassName = pluginClass.getName();
@@ -87,7 +87,7 @@ public class Declaration
      * @param pluginClass The class of the object to be instantiated (will be load in the init method)
      * @param ruleLoader Class which is responsible for dynamically loading this plugin's rules on demand
      */
-    public Declaration( Class<?> pluginClass, RuleLoader ruleLoader )
+    public Declaration( final Class<?> pluginClass, final RuleLoader ruleLoader )
     {
         this.pluginClass = pluginClass;
         this.pluginClassName = pluginClass.getName();
@@ -104,7 +104,7 @@ public class Declaration
      *
      * @param id The id that the user associated with a particular plugin declaration in the input xml
      */
-    public void setId( String id )
+    public void setId( final String id )
     {
         this.id = id;
     }
@@ -131,7 +131,7 @@ public class Declaration
      *
      * @param p The properties have to be copied into the properties member of this object
      */
-    public void setProperties( Properties p )
+    public void setProperties( final Properties p )
     {
         properties.putAll( p );
     }
@@ -155,11 +155,11 @@ public class Declaration
      * @param pm The plugin manager reference
      * @throws PluginException if any error occurs while loading the rules
      */
-    public void init( Digester digester, PluginManager pm )
+    public void init( final Digester digester, final PluginManager pm )
         throws PluginException
     {
-        Log log = digester.getLogger();
-        boolean debug = log.isDebugEnabled();
+        final Log log = digester.getLogger();
+        final boolean debug = log.isDebugEnabled();
         if ( debug )
         {
             log.debug( "init being called!" );
@@ -177,7 +177,7 @@ public class Declaration
                 // load the plugin class object
                 pluginClass = digester.getClassLoader().loadClass( pluginClassName );
             }
-            catch ( ClassNotFoundException cnfe )
+            catch ( final ClassNotFoundException cnfe )
             {
                 throw new PluginException( "Unable to load class " + pluginClassName, cnfe );
             }
@@ -223,11 +223,11 @@ public class Declaration
      * @param pattern The pattern the custom rules have to be bound
      * @throws PluginException if any error occurs
      */
-    public void configure( Digester digester, String pattern )
+    public void configure( final Digester digester, final String pattern )
         throws PluginException
     {
-        Log log = digester.getLogger();
-        boolean debug = log.isDebugEnabled();
+        final Log log = digester.getLogger();
+        final boolean debug = log.isDebugEnabled();
         if ( debug )
         {
             log.debug( "configure being called!" );
diff --git a/core/src/main/java/org/apache/commons/digester3/plugins/LogUtils.java b/core/src/main/java/org/apache/commons/digester3/plugins/LogUtils.java
index 7a4c6cc..bc58cdc 100644
--- a/core/src/main/java/org/apache/commons/digester3/plugins/LogUtils.java
+++ b/core/src/main/java/org/apache/commons/digester3/plugins/LogUtils.java
@@ -55,7 +55,7 @@ class LogUtils
      * <p>
      * You should use this method instead of digester.getLogger() in any situation where the digester might be null.
      */
-    static Log getLogger( Digester digester )
+    static Log getLogger( final Digester digester )
     {
         if ( digester == null )
         {
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 7935cb7..d092a6f 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
@@ -54,7 +54,7 @@ public class PluginAssertionFailure
      *
      * @param cause underlying exception that caused this to be thrown
      */
-    public PluginAssertionFailure( Throwable cause )
+    public PluginAssertionFailure( final Throwable cause )
     {
         super( cause );
     }
@@ -64,7 +64,7 @@ public class PluginAssertionFailure
      *
      * @param msg describes the reason this exception is being thrown.
      */
-    public PluginAssertionFailure( String msg )
+    public PluginAssertionFailure( final String msg )
     {
         super( msg );
     }
@@ -75,7 +75,7 @@ public class PluginAssertionFailure
      * @param msg describes the reason this exception is being thrown.
      * @param cause underlying exception that caused this to be thrown
      */
-    public PluginAssertionFailure( String msg, Throwable cause )
+    public PluginAssertionFailure( final String msg, final Throwable cause )
     {
         super( msg, cause );
     }
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 141cc02..1ae1dc8 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
@@ -37,7 +37,7 @@ public class PluginConfigurationException
      *
      * @param cause underlying exception that caused this to be thrown
      */
-    public PluginConfigurationException( Throwable cause )
+    public PluginConfigurationException( final Throwable cause )
     {
         super( cause );
     }
@@ -47,7 +47,7 @@ public class PluginConfigurationException
      *
      * @param msg describes the reason this exception is being thrown.
      */
-    public PluginConfigurationException( String msg )
+    public PluginConfigurationException( final String msg )
     {
         super( msg );
     }
@@ -58,7 +58,7 @@ public class PluginConfigurationException
      * @param msg describes the reason this exception is being thrown.
      * @param cause underlying exception that caused this to be thrown
      */
-    public PluginConfigurationException( String msg, Throwable cause )
+    public PluginConfigurationException( final String msg, final Throwable cause )
     {
         super( msg, cause );
     }
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 73a6067..a70e7b1 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
@@ -118,7 +118,7 @@ public class PluginContext
      *
      * @param ruleFinders the list of RuleFinder objects
      */
-    public void setRuleFinders( List<RuleFinder> ruleFinders )
+    public void setRuleFinders( final List<RuleFinder> ruleFinders )
     {
         this.ruleFinders = ruleFinders;
     }
@@ -157,7 +157,7 @@ public class PluginContext
      *            this parameter <i>must</i> be null.
      * @param attrName is the attribute whose value contains the name of the class to be instantiated.
      */
-    public void setPluginClassAttribute( String namespaceUri, String attrName )
+    public void setPluginClassAttribute( final String namespaceUri, final String attrName )
     {
         pluginClassAttrNs = namespaceUri;
         pluginClassAttr = attrName;
@@ -198,7 +198,7 @@ public class PluginContext
      * @param attrName is the attribute whose value contains the id of the plugin declaration to be used when
      *            instantiating an object.
      */
-    public void setPluginIdAttribute( String namespaceUri, String attrName )
+    public void setPluginIdAttribute( final String namespaceUri, final String attrName )
     {
         pluginIdAttrNs = namespaceUri;
         pluginIdAttr = attrName;
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 d89fec3..ff47ec0 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
@@ -75,7 +75,7 @@ public class PluginCreateRule
      * 
      * @param baseClass is the class which any specified plugin <i>must</i> be descended from.
      */
-    public PluginCreateRule( Class<?> baseClass )
+    public PluginCreateRule( final Class<?> baseClass )
     {
         this.baseClass = baseClass;
     }
@@ -88,7 +88,7 @@ public class PluginCreateRule
      * @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.
      */
-    public PluginCreateRule( Class<?> baseClass, Class<?> dfltPluginClass )
+    public PluginCreateRule( final Class<?> baseClass, final Class<?> dfltPluginClass )
     {
         this.baseClass = baseClass;
         if ( dfltPluginClass != null )
@@ -107,7 +107,7 @@ public class PluginCreateRule
      * @param dfltPluginRuleLoader is a RuleLoader instance which knows how to load the custom rules associated with
      *            this default plugin.
      */
-    public PluginCreateRule( Class<?> baseClass, Class<?> dfltPluginClass, RuleLoader dfltPluginRuleLoader )
+    public PluginCreateRule( final Class<?> baseClass, final Class<?> dfltPluginClass, final RuleLoader dfltPluginRuleLoader )
     {
         this.baseClass = baseClass;
         if ( dfltPluginClass != null )
@@ -130,7 +130,7 @@ public class PluginCreateRule
      *            this parameter <i>must</i> be null.
      * @param attrName is the attribute whose value contains the name of the class to be instantiated.
      */
-    public void setPluginClassAttribute( String namespaceUri, String attrName )
+    public void setPluginClassAttribute( final String namespaceUri, final String attrName )
     {
         pluginClassAttrNs = namespaceUri;
         pluginClassAttr = attrName;
@@ -149,7 +149,7 @@ public class PluginCreateRule
      * @param attrName is the attribute whose value contains the id of the plugin declaration to be used when
      *            instantiating an object.
      */
-    public void setPluginIdAttribute( String namespaceUri, String attrName )
+    public void setPluginIdAttribute( final String namespaceUri, final String attrName )
     {
         pluginIdAttrNs = namespaceUri;
         pluginIdAttr = attrName;
@@ -160,10 +160,10 @@ public class PluginCreateRule
     /**
      * {@inheritDoc}
      */
-    public void postRegisterInit( String matchPattern )
+    public void postRegisterInit( final String matchPattern )
     {
-        Log log = LogUtils.getLogger( getDigester() );
-        boolean debug = log.isDebugEnabled();
+        final Log log = LogUtils.getLogger( getDigester() );
+        final boolean debug = log.isDebugEnabled();
         if ( debug )
         {
             log.debug( "PluginCreateRule.postRegisterInit" + ": rule registered for pattern [" + matchPattern + "]" );
@@ -220,8 +220,8 @@ public class PluginCreateRule
             baseClass = Object.class;
         }
 
-        PluginRules rules = (PluginRules) getDigester().getRules();
-        PluginManager pm = rules.getPluginManager();
+        final PluginRules rules = (PluginRules) getDigester().getRules();
+        final PluginManager pm = rules.getPluginManager();
 
         // check default class is valid
         if ( defaultPlugin != null )
@@ -239,7 +239,7 @@ public class PluginCreateRule
                 defaultPlugin.init( getDigester(), pm );
 
             }
-            catch ( PluginException pwe )
+            catch ( final PluginException pwe )
             {
 
                 throw new PluginConfigurationException( pwe.getMessage(), pwe.getCause() );
@@ -309,11 +309,11 @@ public class PluginCreateRule
      * @throws Exception if any error occurs
      */
     @Override
-    public void begin( String namespace, String name, org.xml.sax.Attributes attributes )
+    public void begin( final String namespace, final String name, final org.xml.sax.Attributes attributes )
         throws Exception
     {
-        Log log = getDigester().getLogger();
-        boolean debug = log.isDebugEnabled();
+        final Log log = getDigester().getLogger();
+        final boolean debug = log.isDebugEnabled();
         if ( debug )
         {
             log.debug( "PluginCreateRule.begin" + ": pattern=[" + pattern + "]" + " match=[" + getDigester().getMatch()
@@ -328,8 +328,8 @@ public class PluginCreateRule
         }
 
         // load any custom rules associated with the plugin
-        PluginRules oldRules = (PluginRules) getDigester().getRules();
-        PluginManager pluginManager = oldRules.getPluginManager();
+        final PluginRules oldRules = (PluginRules) getDigester().getRules();
+        final PluginManager pluginManager = oldRules.getPluginManager();
         Declaration currDeclaration = null;
 
         String pluginClassName;
@@ -376,7 +376,7 @@ public class PluginCreateRule
                 {
                     currDeclaration.init( getDigester(), pluginManager );
                 }
-                catch ( PluginException pwe )
+                catch ( final PluginException pwe )
                 {
                     throw new PluginInvalidInputException( pwe.getMessage(), pwe.getCause() );
                 }
@@ -402,16 +402,16 @@ public class PluginCreateRule
         }
 
         // get the class of the user plugged-in type
-        Class<?> pluginClass = currDeclaration.getPluginClass();
+        final Class<?> pluginClass = currDeclaration.getPluginClass();
 
-        String path = getDigester().getMatch();
+        final String path = getDigester().getMatch();
 
         // create a new Rules object and effectively push it onto a stack of
         // rules objects. The stack is actually a linked list; using the
         // PluginRules constructor below causes the new instance to link
         // to the previous head-of-stack, then the Digester.setRules() makes
         // the new instance the new head-of-stack.
-        PluginRules newRules = new PluginRules( getDigester(), path, oldRules, pluginClass );
+        final PluginRules newRules = new PluginRules( getDigester(), path, oldRules, pluginClass );
         getDigester().setRules( newRules );
 
         if ( debug )
@@ -424,7 +424,7 @@ public class PluginCreateRule
         currDeclaration.configure( getDigester(), pattern );
 
         // create an instance of the plugin class
-        Object instance = pluginClass.newInstance();
+        final Object instance = pluginClass.newInstance();
         getDigester().push( instance );
         if ( debug )
         {
@@ -435,7 +435,7 @@ public class PluginCreateRule
         // and now we have to fire any custom rules which would have
         // been matched by the same path that matched this rule, had
         // they been loaded at that time.
-        List<Rule> rules = newRules.getDecoratedRules().match( namespace, path, name, attributes );
+        final List<Rule> rules = newRules.getDecoratedRules().match( namespace, path, name, attributes );
         fireBeginMethods( rules, namespace, name, attributes );
     }
 
@@ -443,7 +443,7 @@ public class PluginCreateRule
      * {@inheritDoc}
      */
     @Override
-    public void body( String namespace, String name, String text )
+    public void body( final String namespace, final String name, final String text )
         throws Exception
     {
 
@@ -460,9 +460,9 @@ public class PluginCreateRule
         // Note that this applies only to rules matching exactly the path
         // which is also matched by this PluginCreateRule.
 
-        String path = getDigester().getMatch();
-        PluginRules newRules = (PluginRules) getDigester().getRules();
-        List<Rule> rules = newRules.getDecoratedRules().match( namespace, path, name, null );
+        final String path = getDigester().getMatch();
+        final PluginRules newRules = (PluginRules) getDigester().getRules();
+        final List<Rule> rules = newRules.getDecoratedRules().match( namespace, path, name, null );
         fireBodyMethods( rules, namespace, name, text );
     }
 
@@ -470,13 +470,13 @@ public class PluginCreateRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         // see body method for more info
-        String path = getDigester().getMatch();
-        PluginRules newRules = (PluginRules) getDigester().getRules();
-        List<Rule> rules = newRules.getDecoratedRules().match( namespace, path, name, null );
+        final String path = getDigester().getMatch();
+        final PluginRules newRules = (PluginRules) getDigester().getRules();
+        final List<Rule> rules = newRules.getDecoratedRules().match( namespace, path, name, null );
         fireEndMethods( rules, namespace, name );
 
         // pop the stack of PluginRules instances, which
@@ -514,15 +514,15 @@ public class PluginCreateRule
      * @param list The attribute list of this element
      * @throws Exception if any error occurs
      */
-    public void fireBeginMethods( List<Rule> rules, String namespace, String name, Attributes list )
+    public void fireBeginMethods( final List<Rule> rules, final String namespace, final String name, final Attributes list )
         throws Exception
     {
 
         if ( ( rules != null ) && ( !rules.isEmpty() ) )
         {
-            Log log = getDigester().getLogger();
-            boolean debug = log.isDebugEnabled();
-            for ( Rule rule : rules )
+            final Log log = getDigester().getLogger();
+            final boolean debug = log.isDebugEnabled();
+            for ( final Rule rule : rules )
             {
                 if ( debug )
                 {
@@ -532,11 +532,11 @@ public class PluginCreateRule
                 {
                     rule.begin( namespace, name, list );
                 }
-                catch ( Exception e )
+                catch ( final Exception e )
                 {
                     throw getDigester().createSAXException( e );
                 }
-                catch ( Error e )
+                catch ( final Error e )
                 {
                     throw e;
                 }
@@ -557,14 +557,14 @@ public class PluginCreateRule
      * @param text The text of the body of this element
      * @throws Exception if any error occurs
      */
-    private void fireBodyMethods( List<Rule> rules, String namespaceURI, String name, String text )
+    private void fireBodyMethods( final List<Rule> rules, final String namespaceURI, final String name, final String text )
         throws Exception
     {
         if ( ( rules != null ) && ( !rules.isEmpty() ) )
         {
-            Log log = getDigester().getLogger();
-            boolean debug = log.isDebugEnabled();
-            for ( Rule rule : rules )
+            final Log log = getDigester().getLogger();
+            final boolean debug = log.isDebugEnabled();
+            for ( final Rule rule : rules )
             {
                 if ( debug )
                 {
@@ -574,11 +574,11 @@ public class PluginCreateRule
                 {
                     rule.body( namespaceURI, name, text );
                 }
-                catch ( Exception e )
+                catch ( final Exception e )
                 {
                     throw getDigester().createSAXException( e );
                 }
-                catch ( Error e )
+                catch ( final Error e )
                 {
                     throw e;
                 }
@@ -597,18 +597,18 @@ public class PluginCreateRule
      * @param name the local name if the parser is namespace aware, or just the element name otherwise
      * @throws Exception if any error occurs
      */
-    public void fireEndMethods( List<Rule> rules, String namespaceURI, String name )
+    public void fireEndMethods( final List<Rule> rules, final String namespaceURI, final String name )
         throws Exception
     {
         // Fire "end" events for all relevant rules in reverse order
         if ( rules != null )
         {
-            Log log = getDigester().getLogger();
-            boolean debug = log.isDebugEnabled();
+            final Log log = getDigester().getLogger();
+            final boolean debug = log.isDebugEnabled();
             for ( int i = 0; i < rules.size(); i++ )
             {
-                int j = ( rules.size() - i ) - 1;
-                Rule rule = rules.get( j );
+                final int j = ( rules.size() - i ) - 1;
+                final Rule rule = rules.get( j );
                 if ( debug )
                 {
                     log.debug( "  Fire end() for " + rule );
@@ -617,11 +617,11 @@ public class PluginCreateRule
                 {
                     rule.end( namespaceURI, name );
                 }
-                catch ( Exception e )
+                catch ( final Exception e )
                 {
                     throw getDigester().createSAXException( e );
                 }
-                catch ( Error e )
+                catch ( final Error e )
                 {
                     throw e;
                 }
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 929a183..8be1ce0 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
@@ -60,11 +60,11 @@ public class PluginDeclarationRule
      * @throws Exception if any error occurs
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
-        int nAttrs = attributes.getLength();
-        Properties props = new Properties();
+        final int nAttrs = attributes.getLength();
+        final Properties props = new Properties();
         for ( int i = 0; i < nAttrs; ++i )
         {
             String key = attributes.getLocalName( i );
@@ -72,7 +72,7 @@ public class PluginDeclarationRule
             {
                 key = attributes.getQName( i );
             }
-            String value = attributes.getValue( i );
+            final String value = attributes.getValue( i );
             props.setProperty( key, value );
         }
 
@@ -80,7 +80,7 @@ public class PluginDeclarationRule
         {
             declarePlugin( getDigester(), props );
         }
-        catch ( PluginInvalidInputException ex )
+        catch ( final PluginInvalidInputException ex )
         {
             throw new PluginInvalidInputException( "Error on element [" + getDigester().getMatch() + "]: "
                 + ex.getMessage() );
@@ -94,11 +94,11 @@ public class PluginDeclarationRule
      * @param props the properties where extracting plugin attributes
      * @throws PluginException if any error occurs while declaring the plugin
      */
-    public static void declarePlugin( Digester digester, Properties props )
+    public static void declarePlugin( final Digester digester, final Properties props )
         throws PluginException
     {
-        String id = props.getProperty( "id" );
-        String pluginClassName = props.getProperty( "class" );
+        final String id = props.getProperty( "id" );
+        final String pluginClassName = props.getProperty( "class" );
 
         if ( id == null )
         {
@@ -110,12 +110,12 @@ public class PluginDeclarationRule
             throw new PluginInvalidInputException( "mandatory attribute class not present on plugin declaration" );
         }
 
-        Declaration newDecl = new Declaration( pluginClassName );
+        final Declaration newDecl = new Declaration( pluginClassName );
         newDecl.setId( id );
         newDecl.setProperties( props );
 
-        PluginRules rc = (PluginRules) digester.getRules();
-        PluginManager pm = rc.getPluginManager();
+        final PluginRules rc = (PluginRules) digester.getRules();
+        final PluginManager pm = rc.getPluginManager();
 
         newDecl.init( digester, pm );
         pm.addDeclaration( newDecl );
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 ca2eadf..1232856 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
@@ -35,7 +35,7 @@ public class PluginException
     /**
      * @param cause underlying exception that caused this to be thrown
      */
-    public PluginException( Throwable cause )
+    public PluginException( final Throwable cause )
     {
         this( cause.getMessage() );
         this.cause = cause;
@@ -44,7 +44,7 @@ public class PluginException
     /**
      * @param msg describes the reason this exception is being thrown.
      */
-    public PluginException( String msg )
+    public PluginException( final String msg )
     {
         super( msg );
     }
@@ -53,7 +53,7 @@ public class PluginException
      * @param msg describes the reason this exception is being thrown.
      * @param cause underlying exception that caused this to be thrown
      */
-    public PluginException( String msg, Throwable cause )
+    public PluginException( final String msg, final Throwable cause )
     {
         this( msg );
         this.cause = cause;
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 ddf32c5..c3bdcdc 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
@@ -35,7 +35,7 @@ public class PluginInvalidInputException
      *
      * @param cause underlying exception that caused this to be thrown
      */
-    public PluginInvalidInputException( Throwable cause )
+    public PluginInvalidInputException( final Throwable cause )
     {
         super( cause );
     }
@@ -45,7 +45,7 @@ public class PluginInvalidInputException
      *
      * @param msg describes the reason this exception is being thrown.
      */
-    public PluginInvalidInputException( String msg )
+    public PluginInvalidInputException( final String msg )
     {
         super( msg );
     }
@@ -56,7 +56,7 @@ public class PluginInvalidInputException
      * @param msg describes the reason this exception is being thrown.
      * @param cause underlying exception that caused this to be thrown
      */
-    public PluginInvalidInputException( String msg, Throwable cause )
+    public PluginInvalidInputException( final String msg, final Throwable cause )
     {
         super( msg, cause );
     }
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 35f7907..8462483 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
@@ -59,7 +59,7 @@ public class PluginManager
      *
      * @param r The object containing data that should only exist once for each Digester instance.
      */
-    public PluginManager( PluginContext r )
+    public PluginManager( final PluginContext r )
     {
         pluginContext = r;
     }
@@ -73,7 +73,7 @@ public class PluginManager
      * 
      * @param parent must be non-null.
      */
-    public PluginManager( PluginManager parent )
+    public PluginManager( final PluginManager parent )
     {
         this.parent = parent;
         this.pluginContext = parent.pluginContext;
@@ -89,13 +89,13 @@ public class PluginManager
      * 
      * @param decl an object representing a plugin class.
      */
-    public void addDeclaration( Declaration decl )
+    public void addDeclaration( final Declaration decl )
     {
-        Log log = LogUtils.getLogger( null );
-        boolean debug = log.isDebugEnabled();
+        final Log log = LogUtils.getLogger( null );
+        final boolean debug = log.isDebugEnabled();
 
-        Class<?> pluginClass = decl.getPluginClass();
-        String id = decl.getId();
+        final Class<?> pluginClass = decl.getPluginClass();
+        final String id = decl.getId();
 
         declarationsByClass.put( pluginClass.getName(), decl );
 
@@ -115,7 +115,7 @@ public class PluginManager
      * @param className The {@link Declaration} class name
      * @return The Declaration instance obtained by the input class name
      */
-    public Declaration getDeclarationByClass( String className )
+    public Declaration getDeclarationByClass( final String className )
     {
         Declaration decl = declarationsByClass.get( className );
 
@@ -133,7 +133,7 @@ public class PluginManager
      * @param id Description of the Parameter
      * @return The declaration value
      */
-    public Declaration getDeclarationById( String id )
+    public Declaration getDeclarationById( final String id )
     {
         Declaration decl = declarationsById.get( id );
 
@@ -159,7 +159,7 @@ public class PluginManager
      * @return The discovered Rule loader instance
      * @throws PluginException if any error occurs while finding the loader
      */
-    public RuleLoader findLoader( Digester digester, String id, Class<?> pluginClass, Properties props )
+    public RuleLoader findLoader( final Digester digester, final String id, final Class<?> pluginClass, final Properties props )
         throws PluginException
     {
 
@@ -167,16 +167,16 @@ public class PluginManager
         // until one of them locates a source of dynamic rules given
         // this specific plugin class and the associated declaration
         // properties.
-        Log log = LogUtils.getLogger( digester );
-        boolean debug = log.isDebugEnabled();
+        final Log log = LogUtils.getLogger( digester );
+        final boolean debug = log.isDebugEnabled();
         log.debug( "scanning ruleFinders to locate loader.." );
 
-        List<RuleFinder> ruleFinders = pluginContext.getRuleFinders();
+        final List<RuleFinder> ruleFinders = pluginContext.getRuleFinders();
         RuleLoader ruleLoader = null;
-        for ( Iterator<RuleFinder> i = ruleFinders.iterator(); i.hasNext() && ruleLoader == null; )
+        for ( final Iterator<RuleFinder> i = ruleFinders.iterator(); i.hasNext() && ruleLoader == null; )
         {
 
-            RuleFinder finder = i.next();
+            final RuleFinder finder = i.next();
             if ( debug )
             {
                 log.debug( "checking finder of type " + finder.getClass().getName() );
@@ -185,7 +185,7 @@ public class PluginManager
             {
                 ruleLoader = finder.findLoader( digester, pluginClass, props );
             }
-            catch ( PluginException e )
+            catch ( final PluginException e )
             {
                 throw new PluginException( "Unable to locate plugin rules for plugin" + " with id [" + id + "]"
                     + ", and class [" + pluginClass.getName() + "]" + ":" + e.getMessage(), e.getCause() );
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 395d0f1..2788b30 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
@@ -99,7 +99,7 @@ public class PluginRules
      *
      * @param decoratedRules The top-level Rules object which handles rule-matching using the specified implementation.
      */
-    public PluginRules( Rules decoratedRules )
+    public PluginRules( final Rules decoratedRules )
     {
         this.decoratedRules = decoratedRules;
 
@@ -121,7 +121,7 @@ public class PluginRules
      * @param pluginClass is the plugin class whose custom rules will be loaded into this new PluginRules object.
      * @throws PluginException if any error occurs
      */
-    PluginRules( Digester digester, String mountPoint, PluginRules parent, Class<?> pluginClass )
+    PluginRules( final Digester digester, final String mountPoint, final PluginRules parent, final Class<?> pluginClass )
         throws PluginException
     {
         // no need to set digester or decoratedRules.digester,
@@ -173,7 +173,7 @@ public class PluginRules
      * 
      * @param digester The newly associated Digester instance
      */
-    public void setDigester( Digester digester )
+    public void setDigester( final Digester digester )
     {
         this.digester = digester;
         decoratedRules.setDigester( digester );
@@ -195,7 +195,7 @@ public class PluginRules
      * @param namespaceURI Namespace URI that must match on all subsequently added rules, or <code>null</code> for
      *            matching regardless of the current namespace URI
      */
-    public void setNamespaceURI( String namespaceURI )
+    public void setNamespaceURI( final String namespaceURI )
     {
         decoratedRules.setNamespaceURI( namespaceURI );
     }
@@ -225,7 +225,7 @@ public class PluginRules
      *
      * @param ruleFinders the list of RuleFinder objects
      */
-    public void setRuleFinders( List<RuleFinder> ruleFinders )
+    public void setRuleFinders( final List<RuleFinder> ruleFinders )
     {
         pluginContext.setRuleFinders( ruleFinders );
     }
@@ -246,7 +246,7 @@ public class PluginRules
      *
      * @param factory the rules factory object
      */
-    public void setRulesFactory( RulesFactory factory )
+    public void setRulesFactory( final RulesFactory factory )
     {
         rulesFactory = factory;
     }
@@ -283,10 +283,10 @@ public class PluginRules
      *            with and without a leading slash ('/').
      * @param rule Rule instance to be registered
      */
-    public void add( String pattern, Rule rule )
+    public void add( String pattern, final Rule rule )
     {
-        Log log = LogUtils.getLogger( digester );
-        boolean debug = log.isDebugEnabled();
+        final Log log = LogUtils.getLogger( digester );
+        final boolean debug = log.isDebugEnabled();
 
         if ( debug )
         {
@@ -323,7 +323,7 @@ public class PluginRules
             {
                 ( (InitializableRule) rule ).postRegisterInit( pattern );
             }
-            catch ( PluginConfigurationException e )
+            catch ( final PluginConfigurationException e )
             {
                 // Currently, Digester doesn't handle exceptions well
                 // from the add method. The workaround is for the
@@ -357,10 +357,10 @@ public class PluginRules
     /**
      * {@inheritDoc}
      */
-    public List<Rule> match( String namespaceURI, String path, String name, Attributes attributes )
+    public List<Rule> match( final String namespaceURI, final String path, final String name, final Attributes attributes )
     {
-        Log log = LogUtils.getLogger( digester );
-        boolean debug = log.isDebugEnabled();
+        final Log log = LogUtils.getLogger( digester );
+        final boolean debug = log.isDebugEnabled();
 
         if ( debug )
         {
@@ -401,7 +401,7 @@ public class PluginRules
      *            this parameter <i>must</i> be null.
      * @param attrName is the attribute whose value contains the name of the class to be instantiated.
      * */
-    public void setPluginClassAttribute( String namespaceUri, String attrName )
+    public void setPluginClassAttribute( final String namespaceUri, final String attrName )
     {
         pluginContext.setPluginClassAttribute( namespaceUri, attrName );
     }
@@ -416,7 +416,7 @@ public class PluginRules
      * @param attrName is the attribute whose value contains the id of the plugin declaration to be used when
      *            instantiating an object.
      **/
-    public void setPluginIdAttribute( String namespaceUri, String attrName )
+    public void setPluginIdAttribute( final String namespaceUri, final String attrName )
     {
         pluginContext.setPluginIdAttribute( namespaceUri, attrName );
     }
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 6dc1f8c..18523d4 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
@@ -62,7 +62,7 @@ public class FinderFromClass
      * @param methodAttr may be null.
      * @param dfltMethodName may be null.
      */
-    public FinderFromClass( String ruleClassAttr, String methodAttr, String dfltMethodName )
+    public FinderFromClass( final String ruleClassAttr, final String methodAttr, final String dfltMethodName )
     {
         this.ruleClassAttr = ruleClassAttr;
         this.methodAttr = methodAttr;
@@ -98,10 +98,10 @@ public class FinderFromClass
      *         about that source.
      */
     @Override
-    public RuleLoader findLoader( Digester digester, Class<?> pluginClass, Properties p )
+    public RuleLoader findLoader( final Digester digester, final Class<?> pluginClass, final Properties p )
         throws PluginException
     {
-        String ruleClassName = p.getProperty( ruleClassAttr );
+        final String ruleClassName = p.getProperty( ruleClassAttr );
         if ( ruleClassName == null )
         {
             // nope, user hasn't requested dynamic rules to be loaded
@@ -130,7 +130,7 @@ public class FinderFromClass
             // load the plugin class object
             ruleClass = digester.getClassLoader().loadClass( ruleClassName );
         }
-        catch ( ClassNotFoundException cnfe )
+        catch ( final ClassNotFoundException cnfe )
         {
             throw new PluginException( "Unable to load class " + ruleClassName, cnfe );
         }
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 384722a..884ef4f 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
@@ -56,7 +56,7 @@ public class FinderFromDfltClass
      * @param rulesClassSuffix must be non-null.
      * @param methodName may be null.
      */
-    public FinderFromDfltClass( String rulesClassSuffix, String methodName )
+    public FinderFromDfltClass( final String rulesClassSuffix, final String methodName )
     {
         this.rulesClassSuffix = rulesClassSuffix;
         this.methodName = methodName;
@@ -82,17 +82,17 @@ public class FinderFromDfltClass
      *         about that source.
      */
     @Override
-    public RuleLoader findLoader( Digester digester, Class<?> pluginClass, Properties p )
+    public RuleLoader findLoader( final Digester digester, final Class<?> pluginClass, final Properties p )
         throws PluginException
     {
-        String rulesClassName = pluginClass.getName() + rulesClassSuffix;
+        final String rulesClassName = pluginClass.getName() + rulesClassSuffix;
 
         Class<?> rulesClass = null;
         try
         {
             rulesClass = digester.getClassLoader().loadClass( rulesClassName );
         }
-        catch ( ClassNotFoundException cnfe )
+        catch ( final ClassNotFoundException cnfe )
         {
             // nope, no rule-info class in the classpath
             return 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 c9fb9a5..6431579 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
@@ -51,7 +51,7 @@ public class FinderFromDfltMethod
      * 
      * @param methodName must be non-null.
      */
-    public FinderFromDfltMethod( String methodName )
+    public FinderFromDfltMethod( final String methodName )
     {
         this.methodName = methodName;
     }
@@ -75,11 +75,11 @@ public class FinderFromDfltMethod
      *         about that source.
      */
     @Override
-    public RuleLoader findLoader( Digester d, Class<?> pluginClass, Properties p )
+    public RuleLoader findLoader( final Digester d, final Class<?> pluginClass, final Properties p )
         throws PluginException
     {
 
-        Method rulesMethod = LoaderFromClass.locateMethod( pluginClass, methodName );
+        final Method rulesMethod = LoaderFromClass.locateMethod( pluginClass, methodName );
         if ( rulesMethod == null )
         {
             return null;
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 598a472..cc85cd0 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
@@ -55,7 +55,7 @@ public class FinderFromDfltResource
      * 
      * @param resourceSuffix must be non-null.
      */
-    public FinderFromDfltResource( String resourceSuffix )
+    public FinderFromDfltResource( final String resourceSuffix )
     {
         this.resourceSuffix = resourceSuffix;
     }
@@ -79,13 +79,13 @@ public class FinderFromDfltResource
      *         about that source.
      */
     @Override
-    public RuleLoader findLoader( Digester d, Class<?> pluginClass, Properties p )
+    public RuleLoader findLoader( final Digester d, final Class<?> pluginClass, final Properties p )
         throws PluginException
     {
 
-        String resourceName = pluginClass.getName().replace( '.', '/' ) + resourceSuffix;
+        final String resourceName = pluginClass.getName().replace( '.', '/' ) + resourceSuffix;
 
-        InputStream is = pluginClass.getClassLoader().getResourceAsStream( resourceName );
+        final InputStream is = pluginClass.getClassLoader().getResourceAsStream( resourceName );
 
         if ( is == null )
         {
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 d8fc654..22cc2ef 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
@@ -61,7 +61,7 @@ public class FinderFromFile
      * @param filenameAttr the XML attribute that needs to be present on a plugin declaration in order to specify the
      *        file to load rules from.
      */
-    public FinderFromFile( String filenameAttr )
+    public FinderFromFile( final String filenameAttr )
     {
         this.filenameAttr = filenameAttr;
     }
@@ -84,11 +84,11 @@ public class FinderFromFile
      *         about that source.
      */
     @Override
-    public RuleLoader findLoader( Digester d, Class<?> pluginClass, Properties p )
+    public RuleLoader findLoader( final Digester d, final Class<?> pluginClass, final Properties p )
         throws PluginException
     {
 
-        String rulesFileName = p.getProperty( filenameAttr );
+        final String rulesFileName = p.getProperty( filenameAttr );
         if ( rulesFileName == null )
         {
             // nope, user hasn't requested dynamic rules to be loaded
@@ -101,17 +101,17 @@ public class FinderFromFile
         {
             is = new FileInputStream( rulesFileName );
         }
-        catch ( IOException ioe )
+        catch ( final IOException ioe )
         {
             throw new PluginException( "Unable to process file [" + rulesFileName + "]", ioe );
         }
 
         try
         {
-            RuleLoader loader = new LoaderFromStream( is );
+            final RuleLoader loader = new LoaderFromStream( is );
             return loader;
         }
-        catch ( Exception e )
+        catch ( final Exception e )
         {
             throw new PluginException( "Unable to load xmlrules from file [" + rulesFileName + "]", e );
         }
@@ -121,7 +121,7 @@ public class FinderFromFile
             {
                 is.close();
             }
-            catch ( IOException ioe )
+            catch ( final IOException ioe )
             {
                 throw new PluginException( "Unable to close stream for file [" + rulesFileName + "]", ioe );
             }
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 2f22670..9086187 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
@@ -57,7 +57,7 @@ public class FinderFromMethod
      * @param methodAttr The XML attribute that needs to be present on a plugin declaration in order to specify the
      *        method to load rules from.
      */
-    public FinderFromMethod( String methodAttr )
+    public FinderFromMethod( final String methodAttr )
     {
         this.methodAttr = methodAttr;
     }
@@ -81,11 +81,11 @@ public class FinderFromMethod
      *         about that source.
      */
     @Override
-    public RuleLoader findLoader( Digester d, Class<?> pluginClass, Properties p )
+    public RuleLoader findLoader( final Digester d, final Class<?> pluginClass, final Properties p )
         throws PluginException
     {
 
-        String methodName = p.getProperty( methodAttr );
+        final String methodName = p.getProperty( methodAttr );
         if ( methodName == null )
         {
             // nope, user hasn't requested dynamic rules to be loaded
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 3f84ad1..031548f 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
@@ -59,7 +59,7 @@ public class FinderFromResource
      * @param resourceAttr Name of xml attribute on the plugin declaration which is used to configure rule-loading
      *        for that declaration
      */
-    public FinderFromResource( String resourceAttr )
+    public FinderFromResource( final String resourceAttr )
     {
         this.resourceAttr = resourceAttr;
     }
@@ -82,10 +82,10 @@ public class FinderFromResource
      *         about that source.
      */
     @Override
-    public RuleLoader findLoader( Digester d, Class<?> pluginClass, Properties p )
+    public RuleLoader findLoader( final Digester d, final Class<?> pluginClass, final Properties p )
         throws PluginException
     {
-        String resourceName = p.getProperty( resourceAttr );
+        final String resourceName = p.getProperty( resourceAttr );
         if ( resourceName == null )
         {
             // nope, user hasn't requested dynamic rules to be loaded
@@ -93,7 +93,7 @@ public class FinderFromResource
             return null;
         }
 
-        InputStream is = pluginClass.getClassLoader().getResourceAsStream( resourceName );
+        final InputStream is = pluginClass.getClassLoader().getResourceAsStream( resourceName );
 
         if ( is == null )
         {
@@ -114,15 +114,15 @@ public class FinderFromResource
      * @return a source of digester rules for the specified plugin class.
      * @throws PluginException if any error occurs
      */
-    public static RuleLoader loadRules( Digester d, Class<?> pluginClass, InputStream is, String resourceName )
+    public static RuleLoader loadRules( final Digester d, final Class<?> pluginClass, final InputStream is, final String resourceName )
         throws PluginException
     {
         try
         {
-            RuleLoader loader = new LoaderFromStream( is );
+            final RuleLoader loader = new LoaderFromStream( is );
             return loader;
         }
-        catch ( Exception e )
+        catch ( final Exception e )
         {
             throw new PluginException( "Unable to load xmlrules from resource [" + resourceName + "]", e );
         }
@@ -132,7 +132,7 @@ public class FinderFromResource
             {
                 is.close();
             }
-            catch ( IOException ioe )
+            catch ( final IOException ioe )
             {
                 throw new PluginException( "Unable to close stream for resource [" + resourceName + "]", ioe );
             }
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 ff7c07b..03e7f14 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
@@ -66,7 +66,7 @@ public class FinderSetProperties
      * @param propsAttr must be non-null.
      * @param falseval must be non-null.
      */
-    public FinderSetProperties( String propsAttr, String falseval )
+    public FinderSetProperties( final String propsAttr, final String falseval )
     {
         this.propsAttr = propsAttr;
         this.falseval = falseval;
@@ -92,10 +92,10 @@ public class FinderSetProperties
      *         about that source.
      */
     @Override
-    public RuleLoader findLoader( Digester d, Class<?> pluginClass, Properties p )
+    public RuleLoader findLoader( final Digester d, final Class<?> pluginClass, final Properties p )
         throws PluginException
     {
-        String state = p.getProperty( propsAttr );
+        final String state = p.getProperty( propsAttr );
         if ( ( state != null ) && state.equals( falseval ) )
         {
             // user has explicitly disabled automatic setting of properties.
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 7d6aef5..eab7a65 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
@@ -48,7 +48,7 @@ public class LoaderFromClass
      * @param rulesClass The target class
      * @param rulesMethod The method has to be invoked
      */
-    public LoaderFromClass( Class<?> rulesClass, Method rulesMethod )
+    public LoaderFromClass( final Class<?> rulesClass, final Method rulesMethod )
     {
         this.rulesClass = rulesClass;
         this.rulesMethod = rulesMethod;
@@ -61,11 +61,11 @@ public class LoaderFromClass
      * @param methodName The method name has to be invoked
      * @throws PluginException if input method can't be located inside the given class
      */
-    public LoaderFromClass( Class<?> rulesClass, String methodName )
+    public LoaderFromClass( final Class<?> rulesClass, final String methodName )
         throws PluginException
     {
 
-        Method method = locateMethod( rulesClass, methodName );
+        final Method method = locateMethod( rulesClass, methodName );
 
         if ( method == null )
         {
@@ -81,11 +81,11 @@ public class LoaderFromClass
      * {@inheritDoc}
      */
     @Override
-    public void addRules( Digester d, String path )
+    public void addRules( final Digester d, final String path )
         throws PluginException
     {
-        Log log = d.getLogger();
-        boolean debug = log.isDebugEnabled();
+        final Log log = d.getLogger();
+        final boolean debug = log.isDebugEnabled();
         if ( debug )
         {
             log.debug( "LoaderFromClass loading rules for plugin at path [" + path + "]" );
@@ -93,10 +93,10 @@ public class LoaderFromClass
 
         try
         {
-            Object[] params = { d, path };
+            final Object[] params = { d, path };
             rulesMethod.invoke( null, params );
         }
-        catch ( Exception e )
+        catch ( final Exception e )
         {
             throw new PluginException(
                                        "Unable to invoke rules method " + rulesMethod + " on rules class " + rulesClass,
@@ -113,11 +113,11 @@ public class LoaderFromClass
      * @return The method name has to be invoked, or null if no such method exists.
      * @throws PluginException if any error occurs while discovering the method
      */
-    public static Method locateMethod( Class<?> rulesClass, String methodName )
+    public static Method locateMethod( final Class<?> rulesClass, final String methodName )
         throws PluginException
     {
-        Class<?>[] paramSpec = { Digester.class, String.class };
-        Method rulesMethod = getAccessibleMethod( rulesClass, methodName, paramSpec );
+        final Class<?>[] paramSpec = { Digester.class, String.class };
+        final Method rulesMethod = getAccessibleMethod( rulesClass, methodName, paramSpec );
 
         return rulesMethod;
     }
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 2016eee..d8600df 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
@@ -54,16 +54,16 @@ public class LoaderFromStream
      * @param s the input stream has to be loaded into memory
      * @throws Exception if any error occurs while reading the input stream
      */
-    public LoaderFromStream( InputStream s )
+    public LoaderFromStream( final InputStream s )
         throws Exception
     {
         try
         {
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            byte[] buf = new byte[256];
+            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            final byte[] buf = new byte[256];
             for ( ;; )
             {
-                int i = s.read( buf );
+                final int i = s.read( buf );
                 if ( i == -1 )
                 {
                     break;
@@ -81,7 +81,7 @@ public class LoaderFromStream
                     s.close();
                 }
             }
-            catch ( IOException e )
+            catch ( final IOException e )
             {
                 // close quietly
             }
@@ -95,8 +95,8 @@ public class LoaderFromStream
     public void addRules( final Digester d, final String path )
         throws PluginException
     {
-        Log log = d.getLogger();
-        boolean debug = log.isDebugEnabled();
+        final Log log = d.getLogger();
+        final boolean debug = log.isDebugEnabled();
         if ( debug )
         {
             log.debug( "LoaderFromStream: loading rules for plugin at path [" + path + "]" );
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 741305c..0ce7e9c 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
@@ -40,10 +40,10 @@ public class LoaderSetProperties
      * {@inheritDoc}
      */
     @Override
-    public void addRules( Digester digester, String path )
+    public void addRules( final Digester digester, final String path )
     {
-        Log log = digester.getLogger();
-        boolean debug = log.isDebugEnabled();
+        final Log log = digester.getLogger();
+        final boolean debug = log.isDebugEnabled();
         if ( debug )
         {
             log.debug( "LoaderSetProperties loading rules for plugin at path [" + path + "]" );
diff --git a/core/src/main/java/org/apache/commons/digester3/substitution/CompoundSubstitutor.java b/core/src/main/java/org/apache/commons/digester3/substitution/CompoundSubstitutor.java
index 22224f1..75621bc 100644
--- a/core/src/main/java/org/apache/commons/digester3/substitution/CompoundSubstitutor.java
+++ b/core/src/main/java/org/apache/commons/digester3/substitution/CompoundSubstitutor.java
@@ -49,7 +49,7 @@ public class CompoundSubstitutor
      * @param a Substitutor a
      * @param b Substitutor b
      */
-    public CompoundSubstitutor( Substitutor a, Substitutor b )
+    public CompoundSubstitutor( final Substitutor a, final Substitutor b )
     {
         if ( a == null )
         {
@@ -67,7 +67,7 @@ public class CompoundSubstitutor
      * {@inheritDoc}
      */
     @Override
-    public Attributes substitute( Attributes attributes )
+    public Attributes substitute( final Attributes attributes )
     {
         return b.substitute( a.substitute( attributes ) );
     }
@@ -76,7 +76,7 @@ public class CompoundSubstitutor
      * {@inheritDoc}
      */
     @Override
-    public String substitute( String bodyText )
+    public String substitute( final String bodyText )
     {
         return b.substitute( a.substitute( bodyText ) );
     }
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 e77433a..ded2ef6 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
@@ -45,7 +45,7 @@ public class MultiVariableExpander
      * @param marker The input variables marker
      * @param source The variables source
      */
-    public void addSource( String marker, Map<String, Object> source )
+    public void addSource( final String marker, final Map<String, Object> source )
     {
         ++nEntries;
         markers.add( marker );
@@ -78,10 +78,10 @@ public class MultiVariableExpander
      * @param source The variables source
      * @return The input string where variables have been expanded by replacing values found in source
      */
-    public String expand( String str, String marker, Map<String, Object> source )
+    public String expand( String str, final String marker, final Map<String, Object> source )
     {
-        String startMark = marker + "{";
-        int markLen = startMark.length();
+        final String startMark = marker + "{";
+        final int markLen = startMark.length();
 
         int index = 0;
         for ( ;; )
@@ -92,25 +92,25 @@ public class MultiVariableExpander
                 return str;
             }
 
-            int startIndex = index + markLen;
+            final int startIndex = index + markLen;
             if ( startIndex > str.length() )
             {
                 throw new IllegalArgumentException( "var expression starts at end of string" );
             }
 
-            int endIndex = str.indexOf( "}", index + markLen );
+            final int endIndex = str.indexOf( "}", index + markLen );
             if ( endIndex == -1 )
             {
                 throw new IllegalArgumentException( "var expression starts but does not end" );
             }
 
-            String key = str.substring( index + markLen, endIndex );
-            Object value = source.get( key );
+            final String key = str.substring( index + markLen, endIndex );
+            final Object value = source.get( key );
             if ( value == null )
             {
                 throw new IllegalArgumentException( "parameter [" + key + "] is not defined." );
             }
-            String varValue = value.toString();
+            final String varValue = value.toString();
 
             str = str.substring( 0, index ) + varValue + str.substring( endIndex + 1 );
             index += varValue.length();
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 beb0b7d..e05a699 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
@@ -49,7 +49,7 @@ public class VariableAttributes
      * @param attrs The attributes where variables have to be expanded.
      * @param expander The variables expander instance.
      */
-    public void init( Attributes attrs, VariableExpander expander )
+    public void init( final Attributes attrs, final VariableExpander expander )
     {
         this.attrs = attrs;
         this.expander = expander;
@@ -62,7 +62,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getValue( int index )
+    public String getValue( final int index )
     {
         if ( index >= values.size() )
         {
@@ -99,9 +99,9 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getValue( String qname )
+    public String getValue( final String qname )
     {
-        int index = attrs.getIndex( qname );
+        final int index = attrs.getIndex( qname );
         if ( index == -1 )
         {
             return null;
@@ -112,9 +112,9 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getValue( String uri, String localname )
+    public String getValue( final String uri, final String localname )
     {
-        int index = attrs.getIndex( uri, localname );
+        final int index = attrs.getIndex( uri, localname );
         if ( index == -1 )
         {
             return null;
@@ -126,7 +126,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public int getIndex( String qname )
+    public int getIndex( final String qname )
     {
         return attrs.getIndex( qname );
     }
@@ -134,7 +134,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public int getIndex( String uri, String localpart )
+    public int getIndex( final String uri, final String localpart )
     {
         return attrs.getIndex( uri, localpart );
     }
@@ -150,7 +150,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getLocalName( int index )
+    public String getLocalName( final int index )
     {
         return attrs.getLocalName( index );
     }
@@ -158,7 +158,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getQName( int index )
+    public String getQName( final int index )
     {
         return attrs.getQName( index );
     }
@@ -166,7 +166,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getType( int index )
+    public String getType( final int index )
     {
         return attrs.getType( index );
     }
@@ -174,7 +174,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getType( String qname )
+    public String getType( final String qname )
     {
         return attrs.getType( qname );
     }
@@ -182,7 +182,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getType( String uri, String localname )
+    public String getType( final String uri, final String localname )
     {
         return attrs.getType( uri, localname );
     }
@@ -190,7 +190,7 @@ public class VariableAttributes
     /**
      * {@inheritDoc}
      */
-    public String getURI( int index )
+    public String getURI( final int index )
     {
         return attrs.getURI( index );
     }
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 9a83e16..76e9a1a 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
@@ -55,7 +55,7 @@ public class VariableSubstitutor
      * 
      * @param expander VariableExpander implementation, null if no substitutions are to be performed
      */
-    public VariableSubstitutor( VariableExpander expander )
+    public VariableSubstitutor( final VariableExpander expander )
     {
         this( expander, expander );
     }
@@ -68,7 +68,7 @@ public class VariableSubstitutor
      * @param bodyTextExpander VariableExpander implementation to be used for bodyTextExpander, null if no attribute
      *            substitutions are to be performed
      */
-    public VariableSubstitutor( VariableExpander attributesExpander, VariableExpander bodyTextExpander )
+    public VariableSubstitutor( final VariableExpander attributesExpander, final VariableExpander bodyTextExpander )
     {
         this.attributesExpander = attributesExpander;
         this.bodyTextExpander = bodyTextExpander;
@@ -79,7 +79,7 @@ public class VariableSubstitutor
      * {@inheritDoc}
      */
     @Override
-    public Attributes substitute( Attributes attributes )
+    public Attributes substitute( final Attributes attributes )
     {
         Attributes results = attributes;
         if ( attributesExpander != null )
@@ -94,7 +94,7 @@ public class VariableSubstitutor
      * {@inheritDoc}
      */
     @Override
-    public String substitute( String bodyText )
+    public String substitute( final String bodyText )
     {
         String result = bodyText;
         if ( bodyTextExpander != null )
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 2a5dec6..3af03b5 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
@@ -30,7 +30,7 @@ abstract class AbstractXmlMethodRule
     extends AbstractXmlRule
 {
 
-    public AbstractXmlMethodRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public AbstractXmlMethodRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -39,13 +39,13 @@ abstract class AbstractXmlMethodRule
      * {@inheritDoc}
      */
     @Override
-    protected final void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected final void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        String methodName = attributes.getValue( "methodname" );
-        String paramType = attributes.getValue( "paramtype" );
-        String exactMatch = attributes.getValue( "exactMatch" );
-        String fireOnBegin = attributes.getValue( "fireOnBegin" );
+        final String methodName = attributes.getValue( "methodname" );
+        final String paramType = attributes.getValue( "paramtype" );
+        final String exactMatch = attributes.getValue( "exactMatch" );
+        final String fireOnBegin = attributes.getValue( "fireOnBegin" );
 
         bindRule( linkedRuleBuilder, methodName, paramType, "true".equals( exactMatch ), "true".equals( fireOnBegin ) );
     }
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 a7fbc17..e5d219d 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
@@ -32,7 +32,7 @@ abstract class AbstractXmlRule
 
     private final RulesBinder targetRulesBinder;
 
-    public AbstractXmlRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public AbstractXmlRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( "pattern", patternStack );
         this.targetRulesBinder = targetRulesBinder;
@@ -42,7 +42,7 @@ abstract class AbstractXmlRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         super.begin( namespace, name, attributes );
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 fb98431..140c3f3 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
@@ -31,7 +31,7 @@ final class BeanPropertySetterRule
     extends AbstractXmlRule
 {
 
-    public BeanPropertySetterRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public BeanPropertySetterRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -40,13 +40,13 @@ final class BeanPropertySetterRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        BeanPropertySetterBuilder builder =
+        final BeanPropertySetterBuilder builder =
             linkedRuleBuilder.setBeanProperty().withName( attributes.getValue( "propertyname" ) );
 
-        int propertyNameFromAttributeIndex = attributes.getIndex( "propertynameFromAttribute" );
+        final int propertyNameFromAttributeIndex = attributes.getIndex( "propertynameFromAttribute" );
         if ( propertyNameFromAttributeIndex >= 0 )
         {
             builder.extractPropertyNameFromAttribute( attributes.getValue( propertyNameFromAttributeIndex ) );
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 7d3bbfd..c2e6563 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
@@ -33,7 +33,7 @@ final class CallMethodRule
     extends AbstractXmlRule
 {
 
-    public CallMethodRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public CallMethodRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -42,15 +42,15 @@ final class CallMethodRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        CallMethodBuilder builder = linkedRuleBuilder.callMethod( attributes.getValue( "methodname" ) );
+        final CallMethodBuilder builder = linkedRuleBuilder.callMethod( attributes.getValue( "methodname" ) );
 
         // Select which element is to be the target. Default to zero,
         // ie the top object on the stack.
         int targetOffset = 0;
-        String targetOffsetStr = attributes.getValue( "targetoffset" );
+        final String targetOffsetStr = attributes.getValue( "targetoffset" );
         if ( targetOffsetStr != null )
         {
             targetOffset = Integer.parseInt( targetOffsetStr );
@@ -59,19 +59,19 @@ final class CallMethodRule
 
         builder.useExactMatch( "true".equalsIgnoreCase( attributes.getValue( "useExactMatch" ) ) );
 
-        String paramCountStr = attributes.getValue( "paramcount" );
+        final String paramCountStr = attributes.getValue( "paramcount" );
         if ( paramCountStr != null )
         {
-            int paramCount = Integer.parseInt( attributes.getValue( "paramcount" ) );
+            final int paramCount = Integer.parseInt( attributes.getValue( "paramcount" ) );
 
             builder.withParamCount( paramCount );
         }
 
-        String paramTypesStr = attributes.getValue( "paramtypes" );
+        final String paramTypesStr = attributes.getValue( "paramtypes" );
         if ( paramTypesStr != null && paramTypesStr.length() > 0 )
         {
-            StringTokenizer tokens = new StringTokenizer( paramTypesStr, " \t\n\r," );
-            String[] paramTypeNames = new String[tokens.countTokens()];
+            final StringTokenizer tokens = new StringTokenizer( paramTypesStr, " \t\n\r," );
+            final String[] paramTypeNames = new String[tokens.countTokens()];
             int counter = 0;
             while ( tokens.hasMoreTokens() )
             {
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 cbe8ce0..b166eed 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
@@ -31,7 +31,7 @@ final class CallParamRule
     extends AbstractXmlRule
 {
 
-    public CallParamRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public CallParamRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -40,15 +40,15 @@ final class CallParamRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        int paramIndex = Integer.parseInt( attributes.getValue( "paramnumber" ) );
-        CallParamBuilder builder = linkedRuleBuilder.callParam().ofIndex( paramIndex );
+        final int paramIndex = Integer.parseInt( attributes.getValue( "paramnumber" ) );
+        final CallParamBuilder builder = linkedRuleBuilder.callParam().ofIndex( paramIndex );
 
-        String attributeName = attributes.getValue( "attrname" );
-        String fromStack = attributes.getValue( "from-stack" );
-        String stackIndex = attributes.getValue( "stack-index" );
+        final String attributeName = attributes.getValue( "attrname" );
+        final String fromStack = attributes.getValue( "from-stack" );
+        final String stackIndex = attributes.getValue( "stack-index" );
 
         if ( attributeName == null )
         {
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 34035b2..d235823 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
@@ -30,7 +30,7 @@ final class FactoryCreateRule
     extends AbstractXmlRule
 {
 
-    public FactoryCreateRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public FactoryCreateRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -39,7 +39,7 @@ final class FactoryCreateRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
         linkedRuleBuilder.factoryCreate()
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/FromXmlRulesModule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/FromXmlRulesModule.java
index af75314..b6fb4bf 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/FromXmlRulesModule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/FromXmlRulesModule.java
@@ -87,22 +87,22 @@ public abstract class FromXmlRulesModule
      *
      * @param inputSource The {@code org.xml.sax.InputSource} where reading the XML rules from.
      */
-    protected final void loadXMLRules( InputSource inputSource )
+    protected final void loadXMLRules( final InputSource inputSource )
     {
         if ( inputSource == null )
         {
             throw new IllegalArgumentException( "Argument 'inputSource' must be not null" );
         }
 
-        String systemId = inputSource.getSystemId();
+        final String systemId = inputSource.getSystemId();
         if ( systemId != null && !systemIds.add( systemId ) )
         {
             addError( "XML rules file '%s' already bound", systemId );
         }
 
-        XmlRulesModule xmlRulesModule = new XmlRulesModule( new NameSpaceURIRulesBinder( rulesBinder() ),
+        final XmlRulesModule xmlRulesModule = new XmlRulesModule( new NameSpaceURIRulesBinder( rulesBinder() ),
                                                             getSystemIds(), rootPath );
-        Digester digester = newLoader( xmlRulesModule )
+        final Digester digester = newLoader( xmlRulesModule )
                 .register( DIGESTER_PUBLIC_ID, xmlRulesDtdUrl.toString() )
                 .setXIncludeAware( true )
                 .setValidating( true )
@@ -112,7 +112,7 @@ public abstract class FromXmlRulesModule
         {
             digester.parse( inputSource );
         }
-        catch ( Exception e )
+        catch ( final Exception e )
         {
             addError( "Impossible to load XML defined in the InputSource '%s': %s", inputSource.getSystemId(),
                       e.getMessage() );
@@ -124,7 +124,7 @@ public abstract class FromXmlRulesModule
      *
      * @param input The {@code java.io.InputStream} where reading the XML rules from.
      */
-    protected final void loadXMLRules( InputStream input )
+    protected final void loadXMLRules( final InputStream input )
     {
         if ( input == null )
         {
@@ -139,7 +139,7 @@ public abstract class FromXmlRulesModule
      *
      * @param reader The {@code java.io.Reader} where reading the XML rules from.
      */
-    protected final void loadXMLRules( Reader reader )
+    protected final void loadXMLRules( final Reader reader )
     {
         if ( reader == null )
         {
@@ -154,7 +154,7 @@ public abstract class FromXmlRulesModule
      *
      * @param file The {@code java.io.File} where reading the XML rules from.
      */
-    protected final void loadXMLRules( File file )
+    protected final void loadXMLRules( final File file )
     {
         if ( file == null )
         {
@@ -165,7 +165,7 @@ public abstract class FromXmlRulesModule
         {
             loadXMLRules( file.toURI().toURL() );
         }
-        catch ( MalformedURLException e )
+        catch ( final MalformedURLException e )
         {
             rulesBinder().addError( e );
         }
@@ -176,7 +176,7 @@ public abstract class FromXmlRulesModule
      *
      * @param uri The URI in String representation where reading the XML rules from.
      */
-    protected final void loadXMLRules( String uri )
+    protected final void loadXMLRules( final String uri )
     {
         if ( uri == null )
         {
@@ -187,7 +187,7 @@ public abstract class FromXmlRulesModule
         {
             loadXMLRules( new URL( uri ) );
         }
-        catch ( MalformedURLException e )
+        catch ( final MalformedURLException e )
         {
             rulesBinder().addError( e );
         }
@@ -198,7 +198,7 @@ public abstract class FromXmlRulesModule
      *
      * @param url The {@code java.net.URL} where reading the XML rules from.
      */
-    protected final void loadXMLRules( URL url )
+    protected final void loadXMLRules( final URL url )
     {
         if ( url == null )
         {
@@ -207,15 +207,15 @@ public abstract class FromXmlRulesModule
 
         try
         {
-            URLConnection connection = url.openConnection();
+            final URLConnection connection = url.openConnection();
             connection.setUseCaches( false );
-            InputStream stream = connection.getInputStream();
-            InputSource source = new InputSource( stream );
+            final InputStream stream = connection.getInputStream();
+            final InputSource source = new InputSource( stream );
             source.setSystemId( url.toExternalForm() );
 
             loadXMLRules( source );
         }
-        catch ( Exception e )
+        catch ( final Exception e )
         {
             rulesBinder().addError( e );
         }
@@ -226,7 +226,7 @@ public abstract class FromXmlRulesModule
      *
      * @param xmlText The XML document in textual form where reading the XML rules from.
      */
-    protected final void loadXMLRulesFromText( String xmlText )
+    protected final void loadXMLRulesFromText( final String xmlText )
     {
         if ( xmlText == null )
         {
@@ -241,7 +241,7 @@ public abstract class FromXmlRulesModule
      *
      * @param rootPath The root path
      */
-    protected final void useRootPath( String rootPath )
+    protected final void useRootPath( final String rootPath )
     {
         this.rootPath = rootPath;
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java
index f5ecbd1..463b478 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java
@@ -55,11 +55,11 @@ final class IncludeRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         // The path attribute gives the URI to another digester rules xml file
-        String fileName = attributes.getValue( "url" );
+        final String fileName = attributes.getValue( "url" );
         if ( fileName != null && fileName.length() > 0 )
         {
             final URL xmlRulesResource;
@@ -85,7 +85,7 @@ final class IncludeRule
                 {
                     xmlRulesResource = new URL( fileName );
                 }
-                catch ( MalformedURLException e )
+                catch ( final MalformedURLException e )
                 {
                     targetRulesBinder.addError( "An error occurred while inculing file from '%s': %s", fileName,
                                                 e.getMessage() );
@@ -93,8 +93,8 @@ final class IncludeRule
                 }
             }
 
-            Set<String> includedFiles = memoryRulesBinder.getIncludedFiles();
-            String xmlRulesResourceString = xmlRulesResource.toString();
+            final Set<String> includedFiles = memoryRulesBinder.getIncludedFiles();
+            final String xmlRulesResourceString = xmlRulesResource.toString();
             if ( includedFiles.add( xmlRulesResourceString ) )
             {
                 try
@@ -123,12 +123,12 @@ final class IncludeRule
 
         // The class attribute gives the name of a class that implements
         // the DigesterRulesSource interface
-        String className = attributes.getValue( "class" );
+        final String className = attributes.getValue( "class" );
         if ( className != null && className.length() > 0 )
         {
             try
             {
-                Class<?> cls = Class.forName( className );
+                final Class<?> cls = Class.forName( className );
                 if ( !RulesModule.class.isAssignableFrom( cls ) )
                 {
                     targetRulesBinder.addError( "Class '%s' if not a '%s' implementation", className,
@@ -136,11 +136,11 @@ final class IncludeRule
                     return;
                 }
 
-                RulesModule rulesSource = (RulesModule) cls.newInstance();
+                final RulesModule rulesSource = (RulesModule) cls.newInstance();
 
                 install( rulesSource );
             }
-            catch ( Exception e )
+            catch ( final Exception e )
             {
                 targetRulesBinder.addError( "Impossible to include programmatic rules from class '%s': %s", className,
                                             e.getMessage() );
@@ -148,7 +148,7 @@ final class IncludeRule
         }
     }
 
-    private void install( RulesModule rulesModule )
+    private void install( final RulesModule rulesModule )
     {
         // that's an hack, shall not be taken in consideration!!! :)
         rulesModule.configure( new PrefixedRulesBinder( targetRulesBinder,
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 52085d0..7a4bf3d 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
@@ -37,7 +37,7 @@ final class NameSpaceURIRulesBinder
 
     private final RulesBinder wrappedBinder;
 
-    public NameSpaceURIRulesBinder( RulesBinder wrappedBinder )
+    public NameSpaceURIRulesBinder( final RulesBinder wrappedBinder )
     {
         this.wrappedBinder = wrappedBinder;
     }
@@ -46,7 +46,7 @@ final class NameSpaceURIRulesBinder
      * 
      * @param namespaceURI
      */
-    public void addNamespaceURI( String namespaceURI )
+    public void addNamespaceURI( final String namespaceURI )
     {
         namespaceURIs.push( namespaceURI );
     }
@@ -70,7 +70,7 @@ final class NameSpaceURIRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( String messagePattern, Object... arguments )
+    public void addError( final String messagePattern, final Object... arguments )
     {
         wrappedBinder.addError( messagePattern, arguments );
     }
@@ -78,7 +78,7 @@ final class NameSpaceURIRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( Throwable t )
+    public void addError( final Throwable t )
     {
         wrappedBinder.addError( t );
     }
@@ -86,7 +86,7 @@ final class NameSpaceURIRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void install( RulesModule rulesModule )
+    public void install( final RulesModule rulesModule )
     {
         wrappedBinder.install( rulesModule );
     }
@@ -94,7 +94,7 @@ final class NameSpaceURIRulesBinder
     /**
      * {@inheritDoc}
      */
-    public LinkedRuleBuilder forPattern( String pattern )
+    public LinkedRuleBuilder forPattern( final String pattern )
     {
         return wrappedBinder.forPattern( pattern ).withNamespaceURI( namespaceURIs.peek() );
     }
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 c2a8e1b..fdecb51 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
@@ -34,7 +34,7 @@ final class NodeCreateRule
     extends AbstractXmlRule
 {
 
-    public NodeCreateRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public NodeCreateRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -43,12 +43,12 @@ final class NodeCreateRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        NodeCreateRuleProvider nodeProvider = linkedRuleBuilder.createNode();
+        final NodeCreateRuleProvider nodeProvider = linkedRuleBuilder.createNode();
 
-        String nodeType = attributes.getValue( "type" );
+        final String nodeType = attributes.getValue( "type" );
         if ( nodeType != null && nodeType.length() > 0 )
         {
             if ( "element".equals( nodeType ) )
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectCreateRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectCreateRule.java
index a031d53..e54a9c6 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectCreateRule.java
@@ -33,7 +33,7 @@ final class ObjectCreateRule
     extends AbstractXmlRule
 {
 
-    public ObjectCreateRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public ObjectCreateRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -42,18 +42,18 @@ final class ObjectCreateRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        ObjectCreateBuilder builder = linkedRuleBuilder.createObject()
+        final ObjectCreateBuilder builder = linkedRuleBuilder.createObject()
             .ofType( attributes.getValue( "classname" ) )
             .ofTypeSpecifiedByAttribute( attributes.getValue( "attrname" ) );
 
-        String paramTypesStr = attributes.getValue( "paramtypes" );
+        final String paramTypesStr = attributes.getValue( "paramtypes" );
         if ( paramTypesStr != null && paramTypesStr.length() > 0 )
         {
-            StringTokenizer tokens = new StringTokenizer( paramTypesStr, " \t\n\r," );
-            String[] paramTypeNames = new String[tokens.countTokens()];
+            final StringTokenizer tokens = new StringTokenizer( paramTypesStr, " \t\n\r," );
+            final String[] paramTypeNames = new String[tokens.countTokens()];
             int counter = 0;
             while ( tokens.hasMoreTokens() )
             {
@@ -61,11 +61,11 @@ final class ObjectCreateRule
             }
             builder.usingConstructor( paramTypeNames );
         }
-        String paramsStr = attributes.getValue( "params" );
+        final String paramsStr = attributes.getValue( "params" );
         if ( paramsStr != null && paramsStr.length() > 0 )
         {
-            StringTokenizer tokens = new StringTokenizer( paramTypesStr, " \t\n\r," );
-            Object[] params = new Object[tokens.countTokens()];
+            final StringTokenizer tokens = new StringTokenizer( paramTypesStr, " \t\n\r," );
+            final Object[] params = new Object[tokens.countTokens()];
             int counter = 0;
             while ( tokens.hasMoreTokens() )
             {
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectParamRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectParamRule.java
index b2f17e8..49521ce 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectParamRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectParamRule.java
@@ -38,7 +38,7 @@ final class ObjectParamRule
      * @param targetRulesBinder
      * @param patternStack
      */
-    public ObjectParamRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public ObjectParamRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -47,19 +47,19 @@ final class ObjectParamRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
         // create callparamrule
-        String paramNumber = attributes.getValue( "paramnumber" );
-        String attributeName = attributes.getValue( "attrname" );
-        String type = attributes.getValue( "type" );
-        String value = attributes.getValue( "value" );
+        final String paramNumber = attributes.getValue( "paramnumber" );
+        final String attributeName = attributes.getValue( "attrname" );
+        final String type = attributes.getValue( "type" );
+        final String value = attributes.getValue( "value" );
 
-        int paramIndex = parseInt( paramNumber );
+        final int paramIndex = parseInt( paramNumber );
 
         // create object instance
-        Class<?> clazz = getDigester().getClassLoader().loadClass( type );
+        final Class<?> clazz = getDigester().getClassLoader().loadClass( type );
         Object param;
         if ( value != null )
         {
@@ -70,7 +70,7 @@ final class ObjectParamRule
             param = clazz.newInstance();
         }
 
-        ObjectParamBuilder<?> builder = linkedRuleBuilder.objectParam( param ).ofIndex( paramIndex );
+        final ObjectParamBuilder<?> builder = linkedRuleBuilder.objectParam( param ).ofIndex( paramIndex );
 
         if ( attributeName != null )
         {
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 8b34e3f..e05e61f 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
@@ -35,12 +35,12 @@ class PatternRule
 
     private String pattern;
 
-    public PatternRule( PatternStack patternStack )
+    public PatternRule( final PatternStack patternStack )
     {
         this( "value", patternStack );
     }
 
-    public PatternRule( String attributeName, PatternStack patternStack )
+    public PatternRule( final String attributeName, final PatternStack patternStack )
     {
         this.attributeName = attributeName;
         this.patternStack = patternStack;
@@ -50,7 +50,7 @@ class PatternRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         this.pattern = attributes.getValue( this.attributeName );
@@ -64,7 +64,7 @@ class PatternRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         if ( this.pattern != null )
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/PatternStack.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/PatternStack.java
index b6d5abe..1f2e841 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/PatternStack.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/PatternStack.java
@@ -32,10 +32,10 @@ final class PatternStack
     @Override
     public String toString()
     {
-        StringBuilder str = new StringBuilder();
+        final StringBuilder str = new StringBuilder();
         for ( int i = 0; i < size(); i++ )
         {
-            String elem = get( i );
+            final String elem = get( i );
             if ( elem.length() > 0 )
             {
                 if ( str.length() > 0 )
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/PrefixedRulesBinder.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/PrefixedRulesBinder.java
index 88e5d04..c8d3f5a 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/PrefixedRulesBinder.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/PrefixedRulesBinder.java
@@ -31,7 +31,7 @@ final class PrefixedRulesBinder
 
     private final String prefix;
 
-    public PrefixedRulesBinder( RulesBinder wrappedRulesBinder, String prefix )
+    public PrefixedRulesBinder( final RulesBinder wrappedRulesBinder, final String prefix )
     {
         this.wrappedRulesBinder = wrappedRulesBinder;
         this.prefix = prefix;
@@ -48,7 +48,7 @@ final class PrefixedRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( String messagePattern, Object... arguments )
+    public void addError( final String messagePattern, final Object... arguments )
     {
         this.wrappedRulesBinder.addError( messagePattern, arguments );
     }
@@ -56,7 +56,7 @@ final class PrefixedRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( Throwable t )
+    public void addError( final Throwable t )
     {
         this.wrappedRulesBinder.addError( t );
     }
@@ -64,7 +64,7 @@ final class PrefixedRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void install( RulesModule rulesModule )
+    public void install( final RulesModule rulesModule )
     {
         this.wrappedRulesBinder.install( rulesModule );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNamespaceURIRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNamespaceURIRule.java
index 459f1e0..02d0651 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNamespaceURIRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNamespaceURIRule.java
@@ -31,7 +31,7 @@ final class SetNamespaceURIRule
 
     private final NameSpaceURIRulesBinder rulesBinder;
 
-    public SetNamespaceURIRule( NameSpaceURIRulesBinder rulesBinder )
+    public SetNamespaceURIRule( final NameSpaceURIRulesBinder rulesBinder )
     {
         this.rulesBinder = rulesBinder;
     }
@@ -40,7 +40,7 @@ final class SetNamespaceURIRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
         rulesBinder.addNamespaceURI( attributes.getValue( "namespaceURI" ) );
@@ -50,7 +50,7 @@ final class SetNamespaceURIRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         rulesBinder.removeNamespaceURI();
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesAliasRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesAliasRule.java
index 4cb2d0e..69d2bfe 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesAliasRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesAliasRule.java
@@ -34,13 +34,13 @@ final class SetNestedPropertiesAliasRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
-        String elementName = attributes.getValue( "attr-name" );
-        String propertyName = attributes.getValue( "prop-name" );
+        final String elementName = attributes.getValue( "attr-name" );
+        final String propertyName = attributes.getValue( "prop-name" );
 
-        NestedPropertiesBuilder builder = getDigester().peek();
+        final NestedPropertiesBuilder builder = getDigester().peek();
         builder.addAlias( elementName ).forProperty( propertyName );
     }
 
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesIgnoreRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesIgnoreRule.java
index 1b4bcae..543f897 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesIgnoreRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesIgnoreRule.java
@@ -34,12 +34,12 @@ final class SetNestedPropertiesIgnoreRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
-        String elementName = attributes.getValue( "elem-name" );
+        final String elementName = attributes.getValue( "elem-name" );
 
-        NestedPropertiesBuilder builder = getDigester().peek();
+        final NestedPropertiesBuilder builder = getDigester().peek();
         builder.ignoreElement( elementName );
     }
 
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesRule.java
index 121e081..01d6778 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetNestedPropertiesRule.java
@@ -31,7 +31,7 @@ final class SetNestedPropertiesRule
     extends AbstractXmlRule
 {
 
-    public SetNestedPropertiesRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public SetNestedPropertiesRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -40,12 +40,12 @@ final class SetNestedPropertiesRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        boolean allowUnknownChildElements =
+        final boolean allowUnknownChildElements =
             "true".equalsIgnoreCase( attributes.getValue( "allow-unknown-child-elements" ) );
-        NestedPropertiesBuilder builder = linkedRuleBuilder
+        final NestedPropertiesBuilder builder = linkedRuleBuilder
                                             .setNestedProperties()
                                             .allowUnknownChildElements( allowUnknownChildElements );
         getDigester().push( builder );
@@ -55,7 +55,7 @@ final class SetNestedPropertiesRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         getDigester().pop();
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 5f6a48f..cfd1771 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
@@ -34,7 +34,7 @@ final class SetNextRule
      * @param targetRulesBinder
      * @param patternStack
      */
-    public SetNextRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public SetNextRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -43,10 +43,10 @@ final class SetNextRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, String methodName, String paramType,
-                             boolean exactMatch, boolean fireOnBegin )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final String methodName, final String paramType,
+                             final boolean exactMatch, final boolean fireOnBegin )
     {
-        SetNextBuilder builder = linkedRuleBuilder.setNext( methodName );
+        final SetNextBuilder builder = linkedRuleBuilder.setNext( methodName );
 
         if ( paramType != null && paramType.length() > 0 )
         {
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesAliasRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesAliasRule.java
index a485bd7..ff917eb 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesAliasRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesAliasRule.java
@@ -34,13 +34,13 @@ final class SetPropertiesAliasRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
-        String attributeName = attributes.getValue( "attr-name" );
-        String propertyName = attributes.getValue( "prop-name" );
+        final String attributeName = attributes.getValue( "attr-name" );
+        final String propertyName = attributes.getValue( "prop-name" );
 
-        SetPropertiesBuilder builder = getDigester().peek();
+        final SetPropertiesBuilder builder = getDigester().peek();
         builder.addAlias( attributeName ).forProperty( propertyName );
     }
 
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesIgnoreRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesIgnoreRule.java
index 271c5d6..8ce082d 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesIgnoreRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesIgnoreRule.java
@@ -34,12 +34,12 @@ final class SetPropertiesIgnoreRule
      * {@inheritDoc}
      */
     @Override
-    public void begin( String namespace, String name, Attributes attributes )
+    public void begin( final String namespace, final String name, final Attributes attributes )
         throws Exception
     {
-        String attributeName = attributes.getValue( "attr-name" );
+        final String attributeName = attributes.getValue( "attr-name" );
 
-        SetPropertiesBuilder builder = getDigester().peek();
+        final SetPropertiesBuilder builder = getDigester().peek();
         builder.ignoreAttribute( attributeName );
     }
 
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesRule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesRule.java
index 3595e35..178fda2 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/SetPropertiesRule.java
@@ -31,7 +31,7 @@ final class SetPropertiesRule
     extends AbstractXmlRule
 {
 
-    public SetPropertiesRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public SetPropertiesRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -40,12 +40,12 @@ final class SetPropertiesRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        boolean ignoreMissingProperty = "true".equalsIgnoreCase( attributes.getValue( "ignore-missing-property" ) );
+        final boolean ignoreMissingProperty = "true".equalsIgnoreCase( attributes.getValue( "ignore-missing-property" ) );
 
-        SetPropertiesBuilder builder = linkedRuleBuilder.setProperties().ignoreMissingProperty( ignoreMissingProperty );
+        final SetPropertiesBuilder builder = linkedRuleBuilder.setProperties().ignoreMissingProperty( ignoreMissingProperty );
         getDigester().push( builder );
     }
 
@@ -53,7 +53,7 @@ final class SetPropertiesRule
      * {@inheritDoc}
      */
     @Override
-    public void end( String namespace, String name )
+    public void end( final String namespace, final String name )
         throws Exception
     {
         getDigester().pop();
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 e83c429..2895455 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
@@ -30,7 +30,7 @@ final class SetPropertyRule
     extends AbstractXmlRule
 {
 
-    public SetPropertyRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public SetPropertyRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -39,11 +39,11 @@ final class SetPropertyRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, Attributes attributes )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
         throws Exception
     {
-        String name = attributes.getValue( "name" );
-        String value = attributes.getValue( "value" );
+        final String name = attributes.getValue( "name" );
+        final String value = attributes.getValue( "value" );
         linkedRuleBuilder.setProperty( name ).extractingValueFromAttribute( value );
     }
 
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 9f3f289..a03f37f 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
@@ -34,7 +34,7 @@ final class SetRootRule
      * @param targetRulesBinder
      * @param patternStack
      */
-    public SetRootRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public SetRootRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -43,10 +43,10 @@ final class SetRootRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, String methodName, String paramType,
-                             boolean exactMatch, boolean fireOnBegin )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final String methodName, final String paramType,
+                             final boolean exactMatch, final boolean fireOnBegin )
     {
-        SetRootBuilder builder = linkedRuleBuilder.setRoot( methodName );
+        final SetRootBuilder builder = linkedRuleBuilder.setRoot( methodName );
 
         if ( paramType != null && paramType.length() > 0 )
         {
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 653fe61..5ff31ab 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
@@ -34,7 +34,7 @@ final class SetTopRule
      * @param targetRulesBinder
      * @param patternStack
      */
-    public SetTopRule( RulesBinder targetRulesBinder, PatternStack patternStack )
+    public SetTopRule( final RulesBinder targetRulesBinder, final PatternStack patternStack )
     {
         super( targetRulesBinder, patternStack );
     }
@@ -43,10 +43,10 @@ final class SetTopRule
      * {@inheritDoc}
      */
     @Override
-    protected void bindRule( LinkedRuleBuilder linkedRuleBuilder, String methodName, String paramType,
-                             boolean exactMatch, boolean fireOnBegin )
+    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final String methodName, final String paramType,
+                             final boolean exactMatch, final boolean fireOnBegin )
     {
-        SetTopBuilder builder = linkedRuleBuilder.setTop( methodName );
+        final SetTopBuilder builder = linkedRuleBuilder.setTop( methodName );
 
         if ( paramType != null && paramType.length() > 0 )
         {
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 bd4e69c..2c8197c 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
@@ -47,7 +47,7 @@ class WithMemoryRulesBinder
 
     private final RulesBinder wrappedRulesBinder;
 
-    public WithMemoryRulesBinder( RulesBinder wrappedRulesBinder )
+    public WithMemoryRulesBinder( final RulesBinder wrappedRulesBinder )
     {
         this.wrappedRulesBinder = wrappedRulesBinder;
     }
@@ -63,7 +63,7 @@ class WithMemoryRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( String messagePattern, Object... arguments )
+    public void addError( final String messagePattern, final Object... arguments )
     {
         this.wrappedRulesBinder.addError( messagePattern, arguments );
     }
@@ -71,7 +71,7 @@ class WithMemoryRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void addError( Throwable t )
+    public void addError( final Throwable t )
     {
         this.wrappedRulesBinder.addError( t );
     }
@@ -79,7 +79,7 @@ class WithMemoryRulesBinder
     /**
      * {@inheritDoc}
      */
-    public void install( RulesModule rulesModule )
+    public void install( final RulesModule rulesModule )
     {
         this.wrappedRulesBinder.install( rulesModule );
     }
@@ -87,7 +87,7 @@ class WithMemoryRulesBinder
     /**
      * {@inheritDoc}
      */
-    public LinkedRuleBuilder forPattern( String pattern )
+    public LinkedRuleBuilder forPattern( final String pattern )
     {
         return this.wrappedRulesBinder.forPattern( pattern );
     }
diff --git a/core/src/main/java/org/apache/commons/digester3/xmlrules/XmlRulesModule.java b/core/src/main/java/org/apache/commons/digester3/xmlrules/XmlRulesModule.java
index bdcfbc0..8a40e8e 100644
--- a/core/src/main/java/org/apache/commons/digester3/xmlrules/XmlRulesModule.java
+++ b/core/src/main/java/org/apache/commons/digester3/xmlrules/XmlRulesModule.java
@@ -40,8 +40,8 @@ final class XmlRulesModule
 
     private WithMemoryRulesBinder memoryRulesBinder;
 
-    public XmlRulesModule( final NameSpaceURIRulesBinder targetRulesBinder, Set<String> rootSystemIds,
-    /* @Nullable */String rootPath )
+    public XmlRulesModule( final NameSpaceURIRulesBinder targetRulesBinder, final Set<String> rootSystemIds,
+    /* @Nullable */final String rootPath )
     {
         this.targetRulesBinder = targetRulesBinder;
         this.rootSystemIds = rootSystemIds;
@@ -51,7 +51,7 @@ final class XmlRulesModule
     /**
      * {@inheritDoc}
      */
-    public void configure( RulesBinder rulesBinder )
+    public void configure( final RulesBinder rulesBinder )
     {
         if ( rulesBinder instanceof WithMemoryRulesBinder )
         {
@@ -66,7 +66,7 @@ final class XmlRulesModule
             }
         }
 
-        PatternStack patternStack = memoryRulesBinder.getPatternStack();
+        final PatternStack patternStack = memoryRulesBinder.getPatternStack();
 
         if ( rootPath != null )
         {
@@ -120,7 +120,7 @@ final class XmlRulesModule
      * @param pattern
      * @return
      */
-    protected LinkedRuleBuilder forPattern( String pattern )
+    protected LinkedRuleBuilder forPattern( final String pattern )
     {
         return memoryRulesBinder.forPattern( pattern );
     }
diff --git a/core/src/test/java/org/apache/commons/digester3/Address.java b/core/src/test/java/org/apache/commons/digester3/Address.java
index ae2c51e..a912ec6 100644
--- a/core/src/test/java/org/apache/commons/digester3/Address.java
+++ b/core/src/test/java/org/apache/commons/digester3/Address.java
@@ -30,7 +30,7 @@ public class Address
         this( "My Street", "My City", "US", "MyZip" );
     }
 
-    public Address( String street, String city, String state, String zipCode )
+    public Address( final String street, final String city, final String state, final String zipCode )
     {
         setStreet( street );
         setCity( city );
@@ -45,7 +45,7 @@ public class Address
         return ( this.city );
     }
 
-    public void setCity( String city )
+    public void setCity( final String city )
     {
         this.city = city;
     }
@@ -57,7 +57,7 @@ public class Address
         return ( this.state );
     }
 
-    public void setState( String state )
+    public void setState( final String state )
     {
         this.state = state;
     }
@@ -69,7 +69,7 @@ public class Address
         return ( this.street );
     }
 
-    public void setStreet( String street )
+    public void setStreet( final String street )
     {
         this.street = street;
     }
@@ -81,7 +81,7 @@ public class Address
         return ( this.type );
     }
 
-    public void setType( String type )
+    public void setType( final String type )
     {
         this.type = type;
     }
@@ -93,12 +93,12 @@ public class Address
         return ( this.zipCode );
     }
 
-    public void setZipCode( String zipCode )
+    public void setZipCode( final String zipCode )
     {
         this.zipCode = zipCode;
     }
 
-    public void setEmployee( Employee employee )
+    public void setEmployee( final Employee employee )
     {
         employee.addAddress( this );
     }
@@ -106,7 +106,7 @@ public class Address
     @Override
     public String toString()
     {
-        StringBuilder sb = new StringBuilder( "Address[" );
+        final StringBuilder sb = new StringBuilder( "Address[" );
         sb.append( "street=" );
         sb.append( street );
         sb.append( ", city=" );
diff --git a/core/src/test/java/org/apache/commons/digester3/AlphaBean.java b/core/src/test/java/org/apache/commons/digester3/AlphaBean.java
index 7c0e0c2..72e0960 100644
--- a/core/src/test/java/org/apache/commons/digester3/AlphaBean.java
+++ b/core/src/test/java/org/apache/commons/digester3/AlphaBean.java
@@ -31,7 +31,7 @@ public class AlphaBean
     {
     }
 
-    public AlphaBean( String name )
+    public AlphaBean( final String name )
     {
         setName( name );
     }
@@ -41,12 +41,12 @@ public class AlphaBean
         return name;
     }
 
-    public void setName( String name )
+    public void setName( final String name )
     {
         this.name = name;
     }
 
-    public void setParent( Nameable parent )
+    public void setParent( final Nameable parent )
     {
         this.parent = parent;
     }
@@ -56,7 +56,7 @@ public class AlphaBean
         return parent;
     }
 
-    public void setChild( Nameable child )
+    public void setChild( final Nameable child )
     {
         this.child = child;
     }
diff --git a/core/src/test/java/org/apache/commons/digester3/AsyncReaderTestCase.java b/core/src/test/java/org/apache/commons/digester3/AsyncReaderTestCase.java
index 4fa0a21..dd9211c 100644
--- a/core/src/test/java/org/apache/commons/digester3/AsyncReaderTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/AsyncReaderTestCase.java
@@ -67,7 +67,7 @@ public final class AsyncReaderTestCase
     public void parseFromFile()
         throws Exception
     {
-        Future<Employee> future = digester.asyncParse( new File( getProperty( "user.dir" ),
+        final Future<Employee> future = digester.asyncParse( new File( getProperty( "user.dir" ),
             "src/test/resources/org/apache/commons/digester3/Test9.xml" ) );
         verify( future );
     }
@@ -76,7 +76,7 @@ public final class AsyncReaderTestCase
     public void parseFromClasspathURL()
         throws Exception
     {
-        Future<Employee> future = digester.asyncParse( getClass().getResource( "Test9.xml" ) );
+        final Future<Employee> future = digester.asyncParse( getClass().getResource( "Test9.xml" ) );
         verify( future );
     }
 
@@ -84,7 +84,7 @@ public final class AsyncReaderTestCase
     public void parseFromInputStream()
         throws Exception
     {
-        Future<Employee> future = digester.asyncParse( getClass().getResource( "Test9.xml" ).openStream() );
+        final Future<Employee> future = digester.asyncParse( getClass().getResource( "Test9.xml" ).openStream() );
         verify( future );
     }
 
@@ -92,7 +92,7 @@ public final class AsyncReaderTestCase
     public void parseFromInputSource()
         throws Exception
     {
-        Future<Employee> future =
+        final Future<Employee> future =
             digester.asyncParse( new InputSource( getClass().getResource( "Test9.xml" ).openStream() ) );
         verify( future );
     }
@@ -101,7 +101,7 @@ public final class AsyncReaderTestCase
     public void parseFromReader()
         throws Exception
     {
-        Future<Employee> future =
+        final Future<Employee> future =
             digester.asyncParse( new InputStreamReader( getClass().getResource( "Test9.xml" ).openStream() ) );
         verify( future );
     }
@@ -110,14 +110,14 @@ public final class AsyncReaderTestCase
     public void parseFromUri()
         throws Exception
     {
-        Future<Employee> future = digester.asyncParse( getClass().getResource( "Test9.xml" ).toExternalForm() );
+        final Future<Employee> future = digester.asyncParse( getClass().getResource( "Test9.xml" ).toExternalForm() );
         verify( future );
     }
 
-    private void verify( Future<Employee> result )
+    private void verify( final Future<Employee> result )
         throws Exception
     {
-        Employee employee = result.get();
+        final Employee employee = result.get();
         assertNotNull( employee );
     }
 
diff --git a/core/src/test/java/org/apache/commons/digester3/BeanPropertySetterRuleTestCase.java b/core/src/test/java/org/apache/commons/digester3/BeanPropertySetterRuleTestCase.java
index d134f47..e730a17 100644
--- a/core/src/test/java/org/apache/commons/digester3/BeanPropertySetterRuleTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/BeanPropertySetterRuleTestCase.java
@@ -64,7 +64,7 @@ public class BeanPropertySetterRuleTestCase
 
         final List<Rule> callOrder = new ArrayList<Rule>();
 
-        Digester digester = newLoader( new AbstractRulesModule()
+        final Digester digester = newLoader( new AbstractRulesModule()
         {
 
             @Override
@@ -123,7 +123,7 @@ public class BeanPropertySetterRuleTestCase
     {
         final List<Rule> callOrder = new ArrayList<Rule>();
 
-        Digester digester = newLoader(new AbstractRulesModule()
+        final Digester digester = newLoader(new AbstractRulesModule()
         {
 
             @Override
@@ -156,7 +156,7 @@ public class BeanPropertySetterRuleTestCase
     public void testSetGivenProperty()
         throws SAXException, IOException
     {
-        Digester digester = newLoader(new AbstractRulesModule()
+        final Digester digester = newLoader(new AbstractRulesModule()
         {
 
             @Override
@@ -175,7 +175,7 @@ public class BeanPropertySetterRuleTestCase
 
         }).newDigester();
 
-        SimpleTestBean bean = digester.parse( xmlTestReader() );
+        final SimpleTestBean bean = digester.parse( xmlTestReader() );
 
         // check properties are set correctly
         assertEquals( "Property alpha not set correctly", "ROOT BODY", bean.getAlpha() );
@@ -194,7 +194,7 @@ public class BeanPropertySetterRuleTestCase
     @Test
     public void testSetUnknownProperty()
     {
-        Digester digester = newLoader(new AbstractRulesModule()
+        final Digester digester = newLoader(new AbstractRulesModule()
         {
 
             @Override
@@ -212,15 +212,15 @@ public class BeanPropertySetterRuleTestCase
         // Attempt to parse the input
         try
         {
-            SimpleTestBean bean = digester.parse( xmlTestReader() );
+            final SimpleTestBean bean = digester.parse( xmlTestReader() );
             fail( "Should have thrown NoSuchMethodException" );
             assertNotNull( bean ); // just to avoid compiler warning on unused variable
         }
-        catch ( Exception e )
+        catch ( final Exception e )
         {
             if ( e instanceof InvocationTargetException )
             {
-                Throwable t = ( (InvocationTargetException) e ).getTargetException();
+                final Throwable t = ( (InvocationTargetException) e ).getTargetException();
                 if ( t instanceof NoSuchMethodException )
                 {
                     // Expected result
@@ -241,7 +241,7 @@ public class BeanPropertySetterRuleTestCase
     public void testAutomaticallySetProperties()
         throws SAXException, IOException
     {
-        Digester digester = newLoader(new AbstractRulesModule()
+        final Digester digester = newLoader(new AbstractRulesModule()
         {
 
             @Override
@@ -253,7 +253,7 @@ public class BeanPropertySetterRuleTestCase
 
         }).newDigester( new ExtendedBaseRules() );
 
-        SimpleTestBean bean = digester.parse( xmlTestReader() );
+        final SimpleTestBean bean = digester.parse( xmlTestReader() );
 
         // check properties are set correctly
         assertEquals( "Property alpha not set correctly", "ALPHA BODY", bean.getAlpha() );
@@ -267,9 +267,9 @@ public class BeanPropertySetterRuleTestCase
     @Test
     public void extractPropertyNameFromAttribute() throws Exception
     {
-        Employee expected = new Employee( "John", "Doe" );
+        final Employee expected = new Employee( "John", "Doe" );
 
-        Employee actual = newLoader( new AbstractRulesModule()
+        final Employee actual = newLoader( new AbstractRulesModule()
         {
 
             @Override
diff --git a/core/src/test/java/org/apache/commons/digester3/BetaBean.java b/core/src/test/java/org/apache/commons/digester3/BetaBean.java
index 80ff3c2..608a38c 100644
--- a/core/src/test/java/org/apache/commons/digester3/BetaBean.java
+++ b/core/src/test/java/org/apache/commons/digester3/BetaBean.java
@@ -36,12 +36,12 @@ public class BetaBean
         return name;
     }
 
-    public void setName( String name )
+    public void setName( final String name )
     {
         this.name = name;
     }
 
-    public void setParent( Nameable parent )
+    public void setParent( final Nameable parent )
     {
         this.parent = parent;
     }
@@ -51,7 +51,7 @@ public class BetaBean
         return parent;
     }
 
-    public void setChild( Nameable child )
+    public void setChild( final Nameable child )
     {
         this.child = child;
     }
diff --git a/core/src/test/java/org/apache/commons/digester3/Box.java b/core/src/test/java/org/apache/commons/digester3/Box.java
index 6b0078c..6780726 100644
--- a/core/src/test/java/org/apache/commons/digester3/Box.java
+++ b/core/src/test/java/org/apache/commons/digester3/Box.java
@@ -39,12 +39,12 @@ public class Box
         return id;
     }
 
-    public void setId( String id )
+    public void setId( final String id )
     {
         this.id = id;
     }
 
-    public void addChild( Box child )
+    public void addChild( final Box child )
     {
         this.children.add( child );
     }
@@ -57,13 +57,13 @@ public class Box
     @Override
     public String toString()
     {
-        StringBuilder buf = new StringBuilder();
+        final StringBuilder buf = new StringBuilder();
         buf.append( "[Box] id=" );
         buf.append( id );
         buf.append( " nchildren=" );
         buf.append( children.size() );
 
-        for ( Box child : children )
+        for ( final Box child : children )
         {
             buf.append( "  " );
             buf.append( child.toString() );
@@ -77,9 +77,9 @@ public class Box
      */
     public String getIds()
     {
-        StringBuilder buf = new StringBuilder();
+        final StringBuilder buf = new StringBuilder();
         buf.append( this.id );
-        for ( Box child : children )
+        for ( final Box child : children )
         {
             buf.append( " " );
             buf.append( child.getIds() );
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 5ac0f29..552f74b 100644
--- a/core/src/test/java/org/apache/commons/digester3/CallMethodRuleTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/CallMethodRuleTestCase.java
@@ -54,7 +54,7 @@ public class CallMethodRuleTestCase
     public void testBasic()
         throws SAXException, IOException
     {
-        Digester digester = newLoader( new AbstractRulesModule()
+        final Digester digester = newLoader( new AbstractRulesModule()
         {
 
             @Override
@@ -77,7 +77,7 @@ public class CallMethodRuleTestCase
 
         // Parse our test input.
         // An exception will be thrown if the method can't be found
-        Employee root1 = digester.parse( getInputStream( "Test5.xml" ) );
+        final Employee root1 = digester.parse( getInputStream( "Test5.xml" ) );
         assertNotNull( root1 );
     }
 
@@ -88,7 +88,7 @@ public class CallMethodRuleTestCase
     public void testCallMethodOnly()
         throws Exception
     {
-        Digester digester = newLoader( new AbstractRulesModule()
+        final Digester digester = newLoader( new AbstractRulesModule()
         {
 
             @Override
@@ -102,7 +102,7 @@ public class CallMethodRuleTestCase
         }).newDigester();
 
         // Parse our test input
-        Employee employee = digester.parse( getInputStream( "Test9.xml" ) );
+        final Employee employee = digester.parse( getInputStream( "Test9.xml" ) );
         assertNotNull( "parsed an employee", employee );
 
         // Validate that the property setters were called
@@ -203,7 +203,7 @@ public class CallMethodRuleTestCase
     public void testParamsFromStack()
         throws SAXException, IOException
     {
-        Digester digester = newLoader( new AbstractRulesModule()
+        final Digester digester = newLoader( new AbstractRulesModule()
         {
 
             @Override
@@ -226,10 +226,10 @@ public class CallMethodRuleTestCase
 
         }).newDigester();
 
-        StringBuilder xml =
+        final StringBuilder xml =
             new StringBuilder().append( "<?xml version='1.0'?>" ).append( "<map>" ).append( "  <key name='The key'/>" ).append( "  <value name='The value'/>" ).append( "</map>" );
 
-        HashMap<AlphaBean, BetaBean> map = digester.parse( new StringReader( xml.toString() ) );
+        final HashMap<AlphaBean, BetaBean> map = digester.parse( new StringReader( xml.toString() ) );
 
         assertNotNull( map );
         assertEquals( 1, map.size() );
@@ -248,7 +248,7 @@ public class CallMethodRuleTestCase
     public void testOrderNestedPartA()
         throws Exception
     {
-        Digester digester = newLoader( new AbstractRulesModule()
+        final Digester digester = newLoader( new AbstractRulesModule()
         {
 
             @Override
@@ -270,7 +270,7 @@ public class CallMethodRuleTestCase
 
        // Parse our test input
        // an exception will be thrown if the method can't be found
-        NamedBean root1 = digester.parse( getInputStream( "Test8.xml" ) );
+        final NamedBean root1 = digester.parse( getInputStream( "Test8.xml" ) );
 
 
         // if the CallMethodRule were to incorrectly invoke the method call
@@ -294,7 +294,7 @@ public class CallMethodRuleTestCase
     public void testOrderNestedPartB()
         throws Exception
     {
-        Digester digester = newLoader( new AbstractRulesModule()
+        final Digester digester = newLoader( new AbstractRulesModule()
         {
 
             @Override
@@ -308,7 +308,7 @@ public class CallMethodRuleTestCase
         }).newDigester();
 
         // Configure the digester as required
-        StringBuilder word = new StringBuilder();
+        final StringBuilder word = new StringBuilder();
         digester.push( word );
 
         // Parse our test input
@@ -319,7 +319,7 @@ public class CallMethodRuleTestCase
             root1 = digester.parse( getInputStream( "Test8.xml" ) );
             assertNotNull( root1 );
         }
-        catch ( Throwable t )
+        catch ( final Throwable t )
         {
             // this means that the method can't be found and so the test fails
             fail( "Digester threw Exception:  " + t );
@@ -332,12 +332,12 @@ public class CallMethodRuleTestCase
     public void testPrimitiveReading()
         throws Exception
     {
-        StringReader reader =
+        final StringReader reader =
             new StringReader( "<?xml version='1.0' ?><root><bean good='true'/><bean good='false'/><bean/>"
                 + "<beanie bad='Fee Fie Foe Fum' good='true'/><beanie bad='Fee Fie Foe Fum' good='false'/>"
                 + "<beanie bad='Fee Fie Foe Fum'/></root>" );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
 
         // SimpleLog log = new SimpleLog("[testPrimitiveReading:Digester]");
         // log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
@@ -345,18 +345,18 @@ public class CallMethodRuleTestCase
 
         digester.addObjectCreate( "root/bean", PrimitiveBean.class );
         digester.addSetNext( "root/bean", "add" );
-        Class<?>[] params = { Boolean.TYPE };
+        final Class<?>[] params = { Boolean.TYPE };
         digester.addCallMethod( "root/bean", "setBoolean", 1, params );
         digester.addCallParam( "root/bean", 0, "good" );
 
         digester.addObjectCreate( "root/beanie", PrimitiveBean.class );
         digester.addSetNext( "root/beanie", "add" );
-        Class<?>[] beanieParams = { String.class, Boolean.TYPE };
+        final Class<?>[] beanieParams = { String.class, Boolean.TYPE };
         digester.addCallMethod( "root/beanie", "testSetBoolean", 2, beanieParams );
         digester.addCallParam( "root/beanie", 0, "bad" );
         digester.addCallParam( "root/beanie", 1, "good" );
 
-        ArrayList<PrimitiveBean> list = new ArrayList<PrimitiveBean>();
+        final ArrayList<PrimitiveBean> list = new ArrayList<PrimitiveBean>();
         digester.push( list );
         digester.parse( reader );
 
@@ -386,12 +386,12 @@ public class CallMethodRuleTestCase
         throws Exception
     {
 
-        StringReader reader =
+        final StringReader reader =
             new StringReader( "<?xml version='1.0' ?><root><one/><two/><three/><four/><five/></root>" );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
 
-        Class<?>[] params = { String.class };
+        final Class<?>[] params = { String.class };
 
         digester.addObjectCreate( "root/one", NamedBean.class );
         digester.addSetNext( "root/one", "add" );
@@ -415,7 +415,7 @@ public class CallMethodRuleTestCase
 
         digester.addObjectCreate( "root/five", NamedBean.class );
         digester.addSetNext( "root/five", "add" );
-        Class<?>[] newParams = { String.class, String.class };
+        final Class<?>[] newParams = { String.class, String.class };
         digester.addCallMethod( "root/five", "test", 2, newParams );
         digester.addCallParam( "root/five", 0, 10 );
         digester.addCallParam( "root/five", 1, 3 );
@@ -426,7 +426,7 @@ public class CallMethodRuleTestCase
         digester.push( "It's fleece was white as snow." );
         digester.push( "Mary had a little lamb," );
 
-        ArrayList<NamedBean> list = new ArrayList<NamedBean>();
+        final ArrayList<NamedBean> list = new ArrayList<NamedBean>();
         digester.push( list );
         digester.parse( reader );
 
@@ -448,11 +448,11 @@ public class CallMethodRuleTestCase
         throws Exception
     {
 
-        StringReader reader =
+        final StringReader reader =
             new StringReader( "<?xml version='1.0' ?><root>" + "<param class='int' coolness='true'>25</param>"
                 + "<param class='long'>50</param>" + "<param class='float' coolness='false'>90</param></root>" );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         // SimpleLog log = new SimpleLog("{testTwoCalls:Digester]");
         // log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
         // digester.setLogger(log);
@@ -465,7 +465,7 @@ public class CallMethodRuleTestCase
         digester.addCallMethod( "root/param", "setCool", 1, new Class[] { boolean.class } );
         digester.addCallParam( "root/param", 0, "coolness" );
 
-        ArrayList<ParamBean> list = new ArrayList<ParamBean>();
+        final ArrayList<ParamBean> list = new ArrayList<ParamBean>();
         digester.push( list );
         digester.parse( reader );
 
@@ -489,11 +489,11 @@ public class CallMethodRuleTestCase
         throws Exception
     {
 
-        StringReader reader =
+        final StringReader reader =
             new StringReader( "<?xml version='1.0' ?><root>" + "<spam>Simple</spam>"
                 + "<spam>Complex<spam>Deep<spam>Deeper<spam>Deepest</spam></spam></spam></spam>" + "</root>" );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
 
         // SimpleLog log = new SimpleLog("[testPrimitiveReading:Digester]");
         // log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
@@ -519,7 +519,7 @@ public class CallMethodRuleTestCase
         digester.addCallMethod( "root/spam/spam/spam/spam", "setName", 1 );
         digester.addCallParam( "root/spam/spam/spam/spam", 0 );
 
-        ArrayList<NamedBean> list = new ArrayList<NamedBean>();
+        final ArrayList<NamedBean> list = new ArrayList<NamedBean>();
         digester.push( list );
         digester.parse( reader );
 
@@ -546,35 +546,35 @@ public class CallMethodRuleTestCase
         {
             Object result;
 
-            TestCallMethodRule( String methodName, int paramCount )
+            TestCallMethodRule( final String methodName, final int paramCount )
             {
                 super( methodName, paramCount );
             }
 
             @Override
-            protected void processMethodCallResult( Object result )
+            protected void processMethodCallResult( final Object result )
             {
                 this.result = result;
             }
         }
 
-        StringReader reader =
+        final StringReader reader =
             new StringReader( "<?xml version='1.0' ?><root>"
                 + "<param class='float' coolness='false'>90</param></root>" );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         // SimpleLog log = new SimpleLog("{testTwoCalls:Digester]");
         // log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
         // digester.setLogger(log);
 
         digester.addObjectCreate( "root/param", ParamBean.class );
         digester.addSetNext( "root/param", "add" );
-        TestCallMethodRule rule = new TestCallMethodRule( "setThisAndThat", 2 );
+        final TestCallMethodRule rule = new TestCallMethodRule( "setThisAndThat", 2 );
         digester.addRule( "root/param", rule );
         digester.addCallParam( "root/param", 0, "class" );
         digester.addCallParam( "root/param", 1, "coolness" );
 
-        ArrayList<ParamBean> list = new ArrayList<ParamBean>();
+        final ArrayList<ParamBean> list = new ArrayList<ParamBean>();
         digester.push( list );
         digester.parse( reader );
 
@@ -587,15 +587,15 @@ public class CallMethodRuleTestCase
     public void testPathCallParam()
         throws Exception
     {
-        String xml =
+        final String xml =
             "<?xml version='1.0'?><main>" + "<alpha><beta>Ignore this</beta></alpha>"
                 + "<beta><epsilon><gamma>Ignore that</gamma></epsilon></beta>" + "</main>";
 
-        SimpleTestBean bean = new SimpleTestBean();
+        final SimpleTestBean bean = new SimpleTestBean();
         bean.setAlphaBeta( "[UNSET]", "[UNSET]" );
 
-        StringReader in = new StringReader( xml );
-        Digester digester = new Digester();
+        final StringReader in = new StringReader( xml );
+        final Digester digester = new Digester();
         digester.setRules( new ExtendedBaseRules() );
         digester.addCallParamPath( "*/alpha/?", 0 );
         digester.addCallParamPath( "*/epsilon/?", 1 );
@@ -617,13 +617,13 @@ public class CallMethodRuleTestCase
         throws Exception
     {
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addObjectCreate( "employee", HashMap.class );
 
         // there should be only one object on the stack (index zero),
         // so selecting a target object with index 1 on the object stack
         // should result in an exception.
-        CallMethodRule r = new CallMethodRule( 1, "put", 0 );
+        final CallMethodRule r = new CallMethodRule( 1, "put", 0 );
         digester.addRule( "employee", r );
 
         try
@@ -631,7 +631,7 @@ public class CallMethodRuleTestCase
             digester.parse( getInputStream( "Test5.xml" ) );
             fail( "Exception should be thrown for invalid target offset" );
         }
-        catch ( SAXException e )
+        catch ( final SAXException e )
         {
             // ok, exception expected
         }
@@ -645,25 +645,25 @@ public class CallMethodRuleTestCase
         throws Exception
     {
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addObjectCreate( "employee", HashMap.class );
 
         digester.addObjectCreate( "employee/address", Address.class );
         digester.addSetNestedProperties( "employee/address" );
-        CallMethodRule r = new CallMethodRule( 1, "put", 2 );
+        final CallMethodRule r = new CallMethodRule( 1, "put", 2 );
         digester.addRule( "employee/address", r );
         digester.addCallParam( "employee/address/type", 0 );
         digester.addCallParam( "employee/address", 1, 0 );
 
-        HashMap<String, Address> map = digester.parse( getInputStream( "Test5.xml" ) );
+        final HashMap<String, Address> map = digester.parse( getInputStream( "Test5.xml" ) );
 
         assertNotNull( map );
-        Set<String> keys = map.keySet();
+        final Set<String> keys = map.keySet();
         assertEquals( 2, keys.size() );
-        Address home = map.get( "home" );
+        final Address home = map.get( "home" );
         assertNotNull( home );
         assertEquals( "HmZip", home.getZipCode() );
-        Address office = map.get( "office" );
+        final Address office = map.get( "office" );
         assertNotNull( office );
         assertEquals( "OfZip", office.getZipCode() );
     }
@@ -676,25 +676,25 @@ public class CallMethodRuleTestCase
         throws Exception
     {
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addObjectCreate( "employee", HashMap.class );
 
         digester.addObjectCreate( "employee/address", Address.class );
         digester.addSetNestedProperties( "employee/address" );
-        CallMethodRule r = new CallMethodRule( -1, "put", 2 );
+        final CallMethodRule r = new CallMethodRule( -1, "put", 2 );
         digester.addRule( "employee/address", r );
         digester.addCallParam( "employee/address/type", 0 );
         digester.addCallParam( "employee/address", 1, 0 );
 
-        HashMap<String, Address> map = digester.parse( getInputStream( "Test5.xml" ) );
+        final HashMap<String, Address> map = digester.parse( getInputStream( "Test5.xml" ) );
 
         assertNotNull( map );
-        Set<String> keys = map.keySet();
+        final Set<String> keys = map.keySet();
         assertEquals( 2, keys.size() );
-        Address home = map.get( "home" );
+        final Address home = map.get( "home" );
         assertNotNull( home );
         assertEquals( "HmZip", home.getZipCode() );
-        Address office = map.get( "office" );
+        final Address office = map.get( "office" );
         assertNotNull( office );
         assertEquals( "OfZip", office.getZipCode() );
     }
@@ -707,7 +707,7 @@ public class CallMethodRuleTestCase
      * @param name Name of the test file we want
      * @throws IOException if an input/output error occurs
      */
-    protected InputStream getInputStream( String name )
+    protected InputStream getInputStream( final String name )
         throws IOException
     {
 
diff --git a/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java b/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java
index 56413ab..1a61a7e 100644
--- a/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java
@@ -51,19 +51,19 @@ public class DTDValidationTestCase
         .setErrorHandler( new ErrorHandler()
         {
 
-            public void warning( SAXParseException e )
+            public void warning( final SAXParseException e )
                 throws SAXException
             {
                 throw e;
             }
 
-            public void fatalError( SAXParseException e )
+            public void fatalError( final SAXParseException e )
                 throws SAXException
             {
                 throw e;
             }
 
-            public void error( SAXParseException e )
+            public void error( final SAXParseException e )
                 throws SAXException
             {
                 throw e;
diff --git a/core/src/test/java/org/apache/commons/digester3/Digester133TestCase.java b/core/src/test/java/org/apache/commons/digester3/Digester133TestCase.java
index e98c001..4ef5f9b 100644
--- a/core/src/test/java/org/apache/commons/digester3/Digester133TestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/Digester133TestCase.java
@@ -53,7 +53,7 @@ public final class Digester133TestCase
             return flag;
         }
 
-        public void setFlag( boolean flag )
+        public void setFlag( final boolean flag )
 
         {
             this.flag = flag;
@@ -64,7 +64,7 @@ public final class Digester133TestCase
     {
 
         @Override
-        protected Object getPropertyOfMapBean( @SuppressWarnings( "rawtypes" ) Map bean, String propertyName )
+        protected Object getPropertyOfMapBean( @SuppressWarnings( "rawtypes" ) final Map bean, final String propertyName )
             throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException
         {
             if ( isReadable( bean, propertyName ) )
@@ -75,12 +75,12 @@ public final class Digester133TestCase
         }
 
         @Override
-        protected void setPropertyOfMapBean( @SuppressWarnings( "rawtypes" ) Map bean, String propertyName, Object value )
+        protected void setPropertyOfMapBean( @SuppressWarnings( "rawtypes" ) final Map bean, final String propertyName, final Object value )
             throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException
         {
             if ( isWriteable( bean, propertyName ) )
             {
-                Class<?> propertyType = getPropertyType( bean, propertyName );
+                final Class<?> propertyType = getPropertyType( bean, propertyName );
                 setSimpleProperty( bean, propertyName, ConvertUtils.convert( value, propertyType ) );
             }
             else
@@ -95,9 +95,9 @@ public final class Digester133TestCase
     public void testDigester()
         throws IOException, SAXException
     {
-        PropertyUtilsBean propertyUtils = new MyPropertyUtilsBean();
-        ConvertUtilsBean convertUtils = new ConvertUtilsBean();
-        BeanUtilsBean beanUtils = new BeanUtilsBean( convertUtils, propertyUtils );
+        final PropertyUtilsBean propertyUtils = new MyPropertyUtilsBean();
+        final ConvertUtilsBean convertUtils = new ConvertUtilsBean();
+        final BeanUtilsBean beanUtils = new BeanUtilsBean( convertUtils, propertyUtils );
         BeanUtilsBean.setInstance( beanUtils );
 
         final String xml = "<myclass flag='true' />";
diff --git a/core/src/test/java/org/apache/commons/digester3/Digester153TestCase.java b/core/src/test/java/org/apache/commons/digester3/Digester153TestCase.java
index ee68262..8d08a4d 100644
--- a/core/src/test/java/org/apache/commons/digester3/Digester153TestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/Digester153TestCase.java
@@ -41,10 +41,10 @@ public final class Digester153TestCase
     public void basicConstructor()
         throws Exception
     {
-        ObjectCreateRule createRule = new ObjectCreateRule( TestBean.class );
+        final ObjectCreateRule createRule = new ObjectCreateRule( TestBean.class );
         createRule.setConstructorArgumentTypes( boolean.class, double.class );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addRule( "toplevel/bean", createRule );
         digester.addCallParam( "toplevel/bean", 0, "boolean" );
         digester.addCallParam( "toplevel/bean", 1, "double" );
@@ -65,10 +65,10 @@ public final class Digester153TestCase
     public void constructorWithAttributeAndElement()
         throws Exception
     {
-        ObjectCreateRule createRule = new ObjectCreateRule( TestBean.class );
+        final ObjectCreateRule createRule = new ObjectCreateRule( TestBean.class );
         createRule.setConstructorArgumentTypes( boolean.class, double.class );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addRule( "toplevel/bean", createRule );
         digester.addCallParam( "toplevel/bean", 0, "boolean" );
         digester.addCallParam( "toplevel/bean/double", 1 );
@@ -141,10 +141,10 @@ public final class Digester153TestCase
         } );
     }
 
-    private void succesfullConstructor( RulesModule rulesModule )
+    private void succesfullConstructor( final RulesModule rulesModule )
         throws Exception
     {
-        TestBean bean = newLoader( rulesModule )
+        final TestBean bean = newLoader( rulesModule )
                             .newDigester()
                             .parse( getClass().getResourceAsStream( "BasicConstructor.xml" ) );
 
@@ -156,15 +156,15 @@ public final class Digester153TestCase
     public void basicConstructorWithValuesNotFound()
         throws Exception
     {
-        ObjectCreateRule createRule = new ObjectCreateRule( TestBean.class );
+        final ObjectCreateRule createRule = new ObjectCreateRule( TestBean.class );
         createRule.setConstructorArgumentTypes( boolean.class, double.class );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addRule( "toplevel/bean", createRule );
         digester.addCallParam( "toplevel/bean", 0, "notFound1" );
         digester.addCallParam( "toplevel/bean", 1, "notFound2" );
 
-        TestBean bean = digester.parse( getClass().getResourceAsStream( "BasicConstructor.xml" ) );
+        final TestBean bean = digester.parse( getClass().getResourceAsStream( "BasicConstructor.xml" ) );
 
         assertFalse( bean.getBooleanProperty() );
         assertEquals( 0D, bean.getDoubleProperty(), 0 );
@@ -174,10 +174,10 @@ public final class Digester153TestCase
     public void basicConstructorWithWrongParameters()
         throws Exception
     {
-        ObjectCreateRule createRule = new ObjectCreateRule( TestBean.class );
+        final ObjectCreateRule createRule = new ObjectCreateRule( TestBean.class );
         createRule.setConstructorArgumentTypes( boolean.class );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addRule( "toplevel/bean", createRule );
 
         digester.parse( getClass().getResourceAsStream( "BasicConstructor.xml" ) );
@@ -187,15 +187,15 @@ public final class Digester153TestCase
     public void constructorWithClassDefinedInAttribute()
         throws Exception
     {
-        ObjectCreateRule createRule = new ObjectCreateRule( null, "type" );
+        final ObjectCreateRule createRule = new ObjectCreateRule( null, "type" );
         createRule.setConstructorArgumentTypes( boolean.class, double.class );
 
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addRule( "toplevel/bean", createRule );
         digester.addCallParam( "toplevel/bean", 0, "boolean" );
         digester.addCallParam( "toplevel/bean", 1, "double" );
 
-        TestBean bean = digester.parse( getClass().getResourceAsStream( "AttributeDefinedConstructor.xml" ) );
+        final TestBean bean = digester.parse( getClass().getResourceAsStream( "AttributeDefinedConstructor.xml" ) );
 
         assertTrue( bean.getBooleanProperty() );
         assertEquals( 9.99D, bean.getDoubleProperty(), 0 );
diff --git a/core/src/test/java/org/apache/commons/digester3/Digester162TestCase.java b/core/src/test/java/org/apache/commons/digester3/Digester162TestCase.java
index 0c47687..15e6aa4 100644
--- a/core/src/test/java/org/apache/commons/digester3/Digester162TestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/Digester162TestCase.java
@@ -33,7 +33,7 @@ public final class Digester162TestCase
     public void allowCreateObjectsWichTypesAreSpecifiedInAttributeNameOnly()
         throws Exception
     {
-        Digester digester = newLoader( new AbstractRulesModule()
+        final Digester digester = newLoader( new AbstractRulesModule()
         {
 
             @Override
@@ -45,7 +45,7 @@ public final class Digester162TestCase
         })
         .newDigester();
 
-        Object object = digester.parse( getClass().getResource( "digester-162.xml" ) );
+        final Object object = digester.parse( getClass().getResource( "digester-162.xml" ) );
 
         assertTrue( BetaBean.class.isInstance( object ) );
     }
diff --git a/core/src/test/java/org/apache/commons/digester3/Digester171TestCase.java b/core/src/test/java/org/apache/commons/digester3/Digester171TestCase.java
index 3f03a94..286b12a 100644
--- a/core/src/test/java/org/apache/commons/digester3/Digester171TestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/Digester171TestCase.java
@@ -54,7 +54,7 @@ public class Digester171TestCase
     public void testDefaultThrowingErrorHandler()
         throws Exception
     {
-        ErrorHandler customErrorHandler = new DefaultThrowingErrorHandler();
+        final ErrorHandler customErrorHandler = new DefaultThrowingErrorHandler();
 
         newLoader( new AbstractRulesModule()
         {
diff --git a/core/src/test/java/org/apache/commons/digester3/DigesterTestCase.java b/core/src/test/java/org/apache/commons/digester3/DigesterTestCase.java
index dafb06a..d708d5b 100644
--- a/core/src/test/java/org/apache/commons/digester3/DigesterTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/DigesterTestCase.java
@@ -116,7 +116,7 @@ public class DigesterTestCase
             digester.parse( (File) null );
             fail( "Expected IllegalArgumentException with null argument" );
         }
-        catch ( IllegalArgumentException e )
+        catch ( final IllegalArgumentException e )
         {
             // expected
         }
@@ -133,7 +133,7 @@ public class DigesterTestCase
             digester.parse( (InputSource) null );
             fail( "Expected IllegalArgumentException with null argument" );
         }
-        catch ( IllegalArgumentException e )
+        catch ( final IllegalArgumentException e )
         {
             // expected
         }
@@ -150,7 +150,7 @@ public class DigesterTestCase
             digester.parse( (InputStream) null );
             fail( "Expected IllegalArgumentException with null argument" );
         }
-        catch ( IllegalArgumentException e )
+        catch ( final IllegalArgumentException e )
         {
             // expected
         }
@@ -167,7 +167,7 @@ public class DigesterTestCase
             digester.parse( (Reader) null );
             fail( "Expected IllegalArgumentException with null argument" );
         }
-        catch ( IllegalArgumentException e )
+        catch ( final IllegalArgumentException e )
         {
             // expected
         }
@@ -184,7 +184,7 @@ public class DigesterTestCase
             digester.parse( (String) null );
             fail( "Expected IllegalArgumentException with null argument" );
         }
-        catch ( IllegalArgumentException e )
+        catch ( final IllegalArgumentException e )
         {
             // expected
         }
@@ -201,7 +201,7 @@ public class DigesterTestCase
             digester.parse( (URL) null );
             fail( "Expected IllegalArgumentException with null argument" );
         }
-        catch ( IllegalArgumentException e )
+        catch ( final IllegalArgumentException e )
         {
             // expected
         }
@@ -247,7 +247,7 @@ public class DigesterTestCase
         int n = 0;
         for ( int i = 0; i < registrations.length; i += 2 )
         {
-            URL url = this.getClass().getResource( registrations[i + 1] );
+            final URL url = this.getClass().getResource( registrations[i + 1] );
             if ( url != null )
             {
                 digester.register( registrations[i], url );
@@ -257,11 +257,11 @@ public class DigesterTestCase
         map = digester.getRegistrations();
         assertEquals( "Registered two URLs", n, map.size() );
 
-        int count[] = new int[n];
+        final int count[] = new int[n];
         for ( int i = 0; i < n; i++ ) {
             count[i] = 0;
         }
-        for ( String key : map.keySet() )
+        for ( final String key : map.keySet() )
         {
             for ( int i = 0; i < n; i++ )
             {
@@ -408,9 +408,9 @@ public class DigesterTestCase
             }
         }
 
-        TestConfigureDigester digester = new TestConfigureDigester();
+        final TestConfigureDigester digester = new TestConfigureDigester();
 
-        String xml = "<?xml version='1.0'?><document/>";
+        final String xml = "<?xml version='1.0'?><document/>";
         digester.parse( new StringReader( xml ) );
 
         assertEquals( "Initialize should be called once and only once", 1, digester.called );
@@ -428,24 +428,24 @@ public class DigesterTestCase
             public Attributes attributes;
 
             @Override
-            public void begin( String namespace, String name, Attributes attributes )
+            public void begin( final String namespace, final String name, final Attributes attributes )
             {
                 this.attributes = new AttributesImpl( attributes );
             }
 
             @Override
-            public void body( String namespace, String name, String text )
+            public void body( final String namespace, final String name, final String text )
             {
                 this.body = text;
             }
         }
 
-        TestSubRule tsr = new TestSubRule();
-        Digester digester = new Digester();
+        final TestSubRule tsr = new TestSubRule();
+        final Digester digester = new Digester();
         digester.addRule( "alpha/beta", tsr );
 
         // it's not easy to transform dirty harry into the mighty circus - but let's give it a try
-        String xml =
+        final String xml =
             "<?xml version='1.0'?><alpha><beta forname='Dirty' surname='Harry'>Do you feel luck punk?</beta></alpha>";
         InputSource in = new InputSource( new StringReader( xml ) );
 
@@ -459,15 +459,15 @@ public class DigesterTestCase
         digester.setSubstitutor( new Substitutor()
         {
             @Override
-            public Attributes substitute( Attributes attributes )
+            public Attributes substitute( final Attributes attributes )
             {
-                AttributesImpl results = new AttributesImpl();
+                final AttributesImpl results = new AttributesImpl();
                 results.addAttribute( "", "python", "python", "CDATA", "Cleese" );
                 return results;
             }
 
             @Override
-            public String substitute( String bodyText )
+            public String substitute( final String bodyText )
             {
                 return "And now for something completely different...";
             }
@@ -487,9 +487,9 @@ public class DigesterTestCase
     public void testNamedStackPushPeekPop()
         throws Exception
     {
-        BigDecimal archimedesAveragePi = new BigDecimal( "3.1418" );
-        String testStackName = "org.apache.commons.digester3.tests.testNamedStackPushPeekPop";
-        Digester digester = new Digester();
+        final BigDecimal archimedesAveragePi = new BigDecimal( "3.1418" );
+        final String testStackName = "org.apache.commons.digester3.tests.testNamedStackPushPeekPop";
+        final Digester digester = new Digester();
         assertTrue( "Stack starts empty:", digester.isEmpty( testStackName ) );
         digester.push( testStackName, archimedesAveragePi );
         assertEquals( "Peeked value:", archimedesAveragePi, digester.peek( testStackName ) );
@@ -511,7 +511,7 @@ public class DigesterTestCase
             digester.peek( testStackName, 3 );
             fail( "Peek#4 failed to throw an exception." );
         }
-        catch ( EmptyStackException ex )
+        catch ( final EmptyStackException ex )
         {
             // ok, expected
         }
@@ -522,7 +522,7 @@ public class DigesterTestCase
             digester.peek( "no.such.stack", 0 );
             fail( "Peeking a non-existent stack failed to throw an exception." );
         }
-        catch ( EmptyStackException ex )
+        catch ( final EmptyStackException ex )
         {
             // ok, expected
         }
@@ -532,9 +532,9 @@ public class DigesterTestCase
     @Test
     public void testNamedIndependence()
     {
-        String testStackOneName = "org.apache.commons.digester3.tests.testNamedIndependenceOne";
-        String testStackTwoName = "org.apache.commons.digester3.tests.testNamedIndependenceTwo";
-        Digester digester = new Digester();
+        final String testStackOneName = "org.apache.commons.digester3.tests.testNamedIndependenceOne";
+        final String testStackTwoName = "org.apache.commons.digester3.tests.testNamedIndependenceTwo";
+        final Digester digester = new Digester();
         digester.push( testStackOneName, "Tweedledum" );
         digester.push( testStackTwoName, "Tweedledee" );
         assertEquals( "Popped value one:", "Tweedledum", digester.pop( testStackOneName ) );
@@ -545,8 +545,8 @@ public class DigesterTestCase
     @Test
     public void testPopNamedStackNotPushed()
     {
-        String testStackName = "org.apache.commons.digester3.tests.testPopNamedStackNotPushed";
-        Digester digester = new Digester();
+        final String testStackName = "org.apache.commons.digester3.tests.testPopNamedStackNotPushed";
+        final Digester digester = new Digester();
         try
         {
 
@@ -554,7 +554,7 @@ public class DigesterTestCase
             fail( "Expected an EmptyStackException" );
 
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             // expected
         }
@@ -566,7 +566,7 @@ public class DigesterTestCase
             fail( "Expected an EmptyStackException" );
 
         }
-        catch ( EmptyStackException e )
+        catch ( final EmptyStackException e )
         {
             // expected
         }
@@ -576,8 +576,8 @@ public class DigesterTestCase
     @Test
     public void testNamedStackIsEmpty()
     {
-        String testStackName = "org.apache.commons.digester3.tests.testNamedStackIsEmpty";
-        Digester digester = new Digester();
+        final String testStackName = "org.apache.commons.digester3.tests.testNamedStackIsEmpty";
+        final Digester digester = new Digester();
         assertTrue( "A named stack that has no object pushed onto it yet should be empty",
                     digester.isEmpty( testStackName ) );
 
@@ -599,15 +599,15 @@ public class DigesterTestCase
     public void testGetRoot()
         throws Exception
     {
-        Digester digester = new Digester();
+        final Digester digester = new Digester();
         digester.addRule( "root", new ObjectCreateRule( TestBean.class ) );
 
-        String xml = "<root/>";
-        InputSource in = new InputSource( new StringReader( xml ) );
+        final String xml = "<root/>";
+        final InputSource in = new InputSource( new StringReader( xml ) );
 
         digester.parse( in );
 
-        Object root = digester.getRoot();
+        final Object root = digester.getRoot();
         assertNotNull( "root object not retrieved", root );
         assertTrue( "root object not a TestRule instance", ( root instanceof TestBean ) );
     }
@@ -618,12 +618,12 @@ public class DigesterTestCase
     {
         public ArrayList<String> events = new ArrayList<String>();
 
-        public Object onPush( Digester d, String stackName, Object o )
+        public Object onPush( final Digester d, final String stackName, final Object o )
         {
-            String msg = "push:" + stackName + ":" + o.toString();
+            final String msg = "push:" + stackName + ":" + o.toString();
             events.add( msg );
 
-            String str = o.toString();
+            final String str = o.toString();
             if ( str.startsWith( "replpush" ) )
             {
                 return new String( str );
@@ -631,11 +631,11 @@ public class DigesterTestCase
             return o;
         }
 
-        public Object onPop( Digester d, String stackName, Object o )
+        public Object onPop( final Digester d, final String stackName, final Object o )
         {
-            String msg = "pop:" + stackName + ":" + o.toString();
+            final String msg = "pop:" + stackName + ":" + o.toString();
             events.add( msg );
-            String str = o.toString();
+            final String str = o.toString();
             if ( str.startsWith( "replpop" ) )
             {
                 return new String( str );
@@ -650,17 +650,17 @@ public class DigesterTestCase
     @Test
     public void testStackAction()
     {
-        TrackingStackAction action = new TrackingStackAction();
+        final TrackingStackAction action = new TrackingStackAction();
 
-        Object obj1 = new String( "obj1" );
-        Object obj2 = new String( "obj2" );
-        Object obj3 = new String( "replpop.obj3" );
-        Object obj4 = new String( "replpush.obj4" );
+        final Object obj1 = new String( "obj1" );
+        final Object obj2 = new String( "obj2" );
+        final Object obj3 = new String( "replpop.obj3" );
+        final Object obj4 = new String( "replpush.obj4" );
 
-        Object obj8 = new String( "obj8" );
-        Object obj9 = new String( "obj9" );
+        final Object obj8 = new String( "obj8" );
+        final Object obj9 = new String( "obj9" );
 
-        Digester d = new Digester();
+        final Digester d = new Digester();
         d.setStackAction( action );
 
         assertEquals( 0, action.events.size() );
@@ -678,10 +678,10 @@ public class DigesterTestCase
         assertSame( obj2, d.peek( 2 ) );
         assertSame( obj1, d.peek( 3 ) );
 
-        Object obj4a = d.pop();
-        Object obj3a = d.pop();
-        Object obj2a = d.pop();
-        Object obj1a = d.pop();
+        final Object obj4a = d.pop();
+        final Object obj3a = d.pop();
+        final Object obj2a = d.pop();
+        final Object obj1a = d.pop();
 
         assertFalse( obj4 == obj4a );
         assertEquals( obj4, obj4a );
@@ -692,8 +692,8 @@ public class DigesterTestCase
 
         d.push( "stack1", obj8 );
         d.push( "stack1", obj9 );
-        Object obj9a = d.pop( "stack1" );
-        Object obj8a = d.pop( "stack1" );
+        final Object obj9a = d.pop( "stack1" );
+        final Object obj8a = d.pop( "stack1" );
 
         assertSame( obj8, obj8a );
         assertSame( obj9, obj9a );
diff --git a/core/src/test/java/org/apache/commons/digester3/Employee.java b/core/src/test/java/org/apache/commons/digester3/Employee.java
index 576a5b0..d7e142b 100644
--- a/core/src/test/java/org/apache/commons/digester3/Employee.java
+++ b/core/src/test/java/org/apache/commons/digester3/Employee.java
@@ -32,7 +32,7 @@ public class Employee
         this( "My First Name", "My Last Name" );
     }
 
-    public Employee( String firstName, String lastName )
+    public Employee( final String firstName, final String lastName )
     {
         setFirstName( firstName );
         setLastName( lastName );
@@ -40,14 +40,14 @@ public class Employee
 
     private final ArrayList<Address> addresses = new ArrayList<Address>();
 
-    public void addAddress( Address address )
+    public void addAddress( final Address address )
     {
         addresses.add( address );
     }
 
-    public Address getAddress( String type )
+    public Address getAddress( final String type )
     {
-        for ( Address address : addresses )
+        for ( final Address address : addresses )
         {
             if ( type.equals( address.getType() ) ) {
                 return ( address );
@@ -56,7 +56,7 @@ public class Employee
         return ( null );
     }
 
-    public void removeAddress( Address address )
+    public void removeAddress( final Address address )
     {
         addresses.remove( address );
     }
@@ -68,7 +68,7 @@ public class Employee
         return ( this.firstName );
     }
 
-    public void setFirstName( String firstName )
+    public void setFirstName( final String firstName )
     {
         this.firstName = firstName;
     }
@@ -80,7 +80,7 @@ public class Employee
         return ( this.lastName );
     }
 
-    public void setLastName( String lastName )
+    public void setLastName( final String lastName )
     {
         this.lastName = lastName;
     }
@@ -97,7 +97,7 @@ public class Employee
         return age;
     }
 
-    public void setAge( int age )
+    public void setAge( final int age )
     {
         this.age = age;
     }
@@ -107,7 +107,7 @@ public class Employee
         return active;
     }
 
-    public void setActive( boolean active )
+    public void setActive( final boolean active )
     {
         this.active = active;
     }
@@ -117,7 +117,7 @@ public class Employee
         return salary;
     }
 
-    public void setSalary( float salary )
+    public void setSalary( final float salary )
     {
         this.salary = salary;
     }
@@ -125,7 +125,7 @@ public class Employee
     @Override
     public String toString()
     {
-        StringBuilder sb = new StringBuilder( "Employee[" );
+        final StringBuilder sb = new StringBuilder( "Employee[" );
         sb.append( "firstName=" );
         sb.append( firstName );
         sb.append( ", lastName=" );
diff --git a/core/src/test/java/org/apache/commons/digester3/ErrorHandlerTest.java b/core/src/test/java/org/apache/commons/digester3/ErrorHandlerTest.java
index 17655f6..30a2a10 100644
--- a/core/src/test/java/org/apache/commons/digester3/ErrorHandlerTest.java
+++ b/core/src/test/java/org/apache/commons/digester3/ErrorHandlerTest.java
@@ -52,11 +52,11 @@ public class ErrorHandlerTest
             } ).newDigester().parse( getClass().getResource( "Test-digester-172-wrong.xml" ) );
             fail( "Expected SAXException" );
         }
-        catch ( IOException e )
+        catch ( final IOException e )
         {
             fail( "Expected SAXException" );
         }
-        catch ( SAXException e )
+        catch ( final SAXException e )
         {
             // expected
         }
@@ -67,23 +67,23 @@ public class ErrorHandlerTest
     public void customErrorHandlerWithStack()
     {
 
-        ErrorHandler customErrorHandler = new ErrorHandler()
+        final ErrorHandler customErrorHandler = new ErrorHandler()
         {
             Log log = LogFactory.getLog( this.getClass() );
 
-            public void warning( SAXParseException arg0 )
+            public void warning( final SAXParseException arg0 )
                 throws SAXException
             {
                 log.warn( "Custom Warn Handler" );
             }
 
-            public void fatalError( SAXParseException e )
+            public void fatalError( final SAXParseException e )
                 throws SAXException
             {
                 log.fatal( "Custom Fatal Error Handler", e );
             }
 
-            public void error( SAXParseException e )
+            public void error( final SAXParseException e )
                 throws SAXException
             {
                 log.error( "Custom Error Handler", e );
@@ -92,7 +92,7 @@ public class ErrorHandlerTest
 
         try
         {
-            Digester digester = newLoader( new AbstractRulesModule()
+            final Digester digester = newLoader( new AbstractRulesModule()
             {
                 @Override
                 protected void configure()
@@ -105,11 +105,11 @@ public class ErrorHandlerTest
             digester.parse( getClass().getResource( "Test-digester-172-wrong.xml" ) );
             fail( "Expected SAXException" );
         }
-        catch ( IOException e )
+        catch ( final IOException e )
         {
             fail( "Expected SAXException" );
         }
-        catch ( SAXException e )
+        catch ( final SAXException e )
         {
             // expected
         }
@@ -119,23 +119,23 @@ public class ErrorHandlerTest
... 7654 lines suppressed ...