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/24 16:28:40 UTC

[commons-scxml] branch master updated (cec4b27 -> 1aadd58)

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

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


    from cec4b27  Remove redundant calls to super().
     new a466142  Update commons-parent from 48 to 52.
     new 1aadd58  Use final.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pom.xml                                            |   2 +-
 src/changes/changes.xml                            |   3 +
 .../commons/scxml2/ActionExecutionContext.java     |   4 +-
 .../apache/commons/scxml2/EvaluatorFactory.java    |  12 +-
 .../commons/scxml2/NotificationRegistry.java       |  16 +-
 .../java/org/apache/commons/scxml2/SCInstance.java |  34 +--
 .../scxml2/SCInstanceObjectInputStream.java        |   6 +-
 .../commons/scxml2/SCXMLExecutionContext.java      |  42 ++--
 .../org/apache/commons/scxml2/SCXMLExecutor.java   |  30 +--
 .../apache/commons/scxml2/SCXMLSystemContext.java  |   4 +-
 .../java/org/apache/commons/scxml2/Status.java     |   6 +-
 .../org/apache/commons/scxml2/TriggerEvent.java    |   4 +-
 .../commons/scxml2/env/AbstractBaseEvaluator.java  |  18 +-
 .../commons/scxml2/env/AbstractStateMachine.java   |  12 +-
 .../commons/scxml2/env/EffectiveContextMap.java    |   6 +-
 .../org/apache/commons/scxml2/env/LogUtils.java    |   4 +-
 .../apache/commons/scxml2/env/SimpleContext.java   |   2 +-
 .../commons/scxml2/env/SimpleDispatcher.java       |  10 +-
 .../commons/scxml2/env/SimpleErrorReporter.java    |  22 +-
 .../commons/scxml2/env/SimpleSCXMLListener.java    |   2 +-
 .../org/apache/commons/scxml2/env/URLResolver.java |   4 +-
 .../commons/scxml2/env/groovy/GroovyContext.java   |  16 +-
 .../scxml2/env/groovy/GroovyContextBinding.java    |  16 +-
 .../commons/scxml2/env/groovy/GroovyEvaluator.java |  20 +-
 .../env/groovy/GroovyExtendableScriptCache.java    |  40 +--
 .../scxml2/env/groovy/GroovySCXMLScript.java       |   6 +-
 .../commons/scxml2/env/javascript/JSBindings.java  |  18 +-
 .../commons/scxml2/env/javascript/JSEvaluator.java |  24 +-
 .../commons/scxml2/env/jexl/JexlEvaluator.java     |  18 +-
 .../scxml2/env/minimal/MinimalEvaluator.java       |   4 +-
 .../commons/scxml2/invoke/SimpleSCXMLInvoker.java  |   8 +-
 .../apache/commons/scxml2/io/ContentParser.java    |  16 +-
 .../org/apache/commons/scxml2/io/ModelUpdater.java |  74 +++---
 .../org/apache/commons/scxml2/io/SCXMLReader.java  | 274 ++++++++++-----------
 .../org/apache/commons/scxml2/io/SCXMLWriter.java  |  94 +++----
 .../org/apache/commons/scxml2/model/Assign.java    |   8 +-
 .../org/apache/commons/scxml2/model/Cancel.java    |  10 +-
 .../apache/commons/scxml2/model/CustomAction.java  |   8 +-
 .../org/apache/commons/scxml2/model/ElseIf.java    |   2 +-
 .../commons/scxml2/model/EnterableState.java       |   2 +-
 .../org/apache/commons/scxml2/model/Final.java     |  16 +-
 .../org/apache/commons/scxml2/model/Foreach.java   |  20 +-
 .../java/org/apache/commons/scxml2/model/If.java   |  12 +-
 .../org/apache/commons/scxml2/model/Invoke.java    |  20 +-
 .../java/org/apache/commons/scxml2/model/Log.java  |   6 +-
 .../commons/scxml2/model/PayloadBuilder.java       |  14 +-
 .../org/apache/commons/scxml2/model/Raise.java     |   4 +-
 .../org/apache/commons/scxml2/model/SCXML.java     |   8 +-
 .../org/apache/commons/scxml2/model/Script.java    |   6 +-
 .../java/org/apache/commons/scxml2/model/Send.java |  22 +-
 .../commons/scxml2/model/SimpleTransition.java     |   8 +-
 .../org/apache/commons/scxml2/model/State.java     |   4 +-
 .../apache/commons/scxml2/model/Transition.java    |   4 +-
 .../commons/scxml2/model/TransitionTarget.java     |   8 +-
 .../commons/scxml2/model/TransitionalState.java    |   8 +-
 .../java/org/apache/commons/scxml2/model/Var.java  |  10 +-
 .../scxml2/semantics/SCXMLSemanticsImpl.java       | 210 ++++++++--------
 .../org/apache/commons/scxml2/semantics/Step.java  |   2 +-
 .../scxml2/test/StandaloneJexlExpressions.java     |   2 +-
 .../commons/scxml2/test/StandaloneUtils.java       |  28 +--
 .../org/apache/commons/scxml2/EventDataTest.java   |  24 +-
 .../org/apache/commons/scxml2/SCInstanceTest.java  |  46 ++--
 .../apache/commons/scxml2/SCXMLExecutorTest.java   |  72 +++---
 .../org/apache/commons/scxml2/SCXMLTestHelper.java |  86 +++----
 .../java/org/apache/commons/scxml2/StatusTest.java |  18 +-
 .../org/apache/commons/scxml2/TieBreakerTest.java  |  22 +-
 .../org/apache/commons/scxml2/WildcardTest.java    |   4 +-
 .../org/apache/commons/scxml2/WizardsTest.java     |  10 +-
 .../scxml2/env/AbstractSCXMLListenerTest.java      |  22 +-
 .../scxml2/env/AbstractStateMachineTest.java       |   8 +-
 .../apache/commons/scxml2/env/LogUtilsTest.java    |  14 +-
 .../commons/scxml2/env/MockErrorReporter.java      |   8 +-
 .../commons/scxml2/env/SimpleContextTest.java      |  58 ++---
 .../org/apache/commons/scxml2/env/StopWatch.java   |   6 +-
 .../commons/scxml2/env/StopWatchDisplay.java       |  24 +-
 .../scxml2/env/groovy/GroovyClosureTest.java       |   8 +-
 .../scxml2/env/groovy/GroovyContextTest.java       |  12 +-
 .../scxml2/env/groovy/GroovyEvaluatorTest.java     |  22 +-
 .../groovy/SerializableInitialBaseScriptTest.java  |   2 +-
 .../scxml2/env/groovy/StaticMethodTest.java        |   4 +-
 .../scxml2/env/javascript/JSEvaluatorTest.java     |  22 +-
 .../scxml2/env/javascript/JSExampleTest.java       |  10 +-
 .../env/javascript/JavaScriptEngineTest.java       |   6 +-
 .../commons/scxml2/env/jexl/ForeachTest.java       |   2 +-
 .../commons/scxml2/env/jexl/JexlContextTest.java   |   8 +-
 .../commons/scxml2/env/jexl/JexlEvaluatorTest.java |  10 +-
 .../commons/scxml2/env/jexl/StaticMethodTest.java  |   4 +-
 .../commons/scxml2/invoke/InvokeParamNameTest.java |  10 +-
 .../apache/commons/scxml2/invoke/InvokeTest.java   |  22 +-
 .../commons/scxml2/io/ContentParserTest.java       |  12 +-
 .../apache/commons/scxml2/io/SCXMLReaderTest.java  |  78 +++---
 .../scxml2/io/SCXMLRequiredAttributesTest.java     |  26 +-
 .../apache/commons/scxml2/io/SCXMLWriterTest.java  |  36 +--
 .../org/apache/commons/scxml2/io/StateSrcTest.java |   6 +-
 .../apache/commons/scxml2/issues/Issue112Test.java |  12 +-
 .../apache/commons/scxml2/issues/Issue62Test.java  |  12 +-
 .../apache/commons/scxml2/issues/Issue64Test.java  |   4 +-
 .../apache/commons/scxml2/model/ActionTest.java    |  30 +--
 .../apache/commons/scxml2/model/ActionsTest.java   |  10 +-
 .../apache/commons/scxml2/model/AssignTest.java    |   8 +-
 .../apache/commons/scxml2/model/CancelTest.java    |   4 +-
 .../commons/scxml2/model/CustomActionTest.java     |  36 +--
 .../apache/commons/scxml2/model/DatamodelTest.java |  22 +-
 .../org/apache/commons/scxml2/model/Hello.java     |   6 +-
 .../apache/commons/scxml2/model/HistoryTest.java   |  20 +-
 .../apache/commons/scxml2/model/ParallelTest.java  |   6 +-
 .../apache/commons/scxml2/model/ScriptTest.java    |   8 +-
 .../scxml2/model/ScxmlInitialAttributeTest.java    |  12 +-
 .../org/apache/commons/scxml2/model/SendTest.java  |   6 +-
 .../org/apache/commons/scxml2/model/StateTest.java |  54 ++--
 .../commons/scxml2/model/StatelessModelTest.java   |  32 +--
 .../commons/scxml2/model/TransitionTargetTest.java |  18 +-
 .../commons/scxml2/model/TransitionTest.java       |   2 +-
 .../scxml2/semantics/SCXMLSemanticsImplTest.java   |  32 +--
 .../org/apache/commons/scxml2/w3c/W3CTests.java    |  50 ++--
 115 files changed, 1211 insertions(+), 1208 deletions(-)


[commons-scxml] 01/02: Update commons-parent from 48 to 52.

Posted by gg...@apache.org.
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-scxml.git

commit a4661425d5702e6bd80a410fbbace04495874745
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Tue Nov 24 11:28:17 2020 -0500

    Update commons-parent from 48 to 52.
---
 pom.xml                 | 2 +-
 src/changes/changes.xml | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index c975766..a9702db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-parent</artifactId>
-    <version>48</version>
+    <version>52</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7225d12..f628096 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -338,6 +338,9 @@
       <action type="update" dev="ggregory">
         [05-28-2020] Update commons-io:commons-io from 2.6 to 2.7.
       </action>
+      <action type="update" dev="ggregory">
+        [11-24-2020] Update commons-parent from 48 to 52.
+      </action>
     </release>
 
     <release version="1.0" date="In SVN branch"


[commons-scxml] 02/02: Use final.

Posted by gg...@apache.org.
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-scxml.git

commit 1aadd58a9f167acc39236f10a84cbb058e8eefc2
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Tue Nov 24 11:28:33 2020 -0500

    Use final.
---
 .../commons/scxml2/ActionExecutionContext.java     |   4 +-
 .../apache/commons/scxml2/EvaluatorFactory.java    |  12 +-
 .../commons/scxml2/NotificationRegistry.java       |  16 +-
 .../java/org/apache/commons/scxml2/SCInstance.java |  34 +--
 .../scxml2/SCInstanceObjectInputStream.java        |   6 +-
 .../commons/scxml2/SCXMLExecutionContext.java      |  42 ++--
 .../org/apache/commons/scxml2/SCXMLExecutor.java   |  30 +--
 .../apache/commons/scxml2/SCXMLSystemContext.java  |   4 +-
 .../java/org/apache/commons/scxml2/Status.java     |   6 +-
 .../org/apache/commons/scxml2/TriggerEvent.java    |   4 +-
 .../commons/scxml2/env/AbstractBaseEvaluator.java  |  18 +-
 .../commons/scxml2/env/AbstractStateMachine.java   |  12 +-
 .../commons/scxml2/env/EffectiveContextMap.java    |   6 +-
 .../org/apache/commons/scxml2/env/LogUtils.java    |   4 +-
 .../apache/commons/scxml2/env/SimpleContext.java   |   2 +-
 .../commons/scxml2/env/SimpleDispatcher.java       |  10 +-
 .../commons/scxml2/env/SimpleErrorReporter.java    |  22 +-
 .../commons/scxml2/env/SimpleSCXMLListener.java    |   2 +-
 .../org/apache/commons/scxml2/env/URLResolver.java |   4 +-
 .../commons/scxml2/env/groovy/GroovyContext.java   |  16 +-
 .../scxml2/env/groovy/GroovyContextBinding.java    |  16 +-
 .../commons/scxml2/env/groovy/GroovyEvaluator.java |  20 +-
 .../env/groovy/GroovyExtendableScriptCache.java    |  40 +--
 .../scxml2/env/groovy/GroovySCXMLScript.java       |   6 +-
 .../commons/scxml2/env/javascript/JSBindings.java  |  18 +-
 .../commons/scxml2/env/javascript/JSEvaluator.java |  24 +-
 .../commons/scxml2/env/jexl/JexlEvaluator.java     |  18 +-
 .../scxml2/env/minimal/MinimalEvaluator.java       |   4 +-
 .../commons/scxml2/invoke/SimpleSCXMLInvoker.java  |   8 +-
 .../apache/commons/scxml2/io/ContentParser.java    |  16 +-
 .../org/apache/commons/scxml2/io/ModelUpdater.java |  74 +++---
 .../org/apache/commons/scxml2/io/SCXMLReader.java  | 274 ++++++++++-----------
 .../org/apache/commons/scxml2/io/SCXMLWriter.java  |  94 +++----
 .../org/apache/commons/scxml2/model/Assign.java    |   8 +-
 .../org/apache/commons/scxml2/model/Cancel.java    |  10 +-
 .../apache/commons/scxml2/model/CustomAction.java  |   8 +-
 .../org/apache/commons/scxml2/model/ElseIf.java    |   2 +-
 .../commons/scxml2/model/EnterableState.java       |   2 +-
 .../org/apache/commons/scxml2/model/Final.java     |  16 +-
 .../org/apache/commons/scxml2/model/Foreach.java   |  20 +-
 .../java/org/apache/commons/scxml2/model/If.java   |  12 +-
 .../org/apache/commons/scxml2/model/Invoke.java    |  20 +-
 .../java/org/apache/commons/scxml2/model/Log.java  |   6 +-
 .../commons/scxml2/model/PayloadBuilder.java       |  14 +-
 .../org/apache/commons/scxml2/model/Raise.java     |   4 +-
 .../org/apache/commons/scxml2/model/SCXML.java     |   8 +-
 .../org/apache/commons/scxml2/model/Script.java    |   6 +-
 .../java/org/apache/commons/scxml2/model/Send.java |  22 +-
 .../commons/scxml2/model/SimpleTransition.java     |   8 +-
 .../org/apache/commons/scxml2/model/State.java     |   4 +-
 .../apache/commons/scxml2/model/Transition.java    |   4 +-
 .../commons/scxml2/model/TransitionTarget.java     |   8 +-
 .../commons/scxml2/model/TransitionalState.java    |   8 +-
 .../java/org/apache/commons/scxml2/model/Var.java  |  10 +-
 .../scxml2/semantics/SCXMLSemanticsImpl.java       | 210 ++++++++--------
 .../org/apache/commons/scxml2/semantics/Step.java  |   2 +-
 .../scxml2/test/StandaloneJexlExpressions.java     |   2 +-
 .../commons/scxml2/test/StandaloneUtils.java       |  28 +--
 .../org/apache/commons/scxml2/EventDataTest.java   |  24 +-
 .../org/apache/commons/scxml2/SCInstanceTest.java  |  46 ++--
 .../apache/commons/scxml2/SCXMLExecutorTest.java   |  72 +++---
 .../org/apache/commons/scxml2/SCXMLTestHelper.java |  86 +++----
 .../java/org/apache/commons/scxml2/StatusTest.java |  18 +-
 .../org/apache/commons/scxml2/TieBreakerTest.java  |  22 +-
 .../org/apache/commons/scxml2/WildcardTest.java    |   4 +-
 .../org/apache/commons/scxml2/WizardsTest.java     |  10 +-
 .../scxml2/env/AbstractSCXMLListenerTest.java      |  22 +-
 .../scxml2/env/AbstractStateMachineTest.java       |   8 +-
 .../apache/commons/scxml2/env/LogUtilsTest.java    |  14 +-
 .../commons/scxml2/env/MockErrorReporter.java      |   8 +-
 .../commons/scxml2/env/SimpleContextTest.java      |  58 ++---
 .../org/apache/commons/scxml2/env/StopWatch.java   |   6 +-
 .../commons/scxml2/env/StopWatchDisplay.java       |  24 +-
 .../scxml2/env/groovy/GroovyClosureTest.java       |   8 +-
 .../scxml2/env/groovy/GroovyContextTest.java       |  12 +-
 .../scxml2/env/groovy/GroovyEvaluatorTest.java     |  22 +-
 .../groovy/SerializableInitialBaseScriptTest.java  |   2 +-
 .../scxml2/env/groovy/StaticMethodTest.java        |   4 +-
 .../scxml2/env/javascript/JSEvaluatorTest.java     |  22 +-
 .../scxml2/env/javascript/JSExampleTest.java       |  10 +-
 .../env/javascript/JavaScriptEngineTest.java       |   6 +-
 .../commons/scxml2/env/jexl/ForeachTest.java       |   2 +-
 .../commons/scxml2/env/jexl/JexlContextTest.java   |   8 +-
 .../commons/scxml2/env/jexl/JexlEvaluatorTest.java |  10 +-
 .../commons/scxml2/env/jexl/StaticMethodTest.java  |   4 +-
 .../commons/scxml2/invoke/InvokeParamNameTest.java |  10 +-
 .../apache/commons/scxml2/invoke/InvokeTest.java   |  22 +-
 .../commons/scxml2/io/ContentParserTest.java       |  12 +-
 .../apache/commons/scxml2/io/SCXMLReaderTest.java  |  78 +++---
 .../scxml2/io/SCXMLRequiredAttributesTest.java     |  26 +-
 .../apache/commons/scxml2/io/SCXMLWriterTest.java  |  36 +--
 .../org/apache/commons/scxml2/io/StateSrcTest.java |   6 +-
 .../apache/commons/scxml2/issues/Issue112Test.java |  12 +-
 .../apache/commons/scxml2/issues/Issue62Test.java  |  12 +-
 .../apache/commons/scxml2/issues/Issue64Test.java  |   4 +-
 .../apache/commons/scxml2/model/ActionTest.java    |  30 +--
 .../apache/commons/scxml2/model/ActionsTest.java   |  10 +-
 .../apache/commons/scxml2/model/AssignTest.java    |   8 +-
 .../apache/commons/scxml2/model/CancelTest.java    |   4 +-
 .../commons/scxml2/model/CustomActionTest.java     |  36 +--
 .../apache/commons/scxml2/model/DatamodelTest.java |  22 +-
 .../org/apache/commons/scxml2/model/Hello.java     |   6 +-
 .../apache/commons/scxml2/model/HistoryTest.java   |  20 +-
 .../apache/commons/scxml2/model/ParallelTest.java  |   6 +-
 .../apache/commons/scxml2/model/ScriptTest.java    |   8 +-
 .../scxml2/model/ScxmlInitialAttributeTest.java    |  12 +-
 .../org/apache/commons/scxml2/model/SendTest.java  |   6 +-
 .../org/apache/commons/scxml2/model/StateTest.java |  54 ++--
 .../commons/scxml2/model/StatelessModelTest.java   |  32 +--
 .../commons/scxml2/model/TransitionTargetTest.java |  18 +-
 .../commons/scxml2/model/TransitionTest.java       |   2 +-
 .../scxml2/semantics/SCXMLSemanticsImplTest.java   |  32 +--
 .../org/apache/commons/scxml2/w3c/W3CTests.java    |  50 ++--
 113 files changed, 1207 insertions(+), 1207 deletions(-)

diff --git a/src/main/java/org/apache/commons/scxml2/ActionExecutionContext.java b/src/main/java/org/apache/commons/scxml2/ActionExecutionContext.java
index 96c6d1b..b402c75 100644
--- a/src/main/java/org/apache/commons/scxml2/ActionExecutionContext.java
+++ b/src/main/java/org/apache/commons/scxml2/ActionExecutionContext.java
@@ -35,7 +35,7 @@ public class ActionExecutionContext {
      * Constructor
      * @param exctx The SCXML execution context this action execution context belongs to
      */
-    public ActionExecutionContext(SCXMLExecutionContext exctx) {
+    public ActionExecutionContext(final SCXMLExecutionContext exctx) {
         this.exctx = exctx;
     }
 
@@ -57,7 +57,7 @@ public class ActionExecutionContext {
      * @param state an EnterableState
      * @return Returns the context for an EnterableState
      */
-    public Context getContext(EnterableState state) {
+    public Context getContext(final EnterableState state) {
         return exctx.getScInstance().getContext(state);
     }
 
diff --git a/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java b/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java
index 49f71b4..3886f95 100644
--- a/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java
+++ b/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java
@@ -66,7 +66,7 @@ public class EvaluatorFactory {
         providers.put(DEFAULT_DATA_MODEL, providers.get(JexlEvaluator.SUPPORTED_DATA_MODEL));
     }
 
-    public static void setDefaultProvider(EvaluatorProvider defaultProvider) {
+    public static void setDefaultProvider(final EvaluatorProvider defaultProvider) {
         INSTANCE.providers.put(DEFAULT_DATA_MODEL, defaultProvider);
     }
 
@@ -76,17 +76,17 @@ public class EvaluatorFactory {
     }
 
     @SuppressWarnings("unused")
-    public static EvaluatorProvider getEvaluatorProvider(String datamodelName) {
+    public static EvaluatorProvider getEvaluatorProvider(final String datamodelName) {
         return INSTANCE.providers.get(datamodelName == null ? DEFAULT_DATA_MODEL : datamodelName);
     }
 
     @SuppressWarnings("unused")
-    public static void registerEvaluatorProvider(EvaluatorProvider provider) {
+    public static void registerEvaluatorProvider(final EvaluatorProvider provider) {
         INSTANCE.providers.put(provider.getSupportedDatamodel(), provider);
     }
 
     @SuppressWarnings("unused")
-    public static void unregisterEvaluatorProvider(String datamodelName) {
+    public static void unregisterEvaluatorProvider(final String datamodelName) {
         INSTANCE.providers.remove(datamodelName == null ? DEFAULT_DATA_MODEL : datamodelName);
     }
 
@@ -98,8 +98,8 @@ public class EvaluatorFactory {
      * @throws ModelException If the SCXML document datamodel is not supported.
      */
     public static Evaluator getEvaluator(final SCXML document) throws ModelException {
-        String datamodelName = document != null ? document.getDatamodelName() : null;
-        EvaluatorProvider provider = INSTANCE.providers.get(datamodelName == null ? DEFAULT_DATA_MODEL : datamodelName);
+        final String datamodelName = document != null ? document.getDatamodelName() : null;
+        final EvaluatorProvider provider = INSTANCE.providers.get(datamodelName == null ? DEFAULT_DATA_MODEL : datamodelName);
         if (provider == null) {
             throw new ModelException("Unsupported SCXML document datamodel \""+(datamodelName)+"\"");
         }
diff --git a/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java b/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java
index 34291ea..01583ac 100644
--- a/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java
+++ b/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java
@@ -57,7 +57,7 @@ public final class NotificationRegistry {
      */
     synchronized void addListener(final Observable source, final SCXMLListener lst) {
         if (source != null && source.getObservableId() != null) {
-            Set<SCXMLListener> entries = regs.computeIfAbsent(source.getObservableId(), k -> new LinkedHashSet<>());
+            final Set<SCXMLListener> entries = regs.computeIfAbsent(source.getObservableId(), k -> new LinkedHashSet<>());
             entries.add(lst);
         }
     }
@@ -70,7 +70,7 @@ public final class NotificationRegistry {
      */
     synchronized void removeListener(final Observable source, final SCXMLListener lst) {
         if (source != null && source.getObservableId() != null) {
-            Set<SCXMLListener> entries = regs.get(source.getObservableId());
+            final Set<SCXMLListener> entries = regs.get(source.getObservableId());
             if (entries != null) {
                 entries.remove(lst);
                 if (entries.size() == 0) {
@@ -90,9 +90,9 @@ public final class NotificationRegistry {
     public synchronized void fireOnEntry(final Observable source,
             final EnterableState state) {
         if (source != null && source.getObservableId() != null) {
-            Set<SCXMLListener> entries = regs.get(source.getObservableId());
+            final Set<SCXMLListener> entries = regs.get(source.getObservableId());
             if (entries != null) {
-                for (SCXMLListener lst : entries) {
+                for (final SCXMLListener lst : entries) {
                     lst.onEntry(state);
                 }
             }
@@ -109,9 +109,9 @@ public final class NotificationRegistry {
     public synchronized void fireOnExit(final Observable source,
             final EnterableState state) {
         if (source != null && source.getObservableId() != null) {
-            Set<SCXMLListener> entries = regs.get(source.getObservableId());
+            final Set<SCXMLListener> entries = regs.get(source.getObservableId());
             if (entries != null) {
-                for (SCXMLListener lst : entries) {
+                for (final SCXMLListener lst : entries) {
                     lst.onExit(state);
                 }
             }
@@ -131,9 +131,9 @@ public final class NotificationRegistry {
             final TransitionTarget from, final TransitionTarget to,
             final Transition transition, final String event) {
         if (source != null && source.getObservableId() != null) {
-            Set<SCXMLListener> entries = regs.get(source.getObservableId());
+            final Set<SCXMLListener> entries = regs.get(source.getObservableId());
             if (entries != null) {
-                for (SCXMLListener lst : entries) {
+                for (final SCXMLListener lst : entries) {
                     lst.onTransition(from, to, transition, event);
                 }
             }
diff --git a/src/main/java/org/apache/commons/scxml2/SCInstance.java b/src/main/java/org/apache/commons/scxml2/SCInstance.java
index d29291b..f417e6a 100644
--- a/src/main/java/org/apache/commons/scxml2/SCInstance.java
+++ b/src/main/java/org/apache/commons/scxml2/SCInstance.java
@@ -180,12 +180,12 @@ public class SCInstance implements Serializable {
     protected void initializeDatamodel(final Map<String, Object> data) {
         if (globalContext == null) {
             // Clone root datamodel
-            Datamodel rootdm = stateMachine.getDatamodel();
+            final Datamodel rootdm = stateMachine.getDatamodel();
             cloneDatamodel(rootdm, getGlobalContext(), evaluator, errorReporter);
 
             // initialize/override global context data
             if (data != null) {
-                for (String key : data.keySet()) {
+                for (final String key : data.keySet()) {
                     if (globalContext.has(key)) {
                         globalContext.set(key, data.get(key));
                     }
@@ -193,7 +193,7 @@ public class SCInstance implements Serializable {
             }
             if (stateMachine.isLateBinding() == null || Boolean.FALSE.equals(stateMachine.isLateBinding())) {
                 // early binding
-                for (EnterableState es : stateMachine.getChildren()) {
+                for (final EnterableState es : stateMachine.getChildren()) {
                     getContext(es);
                 }
             }
@@ -216,7 +216,7 @@ public class SCInstance implements Serializable {
      * Sets the I/O Processor for the internal event queue
      * @param internalIOProcessor the I/O Processor
      */
-    protected void setInternalIOProcessor(SCXMLIOProcessor internalIOProcessor) {
+    protected void setInternalIOProcessor(final SCXMLIOProcessor internalIOProcessor) {
         this.internalIOProcessor = internalIOProcessor;
     }
 
@@ -230,7 +230,7 @@ public class SCInstance implements Serializable {
      * @param reAttach Flag whether or not re-attaching it
      * @throws ModelException if {@code evaluator} is null
      */
-    protected void setEvaluator(Evaluator evaluator, boolean reAttach) throws ModelException {
+    protected void setEvaluator(final Evaluator evaluator, final boolean reAttach) throws ModelException {
         this.evaluator = evaluator;
         if (initialized) {
             if (!reAttach) {
@@ -255,7 +255,7 @@ public class SCInstance implements Serializable {
      * @param errorReporter The error reporter for this state machine instance.
      * @throws ModelException if an attempt is made to set a null value for the error reporter
      */
-    protected void setErrorReporter(ErrorReporter errorReporter) throws ModelException {
+    protected void setErrorReporter(final ErrorReporter errorReporter) throws ModelException {
         if (errorReporter == null) {
             throw new ModelException(ERR_NO_ERROR_REPORTER);
         }
@@ -278,7 +278,7 @@ public class SCInstance implements Serializable {
      * @param stateMachine The state machine for this instance
      * @throws ModelException if an attempt is made to set a null value for the state machine
      */
-    protected void setStateMachine(SCXML stateMachine) throws ModelException {
+    protected void setStateMachine(final SCXML stateMachine) throws ModelException {
         if (stateMachine == null) {
             throw new ModelException(ERR_NO_STATE_MACHINE);
         }
@@ -286,7 +286,7 @@ public class SCInstance implements Serializable {
         initialize();
     }
 
-    public void setSingleContext(boolean singleContext) throws ModelException {
+    public void setSingleContext(final boolean singleContext) throws ModelException {
         if (initialized) {
             throw new ModelException("SCInstance: already initialized");
         }
@@ -310,11 +310,11 @@ public class SCInstance implements Serializable {
         if (datamodel == null || Evaluator.NULL_DATA_MODEL.equals(evaluator.getSupportedDatamodel())) {
             return;
         }
-        List<Data> data = datamodel.getData();
+        final List<Data> data = datamodel.getData();
         if (data == null) {
             return;
         }
-        for (Data datum : data) {
+        for (final Data datum : data) {
             if (getGlobalContext() == ctx && ctx.has(datum.getId())) {
                 // earlier/externally defined 'initial' value found: do not overwrite
                 continue;
@@ -332,7 +332,7 @@ public class SCInstance implements Serializable {
                     datum.setParsedValue(ContentParser.DEFAULT_PARSER.parseResource(resolvedSrc));
                     value = evaluator.cloneData(datum.getParsedValue().getValue());
                     setValue = true;
-                } catch (IOException e) {
+                } catch (final IOException e) {
                     if (internalIOProcessor != null) {
                         internalIOProcessor.addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
                     }
@@ -343,7 +343,7 @@ public class SCInstance implements Serializable {
                 try {
                     value = evaluator.eval(ctx, datum.getExpr());
                     setValue = true;
-                } catch (SCXMLExpressionException see) {
+                } catch (final SCXMLExpressionException see) {
                     if (internalIOProcessor != null) {
                         internalIOProcessor.addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
                     }
@@ -364,7 +364,7 @@ public class SCInstance implements Serializable {
                     // directly injecting them in the context.
                     try {
                         ((JSEvaluator)evaluator).injectData(ctx, datum.getId(), value);
-                    } catch (SCXMLExpressionException e) {
+                    } catch (final SCXMLExpressionException e) {
                         if (internalIOProcessor != null) {
                             internalIOProcessor.addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
                         }
@@ -452,10 +452,10 @@ public class SCInstance implements Serializable {
             // force initialization of rootContext
             getRootContext();
             if (rootContext != null) {
-                Context internalContext = new SimpleContext(rootContext);
+                final Context internalContext = new SimpleContext(rootContext);
                 systemContext = new SCXMLSystemContext(internalContext);
                 systemContext.getContext().set(SCXMLSystemContext.SESSIONID_KEY, UUID.randomUUID().toString());
-                String _name = stateMachine != null && stateMachine.getName() != null ? stateMachine.getName() : "";
+                final String _name = stateMachine != null && stateMachine.getName() != null ? stateMachine.getName() : "";
                 systemContext.getContext().set(SCXMLSystemContext.SCXML_NAME_KEY, _name);
                 systemContext.getPlatformVariables().put(SCXMLSystemContext.STATUS_KEY, currentStatus);
             }
@@ -490,7 +490,7 @@ public class SCInstance implements Serializable {
                 context = getGlobalContext();
             }
             else {
-                EnterableState parent = state.getParent();
+                final EnterableState parent = state.getParent();
                 if (parent == null) {
                     // docroot
                     context = evaluator.newContext(getGlobalContext());
@@ -499,7 +499,7 @@ public class SCInstance implements Serializable {
                 }
             }
             if (state instanceof TransitionalState) {
-                Datamodel datamodel = ((TransitionalState)state).getDatamodel();
+                final Datamodel datamodel = ((TransitionalState)state).getDatamodel();
                 cloneDatamodel(datamodel, context, evaluator, errorReporter);
             }
             contexts.put(state, context);
diff --git a/src/main/java/org/apache/commons/scxml2/SCInstanceObjectInputStream.java b/src/main/java/org/apache/commons/scxml2/SCInstanceObjectInputStream.java
index 72ce5d8..45ce297 100644
--- a/src/main/java/org/apache/commons/scxml2/SCInstanceObjectInputStream.java
+++ b/src/main/java/org/apache/commons/scxml2/SCInstanceObjectInputStream.java
@@ -81,13 +81,13 @@ public class SCInstanceObjectInputStream extends ObjectInputStream {
      * @param classResolver custom class resolver
      * @return the old classResolver replaced by the new {@code classResolver}
      */
-    public ClassResolver setClassResolver(ClassResolver classResolver) {
-        ClassResolver old = this.classResolver;
+    public ClassResolver setClassResolver(final ClassResolver classResolver) {
+        final ClassResolver old = this.classResolver;
         this.classResolver = classResolver;
         return old;
     }
 
-    protected Class resolveClass(ObjectStreamClass osc) throws IOException, ClassNotFoundException {
+    protected Class resolveClass(final ObjectStreamClass osc) throws IOException, ClassNotFoundException {
         if (classResolver != null) {
             return classResolver.resolveClass(osc);
         }
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java b/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
index 171ebf8..d8f7449 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
@@ -137,8 +137,8 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * @param eventDispatcher The event dispatcher, if null a SimpleDispatcher instance will be used
      * @param errorReporter The error reporter, if null a SimpleErrorReporter instance will be used
      */
-    protected SCXMLExecutionContext(SCXMLExecutor scxmlExecutor, Evaluator evaluator,
-                                    EventDispatcher eventDispatcher, ErrorReporter errorReporter) {
+    protected SCXMLExecutionContext(final SCXMLExecutor scxmlExecutor, final Evaluator evaluator,
+                                    final EventDispatcher eventDispatcher, final ErrorReporter errorReporter) {
         this.scxmlExecutor = scxmlExecutor;
         this.externalIOProcessor = scxmlExecutor;
         this.evaluator = evaluator;
@@ -183,7 +183,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * Set if the SCXML configuration should be checked before execution (default = true)
      * @param checkLegalConfiguration flag to set
      */
-    public void setCheckLegalConfiguration(boolean checkLegalConfiguration) {
+    public void setCheckLegalConfiguration(final boolean checkLegalConfiguration) {
         this.checkLegalConfiguration = checkLegalConfiguration;
     }
 
@@ -201,7 +201,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      */
     public void initialize(final Map<String, Object> data) throws ModelException {
         if (!invokeIds.isEmpty()) {
-            for (Invoke invoke : new ArrayList<>(invokeIds.keySet())) {
+            for (final Invoke invoke : new ArrayList<>(invokeIds.keySet())) {
                 cancelInvoker(invoke);
             }
         }
@@ -259,7 +259,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * @param stateMachine The state machine to set
      * @throws ModelException if attempting to set a null value or the state machine instance failed to re-initialize
      */
-    protected void setStateMachine(SCXML stateMachine) throws ModelException {
+    protected void setStateMachine(final SCXML stateMachine) throws ModelException {
         scInstance.setStateMachine(stateMachine);
         // synchronize possible derived evaluator
         this.evaluator = scInstance.getEvaluator();
@@ -289,7 +289,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * @param evaluator The evaluator to set
      * @throws ModelException if attempting to set a null value or the state machine instance failed to re-initialize
      */
-    protected void setEvaluator(Evaluator evaluator) throws ModelException {
+    protected void setEvaluator(final Evaluator evaluator) throws ModelException {
         scInstance.setEvaluator(evaluator, false);
         // synchronize possible derived evaluator
         this.evaluator = scInstance.getEvaluator();
@@ -308,12 +308,12 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      *
      * @param errorReporter The error reporter to set, if null a SimpleErrorReporter instance will be used instead
      */
-    protected void setErrorReporter(ErrorReporter errorReporter) {
+    protected void setErrorReporter(final ErrorReporter errorReporter) {
         this.errorReporter = errorReporter != null ? errorReporter : new SimpleErrorReporter();
         try {
             scInstance.setErrorReporter(errorReporter);
         }
-        catch (ModelException me) {
+        catch (final ModelException me) {
             // won't happen
         }
     }
@@ -330,7 +330,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      *
      * @param eventdispatcher The event dispatcher to set, if null a SimpleDispatcher instance will be used instead
      */
-    protected void setEventdispatcher(EventDispatcher eventdispatcher) {
+    protected void setEventdispatcher(final EventDispatcher eventdispatcher) {
         this.eventdispatcher = eventdispatcher != null ? eventdispatcher : new SimpleDispatcher();
     }
 
@@ -347,7 +347,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
     protected void initializeIOProcessors() {
         if (scInstance.getEvaluator() != null) {
             // lazy register/reset #_scxml_sessionId event target
-            String currentSessionId = (String)getScInstance().getSystemContext().get(SCXMLSystemContext.SESSIONID_KEY);
+            final String currentSessionId = (String)getScInstance().getSystemContext().get(SCXMLSystemContext.SESSIONID_KEY);
             if (sessionId != null && !sessionId.equals(currentSessionId)) {
                 // remove possible old/stale #_scxml_sessionId target
                 ioProcessors.remove(SCXMLIOProcessor.SCXML_SESSION_EVENT_PROCESSOR_PREFIX+sessionId);
@@ -368,9 +368,9 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * @return the detached instance
      */
     protected SCInstance detachInstance() {
-        SCInstance instance = scInstance;
+        final SCInstance instance = scInstance;
         scInstance.detach();
-        Map<String, Object> systemVars = scInstance.getSystemContext().getVars();
+        final Map<String, Object> systemVars = scInstance.getSystemContext().getVars();
         systemVars.remove(SCXMLSystemContext.IOPROCESSORS_KEY);
         systemVars.remove(SCXMLSystemContext.EVENT_KEY);
         scInstance = null;
@@ -384,7 +384,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * </p>
      * @param instance An previously detached SCInstance
      */
-    protected void attachInstance(SCInstance instance) {
+    protected void attachInstance(final SCInstance instance) {
         if (scInstance != null ) {
             scInstance.detach();
         }
@@ -397,7 +397,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
                 scInstance.setErrorReporter(errorReporter);
                 initializeIOProcessors();
             }
-            catch (ModelException me) {
+            catch (final ModelException me) {
                 // should not happen
             }
         }
@@ -442,7 +442,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * @throws InvokerException When a suitable {@link Invoker} cannot be instantiated.
      */
     public Invoker newInvoker(final String type) throws InvokerException {
-        Class<? extends Invoker> invokerClass = invokerClasses.get(stripTrailingSlash(type));
+        final Class<? extends Invoker> invokerClass = invokerClasses.get(stripTrailingSlash(type));
         if (invokerClass == null) {
             throw new InvokerException("No Invoker registered for type \"" + stripTrailingSlash(type) + "\"");
         }
@@ -474,7 +474,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * @throws InvokerException when the Invoker doesn't have an invokerId
      */
     public void registerInvoker(final Invoke invoke, final Invoker invoker) throws InvokerException {
-        String invokeId = invoker.getInvokeId();
+        final String invokeId = invoker.getInvokeId();
         if (invokeId == null) {
             throw new InvokerException("Registering an Invoker without invokerId");
         }
@@ -507,13 +507,13 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      *
      * @param invoke The Invoke for the Invoker to cancel
      */
-    public void cancelInvoker(Invoke invoke) {
-        String invokeId = invokeIds.get(invoke);
+    public void cancelInvoker(final Invoke invoke) {
+        final String invokeId = invokeIds.get(invoke);
         if (invokeId != null) {
             try {
                 invokers.get(invokeId).cancel();
-            } catch (InvokerException ie) {
-                TriggerEvent te = new EventBuilder("failed.invoke.cancel."+invokeId, TriggerEvent.ERROR_EVENT).build();
+            } catch (final InvokerException ie) {
+                final TriggerEvent te = new EventBuilder("failed.invoke.cancel."+invokeId, TriggerEvent.ERROR_EVENT).build();
                 addEvent(te);
             }
             removeInvoker(invoke);
@@ -525,7 +525,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
      * @param event The event
      */
     @Override
-    public void addEvent(TriggerEvent event) {
+    public void addEvent(final TriggerEvent event) {
         internalEventQueue.add(event);
     }
 
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java b/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
index 411b12b..c5808d2 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
@@ -160,11 +160,11 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
      * @see SCInstance#initialize()
      * @see SCXMLSemantics#isLegalConfiguration(java.util.Set, ErrorReporter)
      */
-    public synchronized void setConfiguration(Set<String> atomicStateIds) throws ModelException {
+    public synchronized void setConfiguration(final Set<String> atomicStateIds) throws ModelException {
         semantics.initialize(exctx, Collections.emptyMap());
-        Set<EnterableState> states = new HashSet<>();
-        for (String stateId : atomicStateIds) {
-            TransitionTarget tt = getStateMachine().getTargets().get(stateId);
+        final Set<EnterableState> states = new HashSet<>();
+        for (final String stateId : atomicStateIds) {
+            final TransitionTarget tt = getStateMachine().getTargets().get(stateId);
             if (tt instanceof EnterableState && ((EnterableState)tt).isAtomicState()) {
                 EnterableState es = (EnterableState)tt;
                 while (es != null && !states.add(es)) {
@@ -176,7 +176,7 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
             }
         }
         if (semantics.isLegalConfiguration(states, getErrorReporter())) {
-            for (EnterableState es : states) {
+            for (final EnterableState es : states) {
                 exctx.getScInstance().getStateConfiguration().enterState(es);
             }
             logState();
@@ -246,7 +246,7 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
         exctx.getScInstance().setRootContext(rootContext);
     }
 
-    public void setSingleContext(boolean singleContext) throws ModelException {
+    public void setSingleContext(final boolean singleContext) throws ModelException {
         getSCInstance().setSingleContext(singleContext);
     }
 
@@ -327,7 +327,7 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
      * Set if the SCXML configuration should be checked before execution (default = true)
      * @param checkLegalConfiguration flag to set
      */
-    public void setCheckLegalConfiguration(boolean checkLegalConfiguration) {
+    public void setCheckLegalConfiguration(final boolean checkLegalConfiguration) {
         this.exctx.setCheckLegalConfiguration(checkLegalConfiguration);
     }
 
@@ -410,7 +410,7 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
      * </p>
      * @param instance An previously detached SCInstance
      */
-    public void attachInstance(SCInstance instance) {
+    public void attachInstance(final SCInstance instance) {
         exctx.attachInstance(instance);
     }
 
@@ -458,12 +458,12 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
 
     public Thread run(final Map<String, Object> data) throws ModelException {
         go(data);
-        Thread t = new Thread(() -> {
+        final Thread t = new Thread(() -> {
             try {
                 while (exctx.isRunning()) {
                     triggerEvents();
                 }
-            } catch (ModelException ignored) {
+            } catch (final ModelException ignored) {
             }
         });
         t.start();
@@ -525,7 +525,7 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
     public void triggerEvents(final TriggerEvent[] evts)
             throws ModelException {
         if (evts != null) {
-            for (TriggerEvent evt : evts) {
+            for (final TriggerEvent evt : evts) {
                 addEvent(evt);
             }
         }
@@ -543,7 +543,7 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
         }
     }
 
-    protected void eventStep(TriggerEvent event) throws ModelException {
+    protected void eventStep(final TriggerEvent event) throws ModelException {
         semantics.nextStep(exctx, event);
         logState();
     }
@@ -562,11 +562,11 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
      */
     protected void logState() {
         if (log.isDebugEnabled()) {
-            StringBuilder sb = new StringBuilder("Current States: [ ");
-            for (EnterableState es : getStatus().getStates()) {
+            final StringBuilder sb = new StringBuilder("Current States: [ ");
+            for (final EnterableState es : getStatus().getStates()) {
                 sb.append(es.getId()).append(", ");
             }
-            int length = sb.length();
+            final int length = sb.length();
             sb.delete(length - 2, length).append(" ]");
             log.debug(sb.toString());
         }
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java b/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java
index 0d39dd0..e03642d 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java
@@ -79,7 +79,7 @@ public class SCXMLSystemContext implements Context, Serializable {
      * @param systemContext the system context to set
      * @throws java.lang.NullPointerException if systemContext == null
      */
-    void setSystemContext(Context systemContext) {
+    void setSystemContext(final Context systemContext) {
         if (this.systemContext != null) {
             // replace systemContext
             systemContext.getVars().putAll(this.systemContext.getVars());
@@ -97,7 +97,7 @@ public class SCXMLSystemContext implements Context, Serializable {
      */
     private Map<String, Object> protectedVars;
 
-    public SCXMLSystemContext(Context systemContext) {
+    public SCXMLSystemContext(final Context systemContext) {
         setSystemContext(systemContext);
     }
 
diff --git a/src/main/java/org/apache/commons/scxml2/Status.java b/src/main/java/org/apache/commons/scxml2/Status.java
index 9c7ab99..288d526 100644
--- a/src/main/java/org/apache/commons/scxml2/Status.java
+++ b/src/main/java/org/apache/commons/scxml2/Status.java
@@ -36,7 +36,7 @@ public class Status implements Serializable {
     private final StateConfiguration configuration;
 
 
-    public Status(StateConfiguration configuration) {
+    public Status(final StateConfiguration configuration) {
         this.configuration = configuration;
     }
 
@@ -52,7 +52,7 @@ public class Status implements Serializable {
      */
     public Final getFinalState() {
         if (configuration.getStates().size() == 1) {
-            EnterableState es = configuration.getStates().iterator().next();
+            final EnterableState es = configuration.getStates().iterator().next();
             if (es instanceof Final && es.getParent() == null) {
                 return (Final)es;
             }
@@ -80,7 +80,7 @@ public class Status implements Serializable {
     }
 
     public boolean isInState(final String state) {
-        for (EnterableState es : configuration.getActiveStates()) {
+        for (final EnterableState es : configuration.getActiveStates()) {
             if (state.equals(es.getId())) {
                 return true;
             }
diff --git a/src/main/java/org/apache/commons/scxml2/TriggerEvent.java b/src/main/java/org/apache/commons/scxml2/TriggerEvent.java
index 438b8ab..c58f6da 100644
--- a/src/main/java/org/apache/commons/scxml2/TriggerEvent.java
+++ b/src/main/java/org/apache/commons/scxml2/TriggerEvent.java
@@ -167,7 +167,7 @@ public class TriggerEvent implements Serializable {
     @Override
     public boolean equals(final Object obj) {
         if (obj instanceof TriggerEvent) {
-            TriggerEvent te2 = (TriggerEvent) obj;
+            final TriggerEvent te2 = (TriggerEvent) obj;
             if (type == te2.type && name.equals(te2.name) &&
                     equals(sendId, te2.sendId) &&
                     equals(origin, te2.origin) &&
@@ -187,7 +187,7 @@ public class TriggerEvent implements Serializable {
      */
     @Override
     public String toString() {
-        StringBuilder buf = new StringBuilder("TriggerEvent{name=");
+        final StringBuilder buf = new StringBuilder("TriggerEvent{name=");
         buf.append(name).append(", type=").append(type);
         if (sendId != null) {
             buf.append(", sendid=").append(invokeId);
diff --git a/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
index 44239c7..db6e7f1 100644
--- a/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
+++ b/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
@@ -44,11 +44,11 @@ public abstract class AbstractBaseEvaluator implements Evaluator, Serializable {
      * @see Evaluator#evalAssign(Context, String, Object)
      */
     public void evalAssign(final Context ctx, final String location, final Object data) throws SCXMLExpressionException {
-        StringBuilder sb = new StringBuilder(location).append("=").append(ASSIGN_VARIABLE_NAME);
+        final StringBuilder sb = new StringBuilder(location).append("=").append(ASSIGN_VARIABLE_NAME);
         try {
             ctx.getVars().put(ASSIGN_VARIABLE_NAME, data);
             eval(ctx, sb.toString());
-        } catch (SCXMLExpressionException e) {
+        } catch (final SCXMLExpressionException e) {
             if (e.getCause() != null && e.getCause() != null && e.getCause().getMessage() != null) {
                 throw new SCXMLExpressionException("Error evaluating assign to location=\"" + location + "\": " + e.getCause().getMessage());
             }
@@ -68,24 +68,24 @@ public abstract class AbstractBaseEvaluator implements Evaluator, Serializable {
                 return ((Node)data).cloneNode(true);
             }
             else if (data instanceof NodeList) {
-                NodeList nodeList = (NodeList)data;
-                ArrayList<Node> list = new ArrayList<>();
+                final NodeList nodeList = (NodeList)data;
+                final ArrayList<Node> list = new ArrayList<>();
                 for (int i = 0, size = nodeList.getLength(); i < size; i++) {
                     list.add(nodeList.item(i).cloneNode(true));
                 }
                 return list;
             }
             else if (data instanceof List) {
-                ArrayList<Object> list = new ArrayList<>();
-                for (Object v : (List)data) {
+                final ArrayList<Object> list = new ArrayList<>();
+                for (final Object v : (List)data) {
                     list.add(cloneData(v));
                 }
                 return list;
             }
             else if (data instanceof Map) {
-                Map<?,?> dataMap = (Map<?,?>)data;
-                HashMap<Object, Object> map = new LinkedHashMap<>();
-                for (Map.Entry<?,?> entry : dataMap.entrySet()) {
+                final Map<?,?> dataMap = (Map<?,?>)data;
+                final HashMap<Object, Object> map = new LinkedHashMap<>();
+                for (final Map.Entry<?,?> entry : dataMap.entrySet()) {
                     map.put(cloneData(entry.getKey()), cloneData(entry.getValue()));
                 }
                 return map;
diff --git a/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java b/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java
index eae5822..1531fcb 100644
--- a/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java
+++ b/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java
@@ -181,7 +181,7 @@ public abstract class AbstractStateMachine {
         engine.addListener(stateMachine, new EntryListener());
         try {
             engine.go();
-        } catch (ModelException me) {
+        } catch (final ModelException me) {
             logError(me);
         }
     }
@@ -194,10 +194,10 @@ public abstract class AbstractStateMachine {
      *         configuration.
      */
     public boolean fireEvent(final String event) {
-        TriggerEvent[] evts = {new EventBuilder(event, TriggerEvent.SIGNAL_EVENT).build()};
+        final TriggerEvent[] evts = {new EventBuilder(event, TriggerEvent.SIGNAL_EVENT).build()};
         try {
             engine.triggerEvents(evts);
-        } catch (ModelException me) {
+        } catch (final ModelException me) {
             logError(me);
         }
         return engine.getStatus().isFinal();
@@ -238,9 +238,9 @@ public abstract class AbstractStateMachine {
      * @return Whether the invoke was successful.
      */
     public boolean invoke(final String methodName) {
-        Class<?> clas = this.getClass();
+        final Class<?> clas = this.getClass();
         try {
-            Method method = clas.getDeclaredMethod(methodName, SIGNATURE);
+            final Method method = clas.getDeclaredMethod(methodName, SIGNATURE);
             method.invoke(this, PARAMETERS);
         } catch (SecurityException | NoSuchMethodException | IllegalAccessException | IllegalArgumentException |
                 InvocationTargetException se) {
@@ -258,7 +258,7 @@ public abstract class AbstractStateMachine {
     public boolean resetMachine() {
         try {
             engine.reset();
-        } catch (ModelException me) {
+        } catch (final ModelException me) {
             logError(me);
             return false;
         }
diff --git a/src/main/java/org/apache/commons/scxml2/env/EffectiveContextMap.java b/src/main/java/org/apache/commons/scxml2/env/EffectiveContextMap.java
index 8025a27..97b9fc3 100644
--- a/src/main/java/org/apache/commons/scxml2/env/EffectiveContextMap.java
+++ b/src/main/java/org/apache/commons/scxml2/env/EffectiveContextMap.java
@@ -56,7 +56,7 @@ public final class EffectiveContextMap extends AbstractMap<String, Object> imple
      */
     @Override
     public Set<Entry<String, Object>> entrySet() {
-        Map<String, Object> map = new HashMap<>();
+        final Map<String, Object> map = new HashMap<>();
         mergeVars(leaf, map);
         return Collections.unmodifiableMap(map).entrySet();
     }
@@ -66,7 +66,7 @@ public final class EffectiveContextMap extends AbstractMap<String, Object> imple
      * @param leaf current leaf Context
      * @param map Map to merge vars into
      */
-    protected void mergeVars(Context leaf, Map<String, Object> map) {
+    protected void mergeVars(final Context leaf, final Map<String, Object> map) {
         if (leaf != null) {
             mergeVars(leaf.getParent(), map);
             map.putAll(leaf.getVars());
@@ -78,7 +78,7 @@ public final class EffectiveContextMap extends AbstractMap<String, Object> imple
      */
     @Override
     public Object put(final String key, final Object value) {
-        Object old = leaf.get(key);
+        final Object old = leaf.get(key);
         if (leaf.has(key)) {
             leaf.set(key, value);
         } else {
diff --git a/src/main/java/org/apache/commons/scxml2/env/LogUtils.java b/src/main/java/org/apache/commons/scxml2/env/LogUtils.java
index df4cb3b..4e6ab6b 100644
--- a/src/main/java/org/apache/commons/scxml2/env/LogUtils.java
+++ b/src/main/java/org/apache/commons/scxml2/env/LogUtils.java
@@ -35,7 +35,7 @@ public final class LogUtils {
      * @return String The human readable log entry
      */
     public static String transToString(final TransitionTarget from,
-            final TransitionTarget to, final Transition transition, String event) {
+            final TransitionTarget to, final Transition transition, final String event) {
         return "(" + "event = " + event +
                 ", cond = " + transition.getCond() +
                 ", from = " + getTTPath(from) +
@@ -51,7 +51,7 @@ public final class LogUtils {
      *                the SCXML document
      */
     public static String getTTPath(final TransitionTarget tt) {
-        StringBuilder sb = new StringBuilder("/");
+        final StringBuilder sb = new StringBuilder("/");
         for (int i = 0; i < tt.getNumberOfAncestors(); i++) {
             sb.append(tt.getAncestor(i).getId());
             sb.append("/");
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java b/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
index 7d155d1..256262e 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
@@ -103,7 +103,7 @@ public class SimpleContext implements Context, Serializable {
      * @see org.apache.commons.scxml2.Context#get(java.lang.String)
      */
     public Object get(final String name) {
-        Object localValue = getVars().get(name);
+        final Object localValue = getVars().get(name);
         if (localValue != null) {
             return localValue;
         } else if (parent != null) {
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java b/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
index 9888a83..fe8eea4 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
@@ -77,7 +77,7 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
          * @param event The event to be triggered.
          * @param target The target io processor
          */
-        DelayedEventTask(final String id, final TriggerEvent event, SCXMLIOProcessor target) {
+        DelayedEventTask(final String id, final TriggerEvent event, final SCXMLIOProcessor target) {
             this.id = id;
             this.event = event;
             this.target = target;
@@ -140,7 +140,7 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
         if (!timers.containsKey(sendId)) {
             return; // done, we don't track this one or its already expired
         }
-        Timer timer = timers.get(sendId);
+        final Timer timer = timers.get(sendId);
         if (timer != null) {
             timer.cancel();
             if (log.isDebugEnabled()) {
@@ -173,7 +173,7 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
 
         if (type == null || type.equalsIgnoreCase(SCXMLIOProcessor.SCXML_EVENT_PROCESSOR) ||
                 type.equals(SCXMLIOProcessor.DEFAULT_EVENT_PROCESSOR)) {
-            String originType = SCXMLIOProcessor.DEFAULT_EVENT_PROCESSOR;
+            final String originType = SCXMLIOProcessor.DEFAULT_EVENT_PROCESSOR;
             SCXMLIOProcessor ioProcessor;
 
             boolean internal = false;
@@ -211,7 +211,7 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
                 throw new ActionExecutionError(true, "<send>: Cannot send without event name");
             }
             else {
-                EventBuilder eventBuilder = new EventBuilder(event, TriggerEvent.SIGNAL_EVENT)
+                final EventBuilder eventBuilder = new EventBuilder(event, TriggerEvent.SIGNAL_EVENT)
                         .sendId(id)
                         .data(data);
                 if (!internal) {
@@ -221,7 +221,7 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
                     }
                     if (delay > 0L) {
                         // Need to schedule this one
-                        Timer timer = new Timer(true);
+                        final Timer timer = new Timer(true);
                         timer.schedule(new DelayedEventTask(id, eventBuilder.build(), ioProcessor), delay);
                         timers.put(id, timer);
                         if (log.isDebugEnabled()) {
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java b/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java
index 23ce987..915c8de 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java
@@ -56,8 +56,8 @@ public class SimpleErrorReporter implements ErrorReporter, Serializable {
             final Object errCtx) {
         //Note: the if-then-else below is based on the actual usage
         // (codebase search), it has to be kept up-to-date as the code changes
-        String errCode = errorCode.intern();
-        StringBuffer msg = new StringBuffer();
+        final String errCode = errorCode.intern();
+        final StringBuffer msg = new StringBuffer();
         msg.append(errCode).append(" (");
         msg.append(errDetail).append("): ");
         if (errCode == ErrorConstants.NO_INITIAL) {
@@ -75,13 +75,13 @@ public class SimpleErrorReporter implements ErrorReporter, Serializable {
         } else if (errCode == ErrorConstants.ILLEGAL_CONFIG) {
             //isLegalConfig
             if (errCtx instanceof Map.Entry) { //unchecked cast below
-                Map.Entry<EnterableState, Set<EnterableState>> badConfigMap =
+                final Map.Entry<EnterableState, Set<EnterableState>> badConfigMap =
                     (Map.Entry<EnterableState, Set<EnterableState>>) errCtx;
-                EnterableState es = badConfigMap.getKey();
-                Set<EnterableState> vals = badConfigMap.getValue();
+                final EnterableState es = badConfigMap.getKey();
+                final Set<EnterableState> vals = badConfigMap.getValue();
                 msg.append(LogUtils.getTTPath(es)).append(" : [");
-                for (Iterator<EnterableState> i = vals.iterator(); i.hasNext();) {
-                    EnterableState ex = i.next();
+                for (final Iterator<EnterableState> i = vals.iterator(); i.hasNext();) {
+                    final EnterableState ex = i.next();
                     msg.append(LogUtils.getTTPath(ex));
                     if (i.hasNext()) { // reason for iterator usage
                         msg.append(", ");
@@ -89,10 +89,10 @@ public class SimpleErrorReporter implements ErrorReporter, Serializable {
                 }
                 msg.append(']');
             } else if (errCtx instanceof Set) { //unchecked cast below
-                Set<EnterableState> vals = (Set<EnterableState>) errCtx;
+                final Set<EnterableState> vals = (Set<EnterableState>) errCtx;
                 msg.append("<SCXML> : [");
-                for (Iterator<EnterableState> i = vals.iterator(); i.hasNext();) {
-                    EnterableState ex = i.next();
+                for (final Iterator<EnterableState> i = vals.iterator(); i.hasNext();) {
+                    final EnterableState ex = i.next();
                     msg.append(LogUtils.getTTPath(ex));
                     if (i.hasNext()) {
                         msg.append(", ");
@@ -102,7 +102,7 @@ public class SimpleErrorReporter implements ErrorReporter, Serializable {
             }
         } else if (errCode == ErrorConstants.EXPRESSION_ERROR) {
             if (errCtx instanceof Executable) {
-                TransitionTarget parent = ((Executable) errCtx).getParent();
+                final TransitionTarget parent = ((Executable) errCtx).getParent();
                 msg.append("Expression error inside ").append(LogUtils.getTTPath(parent));
             }
             else if (errCtx instanceof Data) {
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java b/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java
index 4ad7730..e6eba13 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java
@@ -59,7 +59,7 @@ public class SimpleSCXMLListener implements SCXMLListener, Serializable {
 * @see SCXMLListener#onTransition(TransitionTarget,TransitionTarget,Transition,String)
      */
     public void onTransition(final TransitionTarget from,
-            final TransitionTarget to, final Transition transition, String event) {
+            final TransitionTarget to, final Transition transition, final String event) {
         if (log.isInfoEnabled()) {
             log.info("transition " + LogUtils.transToString(from, to, transition, event));
         }
diff --git a/src/main/java/org/apache/commons/scxml2/env/URLResolver.java b/src/main/java/org/apache/commons/scxml2/env/URLResolver.java
index 6e2447b..0b20dc5 100644
--- a/src/main/java/org/apache/commons/scxml2/env/URLResolver.java
+++ b/src/main/java/org/apache/commons/scxml2/env/URLResolver.java
@@ -58,7 +58,7 @@ public class URLResolver implements PathResolver, Serializable {
         try {
             combined = new URL(baseURL, ctxPath);
             return combined.toString();
-        } catch (MalformedURLException e) {
+        } catch (final MalformedURLException e) {
             log.error("Malformed URL", e);
         }
         return null;
@@ -72,7 +72,7 @@ public class URLResolver implements PathResolver, Serializable {
         try {
             combined = new URL(baseURL, ctxPath);
             return new URLResolver(combined);
-        } catch (MalformedURLException e) {
+        } catch (final MalformedURLException e) {
             log.error("Malformed URL", e);
         }
         return null;
diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContext.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContext.java
index a5d73bf..d5191b4 100644
--- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContext.java
+++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContext.java
@@ -64,7 +64,7 @@ public class GroovyContext extends SimpleContext {
      * @param initialVars The initial set of variables.
      * @param evaluator The groovy evaluator
      */
-    public GroovyContext(final Context parent, final Map<String, Object> initialVars, GroovyEvaluator evaluator) {
+    public GroovyContext(final Context parent, final Map<String, Object> initialVars, final GroovyEvaluator evaluator) {
         super(parent, initialVars);
         this.evaluator = evaluator;
     }
@@ -75,7 +75,7 @@ public class GroovyContext extends SimpleContext {
      * @param parent The parent context.
      * @param evaluator The groovy evaluator
      */
-    public GroovyContext(final Context parent, GroovyEvaluator evaluator) {
+    public GroovyContext(final Context parent, final GroovyEvaluator evaluator) {
         super(parent);
         this.evaluator = evaluator;
     }
@@ -84,7 +84,7 @@ public class GroovyContext extends SimpleContext {
         return evaluator;
     }
 
-    protected void setGroovyEvaluator(GroovyEvaluator evaluator) {
+    protected void setGroovyEvaluator(final GroovyEvaluator evaluator) {
         this.evaluator = evaluator;
     }
 
@@ -98,7 +98,7 @@ public class GroovyContext extends SimpleContext {
         this.vars = vars;
     }
 
-    protected void setScriptBaseClass(String scriptBaseClass) {
+    protected void setScriptBaseClass(final String scriptBaseClass) {
         this.scriptBaseClass = scriptBaseClass;
     }
 
@@ -112,12 +112,12 @@ public class GroovyContext extends SimpleContext {
         return null;
     }
 
-    private void writeObject(ObjectOutputStream out) throws IOException {
+    private void writeObject(final ObjectOutputStream out) throws IOException {
         boolean closureErased = false;
         if (vars != null) {
-            Iterator<Map.Entry<String, Object>> iterator = getVars().entrySet().iterator();
+            final Iterator<Map.Entry<String, Object>> iterator = getVars().entrySet().iterator();
             while (iterator.hasNext()) {
-                Map.Entry<String, Object> entry = iterator.next();
+                final Map.Entry<String, Object> entry = iterator.next();
                 if (entry.getValue() != null && entry.getValue() instanceof Closure) {
                     iterator.remove();
                     closureErased = true;
@@ -134,7 +134,7 @@ public class GroovyContext extends SimpleContext {
     }
 
     @SuppressWarnings("unchecked")
-    private void readObject(ObjectInputStream in) throws IOException,ClassNotFoundException {
+    private void readObject(final ObjectInputStream in) throws IOException,ClassNotFoundException {
         this.scriptBaseClass = (String)in.readObject();
         this.evaluator = (GroovyEvaluator)in.readObject();
         this.binding = (GroovyContextBinding)in.readObject();
diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java
index e1bf007..79b1978 100644
--- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java
+++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java
@@ -30,9 +30,9 @@ public class GroovyContextBinding extends Binding implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    private GroovyContext context;
+    private final GroovyContext context;
 
-    public GroovyContextBinding(GroovyContext context) {
+    public GroovyContextBinding(final GroovyContext context) {
         if (context == null) {
             throw new IllegalArgumentException("Parameter context may not be null");
         }
@@ -44,8 +44,8 @@ public class GroovyContextBinding extends Binding implements Serializable {
     }
 
     @Override
-    public Object getVariable(String name) {
-        Object result = context.get(name);
+    public Object getVariable(final String name) {
+        final Object result = context.get(name);
         if (result == null && !context.has(name)) {
             throw new MissingPropertyException(name, this.getClass());
         }
@@ -53,7 +53,7 @@ public class GroovyContextBinding extends Binding implements Serializable {
     }
 
     @Override
-    public void setVariable(String name, Object value) {
+    public void setVariable(final String name, final Object value) {
         if (context.has(name)) {
             context.set(name, value);
         } else {
@@ -62,7 +62,7 @@ public class GroovyContextBinding extends Binding implements Serializable {
     }
 
     @Override
-    public boolean hasVariable(String name) {
+    public boolean hasVariable(final String name) {
         return context.has(name);
     }
 
@@ -72,12 +72,12 @@ public class GroovyContextBinding extends Binding implements Serializable {
     }
 
     @Override
-    public Object getProperty(String property) {
+    public Object getProperty(final String property) {
         return getVariable(property);
     }
 
     @Override
-    public void setProperty(String property, Object newValue) {
+    public void setProperty(final String property, final Object newValue) {
         setVariable(property, newValue);
     }
 }
diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java
index 23bbe9c..aa2c0e6 100644
--- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java
+++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java
@@ -90,7 +90,7 @@ public class GroovyEvaluator extends AbstractBaseEvaluator {
                 return script;
             }
             StringBuffer sb = null;
-            Matcher m = GROOVY_OPERATOR_ALIASES_PATTERN.matcher(script);
+            final Matcher m = GROOVY_OPERATOR_ALIASES_PATTERN.matcher(script);
             while (m.find()) {
                 if (sb == null) {
                     sb = new StringBuffer();
@@ -112,7 +112,7 @@ public class GroovyEvaluator extends AbstractBaseEvaluator {
         this(false);
     }
 
-    public GroovyEvaluator(boolean useInitialScriptAsBaseScript) {
+    public GroovyEvaluator(final boolean useInitialScriptAsBaseScript) {
         this.useInitialScriptAsBaseScript = useInitialScriptAsBaseScript;
         this.scriptCache = newScriptCache();
     }
@@ -127,15 +127,15 @@ public class GroovyEvaluator extends AbstractBaseEvaluator {
      * @return GroovyExtendableScriptCache for this GroovyEvaluator
      */
     protected GroovyExtendableScriptCache newScriptCache() {
-        GroovyExtendableScriptCache scriptCache = new GroovyExtendableScriptCache();
+        final GroovyExtendableScriptCache scriptCache = new GroovyExtendableScriptCache();
         scriptCache.setScriptPreProcessor(getScriptPreProcessor());
         scriptCache.setScriptBaseClass(GroovySCXMLScript.class.getName());
         return scriptCache;
     }
 
     @SuppressWarnings("unchecked")
-    protected Script getScript(GroovyContext groovyContext, String scriptBaseClassName, String scriptSource) {
-        Script script = scriptCache.getScript(scriptBaseClassName, scriptSource);
+    protected Script getScript(final GroovyContext groovyContext, final String scriptBaseClassName, final String scriptSource) {
+        final Script script = scriptCache.getScript(scriptBaseClassName, scriptSource);
         script.setBinding(groovyContext.getBinding());
         return script;
     }
@@ -188,8 +188,8 @@ public class GroovyEvaluator extends AbstractBaseEvaluator {
         try {
             return getScript(getEffectiveContext(groovyCtx), groovyCtx.getScriptBaseClass(), expr).run();
         }
-        catch (Exception e) {
-            String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
+        catch (final Exception e) {
+            final String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
             throw new SCXMLExpressionException("eval('" + expr + "'): " + exMessage, e);
         }
     }
@@ -214,8 +214,8 @@ public class GroovyEvaluator extends AbstractBaseEvaluator {
         try {
             final Object result = getScript(getEffectiveContext(groovyCtx), groovyCtx.getScriptBaseClass(), expr).run();
             return result == null ? Boolean.FALSE : (Boolean)result;
-        } catch (Exception e) {
-            String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
+        } catch (final Exception e) {
+            final String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
             throw new SCXMLExpressionException("evalCond('" + expr + "'): " + exMessage, e);
         }
     }
@@ -246,7 +246,7 @@ public class GroovyEvaluator extends AbstractBaseEvaluator {
                 groovyCtx.setScriptBaseClass(script.getClass().getName());
             }
             return result;
-        } catch (Exception e) {
+        } catch (final Exception e) {
             final String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
             throw new SCXMLExpressionException("evalScript('" + scriptSource + "'): " + exMessage, e);
         }
diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java
index b75a186..5418774 100644
--- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java
+++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java
@@ -111,7 +111,7 @@ public class GroovyExtendableScriptCache implements Serializable {
         protected String scriptName;
         protected transient Class<? extends Script> scriptClass;
 
-        public ScriptCacheElement(String baseClass, String scriptSource) {
+        public ScriptCacheElement(final String baseClass, final String scriptSource) {
             this.baseClass = baseClass;
             this.scriptSource = scriptSource;
         }
@@ -128,7 +128,7 @@ public class GroovyExtendableScriptCache implements Serializable {
             return scriptName;
         }
 
-        public void setScriptName(String scriptName) {
+        public void setScriptName(final String scriptName) {
             this.scriptName = scriptName;
         }
 
@@ -136,7 +136,7 @@ public class GroovyExtendableScriptCache implements Serializable {
             return scriptClass;
         }
 
-        public void setScriptClass(Class<? extends Script> scriptClass) {
+        public void setScriptClass(final Class<? extends Script> scriptClass) {
             this.scriptClass = scriptClass;
         }
 
@@ -183,7 +183,7 @@ public class GroovyExtendableScriptCache implements Serializable {
      * Hook into the de-serialization process, reloading the transient GroovyClassLoader, CompilerConfiguration and
      * re-generate Script classes through {@link #ensureInitializedOrReloaded()}
      */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+    private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException {
         in.defaultReadObject();
         ensureInitializedOrReloaded();
     }
@@ -198,21 +198,21 @@ public class GroovyExtendableScriptCache implements Serializable {
      * @return A new Script instance from a compiled (or cached) Groovy class parsed from the provided
      * scriptSource
      */
-    public Script getScript(String scriptSource) {
+    public Script getScript(final String scriptSource) {
         return getScript(null, scriptSource);
     }
 
-    public Script getScript(String scriptBaseClass, String scriptSource) {
+    public Script getScript(final String scriptBaseClass, final String scriptSource) {
         Class<? extends Script> scriptClass;
         synchronized (scriptCache) {
             ensureInitializedOrReloaded();
-            ScriptCacheElement cacheKey = new ScriptCacheElement(scriptBaseClass, scriptSource);
-            ScriptCacheElement cacheElement = scriptCache.get(cacheKey);
+            final ScriptCacheElement cacheKey = new ScriptCacheElement(scriptBaseClass, scriptSource);
+            final ScriptCacheElement cacheElement = scriptCache.get(cacheKey);
             if (cacheElement != null) {
                 scriptClass = cacheElement.getScriptClass();
             }
             else {
-                String scriptName = generatedScriptName(scriptSource, scriptCache.size());
+                final String scriptName = generatedScriptName(scriptSource, scriptCache.size());
                 scriptClass = compileScript(scriptBaseClass, scriptSource, scriptName);
                 cacheKey.setScriptName(scriptName);
                 cacheKey.setScriptClass(scriptClass);
@@ -221,7 +221,7 @@ public class GroovyExtendableScriptCache implements Serializable {
         }
         try {
             return scriptClass.newInstance();
-        } catch (Exception e) {
+        } catch (final Exception e) {
             throw new GroovyRuntimeException("Failed to create Script instance for class: "+ scriptClass + ". Reason: " + e, e);
         }
     }
@@ -237,7 +237,7 @@ public class GroovyExtendableScriptCache implements Serializable {
                     () -> new GroovyClassLoader(getParentClassLoaderFactory().getClassLoader(), compilerConfiguration));
             if (!scriptCache.isEmpty()) {
                 // de-serialized: need to re-generate all previously compiled scripts (this can cause a hick-up...):
-                for (ScriptCacheElement element : scriptCache.keySet()) {
+                for (final ScriptCacheElement element : scriptCache.keySet()) {
                     element.setScriptClass(compileScript(element.getBaseClass(), element.getScriptSource(), element.getScriptName()));
                 }
             }
@@ -245,13 +245,13 @@ public class GroovyExtendableScriptCache implements Serializable {
     }
 
     @SuppressWarnings("unchecked")
-    protected Class<Script> compileScript(final String scriptBaseClass, String scriptSource, final String scriptName) {
+    protected Class<Script> compileScript(final String scriptBaseClass, final String scriptSource, final String scriptName) {
         final String script = preProcessScript(scriptSource);
 
-        GroovyCodeSource codeSource = AccessController.doPrivileged((PrivilegedAction<GroovyCodeSource>)
+        final GroovyCodeSource codeSource = AccessController.doPrivileged((PrivilegedAction<GroovyCodeSource>)
                 () -> new GroovyCodeSource(script, scriptName, getScriptCodeBase()));
 
-        String currentScriptBaseClass = compilerConfiguration.getScriptBaseClass();
+        final String currentScriptBaseClass = compilerConfiguration.getScriptBaseClass();
         try {
             if (scriptBaseClass != null) {
                 compilerConfiguration.setScriptBaseClass(scriptBaseClass);
@@ -263,11 +263,11 @@ public class GroovyExtendableScriptCache implements Serializable {
         }
     }
 
-    protected String preProcessScript(String scriptSource) {
+    protected String preProcessScript(final String scriptSource) {
         return getScriptPreProcessor() != null ? getScriptPreProcessor().preProcess(scriptSource) : scriptSource;
     }
 
-    protected String generatedScriptName(String scriptSource, int seed) {
+    protected String generatedScriptName(final String scriptSource, final int seed) {
         return "script"+seed+"_"+Math.abs(scriptSource.hashCode())+".groovy";
     }
 
@@ -282,7 +282,7 @@ public class GroovyExtendableScriptCache implements Serializable {
      *                             the {@link #DEFAULT_SCRIPT_CODE_BASE} will be set instead.
      */
     @SuppressWarnings("unused")
-    public void setScriptCodeBase(String scriptCodeBase) {
+    public void setScriptCodeBase(final String scriptCodeBase) {
         if (scriptCodeBase != null && scriptCodeBase.length() > 0 && scriptCodeBase.charAt(0) == '/') {
             this.scriptCodeBase = scriptCodeBase;
         }
@@ -295,7 +295,7 @@ public class GroovyExtendableScriptCache implements Serializable {
         return scriptBaseClass;
     }
 
-    public void setScriptBaseClass(String scriptBaseClass) {
+    public void setScriptBaseClass(final String scriptBaseClass) {
         this.scriptBaseClass = scriptBaseClass;
     }
 
@@ -304,7 +304,7 @@ public class GroovyExtendableScriptCache implements Serializable {
     }
 
     @SuppressWarnings("unused")
-    public void setParentClassLoaderFactory(ParentClassLoaderFactory parentClassLoaderFactory) {
+    public void setParentClassLoaderFactory(final ParentClassLoaderFactory parentClassLoaderFactory) {
         this.parentClassLoaderFactory = parentClassLoaderFactory != null ? parentClassLoaderFactory : DEFAULT_PARENT_CLASS_LOADER_FACTORY;
     }
 
@@ -313,7 +313,7 @@ public class GroovyExtendableScriptCache implements Serializable {
     }
 
     @SuppressWarnings("unused")
-    public void setCompilerConfigurationFactory(CompilerConfigurationFactory compilerConfigurationFactory) {
+    public void setCompilerConfigurationFactory(final CompilerConfigurationFactory compilerConfigurationFactory) {
         this.compilerConfigurationFactory = compilerConfigurationFactory != null ? compilerConfigurationFactory : DEFAULT_COMPILER_CONFIGURATION_FACTORY;
     }
 
diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java
index cdd1dcb..fc86291 100644
--- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java
+++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java
@@ -75,11 +75,11 @@ public abstract class GroovySCXMLScript extends Script {
      * @param property the name of variable to check if it exists
      * @return true if the variable exists, false otherwise
      */
-    public boolean var(String property) {
+    public boolean var(final String property) {
         if (!context.has(property)) {
             try {
                 getMetaClass().getProperty(this, property);
-            } catch (MissingPropertyException e) {
+            } catch (final MissingPropertyException e) {
                 return false;
             }
         }
@@ -104,7 +104,7 @@ public abstract class GroovySCXMLScript extends Script {
      * @param obj the object to check if it is empty
      * @return true if the object is empty, false otherwise
      */
-    public boolean empty(Object obj) {
+    public boolean empty(final Object obj) {
         return obj == null ||
                 (obj instanceof String && ((String)obj).isEmpty()) ||
                 ((obj.getClass().isArray() && Array.getLength(obj)==0)) ||
diff --git a/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java b/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java
index 8e257d6..0322365 100644
--- a/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java
+++ b/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java
@@ -40,7 +40,7 @@ public class JSBindings implements Bindings {
      * @throws IllegalArgumentException Thrown if <code>jsContext</code> is <code>null</code>.
      *
      */
-    public JSBindings(JSContext jsContext) {
+    public JSBindings(final JSContext jsContext) {
         setContext(jsContext);
     }
 
@@ -50,7 +50,7 @@ public class JSBindings implements Bindings {
      * @param jsContext the SCXML context to use for script variables.
      * @throws IllegalArgumentException Thrown if <code>jsContext</code> is <code>null</code>.
      */
-    public void setContext(JSContext jsContext) {
+    public void setContext(final JSContext jsContext) {
         if (jsContext == null) {
             throw new IllegalArgumentException("SCXML context is required");
         }
@@ -61,7 +61,7 @@ public class JSBindings implements Bindings {
      * Returns <code>true</code> if the SCXML context contains a variable identified by <code>key</code>.
      */
     @Override
-    public boolean containsKey(Object key) {
+    public boolean containsKey(final Object key) {
         return context.has(key.toString());
     }
 
@@ -85,7 +85,7 @@ public class JSBindings implements Bindings {
      * Returns <code>true</code> if the SCXML context contains <code>value</code>.
      */
     @Override
-    public boolean containsValue(Object value) {
+    public boolean containsValue(final Object value) {
         return context.getVars().containsValue(value);
     }
 
@@ -117,7 +117,7 @@ public class JSBindings implements Bindings {
      * Returns the value from the SCXML context identified by <code>key</code>.
      */
     @Override
-    public Object get(Object key) {
+    public Object get(final Object key) {
         return context.get(key.toString());
     }
 
@@ -131,7 +131,7 @@ public class JSBindings implements Bindings {
      * @param value The variable value
      */
     @Override
-    public Object put(String name, Object value) {
+    public Object put(final String name, final Object value) {
         Object old = null;
         if (context.has(name)) {
             old = context.get(name);
@@ -147,8 +147,8 @@ public class JSBindings implements Bindings {
      * @param toMerge the map of variables to merge
      */
     @Override
-    public void putAll(Map<? extends String, ?> toMerge) {
-        for (Map.Entry<? extends String, ?> entry : toMerge.entrySet()) {
+    public void putAll(final Map<? extends String, ?> toMerge) {
+        for (final Map.Entry<? extends String, ?> entry : toMerge.entrySet()) {
             put(entry.getKey(), entry.getValue());
         }
     }
@@ -158,7 +158,7 @@ public class JSBindings implements Bindings {
      * @param name the variable name
      */
     @Override
-    public Object remove(Object name) {
+    public Object remove(final Object name) {
         return context.getVars().remove(name);
     }
 
diff --git a/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java
index 265e473..b1c6b65 100644
--- a/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java
+++ b/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java
@@ -105,7 +105,7 @@ public class JSEvaluator extends AbstractBaseEvaluator {
                 try {
                     initGlobalsScript = IOUtils.toString(JSEvaluator.class.getResourceAsStream("init_global.js"), "UTF-8");
                 }
-                catch (IOException ioe) {
+                catch (final IOException ioe) {
                     throw new RuntimeException("Failed to load init_global.js from classpath", ioe);
                 }
             }
@@ -155,7 +155,7 @@ public class JSEvaluator extends AbstractBaseEvaluator {
      * @return The SCXML instance shared ScriptContext
      * @throws ScriptException Thrown if the initialization of the Global Javascript engine itself failed
      */
-    protected ScriptContext getScriptContext(JSContext jsContext) throws ScriptException {
+    protected ScriptContext getScriptContext(final JSContext jsContext) throws ScriptException {
         if (scriptContext == null) {
             scriptContext = new SimpleScriptContext();
             scriptContext.setBindings(getEngine().createBindings(), ScriptContext.ENGINE_SCOPE);
@@ -192,7 +192,7 @@ public class JSEvaluator extends AbstractBaseEvaluator {
      *
      */
     @Override
-    public Context newContext(Context parent) {
+    public Context newContext(final Context parent) {
         return new JSContext(parent);
     }
 
@@ -208,7 +208,7 @@ public class JSEvaluator extends AbstractBaseEvaluator {
      * @throws SCXMLExpressionException Thrown if the expression was invalid or the execution raised an error itself.
      */
     @Override
-    public Object eval(Context context, String expression) throws SCXMLExpressionException {
+    public Object eval(final Context context, final String expression) throws SCXMLExpressionException {
         if (expression == null) {
             return null;
         }
@@ -217,14 +217,14 @@ public class JSEvaluator extends AbstractBaseEvaluator {
         }
 
         try {
-            JSContext effectiveContext = getEffectiveContext((JSContext)context);
-            ScriptContext scriptContext = getScriptContext(effectiveContext);
-            Object ret = getEngine().eval(expression, scriptContext);
+            final JSContext effectiveContext = getEffectiveContext((JSContext)context);
+            final ScriptContext scriptContext = getScriptContext(effectiveContext);
+            final Object ret = getEngine().eval(expression, scriptContext);
             // copy Javascript global variables to SCXML context.
             copyJavascriptGlobalsToScxmlContext(scriptContext.getBindings(ScriptContext.ENGINE_SCOPE), effectiveContext);
             return ret;
-        } catch (Exception e) {
-            String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
+        } catch (final Exception e) {
+            final String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
             throw new SCXMLExpressionException("eval('" + expression + "'): " + exMessage, e);
         }
     }
@@ -241,7 +241,7 @@ public class JSEvaluator extends AbstractBaseEvaluator {
      * @throws SCXMLExpressionException Thrown if the expression was invalid.
      */
     @Override
-    public Boolean evalCond(Context context, String expression) throws SCXMLExpressionException {
+    public Boolean evalCond(final Context context, final String expression) throws SCXMLExpressionException {
         return (Boolean)eval(context, "Boolean("+expression+")");
     }
 
@@ -256,7 +256,7 @@ public class JSEvaluator extends AbstractBaseEvaluator {
      * @throws SCXMLExpressionException Thrown if the script was invalid.
      */
     @Override
-    public Object evalScript(Context ctx, String script) throws SCXMLExpressionException {
+    public Object evalScript(final Context ctx, final String script) throws SCXMLExpressionException {
         return eval(ctx, script);
     }
 
@@ -283,7 +283,7 @@ public class JSEvaluator extends AbstractBaseEvaluator {
      */
     private void copyJavascriptGlobalsToScxmlContext(final Bindings global, final JSContext jsContext) {
         if (global != null) {
-            for (String key : global.keySet()) {
+            for (final String key : global.keySet()) {
                 if (!SCXML_SYSTEM_CONTEXT.equals(key)) {
                     jsContext.set(key, global.get(key));
                 }
diff --git a/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java
index 0f11d0f..9f181bf 100644
--- a/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java
+++ b/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java
@@ -107,10 +107,10 @@ public class JexlEvaluator extends AbstractBaseEvaluator {
         }
         try {
             final JexlContext effective = getEffectiveContext((JexlContext)ctx);
-            JexlExpression exp = getJexlEngine().createExpression(expr);
+            final JexlExpression exp = getJexlEngine().createExpression(expr);
             return exp.evaluate(effective);
-        } catch (Exception e) {
-            String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
+        } catch (final Exception e) {
+            final String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
             throw new SCXMLExpressionException("eval('" + expr + "'): " + exMessage, e);
         }
     }
@@ -128,11 +128,11 @@ public class JexlEvaluator extends AbstractBaseEvaluator {
         }
         try {
             final JexlContext effective = getEffectiveContext((JexlContext)ctx);
-            JexlExpression exp = getJexlEngine().createExpression(expr);
+            final JexlExpression exp = getJexlEngine().createExpression(expr);
             final Object result = exp.evaluate(effective);
             return result == null ? Boolean.FALSE : (Boolean)result;
-        } catch (Exception e) {
-            String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
+        } catch (final Exception e) {
+            final String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
             throw new SCXMLExpressionException("evalCond('" + expr + "'): " + exMessage, e);
         }
     }
@@ -152,8 +152,8 @@ public class JexlEvaluator extends AbstractBaseEvaluator {
             final JexlContext effective = getEffectiveContext((JexlContext) ctx);
             final JexlScript jexlScript = getJexlEngine().createScript(script);
             return jexlScript.execute(effective);
-        } catch (Exception e) {
-            String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
+        } catch (final Exception e) {
+            final String exMessage = e.getMessage() != null ? e.getMessage() : e.getClass().getCanonicalName();
             throw new SCXMLExpressionException("evalScript('" + script + "'): " + exMessage, e);
         }
     }
@@ -178,7 +178,7 @@ public class JexlEvaluator extends AbstractBaseEvaluator {
     protected JexlEngine createJexlEngine() {
         // With null prefix, define top-level user defined functions.
         // See javadoc of org.apache.commons.jexl2.JexlEngine#setFunctions(Map<String,Object> funcs) for detail.
-        Map<String, Object> funcs = new HashMap<>();
+        final Map<String, Object> funcs = new HashMap<>();
         funcs.put(null, JexlBuiltin.class);
         return new JexlBuilder().namespaces(funcs).cache(256).create();
     }
diff --git a/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java
index 6f0443b..93adb09 100644
--- a/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java
+++ b/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java
@@ -79,9 +79,9 @@ public class MinimalEvaluator implements Evaluator, Serializable {
     @Override
     public Boolean evalCond(final Context ctx, final String expr) throws SCXMLExpressionException {
         // only support the "In(stateId)" predicate
-        String predicate = expr != null ? expr.trim() : "";
+        final String predicate = expr != null ? expr.trim() : "";
         if (predicate.startsWith("In(") && predicate.endsWith(")")) {
-            String stateId = predicate.substring(3, predicate.length()-1);
+            final String stateId = predicate.substring(3, predicate.length()-1);
             return Builtin.isMember(ctx, stateId);
         }
         return false;
diff --git a/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java b/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java
index 5cdcb63..0d12f82 100644
--- a/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java
+++ b/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java
@@ -72,7 +72,7 @@ public class SimpleSCXMLInvoker implements Invoker, Serializable {
      * {@inheritDoc}.
      */
     @Override
-    public void setParentSCXMLExecutor(SCXMLExecutor parentSCXMLExecutor) {
+    public void setParentSCXMLExecutor(final SCXMLExecutor parentSCXMLExecutor) {
         this.parentSCXMLExecutor = parentSCXMLExecutor;
     }
 
@@ -115,17 +115,17 @@ public class SimpleSCXMLInvoker implements Invoker, Serializable {
         execute(scxml, params);
     }
 
-    protected void execute(SCXML scxml, final Map<String, Object> params) throws InvokerException {
+    protected void execute(final SCXML scxml, final Map<String, Object> params) throws InvokerException {
         try {
             executor = new SCXMLExecutor(parentSCXMLExecutor, invokeId, scxml);
         }
-        catch (ModelException me) {
+        catch (final ModelException me) {
             throw new InvokerException(me);
         }
         executor.addListener(scxml, new SimpleSCXMLListener());
         try {
             executor.run(params);
-        } catch (ModelException me) {
+        } catch (final ModelException me) {
             throw new InvokerException(me.getMessage(), me.getCause());
         }
     }
diff --git a/src/main/java/org/apache/commons/scxml2/io/ContentParser.java b/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
index 099cb7f..2d326ee 100644
--- a/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
+++ b/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
@@ -104,8 +104,8 @@ public class ContentParser {
     public static String spaceNormalizeContent(final String content) {
         if (content != null) {
             int index = 0;
-            int length = content.length();
-            StringBuilder buffer = new StringBuilder(length);
+            final int length = content.length();
+            final StringBuilder buffer = new StringBuilder(length);
             boolean whiteSpace = false;
             while (index < length) {
                 if (isWhiteSpace(content.charAt(index))) {
@@ -200,16 +200,16 @@ public class ContentParser {
      */
     public String toXml(final Node node) throws IOException {
         try {
-            StringWriter writer = new StringWriter();
-            Transformer transformer = TransformerFactory.newInstance().newTransformer();
-            Properties outputProps = new Properties();
+            final StringWriter writer = new StringWriter();
+            final Transformer transformer = TransformerFactory.newInstance().newTransformer();
+            final Properties outputProps = new Properties();
             outputProps.put(OutputKeys.OMIT_XML_DECLARATION, "no");
             outputProps.put(OutputKeys.STANDALONE, "no");
             outputProps.put(OutputKeys.INDENT, "yes");
             transformer.setOutputProperties(outputProps);
             transformer.transform(new DOMSource(node), new StreamResult(writer));
             return writer.toString();
-        } catch (TransformerException e) {
+        } catch (final TransformerException e) {
             throw new IOException(e);
         }
     }
@@ -227,7 +227,7 @@ public class ContentParser {
      */
     public ParsedValue parseContent(final String content) throws IOException {
         if (content != null) {
-            String src = trimContent(content);
+            final String src = trimContent(content);
             if (hasJsonSignature(src)) {
                 return new JsonValue(parseJson(src), false);
             }
@@ -247,7 +247,7 @@ public class ContentParser {
      */
     public ParsedValue parseResource(final String resourceURL) throws IOException {
         try (InputStream in = new URL(resourceURL).openStream()) {
-            String content = IOUtils.toString(in, "UTF-8");
+            final String content = IOUtils.toString(in, "UTF-8");
             return parseContent(content);
         }
     }
diff --git a/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java b/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java
index c74555f..9c79903 100644
--- a/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java
+++ b/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java
@@ -137,8 +137,8 @@ final class ModelUpdater {
     static void updateSCXML(final SCXML scxml) throws ModelException {
         initDocumentOrder(scxml.getChildren(), 1);
 
-        String initial = scxml.getInitial();
-        SimpleTransition initialTransition = new SimpleTransition();
+        final String initial = scxml.getInitial();
+        final SimpleTransition initialTransition = new SimpleTransition();
 
         if (initial != null) {
 
@@ -156,7 +156,7 @@ final class ModelUpdater {
         }
 
         scxml.setInitialTransition(initialTransition);
-        Map<String, TransitionTarget> targets = scxml.getTargets();
+        final Map<String, TransitionTarget> targets = scxml.getTargets();
         updateEnterableStates(scxml.getChildren(), targets);
 
         scxml.getInitialTransition().setObservableId(1);
@@ -171,11 +171,11 @@ final class ModelUpdater {
      * @return Returns the next to be used order value
      */
     private static int initDocumentOrder(final List<EnterableState> states, int nextOrder) {
-        for (EnterableState state : states) {
+        for (final EnterableState state : states) {
             state.setOrder(nextOrder++);
             if (state instanceof TransitionalState) {
-                TransitionalState ts = (TransitionalState)state;
-                for (Transition t : ts.getTransitionsList()) {
+                final TransitionalState ts = (TransitionalState)state;
+                for (final Transition t : ts.getTransitionsList()) {
                     t.setOrder(nextOrder++);
                 }
                 nextOrder = initDocumentOrder(ts.getChildren(), nextOrder);
@@ -192,20 +192,20 @@ final class ModelUpdater {
      * @return Returns the next to be used observable id sequence value
      */
     private static int initObservables(final List<EnterableState>states, int nextObservableId) {
-        for (EnterableState es : states) {
+        for (final EnterableState es : states) {
             es.setObservableId(nextObservableId++);
             if (es instanceof TransitionalState) {
-                TransitionalState ts = (TransitionalState)es;
+                final TransitionalState ts = (TransitionalState)es;
                 if (ts instanceof State) {
-                    State s = (State)ts;
+                    final State s = (State)ts;
                     if (s.getInitial() != null && s.getInitial().getTransition() != null) {
                         s.getInitial().getTransition().setObservableId(nextObservableId++);
                     }
                 }
-                for (Transition t : ts.getTransitionsList()) {
+                for (final Transition t : ts.getTransitionsList()) {
                     t.setObservableId(nextObservableId++);
                 }
-                for (History h : ts.getHistory()) {
+                for (final History h : ts.getHistory()) {
                     h.setObservableId(nextObservableId++);
                     if (h.getTransition() != null) {
                         h.getTransition().setObservableId(nextObservableId++);
@@ -227,7 +227,7 @@ final class ModelUpdater {
      */
     private static void updateState(final State state, final Map<String, TransitionTarget> targets)
             throws ModelException {
-        List<EnterableState> children = state.getChildren();
+        final List<EnterableState> children = state.getChildren();
         if (state.isComposite()) {
             //initialize next / initial
             Initial ini = state.getInitial();
@@ -235,16 +235,16 @@ final class ModelUpdater {
                 state.setFirst(children.get(0).getId());
                 ini = state.getInitial();
             }
-            SimpleTransition initialTransition = ini.getTransition();
+            final SimpleTransition initialTransition = ini.getTransition();
             updateTransition(initialTransition, targets);
-            Set<TransitionTarget> initialStates = initialTransition.getTargets();
+            final Set<TransitionTarget> initialStates = initialTransition.getTargets();
             // we have to allow for an indirect descendant initial (targets)
             //check that initialState is a descendant of s
             if (initialStates.size() == 0) {
                 logAndThrowModelError(ERR_STATE_BAD_INIT,
                         new Object[] {getName(state)});
             } else {
-                for (TransitionTarget initialState : initialStates) {
+                for (final TransitionTarget initialState : initialStates) {
                     if (!initialState.isDescendantOf(state)) {
                         logAndThrowModelError(ERR_STATE_BAD_INIT,
                                 new Object[] {getName(state)});
@@ -256,19 +256,19 @@ final class ModelUpdater {
             logAndThrowModelError(ERR_UNSUPPORTED_INIT, new Object[] {getName(state)});
         }
 
-        List<History> histories = state.getHistory();
+        final List<History> histories = state.getHistory();
         if (histories.size() > 0 && state.isSimple()) {
             logAndThrowModelError(ERR_HISTORY_SIMPLE_STATE,
                     new Object[] {getName(state)});
         }
-        for (History history : histories) {
+        for (final History history : histories) {
             updateHistory(history, targets, state);
         }
-        for (Transition transition : state.getTransitionsList()) {
+        for (final Transition transition : state.getTransitionsList()) {
             updateTransition(transition, targets);
         }
 
-        for (Invoke inv : state.getInvokes()) {
+        for (final Invoke inv : state.getInvokes()) {
             if (inv.getSrc() != null && inv.getSrcexpr() != null) {
                 logAndThrowModelError(ERR_INVOKE_AMBIGUOUS_SRC, new Object[] {getName(state)});
             }
@@ -287,11 +287,11 @@ final class ModelUpdater {
     private static void updateParallel(final Parallel parallel, final Map<String, TransitionTarget> targets)
             throws ModelException {
         updateEnterableStates(parallel.getChildren(), targets);
-        for (Transition transition : parallel.getTransitionsList()) {
+        for (final Transition transition : parallel.getTransitionsList()) {
             updateTransition(transition, targets);
         }
-        List<History> histories = parallel.getHistory();
-        for (History history : histories) {
+        final List<History> histories = parallel.getHistory();
+        for (final History history : histories) {
             updateHistory(history, targets, parallel);
         }
         // TODO: parallel must may have invokes too
@@ -307,7 +307,7 @@ final class ModelUpdater {
     private static void updateEnterableStates(final List<EnterableState> states,
                                               final Map<String, TransitionTarget> targets)
         throws ModelException {
-        for (EnterableState es : states) {
+        for (final EnterableState es : states) {
             if (es instanceof State) {
                 updateState((State) es, targets);
             } else if (es instanceof Parallel) {
@@ -328,19 +328,19 @@ final class ModelUpdater {
                                       final Map<String, TransitionTarget> targets,
                                       final TransitionalState parent)
             throws ModelException {
-        SimpleTransition transition = history.getTransition();
+        final SimpleTransition transition = history.getTransition();
         if (transition == null || transition.getNext() == null) {
             logAndThrowModelError(ERR_HISTORY_NO_DEFAULT,
                     new Object[] {history.getId(), getName(parent)});
         }
         else {
             updateTransition(transition, targets);
-            Set<TransitionTarget> historyStates = transition.getTargets();
+            final Set<TransitionTarget> historyStates = transition.getTargets();
             if (historyStates.size() == 0) {
                 logAndThrowModelError(ERR_STATE_NO_HIST,
                         new Object[] {getName(parent)});
             }
-            for (TransitionTarget historyState : historyStates) {
+            for (final TransitionTarget historyState : historyStates) {
                 if (!history.isDeep()) {
                     // Shallow history
                     if (!parent.getChildren().contains(historyState)) {
@@ -367,17 +367,17 @@ final class ModelUpdater {
      */
     private static void updateTransition(final SimpleTransition transition,
                                          final Map<String, TransitionTarget> targets) throws ModelException {
-        String next = transition.getNext();
+        final String next = transition.getNext();
         if (next == null) { // stay transition
             return;
         }
-        Set<TransitionTarget> tts = transition.getTargets();
+        final Set<TransitionTarget> tts = transition.getTargets();
         if (tts.isEmpty()) {
             // 'next' is a space separated list of transition target IDs
-            StringTokenizer ids = new StringTokenizer(next);
+            final StringTokenizer ids = new StringTokenizer(next);
             while (ids.hasMoreTokens()) {
-                String id = ids.nextToken();
-                TransitionTarget tt = targets.get(id);
+                final String id = ids.nextToken();
+                final TransitionTarget tt = targets.get(id);
                 if (tt == null) {
                     logAndThrowModelError(ERR_TARGET_NOT_FOUND, new Object[] {
                             id });
@@ -385,7 +385,7 @@ final class ModelUpdater {
                 tts.add(tt);
             }
             if (tts.size() > 1) {
-                boolean legal = verifyTransitionTargets(tts);
+                final boolean legal = verifyTransitionTargets(tts);
                 if (!legal) {
                     logAndThrowModelError(ERR_ILLEGAL_TARGETS, new Object[] {
                             next });
@@ -403,9 +403,9 @@ final class ModelUpdater {
      */
     private static void logAndThrowModelError(final String errType,
                                               final Object[] msgArgs) throws ModelException {
-        MessageFormat msgFormat = new MessageFormat(errType);
-        String errMsg = msgFormat.format(msgArgs);
-        org.apache.commons.logging.Log log = LogFactory.
+        final MessageFormat msgFormat = new MessageFormat(errType);
+        final String errMsg = msgFormat.format(msgArgs);
+        final org.apache.commons.logging.Log log = LogFactory.
                 getLog(ModelUpdater.class);
         log.error(errMsg);
         throw new ModelException(errMsg);
@@ -460,7 +460,7 @@ final class ModelUpdater {
         }
         TransitionTarget first = null;
         int i = 0;
-        for (TransitionTarget tt : tts) {
+        for (final TransitionTarget tt : tts) {
             if (first == null) {
                 first = tt;
                 i = tt.getNumberOfAncestors();
@@ -473,7 +473,7 @@ final class ModelUpdater {
                 return false;
             }
             // ensure no target is an ancestor of any other target on the list
-            for (TransitionTarget other : tts) {
+            for (final TransitionTarget other : tts) {
                 if (other != tt && other.isDescendantOf(tt) || tt.isDescendantOf(other)) {
                     return false;
                 }
diff --git a/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java b/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java
index e62062f..63529d9 100644
--- a/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java
+++ b/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java
@@ -278,7 +278,7 @@ public final class SCXMLReader {
         if (scxmlPath == null) {
             throw new IllegalArgumentException(ERR_NULL_PATH);
         }
-        SCXML scxml = readInternal(configuration, null, scxmlPath, null, null, null);
+        final SCXML scxml = readInternal(configuration, null, scxmlPath, null, null, null);
         if (scxml != null) {
             ModelUpdater.updateSCXML(scxml);
         }
@@ -322,7 +322,7 @@ public final class SCXMLReader {
         if (scxmlURL == null) {
             throw new IllegalArgumentException(ERR_NULL_URL);
         }
-        SCXML scxml = readInternal(configuration, scxmlURL, null, null, null, null);
+        final SCXML scxml = readInternal(configuration, scxmlURL, null, null, null, null);
         if (scxml != null) {
             ModelUpdater.updateSCXML(scxml);
         }
@@ -366,7 +366,7 @@ public final class SCXMLReader {
         if (scxmlStream == null) {
             throw new IllegalArgumentException(ERR_NULL_ISTR);
         }
-        SCXML scxml = readInternal(configuration, null, null, scxmlStream, null, null);
+        final SCXML scxml = readInternal(configuration, null, null, scxmlStream, null, null);
         if (scxml != null) {
             ModelUpdater.updateSCXML(scxml);
         }
@@ -410,7 +410,7 @@ public final class SCXMLReader {
         if (scxmlReader == null) {
             throw new IllegalArgumentException(ERR_NULL_READ);
         }
-        SCXML scxml = readInternal(configuration, null, null, null, scxmlReader, null);
+        final SCXML scxml = readInternal(configuration, null, null, null, scxmlReader, null);
         if (scxml != null) {
             ModelUpdater.updateSCXML(scxml);
         }
@@ -454,7 +454,7 @@ public final class SCXMLReader {
         if (scxmlSource == null) {
             throw new IllegalArgumentException(ERR_NULL_SRC);
         }
-        SCXML scxml = readInternal(configuration, null, null, null, null, scxmlSource);
+        final SCXML scxml = readInternal(configuration, null, null, null, null, scxmlSource);
         if (scxml != null) {
             ModelUpdater.updateSCXML(scxml);
         }
@@ -494,7 +494,7 @@ public final class SCXMLReader {
             }
         }
 
-        XMLStreamReader reader = getReader(configuration, scxmlURL, scxmlPath, scxmlStream, scxmlReader, scxmlSource);
+        final XMLStreamReader reader = getReader(configuration, scxmlURL, scxmlPath, scxmlStream, scxmlReader, scxmlSource);
 
         return readDocument(reader, configuration);
     }
@@ -519,7 +519,7 @@ public final class SCXMLReader {
     private static SCXML readDocument(final XMLStreamReader reader, final Configuration configuration)
             throws IOException, ModelException, XMLStreamException {
 
-        SCXML scxml = new SCXML();
+        final SCXML scxml = new SCXML();
         scxml.setPathResolver(configuration.pathResolver);
         while (reader.hasNext()) {
             String name, nsURI;
@@ -567,7 +567,7 @@ public final class SCXMLReader {
         scxml.setName(readAV(reader, SCXMLConstants.ATTR_NAME));
         scxml.setProfile(readAV(reader, SCXMLConstants.ATTR_PROFILE));
         scxml.setVersion(readRequiredAV(reader, SCXMLConstants.ELEM_SCXML, SCXMLConstants.ATTR_VERSION));
-        String binding = readAV(reader, SCXMLConstants.ATTR_BINDING);
+        final String binding = readAV(reader, SCXMLConstants.ATTR_BINDING);
         if (binding != null) {
             if (SCXMLConstants.ATTR_BINDING_LATE.equals(binding)) {
                 scxml.setLateBinding(true);
@@ -633,16 +633,16 @@ public final class SCXMLReader {
                                   final TransitionalState parent)
             throws IOException, ModelException, XMLStreamException {
 
-        State state = new State();
+        final State state = new State();
         state.setId(readOrGeneratedTransitionTargetId(reader, scxml, SCXMLConstants.ELEM_STATE));
-        String initial = readAV(reader, SCXMLConstants.ATTR_INITIAL);
+        final String initial = readAV(reader, SCXMLConstants.ATTR_INITIAL);
         if (initial != null) {
             state.setFirst(initial);
         }
-        String src = readAV(reader, SCXMLConstants.ATTR_SRC);
+        final String src = readAV(reader, SCXMLConstants.ATTR_SRC);
         if (src != null) {
             String source = src;
-            Configuration copy = new Configuration(configuration);
+            final Configuration copy = new Configuration(configuration);
             if (copy.parent == null) {
                 copy.parent = scxml;
             }
@@ -724,12 +724,12 @@ public final class SCXMLReader {
                                      final TransitionalState parent)
             throws IOException, ModelException, XMLStreamException {
 
-        Parallel parallel = new Parallel();
+        final Parallel parallel = new Parallel();
         parallel.setId(readOrGeneratedTransitionTargetId(reader, scxml, SCXMLConstants.ELEM_PARALLEL));
-        String src = readAV(reader, SCXMLConstants.ATTR_SRC);
+        final String src = readAV(reader, SCXMLConstants.ATTR_SRC);
         if (src != null) {
             String source = src;
-            Configuration copy = new Configuration(configuration);
+            final Configuration copy = new Configuration(configuration);
             if (copy.parent == null) {
                 copy.parent = scxml;
             }
@@ -807,7 +807,7 @@ public final class SCXMLReader {
                                   final State parent)
             throws XMLStreamException, ModelException, IOException {
 
-        Final end = new Final();
+        final Final end = new Final();
         end.setId(readOrGeneratedTransitionTargetId(reader, scxml, SCXMLConstants.ELEM_FINAL));
 
         if (parent == null) {
@@ -862,7 +862,7 @@ public final class SCXMLReader {
     private static void readDoneData(final XMLStreamReader reader, final Configuration configuration, final Final parent)
             throws XMLStreamException, ModelException {
 
-        DoneData doneData = new DoneData();
+        final DoneData doneData = new DoneData();
         parent.setDoneData(doneData);
 
         loop : while (reader.hasNext()) {
@@ -917,8 +917,8 @@ public final class SCXMLReader {
             throws ModelException {
 
         // Check for URI fragment
-        String[] fragments = src.split("#", 2);
-        String location = fragments[0];
+        final String[] fragments = src.split("#", 2);
+        final String location = fragments[0];
         String fragment = null;
         if (fragments.length > 1) {
             fragment = fragments[1];
@@ -928,9 +928,9 @@ public final class SCXMLReader {
         SCXML externalSCXML;
         try {
             externalSCXML = SCXMLReader.readInternal(configuration, new URL(location), null, null, null, null);
-        } catch (Exception e) {
-            MessageFormat msgFormat = new MessageFormat(ERR_STATE_SRC);
-            String errMsg = msgFormat.format(new Object[] {src});
+        } catch (final Exception e) {
+            final MessageFormat msgFormat = new MessageFormat(ERR_STATE_SRC);
+            final String errMsg = msgFormat.format(new Object[] {src});
             throw new ModelException(errMsg + " : " + e.getMessage(), e);
         }
 
@@ -938,13 +938,13 @@ public final class SCXMLReader {
         if (fragment == null) {
             // All targets pulled in since its not a src fragment
             if (ts instanceof State) {
-                State s = (State) ts;
-                Initial ini = new Initial();
-                SimpleTransition t = new SimpleTransition();
+                final State s = (State) ts;
+                final Initial ini = new Initial();
+                final SimpleTransition t = new SimpleTransition();
                 t.setNext(externalSCXML.getInitial());
                 ini.setTransition(t);
                 s.setInitial(ini);
-                for (EnterableState child : externalSCXML.getChildren()) {
+                for (final EnterableState child : externalSCXML.getChildren()) {
                     s.addChild(child);
                 }
                 s.setDatamodel(externalSCXML.getDatamodel());
@@ -953,48 +953,48 @@ public final class SCXMLReader {
             }
         } else {
             // Need to pull in only descendent targets
-            Object source = externalSCXML.getTargets().get(fragment);
+            final Object source = externalSCXML.getTargets().get(fragment);
             if (source == null) {
-                MessageFormat msgFormat = new MessageFormat(ERR_STATE_SRC_FRAGMENT);
-                String errMsg = msgFormat.format(new Object[] {src});
+                final MessageFormat msgFormat = new MessageFormat(ERR_STATE_SRC_FRAGMENT);
+                final String errMsg = msgFormat.format(new Object[] {src});
                 throw new ModelException(errMsg);
             }
             if (source instanceof State && ts instanceof State) {
-                State s = (State) ts;
-                State include = (State) source;
-                for (OnEntry onentry : include.getOnEntries()) {
+                final State s = (State) ts;
+                final State include = (State) source;
+                for (final OnEntry onentry : include.getOnEntries()) {
                     s.addOnEntry(onentry);
                 }
-                for (OnExit onexit : include.getOnExits()) {
+                for (final OnExit onexit : include.getOnExits()) {
                     s.addOnExit(onexit);
                 }
                 s.setDatamodel(include.getDatamodel());
-                List<History> histories = include.getHistory();
-                for (History h : histories) {
+                final List<History> histories = include.getHistory();
+                for (final History h : histories) {
                     s.addHistory(h);
                     configuration.parent.addTarget(h);
                 }
-                for (EnterableState child : include.getChildren()) {
+                for (final EnterableState child : include.getChildren()) {
                     s.addChild(child);
                     configuration.parent.addTarget(child);
                     readInExternalTargets(configuration.parent, child);
                 }
-                for (Invoke invoke : include.getInvokes()) {
+                for (final Invoke invoke : include.getInvokes()) {
                     s.addInvoke(invoke);
                 }
                 if (include.getInitial() != null) {
                     s.setInitial(include.getInitial());
                 }
-                List<Transition> transitions = include.getTransitionsList();
-                for (Transition t : transitions) {
+                final List<Transition> transitions = include.getTransitionsList();
+                for (final Transition t : transitions) {
                     s.addTransition(t);
                 }
             } else if (ts instanceof Parallel && source instanceof Parallel) {
                 // TODO src attribute for <parallel>
             } else {
-                MessageFormat msgFormat =
+                final MessageFormat msgFormat =
                         new MessageFormat(ERR_STATE_SRC_FRAGMENT_TARGET);
-                String errMsg = msgFormat.format(new Object[] {src});
+                final String errMsg = msgFormat.format(new Object[] {src});
                 throw new ModelException(errMsg);
             }
         }
@@ -1008,10 +1008,10 @@ public final class SCXMLReader {
      */
     private static void readInExternalTargets(final SCXML parent, final EnterableState es) {
         if (es instanceof TransitionalState) {
-            for (History h : ((TransitionalState)es).getHistory()) {
+            for (final History h : ((TransitionalState)es).getHistory()) {
                 parent.addTarget(h);
             }
-            for (EnterableState child : ((TransitionalState) es).getChildren()) {
+            for (final EnterableState child : ((TransitionalState) es).getChildren()) {
                 parent.addTarget(child);
                 readInExternalTargets(parent, child);
             }
@@ -1034,7 +1034,7 @@ public final class SCXMLReader {
                                       final SCXML scxml, final TransitionalState parent)
             throws XMLStreamException, ModelException {
 
-        Datamodel dm = new Datamodel();
+        final Datamodel dm = new Datamodel();
 
         loop : while (reader.hasNext()) {
             String name, nsURI;
@@ -1077,7 +1077,7 @@ public final class SCXMLReader {
     private static void readData(final XMLStreamReader reader, final Configuration configuration, final Datamodel dm)
             throws XMLStreamException, ModelException {
 
-        Data datum = new Data();
+        final Data datum = new Data();
         datum.setId(readRequiredAV(reader, SCXMLConstants.ELEM_DATA, SCXMLConstants.ATTR_ID));
         final String expr = readAV(reader, SCXMLConstants.ATTR_EXPR);
         final String src = readAV(reader, SCXMLConstants.ATTR_SRC);
@@ -1112,7 +1112,7 @@ public final class SCXMLReader {
                                    final TransitionalState parent)
             throws XMLStreamException, ModelException {
 
-        Invoke invoke = new Invoke();
+        final Invoke invoke = new Invoke();
         invoke.setId(readAV(reader, SCXMLConstants.ATTR_ID));
         invoke.setIdlocation(readAV(reader, SCXMLConstants.ATTR_IDLOCATION));
         invoke.setSrc(readAV(reader, SCXMLConstants.ATTR_SRC));
@@ -1163,10 +1163,10 @@ public final class SCXMLReader {
                                   final ParamsContainer parent)
             throws XMLStreamException, ModelException {
 
-        Param param = new Param();
+        final Param param = new Param();
         param.setName(readRequiredAV(reader, SCXMLConstants.ELEM_PARAM, SCXMLConstants.ATTR_NAME));
-        String location = readAV(reader, SCXMLConstants.ATTR_LOCATION);
-        String expr = readAV(reader, SCXMLConstants.ATTR_EXPR);
+        final String location = readAV(reader, SCXMLConstants.ATTR_LOCATION);
+        final String expr = readAV(reader, SCXMLConstants.ATTR_EXPR);
         if (expr != null) {
             if (location != null) {
                 reportConflictingAttribute(reader, configuration, SCXMLConstants.ELEM_PARAM, SCXMLConstants.ATTR_LOCATION, SCXMLConstants.ATTR_EXPR);
@@ -1202,7 +1202,7 @@ public final class SCXMLReader {
                                      final TransitionalState state, final Invoke invoke)
             throws XMLStreamException, ModelException {
 
-        Finalize finalize = new Finalize();
+        final Finalize finalize = new Finalize();
         readExecutableContext(reader, configuration, finalize, null);
         invoke.setFinalize(finalize);
         finalize.setParent(state);
@@ -1221,7 +1221,7 @@ public final class SCXMLReader {
                                     final ContentContainer contentContainer)
             throws XMLStreamException, ModelException {
 
-        Content content = new Content();
+        final Content content = new Content();
         content.setExpr(readAV(reader, SCXMLConstants.ATTR_EXPR));
         if (content.getExpr() != null) {
             skipToEndElement(reader);
@@ -1247,7 +1247,7 @@ public final class SCXMLReader {
                                     final State state)
             throws XMLStreamException, ModelException {
 
-        Initial initial = new Initial();
+        final Initial initial = new Initial();
 
         loop : while (reader.hasNext()) {
             String name, nsURI;
@@ -1290,7 +1290,7 @@ public final class SCXMLReader {
                                     final SCXML scxml, final TransitionalState ts)
             throws XMLStreamException, ModelException {
 
-        History history = new History();
+        final History history = new History();
         history.setId(readOrGeneratedTransitionTargetId(reader, scxml, SCXMLConstants.ELEM_HISTORY));
         history.setType(readAV(reader, SCXMLConstants.ATTR_TYPE));
 
@@ -1335,7 +1335,7 @@ public final class SCXMLReader {
                                     final EnterableState es)
             throws XMLStreamException, ModelException {
 
-        OnEntry onentry = new OnEntry();
+        final OnEntry onentry = new OnEntry();
         onentry.setRaiseEvent(readBooleanAV(reader, SCXMLConstants.ELEM_ONENTRY, SCXMLConstants.ATTR_EVENT));
         readExecutableContext(reader, configuration, onentry, null);
         es.addOnEntry(onentry);
@@ -1356,7 +1356,7 @@ public final class SCXMLReader {
                                    final EnterableState es)
             throws XMLStreamException, ModelException {
 
-        OnExit onexit = new OnExit();
+        final OnExit onexit = new OnExit();
         onexit.setRaiseEvent(readBooleanAV(reader, SCXMLConstants.ELEM_ONEXIT, SCXMLConstants.ATTR_EVENT));
         readExecutableContext(reader, configuration, onexit, null);
         es.addOnExit(onexit);
@@ -1375,16 +1375,16 @@ public final class SCXMLReader {
     private static SimpleTransition readSimpleTransition(final XMLStreamReader reader, final Configuration configuration)
             throws XMLStreamException, ModelException {
 
-        SimpleTransition transition = new SimpleTransition();
+        final SimpleTransition transition = new SimpleTransition();
         transition.setNext(readAV(reader, SCXMLConstants.ATTR_TARGET));
-        String type = readAV(reader, SCXMLConstants.ATTR_TYPE);
+        final String type = readAV(reader, SCXMLConstants.ATTR_TYPE);
         if (type != null) {
             try {
                 transition.setType(TransitionType.valueOf(type));
             }
-            catch (IllegalArgumentException e) {
-                MessageFormat msgFormat = new MessageFormat(ERR_UNSUPPORTED_TRANSITION_TYPE);
-                String errMsg = msgFormat.format(new Object[] {type, reader.getLocation()});
+            catch (final IllegalArgumentException e) {
+                final MessageFormat msgFormat = new MessageFormat(ERR_UNSUPPORTED_TRANSITION_TYPE);
+                final String errMsg = msgFormat.format(new Object[] {type, reader.getLocation()});
                 throw new ModelException(errMsg);
             }
         }
@@ -1407,18 +1407,18 @@ public final class SCXMLReader {
     private static Transition readTransition(final XMLStreamReader reader, final Configuration configuration)
             throws XMLStreamException, ModelException {
 
-        Transition transition = new Transition();
+        final Transition transition = new Transition();
         transition.setCond(readAV(reader, SCXMLConstants.ATTR_COND));
         transition.setEvent(readAV(reader, SCXMLConstants.ATTR_EVENT));
         transition.setNext(readAV(reader, SCXMLConstants.ATTR_TARGET));
-        String type = readAV(reader, SCXMLConstants.ATTR_TYPE);
+        final String type = readAV(reader, SCXMLConstants.ATTR_TYPE);
         if (type != null) {
             try {
                 transition.setType(TransitionType.valueOf(type));
             }
-            catch (IllegalArgumentException e) {
-                MessageFormat msgFormat = new MessageFormat(ERR_UNSUPPORTED_TRANSITION_TYPE);
-                String errMsg = msgFormat.format(new Object[] {type, reader.getLocation()});
+            catch (final IllegalArgumentException e) {
+                final MessageFormat msgFormat = new MessageFormat(ERR_UNSUPPORTED_TRANSITION_TYPE);
+                final String errMsg = msgFormat.format(new Object[] {type, reader.getLocation()});
                 throw new ModelException(errMsg);
             }
         }
@@ -1504,7 +1504,7 @@ public final class SCXMLReader {
                     } else { // custom action
                         CustomAction customAction = null;
                         if (!configuration.customActions.isEmpty()) {
-                            for (CustomAction ca : configuration.customActions) {
+                            for (final CustomAction ca : configuration.customActions) {
                                 if (ca.getNamespaceURI().equals(nsURI) && ca.getLocalName().equals(name)) {
                                     customAction = ca;
                                     break;
@@ -1548,7 +1548,7 @@ public final class SCXMLReader {
             reportIgnoredElement(reader, configuration, SCXMLConstants.ELEM_FINALIZE, SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_RAISE);
         }
         else {
-            Raise raise = new Raise();
+            final Raise raise = new Raise();
             raise.setEvent(readAV(reader, SCXMLConstants.ATTR_EVENT));
             raise.setParent(executable);
             if (parent != null) {
@@ -1576,7 +1576,7 @@ public final class SCXMLReader {
                                final Executable executable, final ActionsContainer parent)
             throws XMLStreamException, ModelException {
 
-        If iff = new If();
+        final If iff = new If();
         iff.setCond(readRequiredAV(reader, SCXMLConstants.ELEM_IF, SCXMLConstants.ATTR_COND));
         iff.setParent(executable);
         if (parent != null) {
@@ -1599,7 +1599,7 @@ public final class SCXMLReader {
     private static void readElseIf(final XMLStreamReader reader, final Executable executable, final If iff)
             throws XMLStreamException, ModelException {
 
-        ElseIf elseif = new ElseIf();
+        final ElseIf elseif = new ElseIf();
         elseif.setCond(readRequiredAV(reader, SCXMLConstants.ELEM_ELSEIF, SCXMLConstants.ATTR_COND));
         elseif.setParent(executable);
         iff.addAction(elseif);
@@ -1618,7 +1618,7 @@ public final class SCXMLReader {
     private static void readElse(final XMLStreamReader reader, final Executable executable, final If iff)
             throws XMLStreamException {
 
-        Else els = new Else();
+        final Else els = new Else();
         els.setParent(executable);
         iff.addAction(els);
         skipToEndElement(reader);
@@ -1640,7 +1640,7 @@ public final class SCXMLReader {
                                     final Executable executable, final ActionsContainer parent)
             throws XMLStreamException, ModelException {
 
-        Foreach fe = new Foreach();
+        final Foreach fe = new Foreach();
         fe.setArray(readRequiredAV(reader, SCXMLConstants.ELEM_FOREACH, SCXMLConstants.ATTR_ARRAY));
         fe.setItem(readRequiredAV(reader, SCXMLConstants.ELEM_FOREACH, SCXMLConstants.ATTR_ITEM));
         fe.setIndex(readAV(reader, SCXMLConstants.ATTR_INDEX));
@@ -1665,7 +1665,7 @@ public final class SCXMLReader {
     private static void readLog(final XMLStreamReader reader, final Executable executable, final ActionsContainer parent)
             throws XMLStreamException {
 
-        Log log = new Log();
+        final Log log = new Log();
         log.setExpr(readAV(reader, SCXMLConstants.ATTR_EXPR));
         log.setLabel(readAV(reader, SCXMLConstants.ATTR_LABEL));
         log.setParent(executable);
@@ -1691,7 +1691,7 @@ public final class SCXMLReader {
                                    final Executable executable, final ActionsContainer parent)
             throws XMLStreamException, ModelException {
 
-        Assign assign = new Assign();
+        final Assign assign = new Assign();
         assign.setExpr(readAV(reader, SCXMLConstants.ATTR_EXPR));
         assign.setLocation(readRequiredAV(reader, SCXMLConstants.ELEM_ASSIGN, SCXMLConstants.ATTR_LOCATION));
         assign.setSrc(readAV(reader, SCXMLConstants.ATTR_SRC));
@@ -1709,12 +1709,12 @@ public final class SCXMLReader {
             }
             try {
                 assign.setParsedValue(ContentParser.DEFAULT_PARSER.parseResource(resolvedSrc));
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 throw new ModelException(e);
             }
         }
         else {
-            Location location = reader.getLocation();
+            final Location location = reader.getLocation();
             readParsedValue(reader, configuration, assign, false);
             if (assign.getParsedValue() == null) {
                 // report missing expression (as most common use-case)
@@ -1754,7 +1754,7 @@ public final class SCXMLReader {
             return;
         }
 
-        Send send = new Send();
+        final Send send = new Send();
         send.setId(readAV(reader, SCXMLConstants.ATTR_ID));
         String attrValue = readAV(reader, SCXMLConstants.ATTR_IDLOCATION);
         if (attrValue != null) {
@@ -1864,9 +1864,9 @@ public final class SCXMLReader {
                                    final Executable executable, final ActionsContainer parent)
             throws XMLStreamException, ModelException {
 
-        Cancel cancel = new Cancel();
+        final Cancel cancel = new Cancel();
         cancel.setSendid(readAV(reader, SCXMLConstants.ATTR_SENDID));
-        String attrValue = readAV(reader, SCXMLConstants.ATTR_SENDIDEXPR);
+        final String attrValue = readAV(reader, SCXMLConstants.ATTR_SENDIDEXPR);
         if (attrValue != null) {
             if (cancel.getSendid() != null) {
                 reportConflictingAttribute(reader, configuration, SCXMLConstants.ELEM_CANCEL, SCXMLConstants.ATTR_SENDID, SCXMLConstants.ATTR_SENDIDEXPR);
@@ -1898,7 +1898,7 @@ public final class SCXMLReader {
                                    final Executable executable, final ActionsContainer parent)
             throws XMLStreamException, ModelException {
 
-        Script script = readScript(reader, configuration);
+        final Script script = readScript(reader, configuration);
         script.setParent(executable);
         if (parent != null) {
             parent.addAction(script);
@@ -1922,7 +1922,7 @@ public final class SCXMLReader {
                                          final SCXML scxml)
             throws XMLStreamException, ModelException {
 
-        Script globalScript = readScript(reader, configuration);
+        final Script globalScript = readScript(reader, configuration);
         globalScript.setGlobalScript(true);
         scxml.setGlobalScript(globalScript);
     }
@@ -1938,7 +1938,7 @@ public final class SCXMLReader {
     private static Script readScript(final XMLStreamReader reader, final Configuration configuration)
             throws XMLStreamException, ModelException {
 
-        Script script = new Script();
+        final Script script = new Script();
         script.setSrc(readAV(reader, SCXMLConstants.ATTR_SRC));
         if (script.getSrc() != null) {
             String resolvedSrc = script.getSrc();
@@ -1948,7 +1948,7 @@ public final class SCXMLReader {
             try (InputStream in = new URL(resolvedSrc).openStream()){
                 script.setScript(IOUtils.toString(in, "UTF-8"));
             }
-            catch (IOException e) {
+            catch (final IOException e) {
                 throw new ModelException(e);
             }
             skipToEndElement(reader);
@@ -1977,7 +1977,7 @@ public final class SCXMLReader {
 
         // Instantiate custom action
         Object actionObject;
-        String className = customAction.getActionClass().getName();
+        final String className = customAction.getActionClass().getName();
         ClassLoader cl = configuration.customActionClassLoader;
         if (configuration.useContextClassLoaderForCustomActions) {
             cl = Thread.currentThread().getContextClassLoader();
@@ -1989,11 +1989,11 @@ public final class SCXMLReader {
         try {
             clazz = cl.loadClass(className);
             actionObject = clazz.newInstance();
-        } catch (ClassNotFoundException cnfe) {
+        } catch (final ClassNotFoundException cnfe) {
             throw new XMLStreamException("Cannot find custom action class:" + className, cnfe);
-        } catch (IllegalAccessException iae) {
+        } catch (final IllegalAccessException iae) {
             throw new XMLStreamException("Cannot access custom action class:" + className, iae);
-        } catch (InstantiationException ie) {
+        } catch (final InstantiationException ie) {
             throw new XMLStreamException("Cannot instantiate custom action class:" + className, ie);
         }
         if (!(actionObject instanceof Action)) {
@@ -2001,35 +2001,35 @@ public final class SCXMLReader {
         }
 
         // Set the attribute values as properties
-        Action action = (Action) actionObject;
+        final Action action = (Action) actionObject;
 
-        CustomActionWrapper actionWrapper = new CustomActionWrapper();
+        final CustomActionWrapper actionWrapper = new CustomActionWrapper();
         actionWrapper.setAction(action);
         actionWrapper.setPrefix(reader.getPrefix());
         actionWrapper.setLocalName(reader.getLocalName());
-        Map<String, String> namespaces = readNamespaces(reader);
+        final Map<String, String> namespaces = readNamespaces(reader);
         if (namespaces != null) {
             actionWrapper.getNamespaces().putAll(namespaces);
         }
 
-        Map<String, String> attributes = new HashMap<>();
+        final Map<String, String> attributes = new HashMap<>();
         for (int i = 0; i < reader.getAttributeCount(); i++) {
-            String name = reader.getAttributeLocalName(i);
-            String qname = createQualifiedName(reader.getAttributePrefix(i), name);
-            String value = reader.getAttributeValue(i);
+            final String name = reader.getAttributeLocalName(i);
+            final String qname = createQualifiedName(reader.getAttributePrefix(i), name);
+            final String value = reader.getAttributeValue(i);
             attributes.put(qname, value);
-            String setter = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
+            final String setter = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
             Method method;
             try {
                 method = clazz.getMethod(setter, String.class);
                 method.invoke(action, value);
-            } catch (NoSuchMethodException nsme) {
+            } catch (final NoSuchMethodException nsme) {
                 logger.warn("No method: " + setter + "(String) found in custom action class: " + className+ " for "
                         + qname + "=\"" + value + "\". Attribute ignored");
-            } catch (InvocationTargetException ite) {
+            } catch (final InvocationTargetException ite) {
                 throw new XMLStreamException("Exception calling method:" + setter + "(String) in custom action class:"
                         + className, ite);
-            } catch (IllegalAccessException iae) {
+            } catch (final IllegalAccessException iae) {
                 throw new XMLStreamException("Cannot access method: " + setter +"(String) in custom action class: "
                         + className, iae);
             }
@@ -2069,11 +2069,11 @@ public final class SCXMLReader {
     private static void readParsedValue(final XMLStreamReader reader, final Configuration configuration,
                                         final ParsedValueContainer valueContainer, final boolean invokeContent)
             throws XMLStreamException, ModelException {
-        Element element = readElement(reader);
+        final Element element = readElement(reader);
         if (element.hasChildNodes()) {
-            NodeList children = element.getChildNodes();
+            final NodeList children = element.getChildNodes();
             Node child = children.item(0);
-            boolean cdata = child.getNodeType() == Node.CDATA_SECTION_NODE;
+            final boolean cdata = child.getNodeType() == Node.CDATA_SECTION_NODE;
             if (invokeContent) {
                 // search or and only use first <scxml> element
                 if (child.getNodeType() != Node.ELEMENT_NODE) {
@@ -2090,7 +2090,7 @@ public final class SCXMLReader {
                         // transform <invoke><content><scxml> back to text
                         try {
                             valueContainer.setParsedValue(new NodeTextValue(ContentParser.DEFAULT_PARSER.toXml(child)));
-                        } catch (IOException e) {
+                        } catch (final IOException e) {
                             throw new XMLStreamException(e);
                         }
                     }
@@ -2101,11 +2101,11 @@ public final class SCXMLReader {
                 }
             }
             else if (children.getLength() == 1 && (cdata || child.getNodeType() == Node.TEXT_NODE )) {
-                String text = ContentParser.trimContent(child.getNodeValue());
+                final String text = ContentParser.trimContent(child.getNodeValue());
                 if (ContentParser.hasJsonSignature(text)) {
                     try {
                         valueContainer.setParsedValue(new JsonValue(configuration.contentParser.parseJson(text), cdata));
-                    } catch (IOException e) {
+                    } catch (final IOException e) {
                         throw new ModelException(e);
                     }
                 }
@@ -2116,7 +2116,7 @@ public final class SCXMLReader {
             } else if (children.getLength() == 1) {
                 valueContainer.setParsedValue(new NodeValue(child));
             } else {
-                ArrayList<Node> nodeList = new ArrayList<>();
+                final ArrayList<Node> nodeList = new ArrayList<>();
                 for (int i = 0, size = children.getLength(); i < size; i++) {
                     nodeList.add(children.item(i));
                 }
@@ -2141,12 +2141,12 @@ public final class SCXMLReader {
         Document document;
         try {
             document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
-        } catch (ParserConfigurationException pce) {
+        } catch (final ParserConfigurationException pce) {
             throw new XMLStreamException(ERR_PARSER_CFG);
         }
 
         // This root element will be returned, add any attributes as specified
-        Element root = document.createElementNS(reader.getNamespaceURI(), createQualifiedName(reader.getPrefix(), reader.getLocalName()));
+        final Element root = document.createElementNS(reader.getNamespaceURI(), createQualifiedName(reader.getPrefix(), reader.getLocalName()));
         document.appendChild(root);
 
         boolean children = false, cdata = false;
@@ -2162,10 +2162,10 @@ public final class SCXMLReader {
                         root.setTextContent(null);
                     }
                     children = true;
-                    Element elem = document.createElementNS(reader.getNamespaceURI(),
+                    final Element elem = document.createElementNS(reader.getNamespaceURI(),
                             createQualifiedName(reader.getPrefix(), reader.getLocalName()));
                     for (int i = 0; i < reader.getAttributeCount(); i++) {
-                        Attr attr = document.createAttributeNS(reader.getAttributeNamespace(i),
+                        final Attr attr = document.createAttributeNS(reader.getAttributeNamespace(i),
                                 createQualifiedName(reader.getAttributePrefix(i), reader.getAttributeLocalName(i)));
                         attr.setValue(reader.getAttributeValue(i));
                         elem.setAttributeNodeNS(attr);
@@ -2199,7 +2199,7 @@ public final class SCXMLReader {
             }
         }
         if (!children && root.hasChildNodes() && root.getChildNodes().getLength() > 1) {
-            String text = root.getTextContent().trim();
+            final String text = root.getTextContent().trim();
             if (!cdata) {
                 root.setTextContent(text);
             } else {
@@ -2222,7 +2222,7 @@ public final class SCXMLReader {
     private static String readBody(final XMLStreamReader reader)
             throws XMLStreamException {
 
-        StringBuilder body = new StringBuilder();
+        final StringBuilder body = new StringBuilder();
 
         // Add all body content to StringBuilder
         loop : while (reader.hasNext()) {
@@ -2261,7 +2261,7 @@ public final class SCXMLReader {
      * @param input input string to check if null or empty after trim
      * @return null if input is null or empty after trim()
      */
-    private static String nullIfEmpty(String input) {
+    private static String nullIfEmpty(final String input) {
         return input == null || input.trim().length()==0 ? null : input.trim();
     }
 
@@ -2290,11 +2290,11 @@ public final class SCXMLReader {
     private static Boolean readBooleanAV(final XMLStreamReader reader, final String elementName,
                                          final String attrLocalName)
             throws ModelException {
-        String value = nullIfEmpty(reader.getAttributeValue(XMLNS_DEFAULT, attrLocalName));
-        Boolean result = "true".equals(value) ? Boolean.TRUE : "false".equals(value) ? Boolean.FALSE : null;
+        final String value = nullIfEmpty(reader.getAttributeValue(XMLNS_DEFAULT, attrLocalName));
+        final Boolean result = "true".equals(value) ? Boolean.TRUE : "false".equals(value) ? Boolean.FALSE : null;
         if (result == null && value != null) {
-            MessageFormat msgFormat = new MessageFormat(ERR_ATTRIBUTE_NOT_BOOLEAN);
-            String errMsg = msgFormat.format(new Object[] {value, attrLocalName, elementName, reader.getLocation()});
+            final MessageFormat msgFormat = new MessageFormat(ERR_ATTRIBUTE_NOT_BOOLEAN);
+            final String errMsg = msgFormat.format(new Object[] {value, attrLocalName, elementName, reader.getLocation()});
             throw new ModelException(errMsg);
         }
         return result;
@@ -2312,7 +2312,7 @@ public final class SCXMLReader {
      */
     private static String readRequiredAV(final XMLStreamReader reader, final String elementName, final String attrLocalName)
             throws ModelException {
-        String value = nullIfEmpty(reader.getAttributeValue(XMLNS_DEFAULT, attrLocalName));
+        final String value = nullIfEmpty(reader.getAttributeValue(XMLNS_DEFAULT, attrLocalName));
         if (value == null) {
             reportMissingAttribute(reader.getLocation(), elementName, attrLocalName);
         }
@@ -2327,8 +2327,8 @@ public final class SCXMLReader {
             id = scxml.generateTransitionTargetId();
         }
         else if (id.startsWith(SCXML.GENERATED_TT_ID_PREFIX)) {
-            MessageFormat msgFormat = new MessageFormat(ERR_RESERVED_ID_PREFIX);
-            String errMsg = msgFormat.format(new Object[] {elementName, id, reader.getLocation()});
+            final MessageFormat msgFormat = new MessageFormat(ERR_RESERVED_ID_PREFIX);
+            final String errMsg = msgFormat.format(new Object[] {elementName, id, reader.getLocation()});
             throw new ModelException(errMsg);
         }
         return id;
@@ -2362,8 +2362,8 @@ public final class SCXMLReader {
      */
     private static void reportMissingAttribute(final Location location, final String elementName, final String attrLocalName)
             throws ModelException {
-        MessageFormat msgFormat = new MessageFormat(ERR_REQUIRED_ATTRIBUTE_MISSING);
-        String errMsg = msgFormat.format(new Object[] {elementName, attrLocalName, location});
+        final MessageFormat msgFormat = new MessageFormat(ERR_REQUIRED_ATTRIBUTE_MISSING);
+        final String errMsg = msgFormat.format(new Object[] {elementName, attrLocalName, location});
         throw new ModelException(errMsg);
     }
 
@@ -2385,7 +2385,7 @@ public final class SCXMLReader {
                                              final String parent, final String nsURI, final String name)
             throws XMLStreamException, ModelException {
 
-        StringBuilder sb = new StringBuilder();
+        final StringBuilder sb = new StringBuilder();
         sb.append("Ignoring unknown or invalid element <").append(name)
                 .append("> in namespace \"").append(nsURI)
                 .append("\" as child of <").append(parent)
@@ -2396,7 +2396,7 @@ public final class SCXMLReader {
         if (configuration.isStrict()) {
             throw new ModelException(sb.toString());
         }
-        XMLReporter reporter = configuration.reporter;
+        final XMLReporter reporter = configuration.reporter;
         if (reporter != null) {
             reporter.report(sb.toString(), "COMMONS_SCXML", null, reader.getLocation());
         }
@@ -2411,7 +2411,7 @@ public final class SCXMLReader {
     private static void skipToEndElement(final XMLStreamReader reader) throws XMLStreamException {
         int elementsToSkip = 1;
         while (elementsToSkip > 0 && reader.hasNext()) {
-            int next = reader.next();
+            final int next = reader.next();
             if (next == XMLStreamConstants.START_ELEMENT) {
                 elementsToSkip++;
             }
@@ -2439,7 +2439,7 @@ public final class SCXMLReader {
                                                final String element, final String attr, final String value)
             throws XMLStreamException, ModelException {
 
-        StringBuilder sb = new StringBuilder();
+        final StringBuilder sb = new StringBuilder();
         sb.append("Ignoring unknown or invalid <").append(element).append("> attribute ").append(attr)
                 .append("=\"").append(value).append("\" at ").append(reader.getLocation());
         if (!configuration.isSilent() && logger.isWarnEnabled()) {
@@ -2448,7 +2448,7 @@ public final class SCXMLReader {
         if (configuration.isStrict()) {
             throw new ModelException(sb.toString());
         }
-        XMLReporter reporter = configuration.reporter;
+        final XMLReporter reporter = configuration.reporter;
         if (reporter != null) {
             reporter.report(sb.toString(), "COMMONS_SCXML", null, reader.getLocation());
         }
@@ -2472,7 +2472,7 @@ public final class SCXMLReader {
                                              final String element, final String attr, final String conflictingAttr)
             throws XMLStreamException, ModelException {
 
-        StringBuilder sb = new StringBuilder();
+        final StringBuilder sb = new StringBuilder();
         sb.append("Ignoring <").append(element).append("> attribute \"").append(conflictingAttr)
                 .append("\" which conflicts with already defined attribute \"").append(attr)
                 .append("\" at ").append(reader.getLocation());
@@ -2482,7 +2482,7 @@ public final class SCXMLReader {
         if (configuration.isStrict()) {
             throw new ModelException(sb.toString());
         }
-        XMLReporter reporter = configuration.reporter;
+        final XMLReporter reporter = configuration.reporter;
         if (reporter != null) {
             reporter.report(sb.toString(), "COMMONS_SCXML", null, reader.getLocation());
         }
@@ -2518,7 +2518,7 @@ public final class SCXMLReader {
         if (factory.isPropertySupported(XMLInputFactory_JDK_PROP_REPORT_CDATA)) {
             factory.setProperty(XMLInputFactory_JDK_PROP_REPORT_CDATA, Boolean.TRUE);
         }
-        for (Map.Entry<String, Object> property : configuration.properties.entrySet()) {
+        for (final Map.Entry<String, Object> property : configuration.properties.entrySet()) {
             if (factory.isPropertySupported(property.getKey())) {
                 factory.setProperty(property.getKey(), property.getValue());
             }
@@ -2529,8 +2529,8 @@ public final class SCXMLReader {
         // Consolidate InputStream options
         InputStream urlStream = null;
         if (url != null || path != null) {
-            URL scxml = (url != null ? url : new URL(path));
-            URLConnection conn = scxml.openConnection();
+            final URL scxml = (url != null ? url : new URL(path));
+            final URLConnection conn = scxml.openConnection();
             conn.setUseCaches(false);
             urlStream = conn.getInputStream();
         } else if (stream != null) {
@@ -2543,16 +2543,16 @@ public final class SCXMLReader {
         if (configuration.validate) {
             // Validation requires us to use a Source
 
-            URL scxmlSchema = new URL("TODO"); // TODO, point to appropriate location
-            SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
+            final URL scxmlSchema = new URL("TODO"); // TODO, point to appropriate location
+            final SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
             Schema schema;
             try {
                 schema = schemaFactory.newSchema(scxmlSchema);
-            } catch (SAXException se) {
+            } catch (final SAXException se) {
                 throw new XMLStreamException("Failed to create SCXML Schema for validation", se);
             }
 
-            Validator validator = schema.newValidator();
+            final Validator validator = schema.newValidator();
             validator.setErrorHandler(new SimpleErrorHandler());
 
             Source src = null;
@@ -2575,7 +2575,7 @@ public final class SCXMLReader {
             xsr = factory.createXMLStreamReader(src);
             try {
                 validator.validate(src);
-            } catch (SAXException se) {
+            } catch (final SAXException se) {
                 throw new XMLStreamException("Failed to create apply SCXML Validator", se);
             }
 
@@ -2915,7 +2915,7 @@ public final class SCXMLReader {
          * @param silent silent mode (whether to read models silently without any model error warning logs)
          * @see #silent
          */
-        public void setSilent(boolean silent) {
+        public void setSilent(final boolean silent) {
             this.silent = silent;
         }
 
@@ -2933,7 +2933,7 @@ public final class SCXMLReader {
          * @param strict strict model (whether to check model strictly with throwing exception on any model error)
          * @see #strict
          */
-        public void setStrict(boolean strict) {
+        public void setStrict(final boolean strict) {
             this.strict = strict;
         }
     }
diff --git a/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java b/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
index fa7fde5..07e084e 100644
--- a/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
+++ b/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
@@ -305,11 +305,11 @@ public class SCXMLWriter {
         }
 
         // Make the writer an arbitrary bit larger than the source string
-        int len = str.length();
-        StringWriter stringWriter = new StringWriter(len + 8);
+        final int len = str.length();
+        final StringWriter stringWriter = new StringWriter(len + 8);
 
         for (int i = 0; i < len; i++) {
-            char c = str.charAt(i);
+            final char c = str.charAt(i);
             String entityName = null; // Look for XML 1.0 predefined entities
             switch (c) {
                 case '"':
@@ -361,7 +361,7 @@ public class SCXMLWriter {
                                       final OutputStream scxmlStream, final Writer scxmlWriter, final Result scxmlResult)
             throws IOException, XMLStreamException {
 
-        XMLStreamWriter writer = getWriter(configuration, scxmlStream, scxmlWriter, scxmlResult);
+        final XMLStreamWriter writer = getWriter(configuration, scxmlStream, scxmlWriter, scxmlResult);
         writeDocument(writer, configuration, scxml);
         writer.flush();
         writer.close();
@@ -369,7 +369,7 @@ public class SCXMLWriter {
             configuration.internalWriter.flush();
         }
         if (configuration.usePrettyPrint) {
-            Writer prettyPrintWriter = (scxmlWriter != null ? scxmlWriter : new StringWriter());
+            final Writer prettyPrintWriter = (scxmlWriter != null ? scxmlWriter : new StringWriter());
             writePretty(configuration, scxmlStream, prettyPrintWriter, scxmlResult);
             if (configuration.writeToString) {
                 prettyPrintWriter.flush();
@@ -419,8 +419,8 @@ public class SCXMLWriter {
         writer.writeNamespace(null, SCXMLConstants.XMLNS_SCXML);
 //        writer.writeNamespace("cs", XMLNS_COMMONS_SCXML);
         if (scxml.getNamespaces() != null) {
-            for (Map.Entry<String, String> entry : scxml.getNamespaces().entrySet()) {
-                String key = entry.getKey();
+            for (final Map.Entry<String, String> entry : scxml.getNamespaces().entrySet()) {
+                final String key = entry.getKey();
                 if (key != null && key.trim().length() > 0) {
                     writer.writeNamespace(key, entry.getValue());
                 }
@@ -443,7 +443,7 @@ public class SCXMLWriter {
 
         // Write global script if defined
         if (scxml.getGlobalScript() != null) {
-            Script s = scxml.getGlobalScript();
+            final Script s = scxml.getGlobalScript();
             writer.writeStartElement(SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_SCRIPT);
             if (s.getSrc() != null) {
                 writeAV(writer, SCXMLConstants.ATTR_SRC, s.getSrc());
@@ -477,7 +477,7 @@ public class SCXMLWriter {
         }
 
         writer.writeStartElement(SCXMLConstants.ELEM_DATAMODEL);
-        for (Data d : datamodel.getData()) {
+        for (final Data d : datamodel.getData()) {
             writer.writeStartElement(SCXMLConstants.ELEM_DATA);
             writeAV(writer, SCXMLConstants.ATTR_ID, d.getId());
             writeAV(writer, SCXMLConstants.ATTR_SRC, escapeXML(d.getSrc()));
@@ -518,21 +518,21 @@ public class SCXMLWriter {
         writeInitial(writer, state.getInitial());
         writeDatamodel(writer, state.getDatamodel());
         writeHistory(writer, state.getHistory());
-        for (OnEntry onentry : state.getOnEntries()) {
+        for (final OnEntry onentry : state.getOnEntries()) {
             writeOnEntry(writer, onentry);
         }
 
-        for (Transition t : state.getTransitionsList()) {
+        for (final Transition t : state.getTransitionsList()) {
             writeTransition(writer, t);
         }
 
-        for (Invoke inv : state.getInvokes()) {
+        for (final Invoke inv : state.getInvokes()) {
             writeInvoke(writer, inv);
         }
 
         writeEnterableStates(writer, state.getChildren());
 
-        for (OnExit onexit : state.getOnExits()) {
+        for (final OnExit onexit : state.getOnExits()) {
             writeOnExit(writer, onexit);
         }
         writer.writeEndElement();
@@ -554,21 +554,21 @@ public class SCXMLWriter {
 
         writeDatamodel(writer, parallel.getDatamodel());
         writeHistory(writer, parallel.getHistory());
-        for (OnEntry onentry : parallel.getOnEntries()) {
+        for (final OnEntry onentry : parallel.getOnEntries()) {
             writeOnEntry(writer, onentry);
         }
 
-        for (Transition t : parallel.getTransitionsList()) {
+        for (final Transition t : parallel.getTransitionsList()) {
             writeTransition(writer, t);
         }
 
-        for (Invoke inv : parallel.getInvokes()) {
+        for (final Invoke inv : parallel.getInvokes()) {
             writeInvoke(writer, inv);
         }
 
         writeEnterableStates(writer, parallel.getChildren());
 
-        for (OnExit onexit : parallel.getOnExits()) {
+        for (final OnExit onexit : parallel.getOnExits()) {
             writeOnExit(writer, onexit);
         }
         writer.writeEndElement();
@@ -587,10 +587,10 @@ public class SCXMLWriter {
 
         writer.writeStartElement(SCXMLConstants.ELEM_FINAL);
         writeTransitionTargetId(writer, end);
-        for (OnEntry onentry : end.getOnEntries()) {
+        for (final OnEntry onentry : end.getOnEntries()) {
             writeOnEntry(writer, onentry);
         }
-        for (OnExit onexit : end.getOnExits()) {
+        for (final OnExit onexit : end.getOnExits()) {
             writeOnExit(writer, onexit);
         }
         if (end.getDoneData() != null) {
@@ -612,7 +612,7 @@ public class SCXMLWriter {
      */
     private static void writeEnterableStates(final XMLStreamWriter writer, final List<EnterableState> states)
             throws XMLStreamException {
-        for (EnterableState es : states) {
+        for (final EnterableState es : states) {
             if (es instanceof Final) {
                 writeFinal(writer, (Final) es);
             } else if (es instanceof State) {
@@ -659,7 +659,7 @@ public class SCXMLWriter {
             return;
         }
 
-        for (History h : history) {
+        for (final History h : history) {
             writer.writeStartElement(SCXMLConstants.ELEM_HISTORY);
             writeTransitionTargetId(writer, h);
             if (h.isDeep()) {
@@ -795,9 +795,9 @@ public class SCXMLWriter {
         if (actions == null) {
             return;
         }
-        for (Action a : actions) {
+        for (final Action a : actions) {
             if (a instanceof Assign) {
-                Assign asn = (Assign) a;
+                final Assign asn = (Assign) a;
                 writer.writeStartElement(SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_ASSIGN);
                 writeAV(writer, SCXMLConstants.ATTR_LOCATION, asn.getLocation());
                 writeAV(writer, SCXMLConstants.ATTR_SRC, asn.getSrc());
@@ -807,25 +807,25 @@ public class SCXMLWriter {
             } else if (a instanceof Send) {
                 writeSend(writer, (Send) a);
             } else if (a instanceof Cancel) {
-                Cancel c = (Cancel) a;
+                final Cancel c = (Cancel) a;
                 writer.writeStartElement(SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_CANCEL);
                 writeAV(writer, SCXMLConstants.ATTR_SENDID, c.getSendid());
                 writer.writeEndElement();
             } else if (a instanceof Foreach) {
                 writeForeach(writer, (Foreach) a);
             } else if (a instanceof Log) {
-                Log lg = (Log) a;
+                final Log lg = (Log) a;
                 writer.writeStartElement(SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_LOG);
                 writeAV(writer, SCXMLConstants.ATTR_LABEL, lg.getLabel());
                 writeAV(writer, SCXMLConstants.ATTR_EXPR, escapeXML(lg.getExpr()));
                 writer.writeEndElement();
             } else if (a instanceof Raise) {
-                Raise e = (Raise) a;
+                final Raise e = (Raise) a;
                 writer.writeStartElement(SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_RAISE);
                 writeAV(writer, SCXMLConstants.ATTR_EVENT, e.getEvent());
                 writer.writeEndElement();
             } else if (a instanceof Script) {
-                Script s = (Script) a;
+                final Script s = (Script) a;
                 writer.writeStartElement(SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_SCRIPT);
                 if (s.getSrc() != null) {
                     writeAV(writer, SCXMLConstants.ATTR_SRC, s.getSrc());
@@ -838,19 +838,19 @@ public class SCXMLWriter {
             } else if (a instanceof Else) {
                 writer.writeEmptyElement(SCXMLConstants.ELEM_ELSE);
             } else if (a instanceof ElseIf) {
-                ElseIf eif = (ElseIf) a;
+                final ElseIf eif = (ElseIf) a;
                 writer.writeStartElement(SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_ELSEIF);
                 writeAV(writer, SCXMLConstants.ATTR_COND, escapeXML(eif.getCond()));
                 writer.writeEndElement();
             } else if (a instanceof Var) {
                 // 'naked' Var custom action, not wrapped in a CustomActionWrapper
-                Var v = (Var) a;
+                final Var v = (Var) a;
                 writer.writeStartElement(SCXMLConstants.XMLNS_COMMONS_SCXML, SCXMLConstants.ELEM_VAR);
                 writeAV(writer, SCXMLConstants.ATTR_NAME, v.getName());
                 writeAV(writer, SCXMLConstants.ATTR_EXPR, escapeXML(v.getExpr()));
                 writer.writeEndElement();
             } else if (a instanceof CustomActionWrapper) {
-                CustomActionWrapper actionWrapper = (CustomActionWrapper)a;
+                final CustomActionWrapper actionWrapper = (CustomActionWrapper)a;
                 writer.writeStartElement(createQualifiedName(actionWrapper.getPrefix(), actionWrapper.getLocalName()));
                 if (actionWrapper.getAttributes() != null) {
                     for (final String attr : actionWrapper.getAttributes().keySet()) {
@@ -911,7 +911,7 @@ public class SCXMLWriter {
      */
     private static void writeParams(final XMLStreamWriter writer, final List<Param> params)
             throws XMLStreamException {
-        for (Param p : params) {
+        for (final Param p : params) {
             writer.writeStartElement(SCXMLConstants.ELEM_PARAM);
             writeAV(writer, SCXMLConstants.ATTR_NAME, p.getName());
             writeAV(writer, SCXMLConstants.ATTR_LOCATION, p.getLocation());
@@ -1012,7 +1012,7 @@ public class SCXMLWriter {
                         }
                         break;
                     case NODE_LIST:
-                        List<Node> nodeList = ((NodeListValue)parsedValue).getValue();
+                        final List<Node> nodeList = ((NodeListValue)parsedValue).getValue();
                         if (!nodeList.isEmpty() && XFORMER == null) {
                             writer.writeComment("element body was not serialized");
                         } else {
@@ -1026,7 +1026,7 @@ public class SCXMLWriter {
                         break;
                 }
             }
-        } catch (IOException e) {
+        } catch (final IOException e) {
             throw new XMLStreamException(e);
         }
     }
@@ -1042,13 +1042,13 @@ public class SCXMLWriter {
     private static void writeNode(final XMLStreamWriter writer, final Node node)
             throws XMLStreamException {
 
-        Source input = new DOMSource(node);
-        StringWriter out = new StringWriter();
-        Result output = new StreamResult(out);
+        final Source input = new DOMSource(node);
+        final StringWriter out = new StringWriter();
+        final Result output = new StreamResult(out);
         try {
             XFORMER.transform(input, output);
-        } catch (TransformerException te) {
-            org.apache.commons.logging.Log log = LogFactory.getLog(SCXMLWriter.class);
+        } catch (final TransformerException te) {
+            final org.apache.commons.logging.Log log = LogFactory.getLog(SCXMLWriter.class);
             log.error(te.getMessage(), te);
             writer.writeComment("TransformerException: Node was not serialized");
         }
@@ -1115,7 +1115,7 @@ public class SCXMLWriter {
 
         // There isn't any portable way to write pretty using the JDK 1.6 StAX API
         configuration.internalWriter.flush();
-        Source prettyPrintSource = new StreamSource(new StringReader(configuration.internalWriter.toString()));
+        final Source prettyPrintSource = new StreamSource(new StringReader(configuration.internalWriter.toString()));
         Result prettyPrintResult = null;
         if (scxmlStream != null) {
             prettyPrintResult = new StreamResult(scxmlStream);
@@ -1125,15 +1125,15 @@ public class SCXMLWriter {
             prettyPrintResult = scxmlResult;
         }
 
-        TransformerFactory factory = TransformerFactory.newInstance();
+        final TransformerFactory factory = TransformerFactory.newInstance();
         try {
-            Transformer transformer = factory.newTransformer();
+            final Transformer transformer = factory.newTransformer();
             if (configuration.encoding != null) {
                 transformer.setOutputProperty(OutputKeys.ENCODING, configuration.encoding);
             }
             transformer.setOutputProperty(OutputKeys.INDENT, "yes");
             transformer.transform(prettyPrintSource, prettyPrintResult);
-        } catch (TransformerException te) {
+        } catch (final TransformerException te) {
             throw new XMLStreamException("TransformerException while pretty printing SCXML", te);
         }
     }
@@ -1156,14 +1156,14 @@ public class SCXMLWriter {
             throws XMLStreamException {
 
         // Instantiate the XMLOutputFactory
-        XMLOutputFactory factory = XMLOutputFactory.newInstance();
+        final XMLOutputFactory factory = XMLOutputFactory.newInstance();
         /*
         if (configuration.factoryId != null && configuration.factoryClassLoader != null) {
             // TODO StAX API bug means we can't use custom factories yet
             //factory = XMLOutputFactory.newInstance(configuration.factoryId, configuration.factoryClassLoader);
         }
         */
-        for (Map.Entry<String, Object> property : configuration.properties.entrySet()) {
+        for (final Map.Entry<String, Object> property : configuration.properties.entrySet()) {
             factory.setProperty(property.getKey(), property.getValue());
         }
 
@@ -1191,16 +1191,16 @@ public class SCXMLWriter {
      */
     private static Transformer getTransformer() {
         Transformer transformer;
-        Properties outputProps = new Properties();
+        final Properties outputProps = new Properties();
         outputProps.put(OutputKeys.OMIT_XML_DECLARATION, "yes");
         outputProps.put(OutputKeys.STANDALONE, "no");
         outputProps.put(OutputKeys.INDENT, "yes");
         try {
-            TransformerFactory tfFactory = TransformerFactory.newInstance();
+            final TransformerFactory tfFactory = TransformerFactory.newInstance();
             transformer = tfFactory.newTransformer();
             transformer.setOutputProperties(outputProps);
         } catch (TransformerFactoryConfigurationError | TransformerConfigurationException t) {
-            org.apache.commons.logging.Log log = LogFactory.getLog(SCXMLWriter.class);
+            final org.apache.commons.logging.Log log = LogFactory.getLog(SCXMLWriter.class);
             log.error(t.getMessage(), t);
             return null;
         }
diff --git a/src/main/java/org/apache/commons/scxml2/model/Assign.java b/src/main/java/org/apache/commons/scxml2/model/Assign.java
index a4ccb20..d52684b 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Assign.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Assign.java
@@ -135,10 +135,10 @@ public class Assign extends Action implements ParsedValueContainer {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
-        EnterableState parentState = getParentEnterableState();
-        Context ctx = exctx.getContext(parentState);
-        Evaluator evaluator = exctx.getEvaluator();
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+        final EnterableState parentState = getParentEnterableState();
+        final Context ctx = exctx.getContext(parentState);
+        final Evaluator evaluator = exctx.getEvaluator();
         Object data = null;
         if (expr != null) {
             data = evaluator.eval(ctx, expr);
diff --git a/src/main/java/org/apache/commons/scxml2/model/Cancel.java b/src/main/java/org/apache/commons/scxml2/model/Cancel.java
index 33c79f2..426e703 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Cancel.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Cancel.java
@@ -81,7 +81,7 @@ public class Cancel extends Action {
      * 
      * @param sendidexpr the expression that evaluates to the ID of the send message that should be cancelled.
      */
-    public void setSendidexpr(String sendidexpr) {
+    public void setSendidexpr(final String sendidexpr) {
         this.sendidexpr = sendidexpr;
     }
 
@@ -89,10 +89,10 @@ public class Cancel extends Action {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
-        EnterableState parentState = getParentEnterableState();
-        Context ctx = exctx.getContext(parentState);
-        Evaluator eval = exctx.getEvaluator();
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+        final EnterableState parentState = getParentEnterableState();
+        final Context ctx = exctx.getContext(parentState);
+        final Evaluator eval = exctx.getEvaluator();
 
         String sendidValue = sendid;
         if (sendidValue == null && sendidexpr != null) {
diff --git a/src/main/java/org/apache/commons/scxml2/model/CustomAction.java b/src/main/java/org/apache/commons/scxml2/model/CustomAction.java
index db13784..57f732d 100644
--- a/src/main/java/org/apache/commons/scxml2/model/CustomAction.java
+++ b/src/main/java/org/apache/commons/scxml2/model/CustomAction.java
@@ -66,17 +66,17 @@ public class CustomAction {
     /**
      * The namespace this custom action belongs to.
      */
-    private String namespaceURI;
+    private final String namespaceURI;
 
     /**
      * The local name of the custom action.
      */
-    private String localName;
+    private final String localName;
 
     /**
      * The implementation of this custom action.
      */
-    private Class<? extends Action> actionClass;
+    private final Class<? extends Action> actionClass;
 
     /**
      * Constructor, if the namespace or local name is null or empty,
@@ -90,7 +90,7 @@ public class CustomAction {
      */
     public CustomAction(final String namespaceURI, final String localName,
             final Class<? extends Action> actionClass) {
-        Log log = LogFactory.getLog(CustomAction.class);
+        final Log log = LogFactory.getLog(CustomAction.class);
         if (namespaceURI == null || namespaceURI.trim().length() == 0) {
             log.error(ERR_NO_NAMESPACE);
             throw new IllegalArgumentException(ERR_NO_NAMESPACE);
diff --git a/src/main/java/org/apache/commons/scxml2/model/ElseIf.java b/src/main/java/org/apache/commons/scxml2/model/ElseIf.java
index 4d0e703..834c596 100644
--- a/src/main/java/org/apache/commons/scxml2/model/ElseIf.java
+++ b/src/main/java/org/apache/commons/scxml2/model/ElseIf.java
@@ -64,7 +64,7 @@ public class ElseIf extends Action {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
         // nothing to do, the <if> container will take care of this
     }
 
diff --git a/src/main/java/org/apache/commons/scxml2/model/EnterableState.java b/src/main/java/org/apache/commons/scxml2/model/EnterableState.java
index 39f5917..dc6585e 100644
--- a/src/main/java/org/apache/commons/scxml2/model/EnterableState.java
+++ b/src/main/java/org/apache/commons/scxml2/model/EnterableState.java
@@ -60,7 +60,7 @@ public abstract class EnterableState extends TransitionTarget implements Documen
      * @param order the document order
      * @see DocumentOrder
      */
-    public final void setOrder(int order) {
+    public final void setOrder(final int order) {
         this.order = order;
     }
 
diff --git a/src/main/java/org/apache/commons/scxml2/model/Final.java b/src/main/java/org/apache/commons/scxml2/model/Final.java
index 4ca71aa..a9c6197 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Final.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Final.java
@@ -60,7 +60,7 @@ public class Final extends EnterableState {
      * Set the parent State.
      * @param parent The parent state to set
      */
-    public final void setParent(State parent) {
+    public final void setParent(final State parent) {
         super.setParent(parent);
     }
 
@@ -80,19 +80,19 @@ public class Final extends EnterableState {
         this.doneData = doneData;
     }
 
-    public Object processDoneData(SCXMLExecutionContext exctx) throws ModelException {
+    public Object processDoneData(final SCXMLExecutionContext exctx) throws ModelException {
         Object result = null;
         if (doneData != null) {
             try {
-                Content content = doneData.getContent();
-                Evaluator eval = exctx.getEvaluator();
-                Context ctx = exctx.getScInstance().getGlobalContext();
+                final Content content = doneData.getContent();
+                final Evaluator eval = exctx.getEvaluator();
+                final Context ctx = exctx.getScInstance().getGlobalContext();
                 if (content != null) {
                     if (content.getExpr() != null) {
                         Object evalResult;
                         try {
                             evalResult = eval.eval(ctx, content.getExpr());
-                        } catch (SCXMLExpressionException e) {
+                        } catch (final SCXMLExpressionException e) {
                             exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION,
                                     TriggerEvent.ERROR_EVENT).build());
                             exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR,
@@ -105,14 +105,14 @@ public class Final extends EnterableState {
                         result = eval.cloneData(content.getParsedValue().getValue());
                     }
                 } else {
-                    Map<String, Object> payloadDataMap = new LinkedHashMap<>();
+                    final Map<String, Object> payloadDataMap = new LinkedHashMap<>();
                     PayloadBuilder.addParamsToPayload(exctx.getScInstance().getGlobalContext(),
                             exctx.getEvaluator(), doneData.getParams(), payloadDataMap);
                     if (!payloadDataMap.isEmpty()) {
                         result = payloadDataMap;
                     }
                 }
-            } catch (SCXMLExpressionException e) {
+            } catch (final SCXMLExpressionException e) {
                 result = null;
                 exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
                 exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR,
diff --git a/src/main/java/org/apache/commons/scxml2/model/Foreach.java b/src/main/java/org/apache/commons/scxml2/model/Foreach.java
index 73ace8f..b79824a 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Foreach.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Foreach.java
@@ -92,10 +92,10 @@ public class Foreach extends Action implements ActionsContainer {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
-        Context ctx = exctx.getContext(getParentEnterableState());
-        Evaluator eval = exctx.getEvaluator();
-        Object arrayObject = eval.eval(ctx,array);
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+        final Context ctx = exctx.getContext(getParentEnterableState());
+        final Evaluator eval = exctx.getEvaluator();
+        final Object arrayObject = eval.eval(ctx,array);
         if (arrayObject != null && (arrayObject.getClass().isArray() || arrayObject instanceof Iterable || arrayObject instanceof Map)) {
             if (arrayObject.getClass().isArray()) {
                 for (int currentIndex = 0, size = Array.getLength(arrayObject); currentIndex < size; currentIndex++) {
@@ -104,7 +104,7 @@ public class Foreach extends Action implements ActionsContainer {
                         ctx.setLocal(index, currentIndex);
                     }
                     // The "foreach" statement is a "container"
-                    for (Action aa : actions) {
+                    for (final Action aa : actions) {
                         aa.execute(exctx);
                     }
                 }
@@ -112,24 +112,24 @@ public class Foreach extends Action implements ActionsContainer {
             else {
                 // In case of Javascript based arrays, the (Nashorn) engine returns a ScriptObjectMirror
                 // which (also) implements Map<String, Object), so then we can/must use the map values as Iterable
-                Iterable iterable = arrayObject instanceof Iterable ? (Iterable)arrayObject : ((Map)arrayObject).values();
+                final Iterable iterable = arrayObject instanceof Iterable ? (Iterable)arrayObject : ((Map)arrayObject).values();
 
                 // Spec requires to iterate over a shallow copy of underlying array in a way that modifications to
                 // the collection during the execution of <foreach> must not affect the iteration behavior.
                 // For array objects (see above) this isn't needed, but for Iterables we don't have that guarantee
                 // so we make a copy first
-                ArrayList<Object> arrayList = new ArrayList<>();
-                for (Object value: iterable) {
+                final ArrayList<Object> arrayList = new ArrayList<>();
+                for (final Object value: iterable) {
                     arrayList.add(value);
                 }
                 int currentIndex = 0;
-                for (Object value : arrayList) {
+                for (final Object value : arrayList) {
                     eval.evalAssign(ctx, item, value);
                     if (index != null) {
                         ctx.setLocal(index, currentIndex);
                     }
                     // The "foreach" statement is a "container"
-                    for (Action aa : actions) {
+                    for (final Action aa : actions) {
                         aa.execute(exctx);
                     }
                     currentIndex++;
diff --git a/src/main/java/org/apache/commons/scxml2/model/If.java b/src/main/java/org/apache/commons/scxml2/model/If.java
index d8a8fc7..61a17b9 100644
--- a/src/main/java/org/apache/commons/scxml2/model/If.java
+++ b/src/main/java/org/apache/commons/scxml2/model/If.java
@@ -110,10 +110,10 @@ public class If extends Action implements ActionsContainer {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
-        EnterableState parentState = getParentEnterableState();
-        Context ctx = exctx.getContext(parentState);
-        Evaluator eval = exctx.getEvaluator();
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+        final EnterableState parentState = getParentEnterableState();
+        final Context ctx = exctx.getContext(parentState);
+        final Evaluator eval = exctx.getEvaluator();
         Boolean rslt;
         try {
             rslt = eval.evalCond(ctx, cond);
@@ -124,7 +124,7 @@ public class If extends Action implements ActionsContainer {
                 }
                 rslt = Boolean.FALSE;
             }
-        } catch (SCXMLExpressionException e) {
+        } catch (final SCXMLExpressionException e) {
             rslt = Boolean.FALSE;
             exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
             exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, "Treating as false due to error: "
@@ -132,7 +132,7 @@ public class If extends Action implements ActionsContainer {
         }
         execute = rslt;
         // The "if" statement is a "container"
-        for (Action aa : actions) {
+        for (final Action aa : actions) {
             if (execute && !(aa instanceof ElseIf)) {
                 aa.execute(exctx);
             } else if (execute && aa instanceof ElseIf) {
diff --git a/src/main/java/org/apache/commons/scxml2/model/Invoke.java b/src/main/java/org/apache/commons/scxml2/model/Invoke.java
index 3d88577..50530b3 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Invoke.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Invoke.java
@@ -358,14 +358,14 @@ public class Invoke extends Action implements ContentContainer, ParamsContainer
 
     @Override
     public void execute(final ActionExecutionContext axctx) throws ModelException {
-        EnterableState parentState = getParentEnterableState();
-        Context ctx = axctx.getContext(parentState);
-        SCXMLExecutionContext exctx = (SCXMLExecutionContext)ctx.getVars().get(getCurrentSCXMLExecutionContextKey());
+        final EnterableState parentState = getParentEnterableState();
+        final Context ctx = axctx.getContext(parentState);
+        final SCXMLExecutionContext exctx = (SCXMLExecutionContext)ctx.getVars().get(getCurrentSCXMLExecutionContextKey());
         if (exctx == null) {
             throw new ModelException("Missing current SCXMLExecutionContext instance in context under key: "+ getCurrentSCXMLExecutionContextKey());
         }
         try {
-            Evaluator eval = axctx.getEvaluator();
+            final Evaluator eval = axctx.getEvaluator();
 
             String typeValue = type;
             if (typeValue == null && typeexpr != null) {
@@ -378,7 +378,7 @@ public class Invoke extends Action implements ContentContainer, ParamsContainer
             if (typeValue == null) {
                 typeValue = SCXMLExecutionContext.SCXML_INVOKER_TYPE;
             }
-            Invoker invoker = exctx.newInvoker(typeValue);
+            final Invoker invoker = exctx.newInvoker(typeValue);
 
             String invokeId = getId();
             if (invokeId == null) {
@@ -394,7 +394,7 @@ public class Invoke extends Action implements ContentContainer, ParamsContainer
                 src = (String)eval.eval(ctx, getSrcexpr());
             }
             if (src != null) {
-                PathResolver pr = exctx.getStateMachine().getPathResolver();
+                final PathResolver pr = exctx.getStateMachine().getPathResolver();
                 if (pr != null) {
                     src = pr.resolvePath(src);
                 }
@@ -404,7 +404,7 @@ public class Invoke extends Action implements ContentContainer, ParamsContainer
                 if (content.getExpr() != null) {
                     try {
                         contentValue = eval.eval(ctx, content.getExpr());
-                    } catch (SCXMLExpressionException e) {
+                    } catch (final SCXMLExpressionException e) {
                         exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION,
                                 TriggerEvent.ERROR_EVENT).build());
                         exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR,
@@ -419,14 +419,14 @@ public class Invoke extends Action implements ContentContainer, ParamsContainer
                     // inline content
                 } else if (contentValue instanceof Element) {
                     // xml based content (must be assigned through data)
-                    Element contentElement = (Element)contentValue;
+                    final Element contentElement = (Element)contentValue;
                     if (SCXMLConstants.ELEM_SCXML.equals(contentElement.getLocalName()) &&
                             SCXMLConstants.XMLNS_SCXML.equals(contentElement.getNamespaceURI())) {
                         // statemachine definition: transform to string as we cannot (yet) pass XML directly to invoker
                         try {
                             contentValue = ContentParser.DEFAULT_PARSER.toXml(contentElement);
                         }
-                        catch (IOException e) {
+                        catch (final IOException e) {
                             throw new ActionExecutionError("<invoke> for state "+parentState.getId() +
                                     ": invalid <content><scxml> definition");
                         }
@@ -443,7 +443,7 @@ public class Invoke extends Action implements ContentContainer, ParamsContainer
                 throw new ActionExecutionError("<invoke> for state "+parentState.getId() +
                         ": no src and no content defined");
             }
-            Map<String, Object> payloadDataMap = new HashMap<>();
+            final Map<String, Object> payloadDataMap = new HashMap<>();
             PayloadBuilder.addNamelistDataToPayload(parentState, ctx, eval, exctx.getErrorReporter(), namelist, payloadDataMap);
             PayloadBuilder.addParamsToPayload(ctx, eval, paramsList, payloadDataMap);
             invoker.setParentSCXMLExecutor(exctx.getSCXMLExecutor());
diff --git a/src/main/java/org/apache/commons/scxml2/model/Log.java b/src/main/java/org/apache/commons/scxml2/model/Log.java
index d606b3d..f1dd18b 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Log.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Log.java
@@ -90,9 +90,9 @@ public class Log extends Action {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
-        Context ctx = exctx.getContext(getParentEnterableState());
-        Evaluator eval = exctx.getEvaluator();
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+        final Context ctx = exctx.getContext(getParentEnterableState());
+        final Evaluator eval = exctx.getEvaluator();
         exctx.getAppLog().info(label + ": " + String.valueOf(eval.eval(ctx, expr)));
     }
 }
diff --git a/src/main/java/org/apache/commons/scxml2/model/PayloadBuilder.java b/src/main/java/org/apache/commons/scxml2/model/PayloadBuilder.java
index 8ba5cf7..9ba342a 100644
--- a/src/main/java/org/apache/commons/scxml2/model/PayloadBuilder.java
+++ b/src/main/java/org/apache/commons/scxml2/model/PayloadBuilder.java
@@ -58,7 +58,7 @@ public class PayloadBuilder {
      * @param payload the payload data map to be updated
      */
     @SuppressWarnings("unchecked")
-    public static void addToPayload(final String attrName, final Object attrValue, Map<String, Object> payload) {
+    public static void addToPayload(final String attrName, final Object attrValue, final Map<String, Object> payload) {
         DataValueList valueList = null;
         Object value = payload.get(attrName);
         if (value != null) {
@@ -97,11 +97,11 @@ public class PayloadBuilder {
      * @see PayloadBuilder#addToPayload(String, Object, java.util.Map)
      */
     public static void addParamsToPayload(final Context ctx, final Evaluator evaluator, final List<Param> paramsList,
-                                          Map<String, Object> payload)
+                                          final Map<String, Object> payload)
             throws SCXMLExpressionException {
         if (!paramsList.isEmpty()) {
             Object paramValue;
-            for (Param p : paramsList) {
+            for (final Param p : paramsList) {
                 if (p.getExpr() != null) {
                     paramValue = evaluator.eval(ctx, p.getExpr());
                 }
@@ -132,13 +132,13 @@ public class PayloadBuilder {
      */
     public static void addNamelistDataToPayload(final EnterableState parentState, final Context ctx,
                                                 final Evaluator evaluator, final ErrorReporter errorReporter,
-                                                final String namelist, Map<String, Object> payload)
+                                                final String namelist, final Map<String, Object> payload)
             throws SCXMLExpressionException {
         if (namelist != null) {
-            StringTokenizer tkn = new StringTokenizer(namelist);
+            final StringTokenizer tkn = new StringTokenizer(namelist);
             while (tkn.hasMoreTokens()) {
-                String varName = tkn.nextToken();
-                Object varObj = evaluator.eval(ctx, varName);
+                final String varName = tkn.nextToken();
+                final Object varObj = evaluator.eval(ctx, varName);
                 if (varObj == null) {
                     //considered as a warning here
                     errorReporter.onError(ErrorConstants.UNDEFINED_VARIABLE, varName + " = null", parentState);
diff --git a/src/main/java/org/apache/commons/scxml2/model/Raise.java b/src/main/java/org/apache/commons/scxml2/model/Raise.java
index fc200f7..efcba47 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Raise.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Raise.java
@@ -67,12 +67,12 @@ public class Raise extends Action {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
 
         if (exctx.getAppLog().isDebugEnabled()) {
             exctx.getAppLog().debug("<raise>: Adding event '" + event + "' to list of derived events.");
         }
-        TriggerEvent ev = new EventBuilder(event, TriggerEvent.SIGNAL_EVENT).build();
+        final TriggerEvent ev = new EventBuilder(event, TriggerEvent.SIGNAL_EVENT).build();
         exctx.getInternalIOProcessor().addEvent(ev);
 
     }
diff --git a/src/main/java/org/apache/commons/scxml2/model/SCXML.java b/src/main/java/org/apache/commons/scxml2/model/SCXML.java
index 8610d99..c4875d1 100644
--- a/src/main/java/org/apache/commons/scxml2/model/SCXML.java
+++ b/src/main/java/org/apache/commons/scxml2/model/SCXML.java
@@ -154,7 +154,7 @@ public class SCXML implements Serializable, Observable {
         return globalScript;
     }
 
-    public final void setGlobalScript(Script script) {
+    public final void setGlobalScript(final Script script) {
         this.globalScript = script;
     }
 
@@ -353,7 +353,7 @@ public class SCXML implements Serializable, Observable {
 	 *
 	 * @param name The name for this state machine.
 	 */
-	public void setName(String name) {
+	public void setName(final String name) {
 		this.name = name;
 	}
 
@@ -371,7 +371,7 @@ public class SCXML implements Serializable, Observable {
 	 *
 	 * @param profile The profile to be used.
 	 */
-	public void setProfile(String profile) {
+	public void setProfile(final String profile) {
 		this.profile = profile;
 	}
 
@@ -389,7 +389,7 @@ public class SCXML implements Serializable, Observable {
 	 *
 	 * @param exmode The exmode to be used.
 	 */
-	public void setExmode(String exmode) {
+	public void setExmode(final String exmode) {
 		this.exmode = exmode;
 	}
 
diff --git a/src/main/java/org/apache/commons/scxml2/model/Script.java b/src/main/java/org/apache/commons/scxml2/model/Script.java
index 76785b8..d2cc897 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Script.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Script.java
@@ -77,9 +77,9 @@ public class Script extends Action {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
-        Context ctx = isGlobalScript() ? exctx.getGlobalContext() : exctx.getContext(getParentEnterableState());
-        Evaluator eval = exctx.getEvaluator();
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+        final Context ctx = isGlobalScript() ? exctx.getGlobalContext() : exctx.getContext(getParentEnterableState());
+        final Evaluator eval = exctx.getEvaluator();
         eval.evalScript(ctx, getScript());
     }
 }
diff --git a/src/main/java/org/apache/commons/scxml2/model/Send.java b/src/main/java/org/apache/commons/scxml2/model/Send.java
index 813809c..f92cdde 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Send.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Send.java
@@ -383,11 +383,11 @@ public class Send extends Action implements ContentContainer, ParamsContainer {
      */
     @SuppressWarnings("unchecked")
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
         // Send attributes evaluation
-        EnterableState parentState = getParentEnterableState();
-        Context ctx = exctx.getContext(parentState);
-        Evaluator eval = exctx.getEvaluator();
+        final EnterableState parentState = getParentEnterableState();
+        final Context ctx = exctx.getContext(parentState);
+        final Evaluator eval = exctx.getEvaluator();
         // Most attributes of <send> are expressions so need to be
         // evaluated before the EventDispatcher callback
         Object hintsValue = null;
@@ -425,7 +425,7 @@ public class Send extends Action implements ContentContainer, ParamsContainer {
             typeValue = SCXMLIOProcessor.DEFAULT_EVENT_PROCESSOR;
         }
         Object payload = null;
-        Map<String, Object> payloadDataMap = new LinkedHashMap<>();
+        final Map<String, Object> payloadDataMap = new LinkedHashMap<>();
         PayloadBuilder.addNamelistDataToPayload(parentState, ctx, eval, exctx.getErrorReporter(), namelist, payloadDataMap);
         PayloadBuilder.addParamsToPayload(ctx, eval, paramsList, payloadDataMap);
         if (!payloadDataMap.isEmpty()) {
@@ -436,7 +436,7 @@ public class Send extends Action implements ContentContainer, ParamsContainer {
                 Object evalResult;
                 try {
                     evalResult = eval.eval(ctx, content.getExpr());
-                } catch (SCXMLExpressionException e) {
+                } catch (final SCXMLExpressionException e) {
                     exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION,
                             TriggerEvent.ERROR_EVENT).build());
                     exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR,
@@ -452,7 +452,7 @@ public class Send extends Action implements ContentContainer, ParamsContainer {
         long wait = 0L;
         String delayString = delay;
         if (delayString == null && delayexpr != null) {
-            Object delayValue = eval.eval(ctx, delayexpr);
+            final Object delayValue = eval.eval(ctx, delayexpr);
             if (delayValue != null) {
                 delayString = delayValue.toString();
             }
@@ -468,7 +468,7 @@ public class Send extends Action implements ContentContainer, ParamsContainer {
                         + "\" evaluated to null");
             }
         }
-        Map<String, SCXMLIOProcessor> ioProcessors = (Map<String, SCXMLIOProcessor>) ctx.get(SCXMLSystemContext.IOPROCESSORS_KEY);
+        final Map<String, SCXMLIOProcessor> ioProcessors = (Map<String, SCXMLIOProcessor>) ctx.get(SCXMLSystemContext.IOPROCESSORS_KEY);
         if (exctx.getAppLog().isDebugEnabled()) {
             exctx.getAppLog().debug("<send>: Dispatching event '" + eventValue
                     + "' to target '" + targetValue + "' of target type '"
@@ -497,7 +497,7 @@ public class Send extends Action implements ContentContainer, ParamsContainer {
         if (delayString != null && delayString.trim().length() > 0) {
 
             try {
-                String trimDelay = delayString.trim();
+                final String trimDelay = delayString.trim();
                 String numericDelay = trimDelay;
                 if (trimDelay.endsWith(MILLIS)) {
                     numericDelay = trimDelay.substring(0, trimDelay.length() - 2);
@@ -508,7 +508,7 @@ public class Send extends Action implements ContentContainer, ParamsContainer {
                     multiplier = multiplier*MILLIS_IN_A_MINUTE;
                     numericDelay = trimDelay.substring(0, trimDelay.length() - 1);
                 }
-                int fractionIndex = numericDelay.indexOf('.');
+                final int fractionIndex = numericDelay.indexOf('.');
                 if (fractionIndex > -1) {
                     if (fractionIndex > 0) {
                         wait = Long.parseLong(numericDelay.substring(0, fractionIndex));
@@ -520,7 +520,7 @@ public class Send extends Action implements ContentContainer, ParamsContainer {
                 if (numericDelay.length() > 0) {
                     wait += Long.parseLong(numericDelay) * multiplier;
                 }
-            } catch (NumberFormatException nfe) {
+            } catch (final NumberFormatException nfe) {
                 throw new SCXMLExpressionException("<send>: invalid " + (expression ? "delayexpr=\"" : "delay=\"") + delayStringSource +"\"");
             }
         }
diff --git a/src/main/java/org/apache/commons/scxml2/model/SimpleTransition.java b/src/main/java/org/apache/commons/scxml2/model/SimpleTransition.java
index 4f24af0..25ba72f 100644
--- a/src/main/java/org/apache/commons/scxml2/model/SimpleTransition.java
+++ b/src/main/java/org/apache/commons/scxml2/model/SimpleTransition.java
@@ -80,7 +80,7 @@ public class SimpleTransition extends Executable implements Observable {
         this.targets = new HashSet<>();
     }
 
-    private boolean isCompoundStateParent(TransitionalState ts) {
+    private boolean isCompoundStateParent(final TransitionalState ts) {
         return ts instanceof State && ((State)ts).isComposite();
     }
 
@@ -95,7 +95,7 @@ public class SimpleTransition extends Executable implements Observable {
      * Sets the observableId for this Observable, which must be unique within the SCXML state machine
      * @param observableId the observableId
      */
-    public final void setObservableId(Integer observableId) {
+    public final void setObservableId(final Integer observableId) {
         this.observableId = observableId;
     }
 
@@ -160,7 +160,7 @@ public class SimpleTransition extends Executable implements Observable {
             typeInternal = TransitionType.internal == type && isCompoundStateParent(getParent());
 
             if (typeInternal && targets.size() > 0) {
-                for (TransitionTarget tt : targets) {
+                for (final TransitionTarget tt : targets) {
                     if (!tt.isDescendantOf(getParent())) {
                         typeInternal = false;
                         break;
@@ -206,7 +206,7 @@ public class SimpleTransition extends Executable implements Observable {
                     for (int i = getParent().getNumberOfAncestors()-1; i > -1; i--) {
                         if (isCompoundStateParent(getParent().getAncestor(i))) {
                             boolean allDescendants = true;
-                            for (TransitionTarget tt : targets) {
+                            for (final TransitionTarget tt : targets) {
                                 if (i >= tt.getNumberOfAncestors()) {
                                     i = tt.getNumberOfAncestors();
                                     allDescendants = false;
diff --git a/src/main/java/org/apache/commons/scxml2/model/State.java b/src/main/java/org/apache/commons/scxml2/model/State.java
index f5d1367..663310c 100644
--- a/src/main/java/org/apache/commons/scxml2/model/State.java
+++ b/src/main/java/org/apache/commons/scxml2/model/State.java
@@ -83,9 +83,9 @@ public class State extends TransitionalState {
      */
     public final void setFirst(final String target) {
         this.first = target;
-        SimpleTransition t = new SimpleTransition();
+        final SimpleTransition t = new SimpleTransition();
         t.setNext(target);
-        Initial ini = new Initial();
+        final Initial ini = new Initial();
         ini.setGenerated();
         ini.setTransition(t);
         ini.setParent(this);
diff --git a/src/main/java/org/apache/commons/scxml2/model/Transition.java b/src/main/java/org/apache/commons/scxml2/model/Transition.java
index 4c01d5a..bfd6435 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Transition.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Transition.java
@@ -81,7 +81,7 @@ public class Transition extends SimpleTransition implements DocumentOrder {
      * @param order the document order
      * @see DocumentOrder
      */
-    public final void setOrder(int order) {
+    public final void setOrder(final int order) {
         this.order = order;
     }
 
@@ -124,7 +124,7 @@ public class Transition extends SimpleTransition implements DocumentOrder {
         if (this.event != null) {
             // 'event' is a space separated list of event descriptors
             events = new ArrayList<>();
-            StringTokenizer st = new StringTokenizer(this.event);
+            final StringTokenizer st = new StringTokenizer(this.event);
             while (st.hasMoreTokens()) {
                 String token = st.nextToken();
                 if (token.equals("*") || token.equals(".*")) {
diff --git a/src/main/java/org/apache/commons/scxml2/model/TransitionTarget.java b/src/main/java/org/apache/commons/scxml2/model/TransitionTarget.java
index 022ed78..4ac5a42 100644
--- a/src/main/java/org/apache/commons/scxml2/model/TransitionTarget.java
+++ b/src/main/java/org/apache/commons/scxml2/model/TransitionTarget.java
@@ -64,7 +64,7 @@ public abstract class TransitionTarget implements Serializable, Observable {
      * Sets the observableId for this Observable, which must be unique within the SCXML state machine
      * @param observableId the observableId
      */
-    public final void setObservableId(Integer observableId) {
+    public final void setObservableId(final Integer observableId) {
         this.observableId = observableId;
     }
 
@@ -98,7 +98,7 @@ public abstract class TransitionTarget implements Serializable, Observable {
      * @param level the level of the ancestor to return, zero being top
      * @return the ancestor at specified level
      */
-    public EnterableState getAncestor(int level) {
+    public EnterableState getAncestor(final int level) {
         return ancestors[level];
     }
 
@@ -138,7 +138,7 @@ public abstract class TransitionTarget implements Serializable, Observable {
      * Update TransitionTarget descendants their ancestors
      */
     protected void updateDescendantsAncestors() {
-        TransitionTarget ttParent = parent;
+        final TransitionTarget ttParent = parent;
         ancestors = new EnterableState[ttParent.ancestors.length+1];
         System.arraycopy(ttParent.ancestors, 0, ancestors, 0, ttParent.ancestors.length);
         ancestors[ttParent.ancestors.length] = parent;
@@ -152,7 +152,7 @@ public abstract class TransitionTarget implements Serializable, Observable {
      *            TransitionTarget context - a potential ancestor
      * @return true if this is a descendant of context, false otherwise
      */
-    public final boolean isDescendantOf(TransitionTarget context) {
+    public final boolean isDescendantOf(final TransitionTarget context) {
         return getNumberOfAncestors() > context.getNumberOfAncestors()
                 && getAncestor(context.getNumberOfAncestors()) == context;
     }
diff --git a/src/main/java/org/apache/commons/scxml2/model/TransitionalState.java b/src/main/java/org/apache/commons/scxml2/model/TransitionalState.java
index 5642dbc..0632016 100644
--- a/src/main/java/org/apache/commons/scxml2/model/TransitionalState.java
+++ b/src/main/java/org/apache/commons/scxml2/model/TransitionalState.java
@@ -66,11 +66,11 @@ public abstract class TransitionalState extends EnterableState {
      */
     protected void updateDescendantsAncestors() {
         super.updateDescendantsAncestors();
-        for (History h : history) {
+        for (final History h : history) {
             // reset ancestors
             h.updateDescendantsAncestors();
         }
-        for (TransitionTarget child : children) {
+        for (final TransitionTarget child : children) {
             child.updateDescendantsAncestors();
         }
     }
@@ -100,7 +100,7 @@ public abstract class TransitionalState extends EnterableState {
      * @return the ancestor at specified level
      */
     @Override
-    public TransitionalState getAncestor(int level) {
+    public TransitionalState getAncestor(final int level) {
         return (TransitionalState)super.getAncestor(level);
     }
 
@@ -113,7 +113,7 @@ public abstract class TransitionalState extends EnterableState {
      */
     public final List<Transition> getTransitionsList(final String event) {
         List<Transition> matchingTransitions = null; // since we returned null upto v0.6
-        for (Transition t : transitions) {
+        for (final Transition t : transitions) {
             if ((event == null && t.getEvent() == null)
                     || (event != null && event.equals(t.getEvent()))) {
                 if (matchingTransitions == null) {
diff --git a/src/main/java/org/apache/commons/scxml2/model/Var.java b/src/main/java/org/apache/commons/scxml2/model/Var.java
index d70b8e9..e777090 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Var.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Var.java
@@ -100,16 +100,16 @@ public class Var extends Action {
      * {@inheritDoc}
      */
     @Override
-    public void execute(ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
-        Context ctx = exctx.getContext(getParentEnterableState());
-        Evaluator eval = exctx.getEvaluator();
-        Object varObj = eval.eval(ctx, expr);
+    public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
+        final Context ctx = exctx.getContext(getParentEnterableState());
+        final Evaluator eval = exctx.getEvaluator();
+        final Object varObj = eval.eval(ctx, expr);
         ctx.setLocal(name, varObj);
         if (exctx.getAppLog().isDebugEnabled()) {
             exctx.getAppLog().debug("<var>: Defined variable '" + name
                 + "' with initial value '" + String.valueOf(varObj) + "'");
         }
-        TriggerEvent ev = new EventBuilder(name + ".change", TriggerEvent.CHANGE_EVENT).build();
+        final TriggerEvent ev = new EventBuilder(name + ".change", TriggerEvent.CHANGE_EVENT).build();
         exctx.getInternalIOProcessor().addEvent(ev);
     }
 }
diff --git a/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java b/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java
index 423f13f..87975c8 100644
--- a/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java
+++ b/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java
@@ -115,8 +115,8 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
         // execute global script if defined
         executeGlobalScript(exctx);
         // enter initial states
-        HashSet<TransitionalState> statesToInvoke = new HashSet<>();
-        Step step = new Step(null);
+        final HashSet<TransitionalState> statesToInvoke = new HashSet<>();
+        final Step step = new Step(null);
         step.getTransitList().add(exctx.getStateMachine().getInitialTransition());
         microStep(exctx, step, statesToInvoke);
         // Execute Immediate Transitions
@@ -166,10 +166,10 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
         else {
             setSystemEventVariable(exctx.getScInstance(), event, false);
             processInvokes(exctx, event);
-            Step step = new Step(event);
+            final Step step = new Step(event);
             selectTransitions(exctx, step);
             if (!step.getTransitList().isEmpty()) {
-                HashSet<TransitionalState> statesToInvoke = new HashSet<>();
+                final HashSet<TransitionalState> statesToInvoke = new HashSet<>();
                 microStep(exctx, step, statesToInvoke);
                 if (exctx.isRunning()) {
                     macroStep(exctx, statesToInvoke);
@@ -197,29 +197,29 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param exctx The execution context for this step
      * @throws ModelException if a SCXML model error occurred during the execution.
      */
-    public void finalStep(SCXMLExecutionContext exctx) throws ModelException {
+    public void finalStep(final SCXMLExecutionContext exctx) throws ModelException {
         if (exctx.isRunning()) {
             return;
         }
-        ArrayList<EnterableState> configuration = new ArrayList<>(exctx.getScInstance().getStateConfiguration().getActiveStates());
+        final ArrayList<EnterableState> configuration = new ArrayList<>(exctx.getScInstance().getStateConfiguration().getActiveStates());
         configuration.sort(DocumentOrder.reverseDocumentOrderComparator);
-        for (EnterableState es : configuration) {
-            for (OnExit onexit : es.getOnExits()) {
+        for (final EnterableState es : configuration) {
+            for (final OnExit onexit : es.getOnExits()) {
                 executeContent(exctx, onexit);
             }
             if (es instanceof TransitionalState) {
                 // check if invokers are active in this state
-                for (Invoke inv : ((TransitionalState)es).getInvokes()) {
+                for (final Invoke inv : ((TransitionalState)es).getInvokes()) {
                     exctx.cancelInvoker(inv);
                 }
             }
             exctx.getNotificationRegistry().fireOnExit(es, es);
             exctx.getNotificationRegistry().fireOnExit(exctx.getStateMachine(), es);
             if (es instanceof Final && es.getParent() == null) {
-                Object donedata = ((Final)es).processDoneData(exctx);
+                final Object donedata = ((Final)es).processDoneData(exctx);
                 exctx.getScInstance().getGlobalContext().getSystemContext().getPlatformVariables().put(SCXMLSystemContext.FINAL_DONE_DATA_KEY, donedata);
                 if (exctx.getSCXMLExecutor().getParentSCXMLIOProcessor() != null) {
-                    ParentSCXMLIOProcessor ioProcessor = exctx.getSCXMLExecutor().getParentSCXMLIOProcessor();
+                    final ParentSCXMLIOProcessor ioProcessor = exctx.getSCXMLExecutor().getParentSCXMLIOProcessor();
                     if (!ioProcessor.isClosed()) {
                         ioProcessor.addEvent(
                                 new EventBuilder("done.invoke."+ioProcessor.getInvokeId(), TriggerEvent.SIGNAL_EVENT)
@@ -306,7 +306,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                 Step step = new Step(null);
                 selectTransitions(exctx, step);
                 if (step.getTransitList().isEmpty()) {
-                    TriggerEvent event = exctx.nextInternalEvent();
+                    final TriggerEvent event = exctx.nextInternalEvent();
                     if (event != null) {
                         if (isCancelEvent(event)) {
                             exctx.stop();
@@ -342,7 +342,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      */
     public void computeExitSet(final Step step, final StateConfiguration stateConfiguration) {
         if (!stateConfiguration.getActiveStates().isEmpty()) {
-            for (SimpleTransition st : step.getTransitList()) {
+            for (final SimpleTransition st : step.getTransitList()) {
                 computeExitSet(st, step.getExitSet(), stateConfiguration.getActiveStates());
             }
             recordHistory(step, stateConfiguration.getStates(), stateConfiguration.getActiveStates());
@@ -358,15 +358,15 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param exitSet The set for adding the states to exit to
      * @param activeStates The current active states of the state machine ({@link StateConfiguration#getActiveStates()}).
      */
-    public void computeExitSet(SimpleTransition transition, Set<EnterableState> exitSet, Set<EnterableState> activeStates) {
+    public void computeExitSet(final SimpleTransition transition, final Set<EnterableState> exitSet, final Set<EnterableState> activeStates) {
         if (!transition.getTargets().isEmpty()) {
-            TransitionalState transitionDomain = transition.getTransitionDomain();
+            final TransitionalState transitionDomain = transition.getTransitionDomain();
             if (transitionDomain == null) {
                 // root transition: every active state will be exited
                 exitSet.addAll(activeStates);
             }
             else {
-                for (EnterableState state : activeStates) {
+                for (final EnterableState state : activeStates) {
                     if (state.isDescendantOf(transitionDomain)) {
                         exitSet.add(state);
                     }
@@ -391,17 +391,17 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param activeStates The current set of all active states in the state machine
      */
     public void recordHistory(final Step step, final Set<EnterableState> atomicStates, final Set<EnterableState> activeStates) {
-        for (EnterableState es : step.getExitSet()) {
+        for (final EnterableState es : step.getExitSet()) {
             if (es instanceof TransitionalState && ((TransitionalState)es).hasHistory()) {
-                TransitionalState ts = (TransitionalState)es;
+                final TransitionalState ts = (TransitionalState)es;
                 Set<EnterableState> shallow = null;
                 Set<EnterableState> deep = null;
-                for (History h : ts.getHistory()) {
+                for (final History h : ts.getHistory()) {
                     if (h.isDeep()) {
                         if (deep == null) {
                             //calculate deep history for a given state once
                             deep = new HashSet<>();
-                            for (EnterableState ott : atomicStates) {
+                            for (final EnterableState ott : atomicStates) {
                                 if (ott.isDescendantOf(es)) {
                                     deep.add(ott);
                                 }
@@ -430,10 +430,10 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param step The step containing the list of transitions to be taken
      */
     public void computeEntrySet(final SCXMLExecutionContext exctx, final Step step) {
-        Set<History> historyTargets = new HashSet<>();
-        Set<EnterableState> entrySet = new HashSet<>();
-        for (SimpleTransition st : step.getTransitList()) {
-            for (TransitionTarget tt : st.getTargets()) {
+        final Set<History> historyTargets = new HashSet<>();
+        final Set<EnterableState> entrySet = new HashSet<>();
+        for (final SimpleTransition st : step.getTransitList()) {
+            for (final TransitionTarget tt : st.getTargets()) {
                 if (tt instanceof EnterableState) {
                     entrySet.add((EnterableState) tt);
                 }
@@ -443,15 +443,15 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                 }
             }
         }
-        for (EnterableState es : entrySet) {
+        for (final EnterableState es : entrySet) {
             addDescendantStatesToEnter(exctx, step, es);
         }
-        for (History h : historyTargets) {
+        for (final History h : historyTargets) {
             addDescendantStatesToEnter(exctx, step, h);
         }
-        for (SimpleTransition st : step.getTransitList()) {
-            TransitionalState ancestor = st.getTransitionDomain();
-            for (TransitionTarget tt : st.getTargets()) {
+        for (final SimpleTransition st : step.getTransitList()) {
+            final TransitionalState ancestor = st.getTransitionDomain();
+            for (final TransitionTarget tt : st.getTargets()) {
                 addAncestorStatesToEnter(exctx, step, tt, ancestor);
             }
         }
@@ -467,33 +467,33 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
     public void addDescendantStatesToEnter(final SCXMLExecutionContext exctx, final Step step,
                                               final TransitionTarget tt) {
         if (tt instanceof History) {
-            History h = (History) tt;
+            final History h = (History) tt;
             Set<EnterableState> lastConfiguration = step.getNewHistoryConfigurations().get(h);
             if (lastConfiguration == null) {
                 lastConfiguration = exctx.getScInstance().getLastConfiguration(h);
             }
             if (lastConfiguration.isEmpty()) {
                 step.getDefaultHistoryTransitions().put(h.getParent(), h.getTransition());
-                for (TransitionTarget dtt : h.getTransition().getTargets()) {
+                for (final TransitionTarget dtt : h.getTransition().getTargets()) {
                     addDescendantStatesToEnter(exctx, step, dtt);
                 }
-                for (TransitionTarget dtt : h.getTransition().getTargets()) {
+                for (final TransitionTarget dtt : h.getTransition().getTargets()) {
                     addAncestorStatesToEnter(exctx, step, dtt, tt.getParent());
                 }
             } else {
-                for (TransitionTarget dtt : lastConfiguration) {
+                for (final TransitionTarget dtt : lastConfiguration) {
                     addDescendantStatesToEnter(exctx, step, dtt);
                 }
-                for (TransitionTarget dtt : lastConfiguration) {
+                for (final TransitionTarget dtt : lastConfiguration) {
                     addAncestorStatesToEnter(exctx, step, dtt, tt.getParent());
                 }
             }
         }
         else { // tt instanceof EnterableState
-            EnterableState es = (EnterableState)tt;
+            final EnterableState es = (EnterableState)tt;
             step.getEntrySet().add(es);
             if (es instanceof Parallel) {
-                for (EnterableState child : ((Parallel)es).getChildren()) {
+                for (final EnterableState child : ((Parallel)es).getChildren()) {
                     if (containsNoDescendant(step.getEntrySet(), child)) {
                         addDescendantStatesToEnter(exctx, step, child);
                     }
@@ -501,10 +501,10 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
             }
             else if (es instanceof State && ((State) es).isComposite()) {
                 step.getDefaultEntrySet().add(es);
-                for (TransitionTarget dtt : ((State)es).getInitial().getTransition().getTargets()) {
+                for (final TransitionTarget dtt : ((State)es).getInitial().getTransition().getTargets()) {
                     addDescendantStatesToEnter(exctx, step, dtt);
                 }
-                for (TransitionTarget dtt : ((State)es).getInitial().getTransition().getTargets()) {
+                for (final TransitionTarget dtt : ((State)es).getInitial().getTransition().getTargets()) {
                     addAncestorStatesToEnter(exctx, step, dtt, tt);
                 }
             }
@@ -520,16 +520,16 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param ancestor The ancestor TransitionTarget
      */
     public void addAncestorStatesToEnter(final SCXMLExecutionContext exctx, final Step step,
-                                            final TransitionTarget tt, TransitionTarget ancestor) {
+                                            final TransitionTarget tt, final TransitionTarget ancestor) {
         // for for anc in getProperAncestors(tt,ancestor)
         for (int i = tt.getNumberOfAncestors()-1; i > -1; i--) {
-            EnterableState anc = tt.getAncestor(i);
+            final EnterableState anc = tt.getAncestor(i);
             if (anc == ancestor) {
                 break;
             }
             step.getEntrySet().add(anc);
             if (anc instanceof Parallel) {
-                for (EnterableState child : ((Parallel)anc).getChildren()) {
+                for (final EnterableState child : ((Parallel)anc).getChildren()) {
                     if (containsNoDescendant(step.getEntrySet(), child)) {
                         addDescendantStatesToEnter(exctx, step, child);
                     }
@@ -544,8 +544,8 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param states the set of states to check for descendants
      * @param state the state to check with
      */
-    public boolean containsNoDescendant(Set<EnterableState> states, EnterableState state) {
-        for (EnterableState es : states) {
+    public boolean containsNoDescendant(final Set<EnterableState> states, final EnterableState state) {
+        for (final EnterableState es : states) {
             if (es.isDescendantOf(state)) {
                 return false;
             }
@@ -563,14 +563,14 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      */
     public void selectTransitions(final SCXMLExecutionContext exctx, final Step step) throws ModelException {
         step.getTransitList().clear();
-        ArrayList<Transition> enabledTransitions = new ArrayList<>();
+        final ArrayList<Transition> enabledTransitions = new ArrayList<>();
 
-        ArrayList<EnterableState> configuration = new ArrayList<>(exctx.getScInstance().getStateConfiguration().getActiveStates());
+        final ArrayList<EnterableState> configuration = new ArrayList<>(exctx.getScInstance().getStateConfiguration().getActiveStates());
         configuration.sort(DocumentOrder.documentOrderComparator);
 
-        HashSet<EnterableState> visited = new HashSet<>();
+        final HashSet<EnterableState> visited = new HashSet<>();
 
-        String eventName = step.getEvent() != null ? step.getEvent().getName() : null;
+        final String eventName = step.getEvent() != null ? step.getEvent().getName() : null;
         for (EnterableState es : configuration) {
             if (es.isAtomicState()) {
                 if (es instanceof Final) {
@@ -584,12 +584,12 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                         es = es.getParent();
                     }
                 }
-                TransitionalState state = (TransitionalState)es;
+                final TransitionalState state = (TransitionalState)es;
                 TransitionalState current = state;
                 int ancestorIndex = state.getNumberOfAncestors()-1;
                 boolean transitionMatched = false;
                 do {
-                    for (Transition transition : current.getTransitionsList()) {
+                    for (final Transition transition : current.getTransitionsList()) {
                         if (transitionMatched = matchTransition(exctx, transition, eventName)) {
                             enabledTransitions.add(transition);
                             break;
@@ -611,17 +611,17 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      */
     public void removeConflictingTransitions(final SCXMLExecutionContext exctx, final Step step,
                                              final List<Transition> enabledTransitions) {
-        LinkedHashSet<Transition> filteredTransitions = new LinkedHashSet<>();
-        LinkedHashSet<Transition> preemptedTransitions = new LinkedHashSet<>();
-        Map<Transition, Set<EnterableState>> exitSets = new HashMap<>();
+        final LinkedHashSet<Transition> filteredTransitions = new LinkedHashSet<>();
+        final LinkedHashSet<Transition> preemptedTransitions = new LinkedHashSet<>();
+        final Map<Transition, Set<EnterableState>> exitSets = new HashMap<>();
 
-        Set<EnterableState> configuration = exctx.getScInstance().getStateConfiguration().getActiveStates();
+        final Set<EnterableState> configuration = exctx.getScInstance().getStateConfiguration().getActiveStates();
         enabledTransitions.sort(DocumentOrder.documentOrderComparator);
 
-        for (Transition t1 : enabledTransitions) {
+        for (final Transition t1 : enabledTransitions) {
             boolean t1Preempted = false;
             Set<EnterableState> t1ExitSet = exitSets.get(t1);
-            for (Transition t2 : filteredTransitions) {
+            for (final Transition t2 : filteredTransitions) {
                 if (t1ExitSet == null) {
                     t1ExitSet = new HashSet<>();
                     computeExitSet(t1, t1ExitSet, configuration);
@@ -633,10 +633,10 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                     computeExitSet(t2, t2ExitSet, configuration);
                     exitSets.put(t2, t2ExitSet);
                 }
-                Set<EnterableState> smaller = t1ExitSet.size() < t2ExitSet.size() ? t1ExitSet : t2ExitSet;
-                Set<EnterableState> larger = smaller == t1ExitSet ? t2ExitSet : t1ExitSet;
+                final Set<EnterableState> smaller = t1ExitSet.size() < t2ExitSet.size() ? t1ExitSet : t2ExitSet;
+                final Set<EnterableState> larger = smaller == t1ExitSet ? t2ExitSet : t1ExitSet;
                 boolean hasIntersection = false;
-                for (EnterableState s1 : smaller) {
+                for (final EnterableState s1 : smaller) {
                     hasIntersection = larger.contains(s1);
                     if (hasIntersection) {
                         break;
@@ -656,7 +656,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                 exitSets.remove(t1);
             }
             else {
-                for (Transition preempted : preemptedTransitions) {
+                for (final Transition preempted : preemptedTransitions) {
                     filteredTransitions.remove(preempted);
                     exitSets.remove(preempted);
                 }
@@ -677,7 +677,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
         if (eventName != null) {
             if (!(transition.isNoEventsTransition() || transition.isAllEventsTransition())) {
                 boolean eventMatch = false;
-                for (String event : transition.getEvents()) {
+                for (final String event : transition.getEvents()) {
                     if (eventName.startsWith(event)) {
                         if (eventName.length() == event.length() || eventName.charAt(event.length())=='.') {
                             eventMatch = true;
@@ -698,7 +698,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
         }
         if (transition.getCond() != null) {
             Boolean result = Boolean.FALSE;
-            Context context = exctx.getScInstance().getContext(transition.getParent());
+            final Context context = exctx.getScInstance().getContext(transition.getParent());
             try {
                 if ((result = exctx.getEvaluator().evalCond(context, transition.getCond())) == null) {
                     result = Boolean.FALSE;
@@ -708,7 +708,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                     }
                 }
             }
-            catch (SCXMLExpressionException e) {
+            catch (final SCXMLExpressionException e) {
                 exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
                 exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, "Treating as false due to error: "
                         + e.getMessage(), transition);
@@ -728,14 +728,14 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      */
     public boolean isInFinalState(final EnterableState es, final Set<EnterableState> configuration) {
         if (es instanceof State) {
-            for (EnterableState child : ((State)es).getChildren()) {
+            for (final EnterableState child : ((State)es).getChildren()) {
                 if (child instanceof Final && configuration.contains(child)) {
                     return true;
                 }
             }
         }
         else if (es instanceof Parallel) {
-            for (EnterableState child : ((Parallel)es).getChildren()) {
+            for (final EnterableState child : ((Parallel)es).getChildren()) {
                 if (!isInFinalState(child, configuration)) {
                     return false;
                 }
@@ -751,7 +751,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param event received external event
      * @return true if this event is of type {@link TriggerEvent#CANCEL_EVENT}.
      */
-    public boolean isCancelEvent(TriggerEvent event) {
+    public boolean isCancelEvent(final TriggerEvent event) {
         return (event.getType() == TriggerEvent.CANCEL_EVENT);
     }
 
@@ -774,12 +774,12 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
          * states = active configuration.
          */
         boolean legalConfig = true; // let's be optimists
-        Map<EnterableState, Set<EnterableState>> counts = new HashMap<>();
-        Set<EnterableState> scxmlCount = new HashSet<>();
+        final Map<EnterableState, Set<EnterableState>> counts = new HashMap<>();
+        final Set<EnterableState> scxmlCount = new HashSet<>();
         for (EnterableState es : states) {
             EnterableState parent;
             while ((parent = es.getParent()) != null) {
-                Set<EnterableState> cnt = counts.computeIfAbsent(parent, k -> new HashSet<>());
+                final Set<EnterableState> cnt = counts.computeIfAbsent(parent, k -> new HashSet<>());
                 cnt.add(es);
                 es = parent;
             }
@@ -792,11 +792,11 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
         }
         else {
             //Validate child counts:
-            for (Map.Entry<EnterableState, Set<EnterableState>> entry : counts.entrySet()) {
-                EnterableState es = entry.getKey();
-                Set<EnterableState> count = entry.getValue();
+            for (final Map.Entry<EnterableState, Set<EnterableState>> entry : counts.entrySet()) {
+                final EnterableState es = entry.getKey();
+                final Set<EnterableState> count = entry.getValue();
                 if (es instanceof Parallel) {
-                    Parallel p = (Parallel) es;
+                    final Parallel p = (Parallel) es;
                     if (count.size() < p.getChildren().size()) {
                         errRep.onError(ErrorConstants.ILLEGAL_CONFIG, "Not all AND states active for parallel " + p.getId(), entry);
                         legalConfig = false;
@@ -826,8 +826,8 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param event The event being stored
      * @param internal Flag indicating the event was received internally or externally
      */
-    public void setSystemEventVariable(final SCInstance scInstance, final TriggerEvent event, boolean internal) {
-        Context systemContext = scInstance.getSystemContext();
+    public void setSystemEventVariable(final SCInstance scInstance, final TriggerEvent event, final boolean internal) {
+        final Context systemContext = scInstance.getSystemContext();
         EventVariable eventVar = null;
         if (event != null) {
             String eventType = internal ? EventVariable.TYPE_INTERNAL : EventVariable.TYPE_EXTERNAL;
@@ -849,11 +849,11 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @throws ModelException if a SCXML model error occurred during the execution.
      */
     public void executeGlobalScript(final SCXMLExecutionContext exctx) throws ModelException {
-        Script globalScript = exctx.getStateMachine().getGlobalScript();
+        final Script globalScript = exctx.getStateMachine().getGlobalScript();
         if ( globalScript != null) {
             try {
                 globalScript.execute(exctx.getActionExecutionContext());
-            } catch (SCXMLExpressionException e) {
+            } catch (final SCXMLExpressionException e) {
                 exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
                 exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, e.getMessage(), exctx.getStateMachine());
             }
@@ -876,20 +876,20 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
         if (step.getExitSet().isEmpty()) {
             return;
         }
-        ArrayList<EnterableState> exitList = new ArrayList<>(step.getExitSet());
+        final ArrayList<EnterableState> exitList = new ArrayList<>(step.getExitSet());
         exitList.sort(DocumentOrder.reverseDocumentOrderComparator);
 
-        for (EnterableState es : exitList) {
+        for (final EnterableState es : exitList) {
 
             if (es instanceof TransitionalState && ((TransitionalState)es).hasHistory()) {
                 // persist the new history configurations for this state to exit
-                for (History h : ((TransitionalState)es).getHistory()) {
+                for (final History h : ((TransitionalState)es).getHistory()) {
                     exctx.getScInstance().setLastConfiguration(h, step.getNewHistoryConfigurations().get(h));
                 }
             }
 
             boolean onexitEventRaised = false;
-            for (OnExit onexit : es.getOnExits()) {
+            for (final OnExit onexit : es.getOnExits()) {
                 executeContent(exctx, onexit);
                 if (!onexitEventRaised && onexit.isRaiseEvent()) {
                     onexitEventRaised = true;
@@ -901,7 +901,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
 
             if (es instanceof TransitionalState && !statesToInvoke.remove(es)) {
                 // check if invokers are active in this state
-                for (Invoke inv : ((TransitionalState)es).getInvokes()) {
+                for (final Invoke inv : ((TransitionalState)es).getInvokes()) {
                     exctx.cancelInvoker(inv);
                 }
             }
@@ -917,7 +917,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @throws ModelException if a SCXML model error occurred during the execution.
      */
     public void executeTransitionContent(final SCXMLExecutionContext exctx, final Step step) throws ModelException {
-        for (SimpleTransition transition : step.getTransitList()) {
+        for (final SimpleTransition transition : step.getTransitList()) {
             executeContent(exctx, transition);
         }
     }
@@ -929,15 +929,15 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @param exec the executable providing the execution content
      * @throws ModelException if a SCXML model error occurred during the execution.
      */
-    public void executeContent(SCXMLExecutionContext exctx, Executable exec) throws ModelException {
+    public void executeContent(final SCXMLExecutionContext exctx, final Executable exec) throws ModelException {
         try {
-            for (Action action : exec.getActions()) {
+            for (final Action action : exec.getActions()) {
                 action.execute(exctx.getActionExecutionContext());
             }
-        } catch (SCXMLExpressionException e) {
+        } catch (final SCXMLExpressionException e) {
             exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
             exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, e.getMessage(), exec);
-        } catch (ActionExecutionError e) {
+        } catch (final ActionExecutionError e) {
             if (!e.isEventRaised()) {
                 exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
             }
@@ -946,12 +946,12 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
             }
         }
         if (exec instanceof Transition) {
-            Transition t = (Transition)exec;
+            final Transition t = (Transition)exec;
             if (t.getTargets().isEmpty()) {
                 notifyOnTransition(exctx, t, t.getParent());
             }
             else {
-                for (TransitionTarget tt : t.getTargets()) {
+                for (final TransitionTarget tt : t.getTargets()) {
                     notifyOnTransition(exctx, t, tt);
                 }
             }
@@ -967,8 +967,8 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      */
     public void notifyOnTransition(final SCXMLExecutionContext exctx, final Transition t,
                                       final TransitionTarget target) {
-        EventVariable event = (EventVariable)exctx.getScInstance().getSystemContext().getVars().get(SCXMLSystemContext.EVENT_KEY);
-        String eventName = event != null ? event.getName() : null;
+        final EventVariable event = (EventVariable)exctx.getScInstance().getSystemContext().getVars().get(SCXMLSystemContext.EVENT_KEY);
+        final String eventName = event != null ? event.getName() : null;
         exctx.getNotificationRegistry().fireOnTransition(t, t.getParent(), target, t, eventName);
         exctx.getNotificationRegistry().fireOnTransition(exctx.getStateMachine(), t.getParent(), target, t, eventName);
     }
@@ -989,9 +989,9 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
         if (step.getEntrySet().isEmpty()) {
             return;
         }
-        ArrayList<EnterableState> entryList = new ArrayList<>(step.getEntrySet());
+        final ArrayList<EnterableState> entryList = new ArrayList<>(step.getEntrySet());
         entryList.sort(DocumentOrder.documentOrderComparator);
-        for (EnterableState es : entryList) {
+        for (final EnterableState es : entryList) {
             exctx.getScInstance().getStateConfiguration().enterState(es);
             // ensure state context creation and datamodel cloned
             exctx.getScInstance().getContext(es);
@@ -1000,7 +1000,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
             }
 
             boolean onentryEventRaised = false;
-            for (OnEntry onentry : es.getOnEntries()) {
+            for (final OnEntry onentry : es.getOnEntries()) {
                 executeContent(exctx, onentry);
                 if (!onentryEventRaised && onentry.isRaiseEvent()) {
                     onentryEventRaised = true;
@@ -1014,19 +1014,19 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                 executeContent(exctx, ((State)es).getInitial().getTransition());
             }
             if (es instanceof TransitionalState) {
-                SimpleTransition hTransition = step.getDefaultHistoryTransitions().get(es);
+                final SimpleTransition hTransition = step.getDefaultHistoryTransitions().get(es);
                 if (hTransition != null) {
                     executeContent(exctx, hTransition);
                 }
             }
 
             if (es instanceof Final) {
-                State parent = (State)es.getParent();
+                final State parent = (State)es.getParent();
                 if (parent == null) {
                     exctx.stop();
                 }
                 else {
-                    Object donedata = ((Final)es).processDoneData(exctx);
+                    final Object donedata = ((Final)es).processDoneData(exctx);
                     exctx.getInternalIOProcessor().addEvent(new EventBuilder("done.state."+parent.getId(),TriggerEvent.CHANGE_EVENT).data(donedata).build());
                     if (parent.isRegion()) {
                         if (isInFinalState(parent.getParent(), exctx.getScInstance().getStateConfiguration().getActiveStates())) {
@@ -1048,11 +1048,11 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      */
     public void initiateInvokes(final SCXMLExecutionContext exctx,
                                 final Set<TransitionalState> statesToInvoke) throws ModelException {
-        ActionExecutionContext aexctx = exctx.getActionExecutionContext();
-        for (TransitionalState ts : statesToInvoke) {
-            for (Invoke invoke : ts.getInvokes()) {
-                Context ctx = aexctx.getContext(invoke.getParentEnterableState());
-                String exctxKey = invoke.getCurrentSCXMLExecutionContextKey();
+        final ActionExecutionContext aexctx = exctx.getActionExecutionContext();
+        for (final TransitionalState ts : statesToInvoke) {
+            for (final Invoke invoke : ts.getInvokes()) {
+                final Context ctx = aexctx.getContext(invoke.getParentEnterableState());
+                final String exctxKey = invoke.getCurrentSCXMLExecutionContextKey();
                 ctx.setLocal(exctxKey, exctx);
                 invoke.execute(aexctx);
                 ctx.setLocal(exctxKey, null);
@@ -1069,10 +1069,10 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
      * @throws ModelException in case there is a fatal SCXML object model problem.
      */
     public void processInvokes(final SCXMLExecutionContext exctx, final TriggerEvent event) throws ModelException {
-        for (Map.Entry<Invoke, String> entry : exctx.getInvokeIds().entrySet()) {
+        for (final Map.Entry<Invoke, String> entry : exctx.getInvokeIds().entrySet()) {
             if (entry.getValue().equals(event.getInvokeId())) {
-                Invoke invoke = entry.getKey();
-                Finalize finalize = invoke.getFinalize();
+                final Invoke invoke = entry.getKey();
+                final Finalize finalize = invoke.getFinalize();
                 if (finalize != null) {
                     if (finalize.getActions().isEmpty()) {
                         /*
@@ -1095,7 +1095,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                                 event.getName().startsWith("done.invoke."+entry.getValue()+"."))) {
                     try {
                         exctx.getInvoker(entry.getKey()).parentEvent(event);
-                    } catch (InvokerException ie) {
+                    } catch (final InvokerException ie) {
                         exctx.getAppLog().error(ie.getMessage(), ie);
                         throw new ModelException(ie.getMessage(), ie.getCause());
                     }
diff --git a/src/main/java/org/apache/commons/scxml2/semantics/Step.java b/src/main/java/org/apache/commons/scxml2/semantics/Step.java
index 86495db..e5e4bdb 100644
--- a/src/main/java/org/apache/commons/scxml2/semantics/Step.java
+++ b/src/main/java/org/apache/commons/scxml2/semantics/Step.java
@@ -73,7 +73,7 @@ public class Step {
     /**
      * @param event The event received in this unit of progression
      */
-    public Step(TriggerEvent event) {
+    public Step(final TriggerEvent event) {
         this.event = event;
         this.exitSet = new HashSet<>();
         this.entrySet = new HashSet<>();
diff --git a/src/main/java/org/apache/commons/scxml2/test/StandaloneJexlExpressions.java b/src/main/java/org/apache/commons/scxml2/test/StandaloneJexlExpressions.java
index 0c1bd5b..fd6430c 100644
--- a/src/main/java/org/apache/commons/scxml2/test/StandaloneJexlExpressions.java
+++ b/src/main/java/org/apache/commons/scxml2/test/StandaloneJexlExpressions.java
@@ -55,7 +55,7 @@ public final class StandaloneJexlExpressions {
                     + "<url|filename>");
             System.exit(-1);
         }
-        Evaluator evaluator = new JexlEvaluator();
+        final Evaluator evaluator = new JexlEvaluator();
         StandaloneUtils.execute(args[0], evaluator);
     }
 
diff --git a/src/main/java/org/apache/commons/scxml2/test/StandaloneUtils.java b/src/main/java/org/apache/commons/scxml2/test/StandaloneUtils.java
index 9695e47..fb986a6 100644
--- a/src/main/java/org/apache/commons/scxml2/test/StandaloneUtils.java
+++ b/src/main/java/org/apache/commons/scxml2/test/StandaloneUtils.java
@@ -70,23 +70,23 @@ public final class StandaloneUtils {
      */
     public static void execute(final String uri, final Evaluator evaluator) {
         try {
-            String documentURI = getCanonicalURI(uri);
-            Context rootCtx = evaluator.newContext(null);
-            Tracer trc = new Tracer();
-            SCXML doc = SCXMLReader.read(new URL(documentURI));
+            final String documentURI = getCanonicalURI(uri);
+            final Context rootCtx = evaluator.newContext(null);
+            final Tracer trc = new Tracer();
+            final SCXML doc = SCXMLReader.read(new URL(documentURI));
             if (doc == null) {
                 System.err.println("The SCXML document " + uri
                         + " can not be parsed!");
                 System.exit(-1);
             }
             System.out.println(SCXMLWriter.write(doc));
-            SCXMLExecutor exec = new SCXMLExecutor(evaluator, null, trc);
+            final SCXMLExecutor exec = new SCXMLExecutor(evaluator, null, trc);
             exec.setStateMachine(doc);
             exec.addListener(doc, trc);
             exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
             exec.setRootContext(rootCtx);
             exec.go();
-            BufferedReader br = new BufferedReader(new
+            final BufferedReader br = new BufferedReader(new
                 InputStreamReader(System.in));
             String event;
             while ((event = br.readLine()) != null) {
@@ -104,23 +104,23 @@ public final class StandaloneUtils {
                 } else if (event.equalsIgnoreCase("reset")) {
                     exec.reset();
                 } else if (event.indexOf('=') != -1) {
-                    int marker = event.indexOf('=');
-                    String name = event.substring(0, marker);
-                    String value = event.substring(marker + 1);
+                    final int marker = event.indexOf('=');
+                    final String name = event.substring(0, marker);
+                    final String value = event.substring(marker + 1);
                     rootCtx.setLocal(name, value);
                     System.out.println("Set variable " + name + " to "
                         + value);
                 } else if (event.trim().length() == 0
                            || event.equalsIgnoreCase("null")) {
-                    TriggerEvent[] evts = {new EventBuilder(null,TriggerEvent.SIGNAL_EVENT).build()};
+                    final TriggerEvent[] evts = {new EventBuilder(null,TriggerEvent.SIGNAL_EVENT).build()};
                     exec.triggerEvents(evts);
                     if (exec.getStatus().isFinal()) {
                         System.out.println("A final configuration reached.");
                     }
                 } else {
-                    StringTokenizer st = new StringTokenizer(event);
-                    int tkns = st.countTokens();
-                    TriggerEvent[] evts = new TriggerEvent[tkns];
+                    final StringTokenizer st = new StringTokenizer(event);
+                    final int tkns = st.countTokens();
+                    final TriggerEvent[] evts = new TriggerEvent[tkns];
                     for (int i = 0; i < tkns; i++) {
                         evts[i] = new EventBuilder(st.nextToken(), TriggerEvent.SIGNAL_EVENT).build();
                     }
@@ -147,7 +147,7 @@ public final class StandaloneUtils {
             || uri.toLowerCase().startsWith("file://")) {
                 return uri;
         }
-        File in = new File(uri);
+        final File in = new File(uri);
         return "file:///" + in.getCanonicalPath();
     }
 
diff --git a/src/test/java/org/apache/commons/scxml2/EventDataTest.java b/src/test/java/org/apache/commons/scxml2/EventDataTest.java
index 19b2c7f..3417132 100644
--- a/src/test/java/org/apache/commons/scxml2/EventDataTest.java
+++ b/src/test/java/org/apache/commons/scxml2/EventDataTest.java
@@ -34,7 +34,7 @@ public class EventDataTest {
      */
     @Test
     public void testEventdata01Sample() throws Exception {
-    	SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/eventdata-01.xml");
+    	final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/eventdata-01.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
@@ -43,7 +43,7 @@ public class EventDataTest {
         currentStates = SCXMLTestHelper.fireEvent(exec, te);
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("state3", currentStates.iterator().next().getId());
-        TriggerEvent[] evts = new TriggerEvent[] { te,
+        final TriggerEvent[] evts = new TriggerEvent[] { te,
             new EventBuilder("event.bar", TriggerEvent.SIGNAL_EVENT).data(6).build()};
         currentStates = SCXMLTestHelper.fireEvents(exec, evts);
         Assertions.assertEquals(1, currentStates.size());
@@ -56,16 +56,16 @@ public class EventDataTest {
 
     @Test
     public void testEventdata02Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/eventdata-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/eventdata-02.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("state0", currentStates.iterator().next().getId());
-        TriggerEvent te1 = new EventBuilder("connection.alerting", TriggerEvent.SIGNAL_EVENT).data("line2").build();
+        final TriggerEvent te1 = new EventBuilder("connection.alerting", TriggerEvent.SIGNAL_EVENT).data("line2").build();
         currentStates = SCXMLTestHelper.fireEvent(exec, te1);
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("state2", currentStates.iterator().next().getId());
-        TriggerEvent te2 = new EventBuilder("connection.alerting", TriggerEvent.SIGNAL_EVENT)
+        final TriggerEvent te2 = new EventBuilder("connection.alerting", TriggerEvent.SIGNAL_EVENT)
                 .data(new ConnectionAlertingPayload(4)).build();
         currentStates = SCXMLTestHelper.fireEvent(exec, te2);
         Assertions.assertEquals(1, currentStates.size());
@@ -74,12 +74,12 @@ public class EventDataTest {
 
     @Test
     public void testEventdata03Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/eventdata-03.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/eventdata-03.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("ten", currentStates.iterator().next().getId());
-        TriggerEvent te = new EventBuilder("event.foo", TriggerEvent.SIGNAL_EVENT).build();
+        final TriggerEvent te = new EventBuilder("event.foo", TriggerEvent.SIGNAL_EVENT).build();
         currentStates = SCXMLTestHelper.fireEvent(exec, te);
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("thirty", currentStates.iterator().next().getId());
@@ -87,9 +87,9 @@ public class EventDataTest {
 
     @Test
     public void testEventdata04Sample() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/eventdata-03.xml");
-        Tracer trc = new Tracer();
-        SCXMLExecutor exec = new SCXMLExecutor(null, null, trc);
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/eventdata-03.xml");
+        final Tracer trc = new Tracer();
+        final SCXMLExecutor exec = new SCXMLExecutor(null, null, trc);
         exec.addListener(scxml, trc);
         exec.setStateMachine(scxml);
         exec.go();
@@ -98,11 +98,11 @@ public class EventDataTest {
 
     public static class ConnectionAlertingPayload {
         private int line;
-        ConnectionAlertingPayload(int line) {
+        ConnectionAlertingPayload(final int line) {
             this.line = line;
         }
         @SuppressWarnings("unsed")
-        public void setLine(int line) {
+        public void setLine(final int line) {
             this.line = line;
         }
         @SuppressWarnings("unsed")
diff --git a/src/test/java/org/apache/commons/scxml2/SCInstanceTest.java b/src/test/java/org/apache/commons/scxml2/SCInstanceTest.java
index 4078f0b..3ffaf2f 100644
--- a/src/test/java/org/apache/commons/scxml2/SCInstanceTest.java
+++ b/src/test/java/org/apache/commons/scxml2/SCInstanceTest.java
@@ -41,7 +41,7 @@ public class SCInstanceTest {
     
     @Test
     public void testGetRootContext() {
-        Context context = new SimpleContext();
+        final Context context = new SimpleContext();
         context.set("name", "value");
         
         instance.setRootContext(context);
@@ -50,10 +50,10 @@ public class SCInstanceTest {
     
     @Test
     public void testGetContext() {
-        State target = new State();
+        final State target = new State();
         target.setId("1");
         
-        Context context = new SimpleContext();
+        final Context context = new SimpleContext();
         context.set("name", "value");
         
         instance.setContext(target, context);
@@ -63,14 +63,14 @@ public class SCInstanceTest {
     
     @Test
     public void testGetContextNullParent() throws Exception {
-        State target = new State();
+        final State target = new State();
         target.setId("1");
 
-        Context context = new SimpleContext();
+        final Context context = new SimpleContext();
         context.set("name", "value");
         instance.setRootContext(context);
 
-        Evaluator evaluator = new JexlEvaluator();
+        final Evaluator evaluator = new JexlEvaluator();
         executor.setEvaluator(evaluator);
 
         Assertions.assertEquals("value", instance.getContext(target).get("name"));
@@ -79,19 +79,19 @@ public class SCInstanceTest {
 
     @Test
     public void testGetContextParent() throws Exception {
-        State target = new State();
+        final State target = new State();
         target.setId("1");
         
-        State parent = new State();
+        final State parent = new State();
         parent.setId("parent");
         
         target.setParent(parent);
 
-        Context context = new SimpleContext();
+        final Context context = new SimpleContext();
         context.set("name", "value");
         instance.setRootContext(context);
 
-        Evaluator evaluator = new JexlEvaluator();
+        final Evaluator evaluator = new JexlEvaluator();
         executor.setEvaluator(evaluator);
 
         Assertions.assertEquals("value", instance.getContext(target).get("name"));
@@ -100,27 +100,27 @@ public class SCInstanceTest {
 
     @Test
     public void testGetLastConfigurationNull() {
-        History history = new History();
+        final History history = new History();
         
-        Set<EnterableState> returnConfiguration = instance.getLastConfiguration(history);
+        final Set<EnterableState> returnConfiguration = instance.getLastConfiguration(history);
         
         Assertions.assertEquals(0, returnConfiguration.size());
     }
 
     @Test
     public void testGetLastConfiguration() {
-        History history = new History();
+        final History history = new History();
         history.setId("1");
         
-        Set<EnterableState> configuration = new HashSet<>();
-        EnterableState tt1 = new State();
-        EnterableState tt2 = new State();
+        final Set<EnterableState> configuration = new HashSet<>();
+        final EnterableState tt1 = new State();
+        final EnterableState tt2 = new State();
         configuration.add(tt1);
         configuration.add(tt2);
         
         instance.setLastConfiguration(history, configuration);  
         
-        Set<EnterableState> returnConfiguration = instance.getLastConfiguration(history);
+        final Set<EnterableState> returnConfiguration = instance.getLastConfiguration(history);
         
         Assertions.assertEquals(2, returnConfiguration.size());
         Assertions.assertTrue(returnConfiguration.contains(tt1));
@@ -134,11 +134,11 @@ public class SCInstanceTest {
     
     @Test
     public void testIsEmptyFalse() {
-        History history = new History();
+        final History history = new History();
         history.setId("1");
         
-        Set<EnterableState> configuration = new HashSet<>();
-        EnterableState tt1 = new State();
+        final Set<EnterableState> configuration = new HashSet<>();
+        final EnterableState tt1 = new State();
         configuration.add(tt1);
         
         instance.setLastConfiguration(history, configuration);  
@@ -148,11 +148,11 @@ public class SCInstanceTest {
     
     @Test
     public void testReset() {
-        History history = new History();
+        final History history = new History();
         history.setId("1");
 
-        Set<EnterableState> configuration = new HashSet<>();
-        EnterableState tt1 = new State();
+        final Set<EnterableState> configuration = new HashSet<>();
+        final EnterableState tt1 = new State();
         configuration.add(tt1);
         
         instance.setLastConfiguration(history, configuration);  
diff --git a/src/test/java/org/apache/commons/scxml2/SCXMLExecutorTest.java b/src/test/java/org/apache/commons/scxml2/SCXMLExecutorTest.java
index c48547c..90b2cf6 100644
--- a/src/test/java/org/apache/commons/scxml2/SCXMLExecutorTest.java
+++ b/src/test/java/org/apache/commons/scxml2/SCXMLExecutorTest.java
@@ -35,77 +35,77 @@ public class SCXMLExecutorTest {
      */
     @Test
     public void testSCXMLExecutorMicrowave01JexlSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-01.xml");
         exec.go();
         checkMicrowave01Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave02JexlSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-02.xml");
         exec.go();
         checkMicrowave02Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave03JexlSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-03.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-03.xml");
         exec.go();
         checkMicrowave01Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave04JexlSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-04.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-04.xml");
         exec.go();
         checkMicrowave02Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave05JexlSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-05.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/microwave-05.xml");
         exec.go();
         checkMicrowave02Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave01grvSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-01.xml");
         exec.go();
         checkMicrowave01Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave02grvSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-02.xml");
         exec.go();
         checkMicrowave02Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave03grvSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-03.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-03.xml");
         exec.go();
         checkMicrowave01Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave04grvSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-04.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-04.xml");
         exec.go();
         checkMicrowave02Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorMicrowave05grvSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-05.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/microwave-05.xml");
         exec.go();
         checkMicrowave02Sample(exec);
     }
 
     @Test
     public void testSCXMLExecutorPrefix01Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/prefix-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/prefix-01.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
@@ -117,7 +117,7 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSCXMLExecutorTransitions01Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-01.xml");
         exec.go();
         Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.ten");
         Assertions.assertEquals(1, currentStates.size());
@@ -147,15 +147,15 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSCXMLExecutorTransitions03Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-03.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-03.xml");
         exec.go();
-        Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.ten");
+        final Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.ten");
         Assertions.assertEquals(3, currentStates.size());
-        Set<String> expected = new HashSet<>();
+        final Set<String> expected = new HashSet<>();
         expected.add("twenty_one_2");
         expected.add("twenty_two_2");
         expected.add("twenty_three_2");
-        for (TransitionTarget tt : currentStates) {
+        for (final TransitionTarget tt : currentStates) {
             if (!expected.remove(tt.getId())) {
                 Assertions.fail("'" + tt.getId()
                     + "' is not an expected current state ID");
@@ -165,15 +165,15 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSCXMLExecutorTransitions04Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-04.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-04.xml");
         exec.go();
         Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.ten");
         Assertions.assertEquals(3, currentStates.size());
-        Set<String> expected = new HashSet<>();
+        final Set<String> expected = new HashSet<>();
         expected.add("twenty_one_1");
         expected.add("twenty_two_1");
         expected.add("twenty_three_1");
-        for (TransitionTarget tt : currentStates) {
+        for (final TransitionTarget tt : currentStates) {
             if (!expected.remove(tt.getId())) {
                 Assertions.fail("'" + tt.getId()
                     + "' is not an expected current state ID");
@@ -187,14 +187,14 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSCXMLExecutorTransitions05Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-05.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-05.xml");
         exec.go();
         SCXMLTestHelper.assertPostTriggerState(exec, "foo", "end");
     }
 
     @Test
     public void testSCXMLExecutorTransitions06Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-06.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-06.xml");
         exec.go();
         SCXMLTestHelper.assertPostTriggerStates(exec, "start", new String[]{"one", "two"});
         SCXMLTestHelper.assertPostTriggerState(exec, "onetwo_three", "three");
@@ -204,7 +204,7 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSend01Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/send-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/send-01.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
@@ -216,9 +216,9 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSend02TypeSCXMLSample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/send-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/send-02.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("ninety", currentStates.iterator().next().getId());
         Assertions.assertTrue(exec.getStatus().isFinal());
@@ -226,9 +226,9 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSCXMLExecutorTransitionsWithCond01Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-with-cond-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-with-cond-01.xml");
         exec.go();
-        Map<String, Object> payload = new HashMap<>();
+        final Map<String, Object> payload = new HashMap<>();
 
         // with _event.data set to true, transition should happen as expected.
         payload.put("keyed", Boolean.TRUE);
@@ -255,16 +255,16 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSCXMLExecutorSystemEventVariable() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-event-variable.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-event-variable.xml");
         exec.go();
-        Map<String, Object> payload = new HashMap<>();
+        final Map<String, Object> payload = new HashMap<>();
         payload.put("keyed", Boolean.TRUE);
         SCXMLTestHelper.assertPostTriggerState(exec, "open", payload, "opened");
     }
 
     @Test
     public void testSCXMLExecutorSetConfiguration() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/transitions-01.xml");
         exec.go();
         Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.ten");
         Assertions.assertEquals(1, currentStates.size());
@@ -272,7 +272,7 @@ public class SCXMLExecutorTest {
         currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.twenty_one");
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("twenty_two", currentStates.iterator().next().getId());
-        Set<String> stateIds = new HashSet<>();
+        final Set<String> stateIds = new HashSet<>();
         stateIds.add("twenty_one");
         exec.setConfiguration(stateIds);
         Assertions.assertEquals(1, exec.getStatus().getStates().size());
@@ -283,22 +283,22 @@ public class SCXMLExecutorTest {
 
     @Test
     public void testSCXMLExecutorFinalDoneData() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/final-donedata.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/final-donedata.xml");
         Assertions.assertNull(exec.getFinalDoneData());
         exec.go();
         Assertions.assertEquals("done", exec.getFinalDoneData());
     }
 
-    private void checkMicrowave01Sample(SCXMLExecutor exec) throws Exception {
-        Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "turn_on");
+    private void checkMicrowave01Sample(final SCXMLExecutor exec) throws Exception {
+        final Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "turn_on");
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("cooking", currentStates.iterator().next().getId());
     }
 
-    private void checkMicrowave02Sample(SCXMLExecutor exec) throws Exception {
-        Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "turn_on");
+    private void checkMicrowave02Sample(final SCXMLExecutor exec) throws Exception {
+        final Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "turn_on");
         Assertions.assertEquals(2, currentStates.size());
-        String id = (currentStates.iterator().next()).getId();
+        final String id = (currentStates.iterator().next()).getId();
         Assertions.assertTrue(id.equals("closed") || id.equals("cooking"));
     }
 }
diff --git a/src/test/java/org/apache/commons/scxml2/SCXMLTestHelper.java b/src/test/java/org/apache/commons/scxml2/SCXMLTestHelper.java
index 0ed3d97..1802bef 100644
--- a/src/test/java/org/apache/commons/scxml2/SCXMLTestHelper.java
+++ b/src/test/java/org/apache/commons/scxml2/SCXMLTestHelper.java
@@ -59,7 +59,7 @@ public class SCXMLTestHelper {
         return Integer.toString(++sequence);
     }
 
-    public static URL getResource(String name) {
+    public static URL getResource(final String name) {
         return SCXMLTestHelper.class.getClassLoader().getResource(name);
     }
 
@@ -79,16 +79,16 @@ public class SCXMLTestHelper {
 
     public static SCXML parse(final URL url, final List<CustomAction> customActions) throws Exception {
         Assertions.assertNotNull(url);
-        Configuration configuration = new Configuration(null, null, customActions);
-        SCXML scxml = SCXMLReader.read(url, configuration);
+        final Configuration configuration = new Configuration(null, null, customActions);
+        final SCXML scxml = SCXMLReader.read(url, configuration);
         Assertions.assertNotNull(scxml);
         return testModelSerializability(scxml);
     }
 
     public static SCXML parse(final Reader scxmlReader, final List<CustomAction> customActions) throws Exception {
         Assertions.assertNotNull(scxmlReader);
-        Configuration configuration = new Configuration(null, null, customActions);
-        SCXML scxml = SCXMLReader.read(scxmlReader, configuration);
+        final Configuration configuration = new Configuration(null, null, customActions);
+        final SCXML scxml = SCXMLReader.read(scxmlReader, configuration);
         Assertions.assertNotNull(scxml);
         return testModelSerializability(scxml);
     }
@@ -114,27 +114,27 @@ public class SCXMLTestHelper {
     }
 
     public static SCXMLExecutor getExecutor(final SCXML scxml, final Evaluator evaluator, final EventDispatcher eventDispatcher) throws Exception {
-        Tracer trc = new Tracer();
-        SCXMLExecutor exec = new SCXMLExecutor(evaluator, eventDispatcher, trc);
+        final Tracer trc = new Tracer();
+        final SCXMLExecutor exec = new SCXMLExecutor(evaluator, eventDispatcher, trc);
         exec.setStateMachine(scxml);
         exec.addListener(scxml, trc);
         return exec;
     }
 
-    public static TransitionTarget lookupTransitionTarget(SCXMLExecutor exec, String id) {
+    public static TransitionTarget lookupTransitionTarget(final SCXMLExecutor exec, final String id) {
         return exec.getStateMachine().getTargets().get(id);
     }
 
-    public static Context lookupContext(SCXMLExecutor exec, String id) {
-        TransitionTarget tt = lookupTransitionTarget(exec, id);
+    public static Context lookupContext(final SCXMLExecutor exec, final String id) {
+        final TransitionTarget tt = lookupTransitionTarget(exec, id);
         if (tt == null || !(tt instanceof EnterableState)) {
             return null;
         }
         return exec.getSCInstance().lookupContext((EnterableState)tt);
     }
 
-    public static void assertState(SCXMLExecutor exec, String expectedStateId) {
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+    public static void assertState(final SCXMLExecutor exec, final String expectedStateId) {
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size(),
                 "Expected 1 simple (leaf) state with id '" + expectedStateId +
                         "' but found " + currentStates.size() + " states instead.");
@@ -142,51 +142,51 @@ public class SCXMLTestHelper {
             next().getId());
     }
 
-    public static Set<EnterableState> fireEvent(SCXMLExecutor exec, String name) throws Exception {
+    public static Set<EnterableState> fireEvent(final SCXMLExecutor exec, final String name) throws Exception {
         return fireEvent(exec, name, null);
     }
 
-    public static Set<EnterableState> fireEvent(SCXMLExecutor exec, String name, Object data) throws Exception {
-        TriggerEvent[] evts = {new EventBuilder(name, TriggerEvent.SIGNAL_EVENT).data(data).build()};
+    public static Set<EnterableState> fireEvent(final SCXMLExecutor exec, final String name, final Object data) throws Exception {
+        final TriggerEvent[] evts = {new EventBuilder(name, TriggerEvent.SIGNAL_EVENT).data(data).build()};
         exec.triggerEvents(evts);
         return exec.getStatus().getStates();
     }
 
-    public static Set<EnterableState> fireEvent(SCXMLExecutor exec, TriggerEvent te) throws Exception {
+    public static Set<EnterableState> fireEvent(final SCXMLExecutor exec, final TriggerEvent te) throws Exception {
         exec.triggerEvent(te);
         return exec.getStatus().getStates();
     }
 
-    public static Set<EnterableState> fireEvents(SCXMLExecutor exec, TriggerEvent[] evts) throws Exception {
+    public static Set<EnterableState> fireEvents(final SCXMLExecutor exec, final TriggerEvent[] evts) throws Exception {
         exec.triggerEvents(evts);
         return exec.getStatus().getStates();
     }
 
-    public static void assertPostTriggerState(SCXMLExecutor exec,
-            String triggerEventName, String expectedStateId) throws Exception {
+    public static void assertPostTriggerState(final SCXMLExecutor exec,
+            final String triggerEventName, final String expectedStateId) throws Exception {
         assertPostTriggerState(exec, triggerEventName, null, expectedStateId);
     }
 
-    public static void assertPostTriggerState(SCXMLExecutor exec,
-            String triggerEventName, Object data, String expectedStateId) throws Exception {
+    public static void assertPostTriggerState(final SCXMLExecutor exec,
+            final String triggerEventName, final Object data, final String expectedStateId) throws Exception {
         assertPostTriggerState(exec, new EventBuilder(triggerEventName, TriggerEvent.SIGNAL_EVENT)
                 .data(data).build(), expectedStateId);
     }
 
-    public static void assertPostTriggerStates(SCXMLExecutor exec,
-            String triggerEventName, String[] expectedStateIds) throws Exception {
+    public static void assertPostTriggerStates(final SCXMLExecutor exec,
+            final String triggerEventName, final String[] expectedStateIds) throws Exception {
         assertPostTriggerStates(exec, triggerEventName, null, expectedStateIds);
     }
 
-    public static void assertPostTriggerStates(SCXMLExecutor exec,
-            String triggerEventName, Object data, String[] expectedStateIds) throws Exception {
+    public static void assertPostTriggerStates(final SCXMLExecutor exec,
+            final String triggerEventName, final Object data, final String[] expectedStateIds) throws Exception {
         assertPostTriggerStates(exec, new EventBuilder(triggerEventName, TriggerEvent.SIGNAL_EVENT)
                 .data(data).build(), expectedStateIds);
     }
 
-    public static void assertPostTriggerState(SCXMLExecutor exec,
-            TriggerEvent triggerEvent, String expectedStateId) throws Exception {
-        Set<EnterableState> currentStates = fireEvent(exec, triggerEvent);
+    public static void assertPostTriggerState(final SCXMLExecutor exec,
+            final TriggerEvent triggerEvent, final String expectedStateId) throws Exception {
+        final Set<EnterableState> currentStates = fireEvent(exec, triggerEvent);
         Assertions.assertEquals(1, currentStates.size(),
                 "Expected 1 simple (leaf) state with id '"
                         + expectedStateId + "' on firing event " + triggerEvent
@@ -195,21 +195,21 @@ public class SCXMLTestHelper {
             next().getId());
     }
 
-    public static void assertPostTriggerStates(SCXMLExecutor exec,
-            TriggerEvent triggerEvent, String[] expectedStateIds) throws Exception {
+    public static void assertPostTriggerStates(final SCXMLExecutor exec,
+            final TriggerEvent triggerEvent, final String[] expectedStateIds) throws Exception {
         if (expectedStateIds == null || expectedStateIds.length == 0) {
             Assertions.fail("Must specify an array of one or more "
                 + "expected state IDs");
         }
-        Set<EnterableState> currentStates = fireEvent(exec, triggerEvent);
-        int n = expectedStateIds.length;
+        final Set<EnterableState> currentStates = fireEvent(exec, triggerEvent);
+        final int n = expectedStateIds.length;
         Assertions.assertEquals(n, currentStates.size(),
                 "Expected " + n + " simple (leaf) state(s) "
                         + " on firing event " + triggerEvent + " but found "
                         + currentStates.size() + " states instead.");
-        List<String> expectedStateIdList = new ArrayList<>(Arrays.asList(expectedStateIds));
-        for (TransitionTarget tt : currentStates) {
-            String stateId = tt.getId();
+        final List<String> expectedStateIdList = new ArrayList<>(Arrays.asList(expectedStateIds));
+        for (final TransitionTarget tt : currentStates) {
+            final String stateId = tt.getId();
             if(!expectedStateIdList.remove(stateId)) {
                 Assertions.fail("Expected state with id '" + stateId
                     + "' in current states on firing event "
@@ -222,18 +222,18 @@ public class SCXMLTestHelper {
     }
 
     public static SCXML testModelSerializability(final SCXML scxml) throws Exception {
-        File fileDir = new File(SERIALIZATION_DIR);
+        final File fileDir = new File(SERIALIZATION_DIR);
         if (!fileDir.exists()) {
             fileDir.mkdirs();
         }
-        String filename = SERIALIZATION_FILE_PREFIX
+        final String filename = SERIALIZATION_FILE_PREFIX
             + getSequenceNumber() + SERIALIZATION_FILE_SUFFIX;
         SCXML roundtrip;
-        ObjectOutputStream out =
+        final ObjectOutputStream out =
             new ObjectOutputStream(new FileOutputStream(filename));
         out.writeObject(scxml);
         out.close();
-        ObjectInputStream in =
+        final ObjectInputStream in =
             new ObjectInputStream(new FileInputStream(filename));
         roundtrip = (SCXML) in.readObject();
         in.close();
@@ -241,17 +241,17 @@ public class SCXMLTestHelper {
     }
 
     public static SCXMLExecutor testInstanceSerializability(final SCXMLExecutor exec) throws Exception {
-        File fileDir = new File(SERIALIZATION_DIR);
+        final File fileDir = new File(SERIALIZATION_DIR);
         if (!fileDir.exists()) {
             fileDir.mkdirs();
         }
-        String filename = SERIALIZATION_FILE_PREFIX
+        final String filename = SERIALIZATION_FILE_PREFIX
             + getSequenceNumber() + SERIALIZATION_FILE_SUFFIX;
-        ObjectOutputStream out =
+        final ObjectOutputStream out =
             new ObjectOutputStream(new FileOutputStream(filename));
         out.writeObject(exec.detachInstance());
         out.close();
-        ObjectInputStream in =
+        final ObjectInputStream in =
             new SCInstanceObjectInputStream(new FileInputStream(filename));
         exec.attachInstance((SCInstance) in.readObject());
         in.close();
diff --git a/src/test/java/org/apache/commons/scxml2/StatusTest.java b/src/test/java/org/apache/commons/scxml2/StatusTest.java
index 4c86ced..1955210 100644
--- a/src/test/java/org/apache/commons/scxml2/StatusTest.java
+++ b/src/test/java/org/apache/commons/scxml2/StatusTest.java
@@ -38,7 +38,7 @@ public class StatusTest {
     
     @Test
     public void testIsFinalStateFalse() {
-        State state = new State();
+        final State state = new State();
 
         stateConfiguration.enterState(state);
         
@@ -47,7 +47,7 @@ public class StatusTest {
     
     @Test
     public void testIsFinalStateHasParent() {
-        Final state = new Final();
+        final Final state = new Final();
         state.setParent(new State());
         
         stateConfiguration.enterState(state);
@@ -57,7 +57,7 @@ public class StatusTest {
     
     @Test
     public void testIsFinalState() {
-        Final state = new Final();
+        final Final state = new Final();
 
         stateConfiguration.enterState(state);
 
@@ -67,32 +67,32 @@ public class StatusTest {
     @Test
     public void testGetAllStatesEmptyStatus() {
 
-        Set<EnterableState> returnValue = status.getActiveStates();
+        final Set<EnterableState> returnValue = status.getActiveStates();
 
         Assertions.assertEquals(0, returnValue.size());
     }
 
     @Test
     public void testGetAllStatesContainsParent() {
-        State parent = new State();
+        final State parent = new State();
         parent.setId("0");
         stateConfiguration.enterState(parent);
-        State state = new State();
+        final State state = new State();
         state.setId("1");
         state.setParent(parent);
         stateConfiguration.enterState(state);
 
-        Set<EnterableState> returnValue = status.getActiveStates();
+        final Set<EnterableState> returnValue = status.getActiveStates();
 
         Assertions.assertEquals(2, returnValue.size());
     }
 
     @Test
     public void testIsInState() {
-        State parent = new State();
+        final State parent = new State();
         parent.setId("0");
         stateConfiguration.enterState(parent);
-        State state = new State();
+        final State state = new State();
         state.setId("1");
         state.setParent(parent);
         stateConfiguration.enterState(state);
diff --git a/src/test/java/org/apache/commons/scxml2/TieBreakerTest.java b/src/test/java/org/apache/commons/scxml2/TieBreakerTest.java
index 959587a..b01807a 100644
--- a/src/test/java/org/apache/commons/scxml2/TieBreakerTest.java
+++ b/src/test/java/org/apache/commons/scxml2/TieBreakerTest.java
@@ -38,7 +38,7 @@ public class TieBreakerTest {
 
     @Test
     public void testTieBreaker01() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-01.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
@@ -50,7 +50,7 @@ public class TieBreakerTest {
 
     @Test
     public void testTieBreaker02() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-02.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
@@ -62,7 +62,7 @@ public class TieBreakerTest {
 
     @Test
     public void testTieBreaker03() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-03.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-03.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
@@ -74,7 +74,7 @@ public class TieBreakerTest {
 
     @Test
     public void testTieBreaker04() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-04.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-04.xml");
         exec.go();
         Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "event_2");
         Assertions.assertEquals(1, currentStates.size());
@@ -84,19 +84,19 @@ public class TieBreakerTest {
 
     @Test
     public void testTieBreaker05() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-05.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-05.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(3, currentStates.size());
-        for (TransitionTarget tt : currentStates) {
-            String id = tt.getId();
+        for (final TransitionTarget tt : currentStates) {
+            final String id = tt.getId();
             Assertions.assertTrue(id.equals("s11") || id.equals("s212")
                 || id.equals("s2111"));
         }
         currentStates = SCXMLTestHelper.fireEvent(exec, "event1");
         Assertions.assertEquals(3, currentStates.size());
-        for (TransitionTarget tt : currentStates) {
-            String id = tt.getId();
+        for (final TransitionTarget tt : currentStates) {
+            final String id = tt.getId();
             Assertions.assertTrue(id.equals("s12") || id.equals("s212")
                 || id.equals("s2112"));
         }
@@ -104,9 +104,9 @@ public class TieBreakerTest {
 
     @Test
     public void testTieBreaker06() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-06.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-06.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
     }
 }
diff --git a/src/test/java/org/apache/commons/scxml2/WildcardTest.java b/src/test/java/org/apache/commons/scxml2/WildcardTest.java
index 671627c..c390959 100644
--- a/src/test/java/org/apache/commons/scxml2/WildcardTest.java
+++ b/src/test/java/org/apache/commons/scxml2/WildcardTest.java
@@ -45,9 +45,9 @@ public class WildcardTest {
 
     @Test
     public void testWildcard02Sample() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/wildcard-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/wildcard-02.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("state2", currentStates.iterator().next().getId());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/WizardsTest.java b/src/test/java/org/apache/commons/scxml2/WizardsTest.java
index 438a713..768ea87 100644
--- a/src/test/java/org/apache/commons/scxml2/WizardsTest.java
+++ b/src/test/java/org/apache/commons/scxml2/WizardsTest.java
@@ -79,11 +79,11 @@ public class WizardsTest {
         int callback = 0;
 
         @SuppressWarnings("unchecked")
-        public void send(Map<String, SCXMLIOProcessor> ioProcessors, String id, String target, String type,
-                String event, Object data, Object hints, long delay) {
+        public void send(final Map<String, SCXMLIOProcessor> ioProcessors, final String id, final String target, final String type,
+                final String event, final Object data, final Object hints, final long delay) {
             if ("foo".equals(type)) {
-                Map<String, Object> params = (Map<String, Object>)data;
-                int i = ((Integer) params.get("aValue"));
+                final Map<String, Object> params = (Map<String, Object>)data;
+                final int i = ((Integer) params.get("aValue"));
                 switch (callback) {
                     case 0:
                         Assertions.assertTrue(i == 2); // state2
@@ -101,7 +101,7 @@ public class WizardsTest {
                 super.send(ioProcessors, id, target, type, event, data, hints, delay);
             }
         }
-        public void cancel(String sendId) {
+        public void cancel(final String sendId) {
             // should never be called
             Assertions.fail("<cancel> TestEventDispatcher callback unexpected");
         }
diff --git a/src/test/java/org/apache/commons/scxml2/env/AbstractSCXMLListenerTest.java b/src/test/java/org/apache/commons/scxml2/env/AbstractSCXMLListenerTest.java
index 9a54322..492fccc 100644
--- a/src/test/java/org/apache/commons/scxml2/env/AbstractSCXMLListenerTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/AbstractSCXMLListenerTest.java
@@ -64,12 +64,12 @@ public class AbstractSCXMLListenerTest {
 
     @Test
     public void testAbstractSCXMLListener0() {
-        SCXMLListener listener0 = new AbstractSCXMLListener() {
+        final SCXMLListener listener0 = new AbstractSCXMLListener() {
                 /**
                  * @see SCXMLListener#onEntry(EnterableState)
                  */
                 @Override
-                public void onEntry(EnterableState state) {
+                public void onEntry(final EnterableState state) {
                     heardOnEntry = true;
                 }
 
@@ -77,7 +77,7 @@ public class AbstractSCXMLListenerTest {
                  * @see SCXMLListener#onExit(EnterableState)
                  */
                 @Override
-                public void onExit(EnterableState state) {
+                public void onExit(final EnterableState state) {
                     heardOnExit = true;
                 }
 
@@ -85,8 +85,8 @@ public class AbstractSCXMLListenerTest {
                  * @see SCXMLListener#onTransition(TransitionTarget,TransitionTarget,Transition,String)
                  */
                 @Override
-                public void onTransition(TransitionTarget from, TransitionTarget to,
-                                         Transition transition, String event) {
+                public void onTransition(final TransitionTarget from, final TransitionTarget to,
+                                         final Transition transition, final String event) {
                     heardOnTransition = true;
                 }
             };
@@ -104,12 +104,12 @@ public class AbstractSCXMLListenerTest {
 
     @Test
     public void testAbstractSCXMLListener1() {
-        SCXMLListener listener1 = new AbstractSCXMLListener() {
+        final SCXMLListener listener1 = new AbstractSCXMLListener() {
                 /**
                  * @see SCXMLListener#onEntry(EnterableState)
                  */
                 @Override
-                public void onEntry(EnterableState state) {
+                public void onEntry(final EnterableState state) {
                     heardOnEntry = true;
                 }
 
@@ -117,7 +117,7 @@ public class AbstractSCXMLListenerTest {
                  * @see SCXMLListener#onExit(EnterableState)
                  */
                 @Override
-                public void onExit(EnterableState state) {
+                public void onExit(final EnterableState state) {
                     heardOnExit = true;
                 }
             };
@@ -135,12 +135,12 @@ public class AbstractSCXMLListenerTest {
 
     @Test
     public void testAbstractSCXMLListener2() {
-        SCXMLListener listener2 = new AbstractSCXMLListener() {
+        final SCXMLListener listener2 = new AbstractSCXMLListener() {
                 /**
                  * @see SCXMLListener#onEntry(EnterableState)
                  */
                 @Override
-                public void onEntry(EnterableState state) {
+                public void onEntry(final EnterableState state) {
                     heardOnEntry = true;
                 }
             };
@@ -158,7 +158,7 @@ public class AbstractSCXMLListenerTest {
 
     @Test
     public void testAbstractSCXMLListener3() {
-        SCXMLListener listener3 = new AbstractSCXMLListener() {
+        final SCXMLListener listener3 = new AbstractSCXMLListener() {
                 // empty
             };
 
diff --git a/src/test/java/org/apache/commons/scxml2/env/AbstractStateMachineTest.java b/src/test/java/org/apache/commons/scxml2/env/AbstractStateMachineTest.java
index bcdf78d..e522abe 100644
--- a/src/test/java/org/apache/commons/scxml2/env/AbstractStateMachineTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/AbstractStateMachineTest.java
@@ -29,11 +29,11 @@ public class AbstractStateMachineTest {
 
     @Test
     public void testMoreThanOneScxmlDocument() throws Exception {
-        URL fooScxmlDocument = getClass().getResource("foo.xml");
-        URL barScxmlDocument = getClass().getResource("bar.xml");
+        final URL fooScxmlDocument = getClass().getResource("foo.xml");
+        final URL barScxmlDocument = getClass().getResource("bar.xml");
 
-        Foo f = new Foo(fooScxmlDocument);
-        Bar b = new Bar(barScxmlDocument);
+        final Foo f = new Foo(fooScxmlDocument);
+        final Bar b = new Bar(barScxmlDocument);
 
         Assertions.assertTrue(f.fooCalled());
         Assertions.assertTrue(b.barCalled());
diff --git a/src/test/java/org/apache/commons/scxml2/env/LogUtilsTest.java b/src/test/java/org/apache/commons/scxml2/env/LogUtilsTest.java
index 4e69071..d56dc1d 100644
--- a/src/test/java/org/apache/commons/scxml2/env/LogUtilsTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/LogUtilsTest.java
@@ -25,7 +25,7 @@ public class LogUtilsTest {
 
     @Test
     public void testGetTTPathParentNull() {
-        State target = new State();
+        final State target = new State();
         target.setId("ID");
         
         Assertions.assertEquals("/ID", LogUtils.getTTPath(target));
@@ -33,13 +33,13 @@ public class LogUtilsTest {
     
     @Test
     public void testGetTTPathParent() {
-        State target = new State();
+        final State target = new State();
         target.setId("ID");
 
-        State parent1 = new State();
+        final State parent1 = new State();
         parent1.setId("parent1");
 
-        State parent2 = new State();
+        final State parent2 = new State();
         parent2.setId("parent2");
 
         parent1.setParent(parent2);
@@ -50,13 +50,13 @@ public class LogUtilsTest {
     
     @Test
     public void testTransToString() {
-        State targetTo = new State();
+        final State targetTo = new State();
         targetTo.setId("TO");
 
-        State targetFrom = new State();
+        final State targetFrom = new State();
         targetFrom.setId("FROM");
         
-        Transition transition = new Transition();
+        final Transition transition = new Transition();
         transition.setCond("condition");
         transition.setEvent("event happened");
         
diff --git a/src/test/java/org/apache/commons/scxml2/env/MockErrorReporter.java b/src/test/java/org/apache/commons/scxml2/env/MockErrorReporter.java
index d2c9a84..9539b65 100644
--- a/src/test/java/org/apache/commons/scxml2/env/MockErrorReporter.java
+++ b/src/test/java/org/apache/commons/scxml2/env/MockErrorReporter.java
@@ -24,7 +24,7 @@ public class MockErrorReporter implements ErrorReporter {
     private String errDetail;
     private Object errCtx;
     
-    public void onError( String errCode, String errDetail, Object errCtx ) {
+    public void onError( final String errCode, final String errDetail, final Object errCtx ) {
         this.errCode = errCode;
         this.errDetail = errDetail;
         this.errCtx = errCtx;
@@ -34,7 +34,7 @@ public class MockErrorReporter implements ErrorReporter {
         return errCode;
     }
 
-    public void setErrCode( String errCode ) {
+    public void setErrCode( final String errCode ) {
         this.errCode = errCode;
     }
 
@@ -42,7 +42,7 @@ public class MockErrorReporter implements ErrorReporter {
         return errCtx;
     }
 
-    public void setErrCtx( Object errCtx ) {
+    public void setErrCtx( final Object errCtx ) {
         this.errCtx = errCtx;
     }
 
@@ -50,7 +50,7 @@ public class MockErrorReporter implements ErrorReporter {
         return errDetail;
     }
 
-    public void setErrDetail( String errDetail ) {
+    public void setErrDetail( final String errDetail ) {
         this.errDetail = errDetail;
     }
 
diff --git a/src/test/java/org/apache/commons/scxml2/env/SimpleContextTest.java b/src/test/java/org/apache/commons/scxml2/env/SimpleContextTest.java
index 8ec830d..a5429cb 100644
--- a/src/test/java/org/apache/commons/scxml2/env/SimpleContextTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/SimpleContextTest.java
@@ -34,7 +34,7 @@ public class SimpleContextTest {
     
     @Test
     public void testHasTrue() {
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -44,7 +44,7 @@ public class SimpleContextTest {
 
     @Test
     public void testHasNullParent() {
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -54,12 +54,12 @@ public class SimpleContextTest {
     
     @Test
     public void testHasParentWrongKey() {
-        Map<String, Object> parentVars = new HashMap<>();
+        final Map<String, Object> parentVars = new HashMap<>();
         parentVars.put("key", "value");
         
-        SimpleContext parentContext = new SimpleContext(null, parentVars);
+        final SimpleContext parentContext = new SimpleContext(null, parentVars);
         
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -70,12 +70,12 @@ public class SimpleContextTest {
 
     @Test
     public void testHasParentCorrectKey() {
-        Map<String, Object> parentVars = new HashMap<>();
+        final Map<String, Object> parentVars = new HashMap<>();
         parentVars.put("differentKey", "value");
         
-        SimpleContext parentContext = new SimpleContext(null, parentVars);
+        final SimpleContext parentContext = new SimpleContext(null, parentVars);
         
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -86,14 +86,14 @@ public class SimpleContextTest {
     
     @Test
     public void testGetNull() {
-        Object value = context.get("key");
+        final Object value = context.get("key");
         
         Assertions.assertNull(value);
     }
     
     @Test
     public void testGetValue() {
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -103,12 +103,12 @@ public class SimpleContextTest {
     
     @Test
     public void testGetParentValue() {
-        Map<String, Object> parentVars = new HashMap<>();
+        final Map<String, Object> parentVars = new HashMap<>();
         parentVars.put("differentKey", "differentValue");
         
-        SimpleContext parentContext = new SimpleContext(null, parentVars);
+        final SimpleContext parentContext = new SimpleContext(null, parentVars);
         
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -119,7 +119,7 @@ public class SimpleContextTest {
     
     @Test
     public void testGetParentNull() {
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -129,12 +129,12 @@ public class SimpleContextTest {
     
     @Test
     public void testGetParentWrongValue() {
-        Map<String, Object> parentVars = new HashMap<>();
+        final Map<String, Object> parentVars = new HashMap<>();
         parentVars.put("differentKey", "differentValue");
         
-        SimpleContext parentContext = new SimpleContext(null, parentVars);
+        final SimpleContext parentContext = new SimpleContext(null, parentVars);
         
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -145,7 +145,7 @@ public class SimpleContextTest {
 
     @Test
     public void testSetVarsChangeValue() {
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -157,7 +157,7 @@ public class SimpleContextTest {
 
     @Test
     public void testSetVarsEmpty() {
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         context.setVars(vars);
         
         context.set("key", "newValue");
@@ -167,12 +167,12 @@ public class SimpleContextTest {
     
     @Test
     public void testSetVarsParent() {
-        Map<String, Object> parentVars = new HashMap<>();
+        final Map<String, Object> parentVars = new HashMap<>();
         parentVars.put("differentKey", "differentValue");
         
-        SimpleContext parentContext = new SimpleContext(null, parentVars);
+        final SimpleContext parentContext = new SimpleContext(null, parentVars);
         
-        Map<String, Object> vars = new HashMap<>();
+        final Map<String, Object> vars = new HashMap<>();
         vars.put("key", "value");
         
         context.setVars(vars);
@@ -185,10 +185,10 @@ public class SimpleContextTest {
 
     @Test
     public void testNestedEffectiveContextMapWrappingFails() {
-        SimpleContext rootContext = new SimpleContext();
+        final SimpleContext rootContext = new SimpleContext();
         rootContext.set("key", "root");
-        SimpleContext rootEffectiveContext = new SimpleContext(rootContext, new EffectiveContextMap(rootContext));
-        SimpleContext parentContext = new SimpleContext(rootEffectiveContext);
+        final SimpleContext rootEffectiveContext = new SimpleContext(rootContext, new EffectiveContextMap(rootContext));
+        final SimpleContext parentContext = new SimpleContext(rootEffectiveContext);
         Assertions.assertThrows(
                 IllegalArgumentException.class,
                 () -> new EffectiveContextMap(parentContext),
@@ -198,14 +198,14 @@ public class SimpleContextTest {
 
     @Test
     public void testEffectiveContextMapMergeStragegy() {
-        SimpleContext rootContext = new SimpleContext();
+        final SimpleContext rootContext = new SimpleContext();
         rootContext.set("key", "root");
-        SimpleContext parentContext = new SimpleContext(rootContext);
+        final SimpleContext parentContext = new SimpleContext(rootContext);
         parentContext.setLocal("key", "parent");
-        SimpleContext effectiveContext = new SimpleContext(parentContext, new EffectiveContextMap(parentContext));
+        final SimpleContext effectiveContext = new SimpleContext(parentContext, new EffectiveContextMap(parentContext));
         Assertions.assertEquals("parent", effectiveContext.get("key"));
         // ensure EffectiveContextMap provides complete local variable shadowing
-        for (Map.Entry<String,Object> entry : effectiveContext.getVars().entrySet()) {
+        for (final Map.Entry<String,Object> entry : effectiveContext.getVars().entrySet()) {
             if (entry.getKey().equals("key")) {
                 Assertions.assertEquals("parent", entry.getValue());
             }
diff --git a/src/test/java/org/apache/commons/scxml2/env/StopWatch.java b/src/test/java/org/apache/commons/scxml2/env/StopWatch.java
index 96d0d9e..5c643ee 100644
--- a/src/test/java/org/apache/commons/scxml2/env/StopWatch.java
+++ b/src/test/java/org/apache/commons/scxml2/env/StopWatch.java
@@ -84,9 +84,9 @@ public class StopWatch extends AbstractStateMachine {
     }
 
     public String getDisplay() {
-        String padhr = dhr > 9 ? EMPTY : ZERO;
-        String padmin = dmin > 9 ? EMPTY : ZERO;
-        String padsec = dsec > 9 ? EMPTY : ZERO;
+        final String padhr = dhr > 9 ? EMPTY : ZERO;
+        final String padmin = dmin > 9 ? EMPTY : ZERO;
+        final String padsec = dsec > 9 ? EMPTY : ZERO;
         return padhr + dhr + DELIM + padmin + dmin + DELIM + padsec + dsec + DOT + dfract;
     }
 
diff --git a/src/test/java/org/apache/commons/scxml2/env/StopWatchDisplay.java b/src/test/java/org/apache/commons/scxml2/env/StopWatchDisplay.java
index 7828316..190eb0b 100644
--- a/src/test/java/org/apache/commons/scxml2/env/StopWatchDisplay.java
+++ b/src/test/java/org/apache/commons/scxml2/env/StopWatchDisplay.java
@@ -48,7 +48,7 @@ import org.apache.commons.scxml2.model.ModelException;
 public class StopWatchDisplay extends JFrame
         implements ActionListener {
 
-    private StopWatch stopWatch;
+    private final StopWatch stopWatch;
     private Image watchImage;
 
     public StopWatchDisplay() throws ModelException {
@@ -57,8 +57,8 @@ public class StopWatchDisplay extends JFrame
         setupUI();
     }
 
-    public void actionPerformed(ActionEvent e) {
-        String command = e.getActionCommand();
+    public void actionPerformed(final ActionEvent e) {
+        final String command = e.getActionCommand();
         if (command.equals("START")) {
             if (start.getText().equals("Start")) {
                 stopWatch.fireEvent(StopWatch.EVENT_START);
@@ -85,14 +85,14 @@ public class StopWatchDisplay extends JFrame
     }
 
     private void setupUI() {
-        URL imageURL = this.getClass().getClassLoader().
+        final URL imageURL = this.getClass().getClassLoader().
             getResource("org/apache/commons/scxml2/env/stopwatch.gif");
-        URL iconURL = this.getClass().getClassLoader().
+        final URL iconURL = this.getClass().getClassLoader().
             getResource("org/apache/commons/scxml2/env/stopwatchicon.gif");
-        Toolkit kit = Toolkit.getDefaultToolkit();
+        final Toolkit kit = Toolkit.getDefaultToolkit();
         watchImage = kit.createImage(imageURL);
-        Image watchIcon = kit.createImage(iconURL);
-        WatchPanel panel = new WatchPanel();
+        final Image watchIcon = kit.createImage(iconURL);
+        final WatchPanel panel = new WatchPanel();
         panel.setLayout(new BorderLayout());
         setContentPane(panel);
         display = new JLabel(stopWatch.getDisplay());
@@ -111,7 +111,7 @@ public class StopWatchDisplay extends JFrame
         setSize(300,125);
         setVisible(true);
         setDefaultCloseOperation(EXIT_ON_CLOSE);
-        Timer displayTimer = new Timer();
+        final Timer displayTimer = new Timer();
         displayTimer.scheduleAtFixedRate(new TimerTask() {
             @Override
             public void run() {
@@ -125,7 +125,7 @@ public class StopWatchDisplay extends JFrame
 
     private JButton makeButton(final String actionCommand,
             final String toolTipText, final String altText) {
-        JButton button = new JButton(altText);
+        final JButton button = new JButton(altText);
         button.setActionCommand(actionCommand);
         button.setToolTipText(toolTipText);
         button.addActionListener(this);
@@ -135,14 +135,14 @@ public class StopWatchDisplay extends JFrame
 
     class WatchPanel extends JPanel {
         @Override
-        public void paintComponent(Graphics g) {
+        public void paintComponent(final Graphics g) {
             if(watchImage != null) {
                 g.drawImage(watchImage,0,0,this.getWidth(),this.getHeight(),this);
             }
         }
     }
 
-    public static void main(String[] args) throws Exception {
+    public static void main(final String[] args) throws Exception {
         new StopWatchDisplay();
     }
 
diff --git a/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyClosureTest.java b/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyClosureTest.java
index 082e1cb..db73077 100644
--- a/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyClosureTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyClosureTest.java
@@ -30,12 +30,12 @@ public class GroovyClosureTest {
 
     @Test
     public void testGroovyClosure() throws Exception {
-        URL groovyClosure = SCXMLTestHelper.getResource("org/apache/commons/scxml2/env/groovy/groovy-closure.xml");
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(groovyClosure, new GroovyEvaluator(true));
+        final URL groovyClosure = SCXMLTestHelper.getResource("org/apache/commons/scxml2/env/groovy/groovy-closure.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(groovyClosure, new GroovyEvaluator(true));
         exec.go();
-        Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "turn_on");
+        final Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "turn_on");
         Assertions.assertEquals(2, currentStates.size());
-        String id = currentStates.iterator().next().getId();
+        final String id = currentStates.iterator().next().getId();
         Assertions.assertTrue(id.equals("closed") || id.equals("cooking"));
     }
 }
diff --git a/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyContextTest.java b/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyContextTest.java
index 6438ba4..b4b5714 100644
--- a/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyContextTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyContextTest.java
@@ -26,28 +26,28 @@ public class GroovyContextTest {
 
     @Test
     public void testNew() {
-        GroovyContext ctx = new GroovyContext();
+        final GroovyContext ctx = new GroovyContext();
         Assertions.assertNotNull(ctx);
     }
     
     @Test
     public void testPrepopulated() {
-        Map<String, Object> m = new HashMap<>();
+        final Map<String, Object> m = new HashMap<>();
         m.put("foo", "bar");
-        GroovyContext ctx = new GroovyContext(null, m, null);
+        final GroovyContext ctx = new GroovyContext(null, m, null);
         Assertions.assertNotNull(ctx);
         Assertions.assertEquals(1, ctx.getVars().size());
-        String fooValue = (String) ctx.get("foo");
+        final String fooValue = (String) ctx.get("foo");
         Assertions.assertEquals("bar", fooValue);
     }
     
     @Test
     public void testSetVars() {
-        GroovyContext ctx = new GroovyContext();
+        final GroovyContext ctx = new GroovyContext();
         Assertions.assertNotNull(ctx);
         ctx.set("foo", "bar");
         Assertions.assertEquals(1, ctx.getVars().size());
-        String fooValue = (String) ctx.get("foo");
+        final String fooValue = (String) ctx.get("foo");
         Assertions.assertEquals("bar", fooValue);
     }
 
diff --git a/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluatorTest.java b/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluatorTest.java
index 14a5d57..2d50e99 100644
--- a/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluatorTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluatorTest.java
@@ -39,24 +39,24 @@ public class GroovyEvaluatorTest {
 
     @Test
     public void testEval() throws SCXMLExpressionException {
-        Evaluator eval = new GroovyEvaluator();
+        final Evaluator eval = new GroovyEvaluator();
         Assertions.assertEquals(2, eval.eval(ctx, "1 + 1"));
     }
 
     @Test
     public void testPristine() throws SCXMLExpressionException {
-        Evaluator eval = new GroovyEvaluator();
+        final Evaluator eval = new GroovyEvaluator();
         Assertions.assertTrue(eval.evalCond(ctx, "1 + 1 == 2"));
     }
 
     @Test
     public void testBuiltInFunctions() throws SCXMLExpressionException {
-        Evaluator eval = new GroovyEvaluator();
-        StateConfiguration stateConfiguration = new StateConfiguration();
-        Status status = new Status(stateConfiguration);
+        final Evaluator eval = new GroovyEvaluator();
+        final StateConfiguration stateConfiguration = new StateConfiguration();
+        final Status status = new Status(stateConfiguration);
         ctx.getSystemContext().getPlatformVariables().put(SCXMLSystemContext.STATUS_KEY, status);
 
-        State state1 = new State();
+        final State state1 = new State();
         state1.setId("state1");
         stateConfiguration.enterState(state1);
         Assertions.assertTrue(eval.evalCond(ctx, "In('state1')"));
@@ -64,10 +64,10 @@ public class GroovyEvaluatorTest {
 
     @Test
     public void testScript() throws SCXMLExpressionException {
-        Evaluator eval = new GroovyEvaluator();
+        final Evaluator eval = new GroovyEvaluator();
         ctx.set("x", 3);
         ctx.set("y", 0);
-        String script = 
+        final String script = 
             "if ((x * 2) == 5) {" +
                 "y = 1;\n" +
             "} else {\n" +
@@ -79,9 +79,9 @@ public class GroovyEvaluatorTest {
 
     @Test
     public void testErrorMessage() {
-        Evaluator eval = new GroovyEvaluator();
+        final Evaluator eval = new GroovyEvaluator();
         Assertions.assertNotNull(eval);
-        SCXMLExpressionException e = Assertions.assertThrows(
+        final SCXMLExpressionException e = Assertions.assertThrows(
                 SCXMLExpressionException.class,
                 () -> eval.eval(ctx, BAD_EXPRESSION),
                 "GroovyEvaluator should throw SCXMLExpressionException");
@@ -91,7 +91,7 @@ public class GroovyEvaluatorTest {
 
     @Test
     public void testPreprocessScript() {
-        GroovyEvaluator evaluator = new GroovyEvaluator();
+        final GroovyEvaluator evaluator = new GroovyEvaluator();
         Assertions.assertEquals("x &&  x || x  !  x == x <  x <= x != x >  x >= x", evaluator.getScriptPreProcessor().
                 preProcess("x and x or x not x eq x lt x le x ne x gt x ge x"));
         Assertions.assertEquals("and x OR x\n ! \nx\n== x < \nx(le)x ne. xgt x ge", evaluator.getScriptPreProcessor().
diff --git a/src/test/java/org/apache/commons/scxml2/env/groovy/SerializableInitialBaseScriptTest.java b/src/test/java/org/apache/commons/scxml2/env/groovy/SerializableInitialBaseScriptTest.java
index 1b7b6c9..26f37cd 100644
--- a/src/test/java/org/apache/commons/scxml2/env/groovy/SerializableInitialBaseScriptTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/groovy/SerializableInitialBaseScriptTest.java
@@ -36,7 +36,7 @@ public class SerializableInitialBaseScriptTest {
      */
     @Test
     public void testSerializableInitialBaseScriptSample() throws Exception {
-        URL scxml = SCXMLTestHelper.getResource("org/apache/commons/scxml2/env/groovy/serializable-initial-base-script.xml");
+        final URL scxml = SCXMLTestHelper.getResource("org/apache/commons/scxml2/env/groovy/serializable-initial-base-script.xml");
     	SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml, new GroovyEvaluator(true));
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
diff --git a/src/test/java/org/apache/commons/scxml2/env/groovy/StaticMethodTest.java b/src/test/java/org/apache/commons/scxml2/env/groovy/StaticMethodTest.java
index 323fc73..854c248 100644
--- a/src/test/java/org/apache/commons/scxml2/env/groovy/StaticMethodTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/groovy/StaticMethodTest.java
@@ -28,10 +28,10 @@ public class StaticMethodTest {
 
     @Test
     public void testGroovyStaticMethodInvocation() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/static-method.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/static-method.xml");
         exec.getRootContext().set("System", System.class);
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("static", currentStates.iterator().next().getId());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/env/javascript/JSEvaluatorTest.java b/src/test/java/org/apache/commons/scxml2/env/javascript/JSEvaluatorTest.java
index b640c84..de6c28b 100644
--- a/src/test/java/org/apache/commons/scxml2/env/javascript/JSEvaluatorTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/javascript/JSEvaluatorTest.java
@@ -106,7 +106,7 @@ public class JSEvaluatorTest {
      */
     @BeforeEach
     public void setUp() throws Exception {
-        SCXMLExecutor fsm = SCXMLTestHelper.getExecutor(SCXMLReader.read(new StringReader(SCRIPT)));
+        final SCXMLExecutor fsm = SCXMLTestHelper.getExecutor(SCXMLReader.read(new StringReader(SCRIPT)));
         fsm.go();
         evaluator = fsm.getEvaluator();
         context = fsm.getGlobalContext();
@@ -121,7 +121,7 @@ public class JSEvaluatorTest {
      */    
     @Test
     public void testBasic() throws SCXMLExpressionException {
-        Evaluator evaluator = new JSEvaluator();
+        final Evaluator evaluator = new JSEvaluator();
 
         Assertions.assertNotNull(evaluator);
         Assertions.assertTrue   ((Boolean) evaluator.eval(context, "1+1 == 2"));
@@ -129,10 +129,10 @@ public class JSEvaluatorTest {
 
     @Test
     public void testScript() throws SCXMLExpressionException {
-        Evaluator evaluator = new JSEvaluator();
+        final Evaluator evaluator = new JSEvaluator();
         context.set("x", 3);
         context.set("y", 0);
-        String script = 
+        final String script = 
             "if ((x * 2.0) == 5.0) {" +
                 "y = 1.0;\n" +
             "} else {\n" +
@@ -148,10 +148,10 @@ public class JSEvaluatorTest {
      */    
     @Test
     public void testIllegalExpresssion() {
-        Evaluator evaluator = new JSEvaluator();
+        final Evaluator evaluator = new JSEvaluator();
 
         Assertions.assertNotNull(evaluator);
-        SCXMLExpressionException x= Assertions.assertThrows(
+        final SCXMLExpressionException x= Assertions.assertThrows(
                 SCXMLExpressionException.class,
                 () ->  evaluator.eval(context,BAD_EXPRESSION),
                 "JSEvaluator should throw SCXMLExpressionException");
@@ -165,8 +165,8 @@ public class JSEvaluatorTest {
      */    
     @Test
     public void testStandardExpressions() throws Exception {
-        for (TestItem item: SIMPLE_EXPRESSIONS) {
-            Object eval = evaluator.eval(context,item.expression);
+        for (final TestItem item: SIMPLE_EXPRESSIONS) {
+            final Object eval = evaluator.eval(context,item.expression);
             if (item.result instanceof Integer && eval instanceof Number) {
                 Assertions.assertEquals(((Integer) item.result).intValue(),
                         ((Number) eval).intValue(),
@@ -187,7 +187,7 @@ public class JSEvaluatorTest {
     public void testVarExpressions() throws Exception {
         context.set("fibonacci", 12.0);
 
-        for (TestItem item: VAR_EXPRESSIONS) {
+        for (final TestItem item: VAR_EXPRESSIONS) {
             Assertions.assertNotNull(context.get("fibonacci"));
             Assertions.assertEquals (12.0,context.get("fibonacci"));
             Assertions.assertEquals(item.result,
@@ -202,7 +202,7 @@ public class JSEvaluatorTest {
      */    
     @Test
     public void testInvalidVarExpressions() {
-        for (TestItem item: VAR_EXPRESSIONS) {
+        for (final TestItem item: VAR_EXPRESSIONS) {
             Assertions.assertNull(context.get("fibonacci"));
             Assertions.assertThrows(
                     SCXMLExpressionException.class,
@@ -277,7 +277,7 @@ public class JSEvaluatorTest {
         private final String expression;
         private final Object result;
 
-        private TestItem(String expression,Object result) {
+        private TestItem(final String expression,final Object result) {
             this.expression = expression;
             this.result     = result;
         }
diff --git a/src/test/java/org/apache/commons/scxml2/env/javascript/JSExampleTest.java b/src/test/java/org/apache/commons/scxml2/env/javascript/JSExampleTest.java
index f2929de..68703b5 100644
--- a/src/test/java/org/apache/commons/scxml2/env/javascript/JSExampleTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/javascript/JSExampleTest.java
@@ -46,13 +46,13 @@ public class JSExampleTest {
     @Test
     public void testExample01Sample() throws Exception {
 
-        List<CustomAction> actions  = new ArrayList<>();
+        final List<CustomAction> actions  = new ArrayList<>();
         actions.add(new CustomAction("http://my.custom-actions.domain", "eventdatamaptest", EventDataMapTest.class));
 
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/javascript/example-01.xml", actions);
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/javascript/example-01.xml", actions);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("end", currentStates.iterator().next().getId());
     }
@@ -61,7 +61,7 @@ public class JSExampleTest {
     
     public static class EventDataMapTest extends Action {
         @Override
-        public void execute(ActionExecutionContext exctx) {
+        public void execute(final ActionExecutionContext exctx) {
             exctx.getInternalIOProcessor()
                     .addEvent(new EventBuilder("ok",TriggerEvent.SIGNAL_EVENT).data("and its ok with me to").build());
         }
diff --git a/src/test/java/org/apache/commons/scxml2/env/javascript/JavaScriptEngineTest.java b/src/test/java/org/apache/commons/scxml2/env/javascript/JavaScriptEngineTest.java
index bbb034b..a2a3778 100644
--- a/src/test/java/org/apache/commons/scxml2/env/javascript/JavaScriptEngineTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/javascript/JavaScriptEngineTest.java
@@ -41,7 +41,7 @@ public class JavaScriptEngineTest {
     public void before() {
         evaluator = new JSEvaluator();
         _systemContext = new JSContext();
-        SCXMLSystemContext systemContext = new SCXMLSystemContext(_systemContext);
+        final SCXMLSystemContext systemContext = new SCXMLSystemContext(_systemContext);
         _systemContext.set(SCXMLSystemContext.SESSIONID_KEY, UUID.randomUUID().toString());
         _systemContext.set(SCXMLSystemContext.SCXML_NAME_KEY, "test");
         stateConfiguration = new StateConfiguration();
@@ -57,7 +57,7 @@ public class JavaScriptEngineTest {
     @Test
     public void testScxmlEvent() throws Exception {
         assertTrue(evaluator.evalCond(context, "_event === undefined"));
-        EventVariable event = new EventVariable("myEvent", EventVariable.TYPE_INTERNAL, null, null, null, null,"myData");
+        final EventVariable event = new EventVariable("myEvent", EventVariable.TYPE_INTERNAL, null, null, null, null,"myData");
         _systemContext.setLocal(SCXMLSystemContext.EVENT_KEY, event);
         assertFalse(evaluator.evalCond(context, "_event === undefined"));
         assertTrue(evaluator.evalCond(context, "_event.name == 'myEvent'"));
@@ -69,7 +69,7 @@ public class JavaScriptEngineTest {
     @Test
     public void testScxmlInPredicate() throws Exception {
         assertFalse(evaluator.evalCond(context, "In('foo')"));
-        Final foo = new Final();
+        final Final foo = new Final();
         foo.setId("foo");
         stateConfiguration.enterState(foo);
         assertTrue(evaluator.evalCond(context, "In('foo')"));
diff --git a/src/test/java/org/apache/commons/scxml2/env/jexl/ForeachTest.java b/src/test/java/org/apache/commons/scxml2/env/jexl/ForeachTest.java
index d10e33b..212db0d 100644
--- a/src/test/java/org/apache/commons/scxml2/env/jexl/ForeachTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/jexl/ForeachTest.java
@@ -28,7 +28,7 @@ public class ForeachTest {
 
     @Test
     public void testForeach() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/foreach.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/foreach.xml");
         exec.go();
         Assertions.assertTrue(exec.getStatus().isFinal());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/env/jexl/JexlContextTest.java b/src/test/java/org/apache/commons/scxml2/env/jexl/JexlContextTest.java
index 063bfb5..c14d288 100644
--- a/src/test/java/org/apache/commons/scxml2/env/jexl/JexlContextTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/jexl/JexlContextTest.java
@@ -26,18 +26,18 @@ public class JexlContextTest {
 
     @Test
     public void testNew() {
-        JexlContext ctx = new JexlContext();
+        final JexlContext ctx = new JexlContext();
         Assertions.assertNotNull(ctx);
     }
     
     @Test
     public void testPrepopulated() {
-        Map<String, Object> m = new HashMap<>();
+        final Map<String, Object> m = new HashMap<>();
         m.put("foo", "bar");
-        JexlContext ctx = new JexlContext(null, m);
+        final JexlContext ctx = new JexlContext(null, m);
         Assertions.assertNotNull(ctx);
         Assertions.assertEquals(1, ctx.getVars().size());
-        String fooValue = (String) ctx.get("foo");
+        final String fooValue = (String) ctx.get("foo");
         Assertions.assertEquals("bar", fooValue);
     }
 
diff --git a/src/test/java/org/apache/commons/scxml2/env/jexl/JexlEvaluatorTest.java b/src/test/java/org/apache/commons/scxml2/env/jexl/JexlEvaluatorTest.java
index 0ef5c3b..a102b66 100644
--- a/src/test/java/org/apache/commons/scxml2/env/jexl/JexlEvaluatorTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/jexl/JexlEvaluatorTest.java
@@ -29,16 +29,16 @@ public class JexlEvaluatorTest {
 
     @Test
     public void testPristine() throws SCXMLExpressionException {
-        Evaluator eval = new JexlEvaluator();
+        final Evaluator eval = new JexlEvaluator();
         Assertions.assertTrue((Boolean) eval.eval(ctx, "1+1 eq 2"));
     }
 
     @Test
     public void testScript() throws SCXMLExpressionException {
-        Evaluator eval = new JexlEvaluator();
+        final Evaluator eval = new JexlEvaluator();
         ctx.set("x", 3);
         ctx.set("y", 0);
-        String script = 
+        final String script = 
             "if ((x * 2) == 5) {" +
                 "y = 1;\n" +
             "} else {\n" +
@@ -50,9 +50,9 @@ public class JexlEvaluatorTest {
 
     @Test
     public void testErrorMessage() {
-        Evaluator eval = new JexlEvaluator();
+        final Evaluator eval = new JexlEvaluator();
         Assertions.assertNotNull(eval);
-        SCXMLExpressionException e = Assertions.assertThrows(
+        final SCXMLExpressionException e = Assertions.assertThrows(
                 SCXMLExpressionException.class,
                 () -> eval.eval(ctx, BAD_EXPRESSION),
                 "JexlEvaluator should throw SCXMLExpressionException");
diff --git a/src/test/java/org/apache/commons/scxml2/env/jexl/StaticMethodTest.java b/src/test/java/org/apache/commons/scxml2/env/jexl/StaticMethodTest.java
index 4dee68d..f597788 100644
--- a/src/test/java/org/apache/commons/scxml2/env/jexl/StaticMethodTest.java
+++ b/src/test/java/org/apache/commons/scxml2/env/jexl/StaticMethodTest.java
@@ -29,10 +29,10 @@ public class StaticMethodTest {
 
     @Test
     public void testJexlStaticMethodInvocation() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/static-method.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/static-method.xml");
         exec.getRootContext().set("System", System.class);
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("static", currentStates.iterator().next().getId());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/invoke/InvokeParamNameTest.java b/src/test/java/org/apache/commons/scxml2/invoke/InvokeParamNameTest.java
index 6bae74f..e9cf6a2 100644
--- a/src/test/java/org/apache/commons/scxml2/invoke/InvokeParamNameTest.java
+++ b/src/test/java/org/apache/commons/scxml2/invoke/InvokeParamNameTest.java
@@ -81,13 +81,13 @@ public class InvokeParamNameTest {
         private String invokeId;
 
         @Override
-        public void invoke(String url, Map<String, Object> params) {
+        public void invoke(final String url, final Map<String, Object> params) {
             lastURL = url;
             lastParams = params;
         }
 
         @Override
-        public void invokeContent(String content, Map<String, Object> params) {
+        public void invokeContent(final String content, final Map<String, Object> params) {
             lastURL = null;
             lastParams = params;
         }
@@ -106,7 +106,7 @@ public class InvokeParamNameTest {
         }
 
         @Override
-        public void parentEvent(TriggerEvent evt) {
+        public void parentEvent(final TriggerEvent evt) {
             // Not needed
         }
 
@@ -116,12 +116,12 @@ public class InvokeParamNameTest {
         }
 
         @Override
-        public void setInvokeId(String invokeId) {
+        public void setInvokeId(final String invokeId) {
             this.invokeId = invokeId;
         }
 
         @Override
-        public void setParentSCXMLExecutor(SCXMLExecutor parentSCXMLExecutor) {
+        public void setParentSCXMLExecutor(final SCXMLExecutor parentSCXMLExecutor) {
             // Not needed
         }
 
diff --git a/src/test/java/org/apache/commons/scxml2/invoke/InvokeTest.java b/src/test/java/org/apache/commons/scxml2/invoke/InvokeTest.java
index 7f2be71..32214ea 100644
--- a/src/test/java/org/apache/commons/scxml2/invoke/InvokeTest.java
+++ b/src/test/java/org/apache/commons/scxml2/invoke/InvokeTest.java
@@ -39,35 +39,35 @@ public class InvokeTest {
      */    
     @Test
     public void testInvoke01Sample() throws Exception {
-        SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-01.xml"));
-        SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
+        final SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-01.xml"));
+        final SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
         exec.setStateMachine(scxml);
         exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("invoker", currentStates.iterator().next().getId());
     }
     
     @Test
     public void testInvoke02Sample() throws Exception {
-        SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-02.xml"));
-        SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
+        final SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-02.xml"));
+        final SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
         exec.setStateMachine(scxml);
         exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
     }
     
     @Test
     public void testInvoke03Sample() throws Exception {
-        SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-03.xml"));
-        SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
+        final SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-03.xml"));
+        final SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
         exec.setStateMachine(scxml);
         exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         SCXMLTestHelper.fireEvent(exec, "s1.next");
         SCXMLTestHelper.fireEvent(exec, "state1.next");
@@ -75,8 +75,8 @@ public class InvokeTest {
 
     @Test
     public void testExecuteInvokeAfterAllInternalEventsAreProcessed() throws Exception {
-        SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-05.xml"));
-        SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
+        final SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-05.xml"));
+        final SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
         exec.setStateMachine(scxml);
         exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
         exec.go();
diff --git a/src/test/java/org/apache/commons/scxml2/io/ContentParserTest.java b/src/test/java/org/apache/commons/scxml2/io/ContentParserTest.java
index 9313491..48eca2a 100644
--- a/src/test/java/org/apache/commons/scxml2/io/ContentParserTest.java
+++ b/src/test/java/org/apache/commons/scxml2/io/ContentParserTest.java
@@ -54,24 +54,24 @@ public class ContentParserTest {
 
     @Test
     public void testParseJson() throws Exception {
-        ObjectMapper jsonObjectMapper = new ObjectMapper();
+        final ObjectMapper jsonObjectMapper = new ObjectMapper();
         jsonObjectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
         jsonObjectMapper.configure(JsonParser.Feature.ALLOW_YAML_COMMENTS, true);
         // not by default configured, but much easier for unit-testing Java embedded JSON Strings
         jsonObjectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
 
-        ContentParser contentParser = new ContentParser(jsonObjectMapper);
+        final ContentParser contentParser = new ContentParser(jsonObjectMapper);
 
-        String jsonObjectString = "{ /*comment*/ 'string' : 'foobar', 'int' : 1, 'boolean' : false, 'null' : null }";
-        LinkedHashMap<String, Object> jsonObject = new LinkedHashMap<>();
+        final String jsonObjectString = "{ /*comment*/ 'string' : 'foobar', 'int' : 1, 'boolean' : false, 'null' : null }";
+        final LinkedHashMap<String, Object> jsonObject = new LinkedHashMap<>();
         jsonObject.put("string", "foobar");
         jsonObject.put("int", 1);
         jsonObject.put("boolean", Boolean.FALSE);
         jsonObject.put("null", null);
         Assertions.assertEquals(jsonObject, contentParser.parseJson(jsonObjectString));
 
-        String jsonArrayString = "[" + jsonObjectString + "," + "# yaml comment\n" + jsonObjectString+"]";
-        ArrayList<Object> jsonArray = new ArrayList<>(2);
+        final String jsonArrayString = "[" + jsonObjectString + "," + "# yaml comment\n" + jsonObjectString+"]";
+        final ArrayList<Object> jsonArray = new ArrayList<>(2);
         jsonArray.add(jsonObject);
         jsonArray.add(jsonObject);
         Assertions.assertEquals(jsonArray, contentParser.parseJson(jsonArrayString));
diff --git a/src/test/java/org/apache/commons/scxml2/io/SCXMLReaderTest.java b/src/test/java/org/apache/commons/scxml2/io/SCXMLReaderTest.java
index fcacc2e..d63e03f 100644
--- a/src/test/java/org/apache/commons/scxml2/io/SCXMLReaderTest.java
+++ b/src/test/java/org/apache/commons/scxml2/io/SCXMLReaderTest.java
@@ -91,43 +91,43 @@ public class SCXMLReaderTest {
      */    
     @Test
     public void testSCXMLReaderMicrowave03Sample() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/microwave-03.xml");
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/microwave-03.xml");
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(serialize(scxml));
     }
     
     @Test
     public void testSCXMLReaderMicrowave04Sample() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/microwave-04.xml");
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/microwave-04.xml");
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(serialize(scxml));
     }
     
     @Test
     public void testSCXMLReaderTransitions01Sample() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/transitions-01.xml");
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/transitions-01.xml");
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(serialize(scxml));
     }
     
     @Test
     public void testSCXMLReaderPrefix01Sample() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/prefix-01.xml");
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/prefix-01.xml");
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(serialize(scxml));
     }
     
     @Test
     public void testSCXMLReaderSend01Sample() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/send-01.xml");
-        State ten = (State) scxml.getInitialTransition().getTargets().iterator().next();
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/send-01.xml");
+        final State ten = (State) scxml.getInitialTransition().getTargets().iterator().next();
         Assertions.assertEquals("ten", ten.getId());
-        List<Transition> ten_done = ten.getTransitionsList("done.state.ten");
+        final List<Transition> ten_done = ten.getTransitionsList("done.state.ten");
         Assertions.assertEquals(1, ten_done.size());
-        Transition ten2twenty = ten_done.get(0);
-        List<Action> actions = ten2twenty.getActions();
+        final Transition ten2twenty = ten_done.get(0);
+        final List<Action> actions = ten2twenty.getActions();
         Assertions.assertEquals(1, actions.size());
-        Send send = (Send) actions.get(0);
+        final Send send = (Send) actions.get(0);
         Assertions.assertEquals("send1", send.getId());
         /* Serialize
         scxmlAsString = serialize(scxml);
@@ -142,10 +142,10 @@ public class SCXMLReaderTest {
     
     @Test
     public void testSCXMLReaderInitialAttr() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/io/scxml-initial-attr.xml");
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/io/scxml-initial-attr.xml");
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(serialize(scxml));
-        Final foo = (Final) scxml.getInitialTransition().getTargets().iterator().next();
+        final Final foo = (Final) scxml.getInitialTransition().getTargets().iterator().next();
         Assertions.assertEquals("foo", foo.getId());
     }
 
@@ -171,16 +171,16 @@ public class SCXMLReaderTest {
 
     @Test
     public void testSCXMLReaderCustomActionWithBodyTextSample() throws Exception {
-        List<CustomAction> cas = new ArrayList<>();
-        CustomAction ca = new CustomAction("http://my.custom-actions.domain",
+        final List<CustomAction> cas = new ArrayList<>();
+        final CustomAction ca = new CustomAction("http://my.custom-actions.domain",
             "action", MyAction.class);
         cas.add(ca);
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/io/custom-action-body-test-1.xml", cas);
-        EnterableState state = (EnterableState) scxml.getInitialTransition().getTargets().iterator().next();
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/io/custom-action-body-test-1.xml", cas);
+        final EnterableState state = (EnterableState) scxml.getInitialTransition().getTargets().iterator().next();
         Assertions.assertEquals("actions", state.getId());
-        List<Action> actions = state.getOnEntries().get(0).getActions();
+        final List<Action> actions = state.getOnEntries().get(0).getActions();
         Assertions.assertEquals(1, actions.size());
-        MyAction my = (MyAction)((CustomActionWrapper)actions.get(0)).getAction();
+        final MyAction my = (MyAction)((CustomActionWrapper)actions.get(0)).getAction();
         Assertions.assertNotNull(my);
         Assertions.assertTrue(my.getParsedValue() != null);
     }
@@ -189,8 +189,8 @@ public class SCXMLReaderTest {
     public void testSCXMLReaderWithInvalidElements() throws Exception {
         // In the default lenient/verbose mode (strict == false && silent == false),
         // the model exception should be just logged without a model exception.
-        Configuration configuration = new Configuration();
-        SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/io/scxml-with-invalid-elems.xml"),
+        final Configuration configuration = new Configuration();
+        final SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/io/scxml-with-invalid-elems.xml"),
                         configuration);
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(serialize(scxml));
@@ -209,7 +209,7 @@ public class SCXMLReaderTest {
         // In the lenient/silent mode (strict == false && silent == true),
         // no model exception is logged.
         clearRecordedLogMessages();
-        Configuration configuration2 = new Configuration();
+        final Configuration configuration2 = new Configuration();
         configuration2.setStrict(false);
         configuration2.setSilent(true);
         SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/io/scxml-with-invalid-elems.xml"),
@@ -231,7 +231,7 @@ public class SCXMLReaderTest {
         // In strict/verbose mode (strict == true && silent == false), it should fail to read the model and catch a model exception
         // with warning logs because of the invalid <baddata> element.
         clearRecordedLogMessages();
-        Configuration configuration3 = new Configuration();
+        final Configuration configuration3 = new Configuration();
         configuration3.setStrict(true);
         configuration3.setSilent(false);
         ModelException e = Assertions.assertThrows(
@@ -249,7 +249,7 @@ public class SCXMLReaderTest {
         // In strict/silent mode (strict == true && silent == true), it should fail to read the model and catch a model exception
         // without warning logs because of the invalid <baddata> element.
         clearRecordedLogMessages();
-        Configuration configuration4 = new Configuration();
+        final Configuration configuration4 = new Configuration();
         configuration4.setStrict(true);
         configuration4.setSilent(true);
         e = Assertions.assertThrows(
@@ -269,7 +269,7 @@ public class SCXMLReaderTest {
         SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/groovy/groovy-closure.xml");
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(scxml.getGlobalScript());
-        String scxmlAsString = serialize(scxml);
+        final String scxmlAsString = serialize(scxml);
         Assertions.assertNotNull(scxmlAsString);
         scxml = SCXMLTestHelper.parse(new StringReader(scxmlAsString), null);
         Assertions.assertNotNull(scxml);
@@ -278,7 +278,7 @@ public class SCXMLReaderTest {
 
     @Test
     public void dataWithSrcAndExprIsRejectedInStrictConfiguration() {
-        Configuration configuration = new Configuration();
+        final Configuration configuration = new Configuration();
         configuration.setStrict(true);
         configuration.setSilent(true);
         Assertions.assertThrows(org.apache.commons.scxml2.model.ModelException.class,
@@ -287,45 +287,45 @@ public class SCXMLReaderTest {
 
     @Test
     public void dataWithSrcAndExprUsesExprInNonStrictConfiguration() throws Exception {
-        Configuration configuration = new Configuration();
+        final Configuration configuration = new Configuration();
         configuration.setStrict(false);
         configuration.setSilent(true);
-        SCXML scxml = SCXMLReader.read(getClass().getResourceAsStream("data-with-src-and-expr.xml"), configuration);
+        final SCXML scxml = SCXMLReader.read(getClass().getResourceAsStream("data-with-src-and-expr.xml"), configuration);
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(scxml.getDatamodel());
         Assertions.assertNotNull(scxml.getDatamodel().getData());
         Assertions.assertEquals(1, scxml.getDatamodel().getData().size(), "Exactly one data element parsed.");
-        Data data = scxml.getDatamodel().getData().get(0);
+        final Data data = scxml.getDatamodel().getData().get(0);
         Assertions.assertNotNull(data);
         Assertions.assertEquals("'an expression'", data.getExpr());
     }
 
     @Test
     public void srcAttributeOfDataIsParsed() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/io/data-with-src.xml");
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/io/data-with-src.xml");
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(scxml.getDatamodel());
         Assertions.assertNotNull(scxml.getDatamodel().getData());
         Assertions.assertEquals(1, scxml.getDatamodel().getData().size(), "Exactly one data element parsed.");
-        Data data = scxml.getDatamodel().getData().get(0);
+        final Data data = scxml.getDatamodel().getData().get(0);
         Assertions.assertNotNull(data);
         Assertions.assertEquals("http://www.w3.org/TR/sxcml", data.getSrc());
     }
 
     @Test
     public void exprAttributeOfDataIsParsed() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/io/data-with-expr.xml");
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/io/data-with-expr.xml");
         Assertions.assertNotNull(scxml);
         Assertions.assertNotNull(scxml.getDatamodel());
         Assertions.assertNotNull(scxml.getDatamodel().getData());
         Assertions.assertEquals(1, scxml.getDatamodel().getData().size(), "Exactly one data element parsed.");
-        Data data = scxml.getDatamodel().getData().get(0);
+        final Data data = scxml.getDatamodel().getData().get(0);
         Assertions.assertNotNull(data);
         Assertions.assertEquals("'an expression'", data.getExpr());
     }
 
     private String serialize(final SCXML scxml) throws IOException, XMLStreamException {
-        String scxmlAsString = SCXMLWriter.write(scxml);
+        final String scxmlAsString = SCXMLWriter.write(scxml);
         Assertions.assertNotNull(scxmlAsString);
         return scxmlAsString;
     }
@@ -353,7 +353,7 @@ public class SCXMLReaderTest {
         private ParsedValue parsedValue;
 
         @Override
-        public void execute(ActionExecutionContext exctx) {
+        public void execute(final ActionExecutionContext exctx) {
             // Not relevant to test
         }
 
@@ -373,7 +373,7 @@ public class SCXMLReaderTest {
      */
     public static class RecordingLogFactory extends LogFactoryImpl {
         @Override
-        protected Log newInstance(String name) throws LogConfigurationException {
+        protected Log newInstance(final String name) throws LogConfigurationException {
             return new RecordingSimpleLog(name);
         }
     }
@@ -385,7 +385,7 @@ public class SCXMLReaderTest {
 
         private final List<String> messages = new LinkedList<>();
 
-        RecordingSimpleLog(String name) {
+        RecordingSimpleLog(final String name) {
             super(name);
         }
 
@@ -402,7 +402,7 @@ public class SCXMLReaderTest {
          * @return
          */
         boolean containsMessage(final String msg) {
-            for (String message : messages) {
+            for (final String message : messages) {
                 if (message.contains(msg)) {
                     return true;
                 }
@@ -411,12 +411,12 @@ public class SCXMLReaderTest {
         }
 
         @Override
-        protected boolean isLevelEnabled(int logLevel) {
+        protected boolean isLevelEnabled(final int logLevel) {
             return (logLevel >= LOG_LEVEL_INFO);
         }
 
         @Override
-        protected void log(int type, Object message, Throwable t) {
+        protected void log(final int type, final Object message, final Throwable t) {
             messages.add(message.toString());
         }
     }
diff --git a/src/test/java/org/apache/commons/scxml2/io/SCXMLRequiredAttributesTest.java b/src/test/java/org/apache/commons/scxml2/io/SCXMLRequiredAttributesTest.java
index f9a2f62..adb4908 100644
--- a/src/test/java/org/apache/commons/scxml2/io/SCXMLRequiredAttributesTest.java
+++ b/src/test/java/org/apache/commons/scxml2/io/SCXMLRequiredAttributesTest.java
@@ -147,15 +147,15 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testValidSCXML() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse(new StringReader(VALID_SCXML), null);
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXML scxml = SCXMLTestHelper.parse(new StringReader(VALID_SCXML), null);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         assertTrue(exec.getStatus().isFinal());
     }
 
     @Test
     public void testSCXMLMissingVersion() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_MISSING_VERSION), null),
                 "SCXML reading should have failed due to missing version in SCXML");
@@ -164,7 +164,7 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLInvalidVersion() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_INVALID_VERSION), null),
                 "SCXML reading should have failed due to missing version in SCXML");
@@ -173,7 +173,7 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLMissingIfCond() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_MISSING_IF_COND), null),
                 "SCXML reading should have failed due to missing if condition in SCXML");
@@ -182,7 +182,7 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLMissingElseIfCond() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_MISSING_ELSEIF_COND), null),
                 "SCXML reading should have failed due to missing elseif condition in SCXML");
@@ -191,7 +191,7 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLMissingDataId() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_MISSING_DATA_ID), null),
                 "SCXML reading should have failed due to missing data id in SCXML");
@@ -200,7 +200,7 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLMissingAssignLocation() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_MISSING_ASSIGN_LOCATION), null),
                 "SCXML reading should have failed due to missing assign location in SCXML");
@@ -209,7 +209,7 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLMissingParamName() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_MISSING_PARAM_NAME), null),
                 "SCXML reading should have failed due to missing param name in SCXML");
@@ -224,7 +224,7 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLMissingForeachArray() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_MISSING_FOREACH_ARRAY), null),
                 "SCXML reading should have failed due to missing foreach array in SCXML");
@@ -233,7 +233,7 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLMissingForeachItem() {
-        ModelException e = assertThrows(
+        final ModelException e = assertThrows(
                 ModelException.class,
                 () -> SCXMLTestHelper.parse(new StringReader(SCXML_WITH_MISSING_FOREACH_ITEM), null),
                 "SCXML reading should have failed due to missing foreach item in SCXML");
@@ -242,8 +242,8 @@ public class SCXMLRequiredAttributesTest {
 
     @Test
     public void testSCXMLWithForEach() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse(new StringReader(SCXML_WITH_FOREACH), null);
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXML scxml = SCXMLTestHelper.parse(new StringReader(SCXML_WITH_FOREACH), null);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         assertTrue(exec.getStatus().isFinal());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/io/SCXMLWriterTest.java b/src/test/java/org/apache/commons/scxml2/io/SCXMLWriterTest.java
index 7e0f59b..d1eb442 100644
--- a/src/test/java/org/apache/commons/scxml2/io/SCXMLWriterTest.java
+++ b/src/test/java/org/apache/commons/scxml2/io/SCXMLWriterTest.java
@@ -34,19 +34,19 @@ public class SCXMLWriterTest {
 
     @Test
     public void testSerializeSCXMLNoStates() throws IOException, XMLStreamException {
-        SCXML scxml = new CommonsSCXML();
+        final SCXML scxml = new CommonsSCXML();
         // ensure namespaces are stored in insertion order for write->read comparision below
-        LinkedHashMap<String, String> namespaces = new LinkedHashMap<>(scxml.getNamespaces());
+        final LinkedHashMap<String, String> namespaces = new LinkedHashMap<>(scxml.getNamespaces());
         namespaces.put("foo", "http://f.o.o");
         namespaces.put("bar", "http://b.a.r");
         scxml.setNamespaces(namespaces);
         scxml.setVersion("version1");
         scxml.setInitial("off");
-        State s = new State();
+        final State s = new State();
         s.setId(scxml.generateTransitionTargetId());
         scxml.addChild(s);
         
-        String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+        final String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
             + "<scxml xmlns=\"http://www.w3.org/2005/07/scxml\" xmlns:cs=\"https://commons.apache.org/scxml\" "
             + "xmlns:foo=\"http://f.o.o\" xmlns:bar=\"http://b.a.r\" "
             + "version=\"version1\" initial=\"off\"><!--https://commons.apache.org/scxml--><state></state>"
@@ -57,16 +57,16 @@ public class SCXMLWriterTest {
     
     @Test
     public void testSerializeSCXMLState() throws IOException, XMLStreamException {
-        SCXML scxml = new CommonsSCXML();
+        final SCXML scxml = new CommonsSCXML();
         scxml.setVersion("1.0");
         scxml.setInitial("S1");
 
-        State s1 = new State();
+        final State s1 = new State();
         s1.setId("S1");
 
         scxml.addChild(s1);
 
-        String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+        final String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
             + "<scxml xmlns=\"http://www.w3.org/2005/07/scxml\" "
             + "xmlns:cs=\"https://commons.apache.org/scxml\" version=\"1.0\" initial=\"S1\">"
             + "<!--https://commons.apache.org/scxml--><state id=\"S1\"></state></scxml>";
@@ -77,25 +77,25 @@ public class SCXMLWriterTest {
     @Test
     public void testSerializeParallel() throws IOException, XMLStreamException {
 
-        SCXML scxml = new CommonsSCXML();
+        final SCXML scxml = new CommonsSCXML();
         scxml.setVersion("1.0");
         scxml.setInitial("par");
 
-        Parallel par = new Parallel();
+        final Parallel par = new Parallel();
         par.setId("par");
 
-        State s1 = new State();
+        final State s1 = new State();
         s1.setId("S1");
 
-        State s11 = new State();
+        final State s11 = new State();
         s11.setId("S11");
 
         s1.addChild(s11);
 
-        State s2 = new State();
+        final State s2 = new State();
         s2.setId("S2");
 
-        State s21 = new State();
+        final State s21 = new State();
         s21.setId("S21");
 
         s2.addChild(s21);
@@ -105,7 +105,7 @@ public class SCXMLWriterTest {
 
         scxml.addChild(par);
 
-        String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+        final String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
             + "<scxml xmlns=\"http://www.w3.org/2005/07/scxml\" xmlns:cs=\"https://commons.apache.org/scxml\" "
             + "version=\"1.0\" initial=\"par\">"
             + "<!--https://commons.apache.org/scxml-->"
@@ -124,21 +124,21 @@ public class SCXMLWriterTest {
 
     @Test
     public void testSerializeGlobalScript() throws IOException, XMLStreamException {
-        SCXML scxml = new CommonsSCXML();
+        final SCXML scxml = new CommonsSCXML();
         scxml.setVersion("1.0");
         scxml.setInitial("S1");
 
-        Script script = new Script();
+        final Script script = new Script();
         script.setGlobalScript(true);
         script.setScript("foo=\"abc\"");
         scxml.setGlobalScript(script);
 
-        State s1 = new State();
+        final State s1 = new State();
         s1.setId("S1");
 
         scxml.addChild(s1);
 
-        String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+        final String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
                 + "<scxml xmlns=\"http://www.w3.org/2005/07/scxml\" "
                 + "xmlns:cs=\"https://commons.apache.org/scxml\" version=\"1.0\" initial=\"S1\">"
                 + "<!--https://commons.apache.org/scxml--><script><![CDATA[foo=\"abc\"]]></script><state id=\"S1\"></state></scxml>";
diff --git a/src/test/java/org/apache/commons/scxml2/io/StateSrcTest.java b/src/test/java/org/apache/commons/scxml2/io/StateSrcTest.java
index ec2e4bc..3891547 100644
--- a/src/test/java/org/apache/commons/scxml2/io/StateSrcTest.java
+++ b/src/test/java/org/apache/commons/scxml2/io/StateSrcTest.java
@@ -31,7 +31,7 @@ public class StateSrcTest {
 
     @Test
     public void testRecursiveSrcInclude() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/io/src-test-1.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/io/src-test-1.xml");
         exec.go();
         Set<EnterableState> states = exec.getStatus().getStates();
         Assertions.assertEquals(1, states.size());
@@ -44,7 +44,7 @@ public class StateSrcTest {
     
     @Test
     public void testBadSrcInclude() {
-        ModelException me = Assertions.assertThrows(
+        final ModelException me = Assertions.assertThrows(
                 ModelException.class,
                 () -> SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/io/src-test-4.xml")),
                 "Document with bad <state> src attribute shouldn't be parsed!");
@@ -54,7 +54,7 @@ public class StateSrcTest {
     
     @Test
     public void testBadSrcFragmentInclude() {
-        ModelException me = Assertions.assertThrows(
+        final ModelException me = Assertions.assertThrows(
                 ModelException.class,
                 () -> SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/io/src-test-5.xml")),
                 "Document with bad <state> src attribute shouldn't be parsed!");
diff --git a/src/test/java/org/apache/commons/scxml2/issues/Issue112Test.java b/src/test/java/org/apache/commons/scxml2/issues/Issue112Test.java
index a026049..6ddd114 100644
--- a/src/test/java/org/apache/commons/scxml2/issues/Issue112Test.java
+++ b/src/test/java/org/apache/commons/scxml2/issues/Issue112Test.java
@@ -52,13 +52,13 @@ public class Issue112Test {
     @Test
     public void test01issue112() throws Exception {
 
-        CustomAction ca1 =
+        final CustomAction ca1 =
             new CustomAction("http://my.custom-actions.domain/CUSTOM", "enqueue", Enqueue.class);
-        List<CustomAction> customActions = new ArrayList<>();
+        final List<CustomAction> customActions = new ArrayList<>();
         customActions.add(ca1);
 
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/issues/queue-01.xml", customActions);
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/issues/queue-01.xml", customActions);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         Assertions.assertEquals("init", exec.getStatus().getStates().
                 iterator().next().getId());
@@ -89,12 +89,12 @@ public class Issue112Test {
             return event;
         }
 
-        public void setEvent(String event) {
+        public void setEvent(final String event) {
             this.event = event;
         }
 
         @Override
-        public void execute(ActionExecutionContext exctx) {
+        public void execute(final ActionExecutionContext exctx) {
 
             Application.QUEUE.add(event);
 
diff --git a/src/test/java/org/apache/commons/scxml2/issues/Issue62Test.java b/src/test/java/org/apache/commons/scxml2/issues/Issue62Test.java
index 063b4b8..45c2d93 100644
--- a/src/test/java/org/apache/commons/scxml2/issues/Issue62Test.java
+++ b/src/test/java/org/apache/commons/scxml2/issues/Issue62Test.java
@@ -33,9 +33,9 @@ public class Issue62Test {
 
     @Test
     public void test01issue62() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue62-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue62-01.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("s1.1", currentStates.iterator().next().getId());
         SCXMLTestHelper.assertPostTriggerState(exec, "foo", "s1.1");
@@ -43,20 +43,20 @@ public class Issue62Test {
     
     @Test
     public void test02issue62() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue62-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue62-02.xml");
         exec.go();
         fragmenttest(exec);
     }
     
     @Test
     public void test03issue62() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue62-03.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue62-03.xml");
         exec.go();
         fragmenttest(exec);
     }
 
-    private void fragmenttest(SCXMLExecutor exec) throws Exception {
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+    private void fragmenttest(final SCXMLExecutor exec) throws Exception {
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("s1", currentStates.iterator().next().getId());
         SCXMLTestHelper.assertPostTriggerState(exec, "foo", "e1.1.1");
diff --git a/src/test/java/org/apache/commons/scxml2/issues/Issue64Test.java b/src/test/java/org/apache/commons/scxml2/issues/Issue64Test.java
index 418ca71..01b48c3 100644
--- a/src/test/java/org/apache/commons/scxml2/issues/Issue64Test.java
+++ b/src/test/java/org/apache/commons/scxml2/issues/Issue64Test.java
@@ -28,14 +28,14 @@ public class Issue64Test {
 
     @Test
     public void test01issue64() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue64-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue64-01.xml");
         exec.go();
         SCXMLTestHelper.assertPostTriggerState(exec, "show.bug", "end");
     }
     
     @Test
     public void test02issue64() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue64-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/issues/issue64-02.xml");
         exec.go();
         SCXMLTestHelper.assertPostTriggerState(exec, "show.bug", "end");
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/ActionTest.java b/src/test/java/org/apache/commons/scxml2/model/ActionTest.java
index 7c91feb..be818b2 100644
--- a/src/test/java/org/apache/commons/scxml2/model/ActionTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/ActionTest.java
@@ -30,27 +30,27 @@ public class ActionTest {
     }
     @Test
     public void testGetParentStateIsState() throws Exception {
-        Transition transition = new Transition();
+        final Transition transition = new Transition();
         
-        State state = new State();
+        final State state = new State();
         state.setId("on");
         
         transition.setParent(state);
         action.setParent(transition);
 
-        TransitionTarget returnValue = action.getParentEnterableState();
+        final TransitionTarget returnValue = action.getParentEnterableState();
         
         Assertions.assertEquals("on", returnValue.getId());
     }
     
     @Test
     public void testGetParentStateIsParallel() throws Exception {
-        Transition transition = new Transition();
+        final Transition transition = new Transition();
         
-        Parallel parallel = new Parallel();
+        final Parallel parallel = new Parallel();
         parallel.setId("on");
  
-        State state = new State();
+        final State state = new State();
         state.setId("off");
         
         parallel.setParent(state);
@@ -58,19 +58,19 @@ public class ActionTest {
         transition.setParent(parallel);
         action.setParent(transition);
 
-        TransitionTarget returnValue = action.getParentEnterableState();
+        final TransitionTarget returnValue = action.getParentEnterableState();
         
         Assertions.assertEquals("on", returnValue.getId());
     }
     
     @Test
     public void testGetParentStateIsHistory() throws Exception {
-        Transition transition = new Transition();
+        final Transition transition = new Transition();
         
-        History history = new History();
+        final History history = new History();
         history.setId("on");
  
-        State state = new State();
+        final State state = new State();
         state.setId("off");
         
         history.setParent(state);
@@ -78,18 +78,18 @@ public class ActionTest {
         transition.setParent(history.getParent());
         action.setParent(transition);
 
-        TransitionTarget returnValue = action.getParentEnterableState();
+        final TransitionTarget returnValue = action.getParentEnterableState();
         
         Assertions.assertEquals("off", returnValue.getId());
     }
     
     @Test
     public void testGetParentStateIsInitial() throws Exception {
-        SimpleTransition transition = new SimpleTransition();
+        final SimpleTransition transition = new SimpleTransition();
         
-        Initial initial = new Initial();
+        final Initial initial = new Initial();
 
-        State state = new State();
+        final State state = new State();
         state.setId("off");
 
         initial.setParent(state);
@@ -97,7 +97,7 @@ public class ActionTest {
         initial.setTransition(transition);
         action.setParent(transition);
 
-        TransitionTarget returnValue = action.getParentEnterableState();
+        final TransitionTarget returnValue = action.getParentEnterableState();
 
         Assertions.assertEquals("off", returnValue.getId());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/ActionsTest.java b/src/test/java/org/apache/commons/scxml2/model/ActionsTest.java
index 310697e..8bfd789 100644
--- a/src/test/java/org/apache/commons/scxml2/model/ActionsTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/ActionsTest.java
@@ -35,27 +35,27 @@ public class ActionsTest {
 
     @Test
     public void testStateActions() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/actions-state-test.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/actions-state-test.xml");
         exec.go();
         runTest(exec);
     }
     
     @Test
     public void testParallelActions() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/actions-parallel-test.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/actions-parallel-test.xml");
         exec.go();
         runTest(exec);
     }
     
     @Test
     public void testInitialActions() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/actions-initial-test.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/actions-initial-test.xml");
         exec.go();
         runTest(exec);
     }
 
-    private void runTest(SCXMLExecutor exec) {
-        Context ctx = SCXMLTestHelper.lookupContext(exec, "actionsTest");
+    private void runTest(final SCXMLExecutor exec) {
+        final Context ctx = SCXMLTestHelper.lookupContext(exec, "actionsTest");
         Assertions.assertEquals(ctx.get("foo"), "foobar");
         Assertions.assertEquals(true, ctx.get("eventsent"), "Missed event transition");
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/AssignTest.java b/src/test/java/org/apache/commons/scxml2/model/AssignTest.java
index b2b6605..16281c8 100644
--- a/src/test/java/org/apache/commons/scxml2/model/AssignTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/AssignTest.java
@@ -29,9 +29,9 @@ public class AssignTest {
 
     @Test
     public void testAssignSrc() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/assign-test-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/assign-test-01.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("assign3", currentStates.iterator().next().getId());
         Assertions.assertTrue(exec.getStatus().isFinal());
@@ -39,9 +39,9 @@ public class AssignTest {
     
     @Test
     public void testAssignDeep() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/assign-test-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/assign-test-02.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("assign3", currentStates.iterator().next().getId());
         Assertions.assertTrue(exec.getStatus().isFinal());
diff --git a/src/test/java/org/apache/commons/scxml2/model/CancelTest.java b/src/test/java/org/apache/commons/scxml2/model/CancelTest.java
index 12323f8..cae73d3 100644
--- a/src/test/java/org/apache/commons/scxml2/model/CancelTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/CancelTest.java
@@ -30,7 +30,7 @@ public class CancelTest {
         final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/model/cancel-test-01.xml");
         final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml, null, new SimpleDispatcher());
         exec.go();
-        TriggerEvent te = new EventBuilder("event.foo", TriggerEvent.SIGNAL_EVENT).build();
+        final TriggerEvent te = new EventBuilder("event.foo", TriggerEvent.SIGNAL_EVENT).build();
         SCXMLTestHelper.fireEvent(exec, te);
         Thread.sleep(3000);
         exec.triggerEvents();
@@ -42,7 +42,7 @@ public class CancelTest {
         final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/model/cancel-test-02.xml");
         final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml, null, new SimpleDispatcher());
         exec.go();
-        TriggerEvent te = new EventBuilder("event.foo", TriggerEvent.SIGNAL_EVENT).build();
+        final TriggerEvent te = new EventBuilder("event.foo", TriggerEvent.SIGNAL_EVENT).build();
         SCXMLTestHelper.fireEvent(exec, te);
         Thread.sleep(3000);
         exec.triggerEvents();
diff --git a/src/test/java/org/apache/commons/scxml2/model/CustomActionTest.java b/src/test/java/org/apache/commons/scxml2/model/CustomActionTest.java
index e0a2fe8..a692a82 100644
--- a/src/test/java/org/apache/commons/scxml2/model/CustomActionTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/CustomActionTest.java
@@ -85,7 +85,7 @@ public class CustomActionTest {
     @Test
     public void testHelloWorld() throws Exception {
         // (1) Get a SCXMLExecutor
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/hello-world.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/hello-world.xml");
         exec.go();
         // (2) Single, final state
         Assertions.assertEquals("hello", (exec.getStatus().getStates().
@@ -98,21 +98,21 @@ public class CustomActionTest {
     public void testCustomActionHelloWorld() throws Exception {
         // (1) Form a list of custom actions defined in the SCXML
         //     document (and any included documents via "src" attributes)
-        CustomAction ca1 =
+        final CustomAction ca1 =
             new CustomAction("http://my.custom-actions.domain/CUSTOM1",
                              "hello", Hello.class);
         // Register the same action under a different name, just to test
         // multiple custom actions
-        CustomAction ca2 =
+        final CustomAction ca2 =
             new CustomAction("http://my.custom-actions.domain/CUSTOM2",
                              "bar", Hello.class);
-        List<CustomAction> customActions = new ArrayList<>();
+        final List<CustomAction> customActions = new ArrayList<>();
         customActions.add(ca1);
         customActions.add(ca2);
         // (2) Parse the document
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/custom-hello-world-01.xml", customActions);
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/custom-hello-world-01.xml", customActions);
         // (3) Get a SCXMLExecutor
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         // (4) Single, final state
         Assertions.assertEquals("custom", (exec.getStatus().getStates().
@@ -130,15 +130,15 @@ public class CustomActionTest {
     public void testCustomActionExternalSrcHelloWorld() throws Exception {
         // (1) Form a list of custom actions defined in the SCXML
         //     document (and any included documents via "src" attributes)
-        CustomAction ca =
+        final CustomAction ca =
             new CustomAction("http://my.custom-actions.domain/CUSTOM",
                              "hello", Hello.class);
-        List<CustomAction> customActions = new ArrayList<>();
+        final List<CustomAction> customActions = new ArrayList<>();
         customActions.add(ca);
         // (2) Parse the document
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/external-hello-world.xml", customActions);
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/external-hello-world.xml", customActions);
         // (3) Get a SCXMLExecutor
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         // (4) Single, final state
         Assertions.assertEquals("custom", (exec.getStatus().getStates().
@@ -154,15 +154,15 @@ public class CustomActionTest {
     @Test
     public void testCustomActionOverrideLocalName() throws Exception {
         // (1) List of custom actions, use same local name as SCXML action
-        CustomAction ca =
+        final CustomAction ca =
             new CustomAction("http://my.custom-actions.domain/CUSTOM",
                              "send", Hello.class);
-        List<CustomAction> customActions = new ArrayList<>();
+        final List<CustomAction> customActions = new ArrayList<>();
         customActions.add(ca);
         // (2) Parse the document
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/custom-hello-world-03.xml", customActions);
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/custom-hello-world-03.xml", customActions);
         // (3) Get a SCXMLExecutor
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         // (4) Single, final state
         Assertions.assertEquals("custom", (exec.getStatus().getStates().
@@ -179,15 +179,15 @@ public class CustomActionTest {
     public void testCustomActionEventPayloadHelloWorldJexl() throws Exception {
         // (1) Form a list of custom actions defined in the SCXML
         //     document (and any included documents via "src" attributes)
-        CustomAction ca =
+        final CustomAction ca =
             new CustomAction("http://my.custom-actions.domain/CUSTOM",
                              "hello", Hello.class);
-        List<CustomAction> customActions = new ArrayList<>();
+        final List<CustomAction> customActions = new ArrayList<>();
         customActions.add(ca);
         // (2) Parse the document
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/custom-hello-world-04-jexl.xml", customActions);
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/custom-hello-world-04-jexl.xml", customActions);
         // (3) Get a SCXMLExecutor
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         // (4) Single, final state
         Assertions.assertEquals("custom1", exec.getStatus().getStates().iterator().next().getId(),
diff --git a/src/test/java/org/apache/commons/scxml2/model/DatamodelTest.java b/src/test/java/org/apache/commons/scxml2/model/DatamodelTest.java
index 71721dd..120d46f 100644
--- a/src/test/java/org/apache/commons/scxml2/model/DatamodelTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/DatamodelTest.java
@@ -34,9 +34,9 @@ public class DatamodelTest {
      */    
     @Test
     public void testDatamodelSimultaneousJexl() throws Exception {
-        SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/datamodel-01.xml");
+        final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/datamodel-01.xml");
         exec01.go();
-        SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/datamodel-01.xml");
+        final SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/datamodel-01.xml");
         exec02.go();
         Assertions.assertFalse(exec01 == exec02);
         runtest(exec01, exec02);
@@ -47,9 +47,9 @@ public class DatamodelTest {
      */
     @Test
     public void testDatamodelSimultaneousGroovy() throws Exception {
-        SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/datamodel-01.xml");
+        final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/datamodel-01.xml");
         exec01.go();
-        SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/datamodel-01.xml");
+        final SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/datamodel-01.xml");
         exec02.go();
         Assertions.assertFalse(exec01 == exec02);
         runtest(exec01, exec02);
@@ -60,9 +60,9 @@ public class DatamodelTest {
      */
     @Test
     public void testDatamodelSimultaneousJavascript() throws Exception {
-        SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/javascript/datamodel-01.xml");
+        final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/javascript/datamodel-01.xml");
         exec01.go();
-        SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/javascript/datamodel-01.xml");
+        final SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/javascript/datamodel-01.xml");
         exec02.go();
         Assertions.assertFalse(exec01 == exec02);
         runtest(exec01, exec02);
@@ -70,21 +70,21 @@ public class DatamodelTest {
 
     @Test
     public void testDatamodel05Jexl() throws Exception {
-        SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/datamodel-05.xml");
+        final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/datamodel-05.xml");
         exec01.go();
         SCXMLTestHelper.assertState(exec01, "end");
     }
 
     @Test
     public void testDatamodel05Groovy() throws Exception {
-        SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/datamodel-05.xml");
+        final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/groovy/datamodel-05.xml");
         exec01.go();
         SCXMLTestHelper.assertState(exec01, "end");
     }
 
     @Test
     public void testDatamodel05Javascript() throws Exception {
-        SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/javascript/datamodel-05.xml");
+        final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/javascript/datamodel-05.xml");
         exec01.go();
         SCXMLTestHelper.assertState(exec01, "end");
     }
@@ -125,8 +125,8 @@ public class DatamodelTest {
         Assertions.assertEquals("forty", currentStates.iterator().next().getId());
     }
 
-    private Set<EnterableState> fireEvent(String name, SCXMLExecutor exec) throws Exception {
-        TriggerEvent[] evts = {new EventBuilder(name, TriggerEvent.SIGNAL_EVENT).build()};
+    private Set<EnterableState> fireEvent(final String name, final SCXMLExecutor exec) throws Exception {
+        final TriggerEvent[] evts = {new EventBuilder(name, TriggerEvent.SIGNAL_EVENT).build()};
         exec.triggerEvents(evts);
         return exec.getStatus().getStates();
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/Hello.java b/src/test/java/org/apache/commons/scxml2/model/Hello.java
index bcdfb19..32e00a3 100644
--- a/src/test/java/org/apache/commons/scxml2/model/Hello.java
+++ b/src/test/java/org/apache/commons/scxml2/model/Hello.java
@@ -49,17 +49,17 @@ public class Hello extends Action {
      *
      * @param name The name to set.
      */
-    public void setName(String name) {
+    public void setName(final String name) {
         this.name = name;
     }
 
     @Override
-    public void execute(ActionExecutionContext exctx) {
+    public void execute(final ActionExecutionContext exctx) {
         if (exctx.getAppLog().isInfoEnabled()) {
             exctx.getAppLog().info("Hello " + name);
         }
         // For derived events payload testing
-        TriggerEvent event = new EventBuilder("helloevent", TriggerEvent.SIGNAL_EVENT).data(name).build();
+        final TriggerEvent event = new EventBuilder("helloevent", TriggerEvent.SIGNAL_EVENT).data(name).build();
         exctx.getInternalIOProcessor().addEvent(event);
         callbacks++;
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/HistoryTest.java b/src/test/java/org/apache/commons/scxml2/model/HistoryTest.java
index e553388..0eb22e5 100644
--- a/src/test/java/org/apache/commons/scxml2/model/HistoryTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/HistoryTest.java
@@ -27,7 +27,7 @@ public class HistoryTest {
 
     @Test
     public void testSetTypeDeep() {
-        History history = new History();
+        final History history = new History();
         history.setType("deep");
         
         Assertions.assertTrue(history.isDeep());
@@ -35,7 +35,7 @@ public class HistoryTest {
         
     @Test
     public void testSetTypeNotDeep() {
-        History history = new History();
+        final History history = new History();
         history.setType("shallow");
         
         Assertions.assertFalse(history.isDeep());
@@ -43,21 +43,21 @@ public class HistoryTest {
     
     @Test
     public void testShallowHistory01() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/history-shallow-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/history-shallow-01.xml");
         exec.go();
         runHistoryFlow(exec);
     }
     
     @Test
     public void testDeepHistory01() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/history-deep-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/history-deep-01.xml");
         exec.go();
         runHistoryFlow(exec);
     }
     
     @Test
     public void testHistoryDefaults01() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/history-default-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/history-default-01.xml");
         exec.go();
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
@@ -72,9 +72,9 @@ public class HistoryTest {
     
     @Test
     public void testHistoryParallel01() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/history-parallel-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/history-parallel-01.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         SCXMLTestHelper.assertState(exec, "off_call");
         SCXMLTestHelper.assertPostTriggerStates(exec, "dial", new String[] { "talking", "on_call" });
@@ -88,7 +88,7 @@ public class HistoryTest {
         SCXMLTestHelper.assertPostTriggerStates(exec, "alternate", new String[] { "held", "on_call" });
     }
 
-    private void runHistoryFlow(SCXMLExecutor exec) throws Exception {
+    private void runHistoryFlow(final SCXMLExecutor exec) throws Exception {
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("phase1", currentStates.iterator().next().getId());
@@ -116,8 +116,8 @@ public class HistoryTest {
         return currentStates.iterator().next().getId();
     }
 
-    private String nextPhase(SCXMLExecutor exec) throws Exception {
-        Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.phase");
+    private String nextPhase(final SCXMLExecutor exec) throws Exception {
+        final Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.phase");
         Assertions.assertEquals(1, currentStates.size());
         return currentStates.iterator().next().getId();
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/ParallelTest.java b/src/test/java/org/apache/commons/scxml2/model/ParallelTest.java
index deaac5d..fee9798 100644
--- a/src/test/java/org/apache/commons/scxml2/model/ParallelTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/ParallelTest.java
@@ -25,14 +25,14 @@ public class ParallelTest {
 
     @Test
     public void testParallel01() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/parallel-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/parallel-01.xml");
         exec.go();
         SCXMLTestHelper.assertPostTriggerState(exec, "foo", "end");
     }
     
     @Test
     public void testParallel02() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/parallel-02.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/parallel-02.xml");
         exec.go();
         SCXMLTestHelper.assertPostTriggerStates(exec, "dummy.event", new String[] { "state01", "state02" });
         SCXMLTestHelper.assertPostTriggerState(exec, "event1", "state1");
@@ -40,7 +40,7 @@ public class ParallelTest {
     
     @Test
     public void testParallel03() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/parallel-03.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/parallel-03.xml");
         exec.go();
         SCXMLTestHelper.assertPostTriggerStates(exec, "dummy.event", new String[] { "para11", "para21" });
         Object count = exec.getEvaluator().eval(exec.getGlobalContext(),"root.root.count");
diff --git a/src/test/java/org/apache/commons/scxml2/model/ScriptTest.java b/src/test/java/org/apache/commons/scxml2/model/ScriptTest.java
index 65e5f09..b8ca407 100644
--- a/src/test/java/org/apache/commons/scxml2/model/ScriptTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/ScriptTest.java
@@ -30,9 +30,9 @@ public class ScriptTest {
      */    
     @Test
     public void testJexlScriptExecution() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/script-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/jexl/script-01.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("end", currentStates.iterator().next().getId());
     }
@@ -42,9 +42,9 @@ public class ScriptTest {
      */
     @Test
     public void testJavaScriptExecution() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/javascript/script-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/env/javascript/script-01.xml");
         exec.go();
-        Set<EnterableState> currentStates = exec.getStatus().getStates();
+        final Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("end", currentStates.iterator().next().getId());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/ScxmlInitialAttributeTest.java b/src/test/java/org/apache/commons/scxml2/model/ScxmlInitialAttributeTest.java
index 888b198..3b79830 100644
--- a/src/test/java/org/apache/commons/scxml2/model/ScxmlInitialAttributeTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/ScxmlInitialAttributeTest.java
@@ -54,22 +54,22 @@ public class ScxmlInitialAttributeTest {
 
     @Test
     public void testInitial() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse(new StringReader(SCXML_WITH_LEGAL_INITIAL), null);
+        final SCXML scxml = SCXMLTestHelper.parse(new StringReader(SCXML_WITH_LEGAL_INITIAL), null);
         assertEquals("s1", scxml.getInitial(), "The initial state ID reading was wrong.");
-        TransitionTarget tt = scxml.getInitialTransition().getTargets().iterator().next();
+        final TransitionTarget tt = scxml.getInitialTransition().getTargets().iterator().next();
         assertEquals("s1", tt.getId(), "The initial state resolution was wrong.");
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         assertEquals(scxml.getTargets().get("s1"), exec.getStatus().getStates().iterator().next());
     }
 
     @Test
     public void testNoInitial() throws Exception {
-        SCXML scxml = SCXMLTestHelper.parse(new StringReader(SCXML_WITH_NO_INITIAL), null);
+        final SCXML scxml = SCXMLTestHelper.parse(new StringReader(SCXML_WITH_NO_INITIAL), null);
         assertNull(scxml.getInitial());
-        TransitionTarget tt = scxml.getInitialTransition().getTargets().iterator().next();
+        final TransitionTarget tt = scxml.getInitialTransition().getTargets().iterator().next();
         assertEquals("s1", tt.getId(), "The initial state resolution was wrong.");
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor(scxml);
         exec.go();
         assertEquals(scxml.getTargets().get("s1"), exec.getStatus().getStates().iterator().next());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/SendTest.java b/src/test/java/org/apache/commons/scxml2/model/SendTest.java
index 78c7632..7ef5bc2 100644
--- a/src/test/java/org/apache/commons/scxml2/model/SendTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/SendTest.java
@@ -47,12 +47,12 @@ public class SendTest {
             }
         });
         exec.go();
-        TriggerEvent te = new EventBuilder("event.foo", TriggerEvent.SIGNAL_EVENT).data(3).build();
+        final TriggerEvent te = new EventBuilder("event.foo", TriggerEvent.SIGNAL_EVENT).data(3).build();
         SCXMLTestHelper.fireEvent(exec, te);
 
         Assertions.assertFalse(payloads.isEmpty(), "Payloads empty.");
         Assertions.assertTrue(payloads.get(0) instanceof Map, "Payload is not a map.");
-        Map<String, Object> firstPayload = (Map<String, Object>) payloads.get(0);
+        final Map<String, Object> firstPayload = (Map<String, Object>) payloads.get(0);
         Assertions.assertEquals(2, firstPayload.size(), "Only two in the namelist data expected.");
 
         Assertions.assertEquals(1, firstPayload.get("one"), "Unexpected value for 'one'.");
@@ -65,7 +65,7 @@ public class SendTest {
         Assertions.assertEquals("two", it.next(), "The first one in the namelist must be 'two'.");
     }
 
-    private long parseDelay(String delayString) throws SCXMLExpressionException {
+    private long parseDelay(final String delayString) throws SCXMLExpressionException {
         return Send.parseDelay(delayString, true, delayString);
     }
 
diff --git a/src/test/java/org/apache/commons/scxml2/model/StateTest.java b/src/test/java/org/apache/commons/scxml2/model/StateTest.java
index ac802fa..9390549 100644
--- a/src/test/java/org/apache/commons/scxml2/model/StateTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/StateTest.java
@@ -27,26 +27,26 @@ public class StateTest {
 
     @Test
     public void testGetTransitionsListNull() {
-        State state = new State();
+        final State state = new State();
         Assertions.assertNull(state.getTransitionsList("event"));
     }
         
     @Test
     public void testGetTransitionsList() {
-        State state = new State();
+        final State state = new State();
         state.getTransitionsList().add(new Transition());
         Assertions.assertNotNull(state.getTransitionsList(null));
     }
         
     @Test
     public void testAddTransitionDoesNotContainKey() {
-        Transition transition = new Transition();
+        final Transition transition = new Transition();
         transition.setEvent("event");
 
-        State state = new State();
+        final State state = new State();
         state.addTransition(transition);
         
-        List<Transition> events = state.getTransitionsList("event");
+        final List<Transition> events = state.getTransitionsList("event");
         
         Assertions.assertEquals(1, events.size());
         Assertions.assertEquals("event", events.get(0).getEvent());
@@ -54,49 +54,49 @@ public class StateTest {
         
     @Test
     public void testAddTransitionContainKey() {
-        Transition transition1 = new Transition();
+        final Transition transition1 = new Transition();
         transition1.setEvent("event");
 
-        Transition transition2 = new Transition();
+        final Transition transition2 = new Transition();
         transition2.setEvent("event");
 
-        State state = new State();
+        final State state = new State();
         state.addTransition(transition1);
         state.addTransition(transition2);
         
-        List<Transition> events = state.getTransitionsList("event");
+        final List<Transition> events = state.getTransitionsList("event");
         
         Assertions.assertEquals(2, events.size());
     }
         
     @Test
     public void testGetTransitionList() {
-        Transition transition1 = new Transition();
+        final Transition transition1 = new Transition();
         transition1.setEvent("event");
 
-        Transition transition2 = new Transition();
+        final Transition transition2 = new Transition();
         transition2.setEvent("event");
 
-        State state = new State();
+        final State state = new State();
         state.addTransition(transition1);
         state.addTransition(transition2);
         
-        List<Transition> events = state.getTransitionsList();
+        final List<Transition> events = state.getTransitionsList();
         
         Assertions.assertEquals(2, events.size());
     }
         
     @Test
     public void testHasHistoryEmpty() {
-        State state = new State();
+        final State state = new State();
         Assertions.assertFalse(state.hasHistory());
     }
     
     @Test
     public void testHasHistory() {
-        History history = new History();
+        final History history = new History();
 
-        State state = new State();
+        final State state = new State();
         state.addHistory(history);
         
         Assertions.assertTrue(state.hasHistory());
@@ -104,15 +104,15 @@ public class StateTest {
         
     @Test
     public void testIsSimple() {
-        State state = new State();
+        final State state = new State();
         Assertions.assertTrue(state.isSimple());
     }
         
     @Test
     public void testIsSimpleHasChildren() {
-        State state1 = new State();
+        final State state1 = new State();
         
-        State state = new State();
+        final State state = new State();
         state.addChild(state1);
         
         Assertions.assertFalse(state.isSimple());
@@ -120,15 +120,15 @@ public class StateTest {
         
     @Test
     public void testIsCompositeFalse() {
-        State state = new State();
+        final State state = new State();
         Assertions.assertFalse(state.isComposite());
     }
         
     @Test
     public void testIsCompositeParallel() {
-        State child = new State();
+        final State child = new State();
 
-        State state = new State();
+        final State state = new State();
         state.addChild(child);
         
         Assertions.assertTrue(state.isComposite());
@@ -136,9 +136,9 @@ public class StateTest {
         
     @Test
     public void testIsCompositeHasChildren() {
-        State state1 = new State();
+        final State state1 = new State();
 
-        State state = new State();
+        final State state = new State();
         state.addChild(state1);
         
         Assertions.assertTrue(state.isComposite());
@@ -146,7 +146,7 @@ public class StateTest {
         
     @Test
     public void testIsRegion() {
-        State state = new State();
+        final State state = new State();
         state.setParent(new Parallel());
         
         Assertions.assertTrue(state.isRegion());
@@ -154,7 +154,7 @@ public class StateTest {
         
     @Test
     public void testIsRegionNotParallel() {
-        State state = new State();
+        final State state = new State();
         state.setParent(new State());
         
         Assertions.assertFalse(state.isRegion());
@@ -162,7 +162,7 @@ public class StateTest {
     
     @Test
     public void testInitialAttribute() throws Exception {
-        SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/state-01.xml");
+        final SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/model/state-01.xml");
         exec.go();
         Assertions.assertEquals("s11", exec.getStatus().getStates().iterator().next().getId());
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/StatelessModelTest.java b/src/test/java/org/apache/commons/scxml2/model/StatelessModelTest.java
index 7f86707..ce1d63c 100644
--- a/src/test/java/org/apache/commons/scxml2/model/StatelessModelTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/StatelessModelTest.java
@@ -36,10 +36,10 @@ public class StatelessModelTest {
     @Test
     public void testStatelessModelSimultaneousJexl() throws Exception {
     	// parse once, use many times
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/stateless-01.xml");
-        SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor(scxml);
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/stateless-01.xml");
+        final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor(scxml);
         exec01.go();
-        SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor(scxml);
+        final SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor(scxml);
         exec02.go();
         Assertions.assertFalse(exec01 == exec02);
         runSimultaneousTest(exec01, exec02);
@@ -51,9 +51,9 @@ public class StatelessModelTest {
     @Test
     public void testStatelessModelSequentialJexl() throws Exception {
         // rinse and repeat
-        SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/stateless-01.xml");
+        final SCXML scxml = SCXMLTestHelper.parse("org/apache/commons/scxml2/env/jexl/stateless-01.xml");
         for (int i = 0; i < 3; i++) {
-            SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor(scxml);
+            final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor(scxml);
             exec01.go();
             runSequentialTest(exec01);
         }
@@ -64,10 +64,10 @@ public class StatelessModelTest {
      */    
     @Test
     public void testStatelessModelParallelSharedSCXML() throws Exception {
-        SCXML scxml01par = SCXMLTestHelper.parse("org/apache/commons/scxml2/model/stateless-parallel-01.xml");
-        SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor(scxml01par);
+        final SCXML scxml01par = SCXMLTestHelper.parse("org/apache/commons/scxml2/model/stateless-parallel-01.xml");
+        final SCXMLExecutor exec01 = SCXMLTestHelper.getExecutor(scxml01par);
         exec01.go();
-        SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor(scxml01par);
+        final SCXMLExecutor exec02 = SCXMLTestHelper.getExecutor(scxml01par);
         exec02.go();
         Assertions.assertFalse(exec01 == exec02);
 
@@ -113,11 +113,11 @@ public class StatelessModelTest {
     }
      */
 
-    private void checkParallelStates(Set<EnterableState> currentStates,
-            String s1, String s2, String label) {
-        Iterator<EnterableState> i = currentStates.iterator();
+    private void checkParallelStates(final Set<EnterableState> currentStates,
+            final String s1, final String s2, final String label) {
+        final Iterator<EnterableState> i = currentStates.iterator();
         Assertions.assertTrue(i.hasNext(), "Not enough states");
-        String cs1 = i.next().getId();
+        final String cs1 = i.next().getId();
         String cs2;
         if (s2 != null) {
             Assertions.assertTrue(i.hasNext(), "Not enough states, found one state: " + cs1);
@@ -142,7 +142,7 @@ public class StatelessModelTest {
         Assertions.fail(label + " in unexpected state " + cs1);
     }
 
-    private void runSimultaneousTest(SCXMLExecutor exec01, SCXMLExecutor exec02) throws Exception {
+    private void runSimultaneousTest(final SCXMLExecutor exec01, final SCXMLExecutor exec02) throws Exception {
         //// Interleaved
         // exec01
         Set<EnterableState> currentStates = exec01.getStatus().getStates();
@@ -168,7 +168,7 @@ public class StatelessModelTest {
         Assertions.assertEquals("thirty", currentStates.iterator().next().getId());
     }
 
-    private void runSequentialTest(SCXMLExecutor exec) throws Exception {
+    private void runSequentialTest(final SCXMLExecutor exec) throws Exception {
         Set<EnterableState> currentStates = exec.getStatus().getStates();
         Assertions.assertEquals(1, currentStates.size());
         Assertions.assertEquals("ten", (currentStates.iterator().
@@ -183,8 +183,8 @@ public class StatelessModelTest {
             next()).getId());
     }
 
-    private Set<EnterableState> fireEvent(String name, SCXMLExecutor exec) throws Exception {
-        TriggerEvent[] evts = {new EventBuilder(name, TriggerEvent.SIGNAL_EVENT).build()};
+    private Set<EnterableState> fireEvent(final String name, final SCXMLExecutor exec) throws Exception {
+        final TriggerEvent[] evts = {new EventBuilder(name, TriggerEvent.SIGNAL_EVENT).build()};
         exec.triggerEvents(evts);
         return exec.getStatus().getStates();
     }
diff --git a/src/test/java/org/apache/commons/scxml2/model/TransitionTargetTest.java b/src/test/java/org/apache/commons/scxml2/model/TransitionTargetTest.java
index e9619e7..14a46ff 100644
--- a/src/test/java/org/apache/commons/scxml2/model/TransitionTargetTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/TransitionTargetTest.java
@@ -23,25 +23,25 @@ public class TransitionTargetTest {
 
     @Test
     public void testIsDescendantNullParent() {
-        State state = new State();
-        State context = new State();
+        final State state = new State();
+        final State context = new State();
 
         Assertions.assertFalse(state.isDescendantOf(context));
     }
 
     @Test
     public void testIsDescendantNotEqual() {
-        State state = new State();
+        final State state = new State();
         state.setParent(new State());
-        State context = new State();
+        final State context = new State();
 
         Assertions.assertFalse(state.isDescendantOf(context));
     }
 
     @Test
     public void testIsDescendantEqual() {
-        State state = new State();
-        State context = new State();
+        final State state = new State();
+        final State context = new State();
         state.setParent(context);
 
         Assertions.assertTrue(state.isDescendantOf(context));
@@ -49,9 +49,9 @@ public class TransitionTargetTest {
 
     @Test
     public void testIsDescendantParentEqual() {
-        State state = new State();
-        State context = new State();
-        State parent = new State();
+        final State state = new State();
+        final State context = new State();
+        final State parent = new State();
 
         parent.setParent(context);
         state.setParent(parent);
diff --git a/src/test/java/org/apache/commons/scxml2/model/TransitionTest.java b/src/test/java/org/apache/commons/scxml2/model/TransitionTest.java
index d7cebe3..12bd26c 100644
--- a/src/test/java/org/apache/commons/scxml2/model/TransitionTest.java
+++ b/src/test/java/org/apache/commons/scxml2/model/TransitionTest.java
@@ -33,7 +33,7 @@ public class TransitionTest {
     public void testGetTargets() {
         Assertions.assertEquals(0, transition.getTargets().size());
 
-        State state = new State();
+        final State state = new State();
         state.setId("1");
 
         transition.getTargets().add(state);
diff --git a/src/test/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImplTest.java b/src/test/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImplTest.java
index 7a90ac9..550f8a2 100644
--- a/src/test/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImplTest.java
+++ b/src/test/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImplTest.java
@@ -31,22 +31,22 @@ public class SCXMLSemanticsImplTest {
 
     @Test
     public void testIsLegalConfigNoStates() {
-        Set<EnterableState> states = new HashSet<>();
+        final Set<EnterableState> states = new HashSet<>();
 
         Assertions.assertTrue(new SCXMLSemanticsImpl().isLegalConfiguration(states, new SimpleErrorReporter()));
     }
 
     @Test
     public void testIsLegalConfigInvalidParallel() {
-        Set<EnterableState> states = new HashSet<>();
-        Parallel parallel = new Parallel();
+        final Set<EnterableState> states = new HashSet<>();
+        final Parallel parallel = new Parallel();
 
-        Parallel parent = new Parallel();
+        final Parallel parent = new Parallel();
         parent.setId("4");
 
-        State state1 = new State();
+        final State state1 = new State();
         state1.setId("1");
-        State state2 = new State();
+        final State state2 = new State();
         state2.setId("2");
 
         parent.addChild(state1);
@@ -56,7 +56,7 @@ public class SCXMLSemanticsImplTest {
 
         states.add(parallel);
 
-        MockErrorReporter errorReporter = new MockErrorReporter();
+        final MockErrorReporter errorReporter = new MockErrorReporter();
 
         Assertions.assertFalse(new SCXMLSemanticsImpl().isLegalConfiguration(states, errorReporter));
         Assertions.assertEquals(ErrorConstants.ILLEGAL_CONFIG, errorReporter.getErrCode());
@@ -65,17 +65,17 @@ public class SCXMLSemanticsImplTest {
 
     @Test
     public void testIsLegalConfigMultipleTopLevel() {
-        Set<EnterableState> states = new HashSet<>();
+        final Set<EnterableState> states = new HashSet<>();
 
-        State state1 = new State();
+        final State state1 = new State();
         state1.setId("1");
-        State state2 = new State();
+        final State state2 = new State();
         state2.setId("2");
 
         states.add(state1);
         states.add(state2);
 
-        MockErrorReporter errorReporter = new MockErrorReporter();
+        final MockErrorReporter errorReporter = new MockErrorReporter();
 
         Assertions.assertFalse(new SCXMLSemanticsImpl().isLegalConfiguration(states, errorReporter));
         Assertions.assertEquals(ErrorConstants.ILLEGAL_CONFIG, errorReporter.getErrCode());
@@ -84,15 +84,15 @@ public class SCXMLSemanticsImplTest {
 
     @Test
     public void testIsLegalConfigMultipleStatesActive() {
-        Set<EnterableState> states = new HashSet<>();
+        final Set<EnterableState> states = new HashSet<>();
 
-        State state1 = new State();
+        final State state1 = new State();
         state1.setId("1");
 
-        State state2 = new State();
+        final State state2 = new State();
         state2.setId("2");
 
-        State parent = new State();
+        final State parent = new State();
         parent.setId("parentid");
 
         state2.setParent(parent);
@@ -101,7 +101,7 @@ public class SCXMLSemanticsImplTest {
         states.add(state1);
         states.add(state2);
 
-        MockErrorReporter errorReporter = new MockErrorReporter();
+        final MockErrorReporter errorReporter = new MockErrorReporter();
 
         Assertions.assertFalse(new SCXMLSemanticsImpl().isLegalConfiguration(states, errorReporter));
         Assertions.assertEquals(ErrorConstants.ILLEGAL_CONFIG, errorReporter.getErrCode());
diff --git a/src/test/java/org/apache/commons/scxml2/w3c/W3CTests.java b/src/test/java/org/apache/commons/scxml2/w3c/W3CTests.java
index f1c45ec..9b08420 100644
--- a/src/test/java/org/apache/commons/scxml2/w3c/W3CTests.java
+++ b/src/test/java/org/apache/commons/scxml2/w3c/W3CTests.java
@@ -124,7 +124,7 @@ public class W3CTests {
         }
 
         public static Datamodel fromValue(final String value) {
-            for (Datamodel datamodel : Datamodel.values()) {
+            for (final Datamodel datamodel : Datamodel.values()) {
                 if (datamodel.value().equals(value)) {
                     return datamodel;
                 }
@@ -214,7 +214,7 @@ public class W3CTests {
             if (testsMap == null) {
                 testsMap = new LinkedHashMap<>();
                 if (tests != null) {
-                    for (Test t : tests) {
+                    for (final Test t : tests) {
                         testsMap.put(t.getId(), t);
                     }
                 }
@@ -361,7 +361,7 @@ public class W3CTests {
             if (assertionsMap == null) {
                 assertionsMap = new LinkedHashMap<>();
                 if (assertions != null) {
-                    for (Assertion a : assertions) {
+                    for (final Assertion a : assertions) {
                         assertionsMap.put(a.getId(), a);
                     }
                 }
@@ -419,8 +419,8 @@ public class W3CTests {
                 return;
             }
             else if ("run".equals(args[0])) {
-                Datamodel datamodel = Datamodel.fromValue(System.getProperty("datamodel"));
-                String testId = System.getProperty("test");
+                final Datamodel datamodel = Datamodel.fromValue(System.getProperty("datamodel"));
+                final String testId = System.getProperty("test");
                 new W3CTests().runTests(testId, datamodel);
                 return;
             }
@@ -460,10 +460,10 @@ public class W3CTests {
         FileUtils.copyURLToFile(new URL(SCXML_IRP_BASE_URL + SCXML_IRP_MANIFEST_URI), new File(testsSrcDir, SCXML_IRP_MANIFEST_URI));
         System.out.println("Downloading ecma stylesheet: " + SCXML_IRP_BASE_URL + SCXML_IRP_ECMA_XSL_URI);
         FileUtils.copyURLToFile(new URL(SCXML_IRP_BASE_URL + SCXML_IRP_ECMA_XSL_URI), new File(testsSrcDir, SCXML_IRP_ECMA_XSL_URI));
-        Assertions assertions = loadAssertions();
-        for (Assertions.Assertion entry : assertions.getAssertions().values()) {
-            for (Assertions.TestCase test : entry.getTestCases()) {
-                for (Assertions.Resource resource : test.getResources()) {
+        final Assertions assertions = loadAssertions();
+        for (final Assertions.Assertion entry : assertions.getAssertions().values()) {
+            for (final Assertions.TestCase test : entry.getTestCases()) {
+                for (final Assertions.Resource resource : test.getResources()) {
                     System.out.println("Downloading IRP test file: " + SCXML_IRP_BASE_URL + resource.getUri());
                     FileUtils.copyURLToFile(new URL(SCXML_IRP_BASE_URL + resource.getUri()), new File(TXML_TESTS_DIR + resource.getFilename()));
                 }
@@ -481,17 +481,17 @@ public class W3CTests {
     protected void makeTests() throws Exception {
         final File testsSrcDir = new File(TESTS_SRC_DIR);
 
-        TransformerFactory factory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl",null);
+        final TransformerFactory factory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl",null);
         factory.setFeature("http://saxon.sf.net/feature/suppressXsltNamespaceCheck", true);
         final Map<Datamodel, Transformer> transformers = new HashMap<>();
         transformers.put(Datamodel.ECMA, factory.newTransformer(new StreamSource(new FileInputStream(new File(testsSrcDir, SCXML_IRP_ECMA_XSL_URI)))));
         transformers.put(Datamodel.MINIMAL, factory.newTransformer(new StreamSource(getClass().getResourceAsStream(SCXML_IRP_MINIMAL_XSL_FILENAME))));
         transformers.put(Datamodel.JEXL, factory.newTransformer(new StreamSource(getClass().getResourceAsStream(SCXML_IRP_JEXL_XSL_FILENAME))));
         transformers.put(Datamodel.GROOVY, factory.newTransformer(new StreamSource(getClass().getResourceAsStream(SCXML_IRP_GROOVY_XSL_FILENAME))));
-        Assertions assertions = loadAssertions();
-        for (Assertions.Assertion entry : assertions.getAssertions().values()) {
-            for (Assertions.TestCase test : entry.getTestCases()) {
-                for (Assertions.Resource resource : test.getResources()) {
+        final Assertions assertions = loadAssertions();
+        for (final Assertions.Assertion entry : assertions.getAssertions().values()) {
+            for (final Assertions.TestCase test : entry.getTestCases()) {
+                for (final Assertions.Resource resource : test.getResources()) {
                     processResource(entry.getSpecId(), resource, transformers);
                 }
             }
@@ -518,7 +518,7 @@ public class W3CTests {
                 transformResource(resource, transformers.get(Datamodel.ECMA), Datamodel.ECMA.testDir());
                 break;
             default:
-                for (Datamodel dm : transformers.keySet()) {
+                for (final Datamodel dm : transformers.keySet()) {
                     if (dm != Datamodel.MINIMAL) {
                         transformResource(resource, transformers.get(dm), dm.testDir());
                     }
@@ -538,7 +538,7 @@ public class W3CTests {
     protected void transformResource(final Assertions.Resource resource, final Transformer transformer,
                                      final String targetDir) throws Exception {
         if (resource.getFilename().endsWith(".txml")) {
-            StreamSource txmlSource = new StreamSource(new FileInputStream(new File(TXML_TESTS_DIR, resource.getFilename())));
+            final StreamSource txmlSource = new StreamSource(new FileInputStream(new File(TXML_TESTS_DIR, resource.getFilename())));
             transformer.transform(txmlSource, new StreamResult(new FileOutputStream(new File(targetDir, resource.getName() + ".scxml"))));
         }
         else {
@@ -574,7 +574,7 @@ public class W3CTests {
             }
         }
         else {
-            for (Assertions.Assertion entry : assertions.getAssertions().values()) {
+            for (final Assertions.Assertion entry : assertions.getAssertions().values()) {
                 runAssert(entry, tests, datamodel, enabled, false, results);
             }
         }
@@ -594,7 +594,7 @@ public class W3CTests {
         System.out.print("\n");
         if (testId == null && !results.changedStatusTests.isEmpty()) {
             System.out.println("  "+(enabled? "failed" : "passed")+" tests: ");
-            for (String filename : results.changedStatusTests) {
+            for (final String filename : results.changedStatusTests) {
                 System.out.println("    "+filename);
             }
             System.out.print("\n");
@@ -611,22 +611,22 @@ public class W3CTests {
      * @throws Exception
      */
     protected void runAssert(final Assertions.Assertion assertion, final Tests tests, final Datamodel datamodel,
-                             final boolean status, final boolean singleTest, TestResults results) {
+                             final boolean status, final boolean singleTest, final TestResults results) {
         final Tests.Test test = tests.getTests().get(assertion.getId());
         if (test == null) {
             throw new IllegalStateException("No test configuration found for W3C IRP test with id: "+assertion.getId());
         }
         if (test.isImplemented()) {
-            for (Assertions.TestCase testCase : assertion.getTestCases()) {
+            for (final Assertions.TestCase testCase : assertion.getTestCases()) {
                 for (final Datamodel dm : Datamodel.values()) {
                     if (assertion.getDatamodel() == null && dm != Datamodel.MINIMAL || dm == assertion.getDatamodel()) {
                         boolean skipped = true;
                         if (datamodel == null || datamodel == dm) {
                             if (singleTest || test.getStatus(dm) == null || status == test.getStatus(dm)) {
-                                for (Assertions.Resource scxmlResource : testCase.getScxmlResources()) {
-                                    File scxmlFile = new File(dm.testDir(), scxmlResource.getName()+".scxml");
+                                for (final Assertions.Resource scxmlResource : testCase.getScxmlResources()) {
+                                    final File scxmlFile = new File(dm.testDir(), scxmlResource.getName()+".scxml");
                                     skipped = false;
-                                    boolean success = runTest(testCase, test, scxmlFile);
+                                    final boolean success = runTest(testCase, test, scxmlFile);
                                     if (!success) {
                                         results.failed.put(dm, results.failed(dm)+1);
                                     } else {
@@ -672,7 +672,7 @@ public class W3CTests {
             exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
             exec.registerInvokerClass("http://www.w3.org/TR/scxml/", SimpleSCXMLInvoker.class);
             exec.run().join();
-            Final end = exec.getStatus().getFinalState();
+            final Final end = exec.getStatus().getFinalState();
             System.out.println("                final state: "+end.getId());
             if (!testCase.isManual()) {
                 return end.getId().equals("pass");
@@ -685,7 +685,7 @@ public class W3CTests {
                 return false;
             }
         }
-        catch (Exception e) {
+        catch (final Exception e) {
             if (test.isManual() && e.getMessage() != null && e.getMessage().equals(test.getFinalState())) {
                 System.out.println("                PASS: "+e.getMessage());
                 return true;