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 ed6e403..2f9446f 100644
--- a/core/src/main/java/org/apache/commons/digester3/ExtendedBaseRules.java
+++ b/core/src/main/java/org/apache/commons/digester3/ExtendedBaseRules.java
@@ -156,7 +156,7 @@
      * The decision algorithm used (unfortunately) doesn't preserve the entry order. This map is used by a comparator
      * which orders the list of matches before it's returned. This map stores the entry number keyed by the rule.
      */
-    private Map<Rule, Integer> order = new HashMap<Rule, Integer>();
+    private final Map<Rule, Integer> order = new HashMap<Rule, Integer>();
 
     // --------------------------------------------------------- Public Methods
 
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 80dc561..69c734e 100644
--- a/core/src/main/java/org/apache/commons/digester3/FactoryCreateRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/FactoryCreateRule.java
@@ -43,7 +43,7 @@
     // ----------------------------------------------------------- Fields
 
     /** Should exceptions thrown by the factory be ignored? */
-    private boolean ignoreCreateExceptions;
+    private final boolean ignoreCreateExceptions;
 
     /** Stock to manage */
     private Stack<Boolean> exceptionIgnoredStack;
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 fd6bca3..d558dfc 100644
--- a/core/src/main/java/org/apache/commons/digester3/PatternRuleMatcher.java
+++ b/core/src/main/java/org/apache/commons/digester3/PatternRuleMatcher.java
@@ -32,7 +32,7 @@
 
     private final String pattern;
 
-    private String namespaceURI;
+    private final String namespaceURI;
 
     public PatternRuleMatcher( String pattern )
     {
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 f1e5858..1d20aba 100644
--- a/core/src/main/java/org/apache/commons/digester3/RegexRules.java
+++ b/core/src/main/java/org/apache/commons/digester3/RegexRules.java
@@ -43,7 +43,7 @@
     // --------------------------------------------------------- Fields
 
     /** All registered <code>Rule</code>'s */
-    private ArrayList<RegisteredRule> registeredRules = new ArrayList<RegisteredRule>();
+    private final ArrayList<RegisteredRule> registeredRules = new ArrayList<RegisteredRule>();
 
     /** The regex strategy used by this RegexRules */
     private RegexMatcher matcher;
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 cafc0cf..1b358f5 100644
--- a/core/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java
+++ b/core/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java
@@ -108,7 +108,7 @@
 
     private boolean allowUnknownChildElements = false;
 
-    private HashMap<String, String> elementNames = new HashMap<String, String>();
+    private final HashMap<String, String> elementNames = new HashMap<String, String>();
 
     // ----------------------------------------------------------- Constructors
 
@@ -334,9 +334,9 @@
 
         private Rules decoratedRules = null;
 
-        private ArrayList<Rule> rules = new ArrayList<Rule>( 1 );
+        private final ArrayList<Rule> rules = new ArrayList<Rule>( 1 );
 
-        private AnyChildRule rule;
+        private final AnyChildRule rule;
 
         public AnyChildRules( AnyChildRule rule )
         {
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 9fa597e..da91686 100644
--- a/core/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java
+++ b/core/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java
@@ -62,13 +62,13 @@
     // --------------------------------------------------------- Fields
 
     /** The Rules implementation that this class wraps. */
-    private Rules wrappedRules;
+    private final Rules wrappedRules;
 
     /** Rules to be fired when the wrapped implementations returns none. */
-    private List<Rule> defaultRules = new ArrayList<Rule>();
+    private final List<Rule> defaultRules = new ArrayList<Rule>();
 
     /** All rules (preserves order in which they were originally added) */
-    private List<Rule> allRules = new ArrayList<Rule>();
+    private final List<Rule> allRules = new ArrayList<Rule>();
 
     // --------------------------------------------------------- Constructor
 
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 04e62ac..e14e6e7 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
@@ -37,13 +37,13 @@
     private Class<?> pluginClass;
 
     /** The name of the class of the object to be instantiated. */
-    private String pluginClassName;
+    private final String pluginClassName;
 
     /** See {@link #setId}. */
     private String id;
 
     /** See {@link #setProperties}. */
-    private Properties properties = new Properties();
+    private final Properties properties = new Properties();
 
     /** See {@link #init}. */
     private boolean initialized = false;
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 9e1d216..35f7907 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
@@ -39,10 +39,10 @@
 {
 
     /** Map of classname->Declaration */
-    private HashMap<String, Declaration> declarationsByClass = new HashMap<String, Declaration>();
+    private final HashMap<String, Declaration> declarationsByClass = new HashMap<String, Declaration>();
 
     /** Map of id->Declaration */
-    private HashMap<String, Declaration> declarationsById = new HashMap<String, Declaration>();
+    private final HashMap<String, Declaration> declarationsById = new HashMap<String, Declaration>();
 
     /** the parent manager to which this one may delegate lookups. */
     private PluginManager parent;
@@ -50,7 +50,7 @@
     /**
      * The object containing data that should only exist once for each Digester instance.
      */
-    private PluginContext pluginContext;
+    private final PluginContext pluginContext;
 
     // ------------------- constructors ---------------------------------------
 
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 2fef3e1..395d0f1 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
@@ -65,7 +65,7 @@
     private Rules decoratedRules;
 
     /** Object which contains information about all known plugins. */
-    private PluginManager pluginManager;
+    private final PluginManager pluginManager;
 
     /**
      * The path below which this rules object has responsibility. For paths shorter than or equal the mountpoint, the
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 93e8c38..beb0b7d 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
@@ -35,7 +35,7 @@
 {
 
     // list of mapped attributes.
-    private ArrayList<String> values = new ArrayList<String>( 10 );
+    private final ArrayList<String> values = new ArrayList<String>( 10 );
 
     private Attributes attrs;
 
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 22a3417..6b0078c 100644
--- a/core/src/test/java/org/apache/commons/digester3/Box.java
+++ b/core/src/test/java/org/apache/commons/digester3/Box.java
@@ -28,7 +28,7 @@
 {
     private String id;
 
-    private List<Box> children = new LinkedList<Box>();
+    private final List<Box> children = new LinkedList<Box>();
 
     public Box()
     {
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 f511a91..b438b61 100644
--- a/core/src/test/java/org/apache/commons/digester3/Employee.java
+++ b/core/src/test/java/org/apache/commons/digester3/Employee.java
@@ -39,7 +39,7 @@
         setLastName( lastName );
     }
 
-    private ArrayList<Address> addresses = new ArrayList<Address>();
+    private final ArrayList<Address> addresses = new ArrayList<Address>();
 
     public void addAddress( Address address )
     {
diff --git a/core/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java b/core/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java
index 7c469d3..c1bd664 100644
--- a/core/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java
@@ -42,7 +42,7 @@
 
     // ------------------------------------------------ Individual Test Methods
 
-    private StringBuilder sb =
+    private final StringBuilder sb =
         new StringBuilder().append( "<arraylist><A/><B/><C/><D desc=\"the fourth\"/><E/></arraylist>" );
 
     /**
diff --git a/core/src/test/java/org/apache/commons/digester3/TestBean.java b/core/src/test/java/org/apache/commons/digester3/TestBean.java
index ba86fd5..7e6643f 100644
--- a/core/src/test/java/org/apache/commons/digester3/TestBean.java
+++ b/core/src/test/java/org/apache/commons/digester3/TestBean.java
@@ -130,7 +130,7 @@
         this.intArray = intArray;
     }
 
-    private int intIndexed[] = { 0, 10, 20, 30, 40 };
+    private final int intIndexed[] = { 0, 10, 20, 30, 40 };
 
     public int getIntIndexed( int index )
     {
@@ -272,7 +272,7 @@
         this.stringArray = stringArray;
     }
 
-    private String stringIndexed[] = { "String 0", "String 1", "String 2", "String 3", "String 4" };
+    private final String stringIndexed[] = { "String 0", "String 1", "String 2", "String 3", "String 4" };
 
     public String getStringIndexed( int index )
     {
diff --git a/core/src/test/java/org/apache/commons/digester3/TestRule.java b/core/src/test/java/org/apache/commons/digester3/TestRule.java
index 7ec01b8..60742d6 100644
--- a/core/src/test/java/org/apache/commons/digester3/TestRule.java
+++ b/core/src/test/java/org/apache/commons/digester3/TestRule.java
@@ -40,7 +40,7 @@
     // ----------------------------------------------------- Instance Variables
 
     /** String identifing this particular <code>TestRule</code> */
-    private String identifier;
+    private final String identifier;
 
     /** Used when testing body text */
     private String bodyText;
diff --git a/core/src/test/java/org/apache/commons/digester3/binder/BinderClassLoaderTestCase.java b/core/src/test/java/org/apache/commons/digester3/binder/BinderClassLoaderTestCase.java
index 1e11604..31b3442 100644
--- a/core/src/test/java/org/apache/commons/digester3/binder/BinderClassLoaderTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/binder/BinderClassLoaderTestCase.java
@@ -49,7 +49,7 @@
 public final class BinderClassLoaderTestCase
 {
 
-    private BinderClassLoader classLoader = createBinderClassLoader( new ExtendedClassLoader() );
+    private final BinderClassLoader classLoader = createBinderClassLoader( new ExtendedClassLoader() );
 
     @Test
     public void loadBoolean()
diff --git a/core/src/test/java/org/apache/commons/digester3/plugins/Container.java b/core/src/test/java/org/apache/commons/digester3/plugins/Container.java
index 29e8a5c..746392a 100644
--- a/core/src/test/java/org/apache/commons/digester3/plugins/Container.java
+++ b/core/src/test/java/org/apache/commons/digester3/plugins/Container.java
@@ -24,7 +24,7 @@
 public class Container
     implements Widget
 {
-    private LinkedList<Widget> children = new LinkedList<Widget>();
+    private final LinkedList<Widget> children = new LinkedList<Widget>();
 
     public Container()
     {
diff --git a/core/src/test/java/org/apache/commons/digester3/plugins/TestConfigurablePluginAttributes.java b/core/src/test/java/org/apache/commons/digester3/plugins/TestConfigurablePluginAttributes.java
index 36f08a5..3cb34d2 100644
--- a/core/src/test/java/org/apache/commons/digester3/plugins/TestConfigurablePluginAttributes.java
+++ b/core/src/test/java/org/apache/commons/digester3/plugins/TestConfigurablePluginAttributes.java
@@ -219,9 +219,9 @@
 
     public static class MultiContainer
     {
-        private LinkedList<Widget> widgets = new LinkedList<Widget>();
+        private final LinkedList<Widget> widgets = new LinkedList<Widget>();
 
-        private LinkedList<Widget> gadgets = new LinkedList<Widget>();
+        private final LinkedList<Widget> gadgets = new LinkedList<Widget>();
 
         public MultiContainer()
         {
diff --git a/core/src/test/java/org/apache/commons/digester3/substitution/CompoundSubstitutorTestCase.java b/core/src/test/java/org/apache/commons/digester3/substitution/CompoundSubstitutorTestCase.java
index 3a46fb0..f098e24 100644
--- a/core/src/test/java/org/apache/commons/digester3/substitution/CompoundSubstitutorTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/substitution/CompoundSubstitutorTestCase.java
@@ -37,15 +37,15 @@
         extends Substitutor
     {
 
-        private String newBodyText;
+        private final String newBodyText;
 
-        private String uri;
+        private final String uri;
 
-        private String localName;
+        private final String localName;
 
-        private String type;
+        private final String type;
 
-        private String value;
+        private final String value;
 
         public SubstitutorStub( String bodyText, String uri, String localName, String type, String value )
         {
diff --git a/core/src/test/java/org/apache/commons/digester3/substitution/VariableExpansionTestCase.java b/core/src/test/java/org/apache/commons/digester3/substitution/VariableExpansionTestCase.java
index bd482f3..d781a54 100644
--- a/core/src/test/java/org/apache/commons/digester3/substitution/VariableExpansionTestCase.java
+++ b/core/src/test/java/org/apache/commons/digester3/substitution/VariableExpansionTestCase.java
@@ -45,7 +45,7 @@
     // --------------------------------------------------- Overall Test Methods
 
     // method used in tests4
-    private LinkedList<SimpleTestBean> simpleTestBeans = new LinkedList<SimpleTestBean>();
+    private final LinkedList<SimpleTestBean> simpleTestBeans = new LinkedList<SimpleTestBean>();
 
     public void addSimpleTestBean( SimpleTestBean bean )
     {
@@ -54,7 +54,7 @@
 
     // implementation of source shared by the variable expander and
     // is updatable during digesting via an Ant-like property element
-    private HashMap<String, Object> mutableSource = new HashMap<String, Object>();
+    private final HashMap<String, Object> mutableSource = new HashMap<String, Object>();
 
     /**
      * Used in test case "testExpansionWithMutableSource", where the set of variables available to be substituted into
diff --git a/core/src/test/java/org/apache/commons/digester3/xmlrules/DigesterPatternStackTest.java b/core/src/test/java/org/apache/commons/digester3/xmlrules/DigesterPatternStackTest.java
index e6f70d6..6776c54 100644
--- a/core/src/test/java/org/apache/commons/digester3/xmlrules/DigesterPatternStackTest.java
+++ b/core/src/test/java/org/apache/commons/digester3/xmlrules/DigesterPatternStackTest.java
@@ -31,7 +31,7 @@
 public class DigesterPatternStackTest
 {
 
-    private PatternStack patternStack = new PatternStack();
+    private final PatternStack patternStack = new PatternStack();
 
     @Before
     public void setUp()
diff --git a/core/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java b/core/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java
index 42fb87b..cdf4205 100644
--- a/core/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java
+++ b/core/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java
@@ -31,7 +31,7 @@
 public class ObjectTestImpl
 {
 
-    private ArrayList<Object> children = new ArrayList<Object>();
+    private final ArrayList<Object> children = new ArrayList<Object>();
 
     private String value = "";
 
@@ -39,7 +39,7 @@
 
     private String property = "";
 
-    private HashMap<String, String> mapValue = new HashMap<String, String>();
+    private final HashMap<String, String> mapValue = new HashMap<String, String>();
 
     private boolean pushed = false;
 
diff --git a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Book.java b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Book.java
index 851f5a1..8ab7989 100644
--- a/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Book.java
+++ b/examples/api/catalog/src/main/java/org/apache/commons/digester3/examples/api/catalog/Book.java
@@ -24,7 +24,7 @@
     implements Item
 {
 
-    private String isbn;
+    private final String isbn;
 
     private String title;
 
diff --git a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Row.java b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Row.java
index f260c5c..1c615fc 100644
--- a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Row.java
+++ b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/Row.java
@@ -37,7 +37,7 @@
      */
     public static class Column
     {
-        private String name, value;
+        private final String name, value;
 
         public Column( String name, String value )
         {
@@ -56,7 +56,7 @@
         }
     }
 
-    private LinkedList<Column> columns = new LinkedList<Column>();
+    private final LinkedList<Column> columns = new LinkedList<Column>();
 
     public Row()
     {
diff --git a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/RowInserterRule.java b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/RowInserterRule.java
index d46c823..6e7bd14 100644
--- a/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/RowInserterRule.java
+++ b/examples/api/dbinsert/src/main/java/org/apache/commons/digester3/examples/api/dbinsert/RowInserterRule.java
@@ -29,7 +29,7 @@
     extends Rule
 {
 
-    private Connection conn;
+    private final Connection conn;
 
     public RowInserterRule( Connection conn )
     {
diff --git a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CompoundTransform.java b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CompoundTransform.java
index 9fe1d2c..1c9713b 100644
--- a/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CompoundTransform.java
+++ b/examples/plugins/pipeline/src/main/java/org/apache/commons/digester3/examples/plugins/pipeline/CompoundTransform.java
@@ -34,7 +34,7 @@
     implements Transform
 {
 
-    private LinkedList<Transform> transforms = new LinkedList<Transform>();
+    private final LinkedList<Transform> transforms = new LinkedList<Transform>();
 
     public void addTransform( Transform transform )
     {
diff --git a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Person.java b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Person.java
index 745e5d8..3242242 100644
--- a/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Person.java
+++ b/examples/xmlrules/addressbook/src/main/java/org/apache/commons/digester3/examples/xmlrules/addressbook/Person.java
@@ -33,9 +33,9 @@
 
     private String name;
 
-    private HashMap<String, String> emails = new HashMap<String, String>();
+    private final HashMap<String, String> emails = new HashMap<String, String>();
 
-    private List<Address> addresses = new ArrayList<Address>();
+    private final List<Address> addresses = new ArrayList<Address>();
 
     /**
      * A unique id for this person. Note that the Digester automatically converts the id to an integer.
