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 2019/09/01 22:08:22 UTC

[commons-bcel] branch master updated (05a35cf -> 97f928d)

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-bcel.git.


    from 05a35cf  Add GH action badge.
     new 9ea5775  Use final.
     new dc78738  Remove redundant type arguments.
     new 06151c0  Cannot break binary compatibility with 6.3.1.
     new 97f928d  Cannot break binary compatibility with 6.3.1.

The 4 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:
 src/examples/ClassDumper.java                      |  40 ++++----
 src/examples/HelloWorldBuilder.java                |  32 +++---
 src/examples/JasminVisitor.java                    | 108 ++++++++++-----------
 src/examples/Mini/ASCII_CharStream.java            |  58 +++++------
 src/examples/Mini/ASTExpr.java                     |  46 ++++-----
 src/examples/Mini/ASTFactor.java                   |   8 +-
 src/examples/Mini/ASTFunAppl.java                  |  46 ++++-----
 src/examples/Mini/ASTFunDecl.java                  |  95 +++++++++---------
 src/examples/Mini/ASTIdent.java                    |  26 ++---
 src/examples/Mini/ASTIfExpr.java                   |  22 ++---
 src/examples/Mini/ASTInteger.java                  |  16 +--
 src/examples/Mini/ASTLetExpr.java                  |  47 ++++-----
 src/examples/Mini/ASTProgram.java                  |  26 ++---
 src/examples/Mini/ASTTerm.java                     |   8 +-
 src/examples/Mini/Environment.java                 |  48 ++++-----
 src/examples/Mini/Function.java                    |  20 ++--
 src/examples/Mini/JJTMiniParserState.java          |  22 ++---
 src/examples/Mini/MiniC.java                       |  38 ++++----
 src/examples/Mini/MiniParser.java                  |  76 +++++++--------
 src/examples/Mini/MiniParserTokenManager.java      |  74 +++++++-------
 src/examples/Mini/ParseException.java              |  14 +--
 src/examples/Mini/SimpleNode.java                  |  18 ++--
 src/examples/Mini/Token.java                       |   2 +-
 src/examples/Mini/TokenMgrError.java               |  12 +--
 src/examples/Mini/Variable.java                    |  14 +--
 src/examples/Package.java                          |  56 +++++------
 src/examples/Peephole.java                         |  36 +++----
 src/examples/ProxyCreator.java                     |  30 +++---
 src/examples/TransitiveHull.java                   |  44 ++++-----
 src/examples/helloify.java                         |  30 +++---
 src/examples/id.java                               |  12 +--
 src/examples/listclass.java                        |  48 ++++-----
 src/examples/maxstack.java                         |  18 ++--
 src/examples/patchclass.java                       |  12 +--
 src/main/java/org/apache/bcel/Const.java           |  15 ++-
 .../java/org/apache/bcel/classfile/Module.java     |  10 +-
 .../org/apache/bcel/classfile/ModuleExports.java   |   8 +-
 .../org/apache/bcel/classfile/ModuleOpens.java     |   8 +-
 .../org/apache/bcel/classfile/ModuleProvides.java  |   6 +-
 .../org/apache/bcel/classfile/ModuleRequires.java  |   6 +-
 .../java/org/apache/bcel/classfile/Utility.java    |  10 +-
 .../java/org/apache/bcel/classfile/Visitor.java    |  42 +++++---
 .../org/apache/bcel/generic/InvokeInstruction.java |   4 +-
 src/main/java/org/apache/bcel/util/BCELifier.java  |   2 +-
 src/main/java/org/apache/bcel/util/ClassPath.java  |   2 +-
 .../bcel/util/LruCacheClassPathRepository.java     |   6 +-
 .../bcel/generic/JdkGenericDumpTestCase.java       |   6 +-
 .../bcel/util/ClassPathRepositoryTestCase.java     |  16 +--
 .../util/LruCacheClassPathRepositoryTestCase.java  |  20 ++--
 .../verifier/tests/JiraBcel291TestFixture.java     |   2 +-
 50 files changed, 699 insertions(+), 666 deletions(-)


[commons-bcel] 01/04: 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-bcel.git

commit 9ea57757d0379296a9a72da05437f9a9cbb4a96f
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Sep 1 17:21:52 2019 -0400

    Use final.
---
 src/examples/ClassDumper.java                      |  40 ++++----
 src/examples/HelloWorldBuilder.java                |  32 +++----
 src/examples/JasminVisitor.java                    | 106 ++++++++++-----------
 src/examples/Mini/ASCII_CharStream.java            |  58 +++++------
 src/examples/Mini/ASTExpr.java                     |  46 ++++-----
 src/examples/Mini/ASTFactor.java                   |   8 +-
 src/examples/Mini/ASTFunAppl.java                  |  46 ++++-----
 src/examples/Mini/ASTFunDecl.java                  |  95 +++++++++---------
 src/examples/Mini/ASTIdent.java                    |  26 ++---
 src/examples/Mini/ASTIfExpr.java                   |  22 ++---
 src/examples/Mini/ASTInteger.java                  |  16 ++--
 src/examples/Mini/ASTLetExpr.java                  |  47 ++++-----
 src/examples/Mini/ASTProgram.java                  |  26 ++---
 src/examples/Mini/ASTTerm.java                     |   8 +-
 src/examples/Mini/Environment.java                 |  46 ++++-----
 src/examples/Mini/Function.java                    |  20 ++--
 src/examples/Mini/JJTMiniParserState.java          |  18 ++--
 src/examples/Mini/MiniC.java                       |  34 +++----
 src/examples/Mini/MiniParser.java                  |  74 +++++++-------
 src/examples/Mini/MiniParserTokenManager.java      |  74 +++++++-------
 src/examples/Mini/ParseException.java              |  14 +--
 src/examples/Mini/SimpleNode.java                  |  18 ++--
 src/examples/Mini/Token.java                       |   2 +-
 src/examples/Mini/TokenMgrError.java               |  12 +--
 src/examples/Mini/Variable.java                    |  14 +--
 src/examples/Package.java                          |  50 +++++-----
 src/examples/Peephole.java                         |  36 +++----
 src/examples/ProxyCreator.java                     |  30 +++---
 src/examples/TransitiveHull.java                   |  44 ++++-----
 src/examples/helloify.java                         |  30 +++---
 src/examples/id.java                               |  12 +--
 src/examples/listclass.java                        |  46 ++++-----
 src/examples/maxstack.java                         |  18 ++--
 src/examples/patchclass.java                       |  12 +--
 .../java/org/apache/bcel/classfile/Module.java     |  10 +-
 .../org/apache/bcel/classfile/ModuleExports.java   |   8 +-
 .../org/apache/bcel/classfile/ModuleOpens.java     |   8 +-
 .../org/apache/bcel/classfile/ModuleProvides.java  |   6 +-
 .../org/apache/bcel/classfile/ModuleRequires.java  |   6 +-
 .../java/org/apache/bcel/classfile/Utility.java    |   8 +-
 .../java/org/apache/bcel/classfile/Visitor.java    |   4 +-
 .../org/apache/bcel/generic/InvokeInstruction.java |   4 +-
 src/main/java/org/apache/bcel/util/ClassPath.java  |   2 +-
 .../bcel/util/LruCacheClassPathRepository.java     |   6 +-
 .../bcel/generic/JdkGenericDumpTestCase.java       |   6 +-
 .../bcel/util/ClassPathRepositoryTestCase.java     |  16 ++--
 .../util/LruCacheClassPathRepositoryTestCase.java  |  20 ++--
 .../verifier/tests/JiraBcel291TestFixture.java     |   2 +-
 48 files changed, 644 insertions(+), 642 deletions(-)

diff --git a/src/examples/ClassDumper.java b/src/examples/ClassDumper.java
index 7fe2752..a223672 100644
--- a/src/examples/ClassDumper.java
+++ b/src/examples/ClassDumper.java
@@ -39,8 +39,8 @@ import org.apache.bcel.util.BCELifier;
  */
 class ClassDumper {
 
-    private FileImageInputStream file;
-    private String file_name;
+    private final FileImageInputStream file;
+    private final String file_name;
     private int class_name_index;
     private int superclass_name_index;
     private int major;
@@ -59,7 +59,7 @@ class ClassDumper {
      * @param file Input stream
      * @param file_name File name
      */
-    public ClassDumper (FileImageInputStream file, String file_name) {
+    public ClassDumper (final FileImageInputStream file, final String file_name) {
         this.file_name = file_name;
         this.file = file;
     }
@@ -98,7 +98,7 @@ class ClassDumper {
                 if (file != null) {
                     file.close();
                 }
-            } catch (IOException ioe) {
+            } catch (final IOException ioe) {
                 //ignore close exceptions
             }
         }
@@ -141,7 +141,7 @@ class ClassDumper {
      */
     private final void processConstantPool () throws IOException, ClassFormatException {
         byte tag;
-        int constant_pool_count = file.readUnsignedShort();
+        final int constant_pool_count = file.readUnsignedShort();
         constant_items = new Constant[constant_pool_count];
         constant_pool = new ConstantPool(constant_items);
 
@@ -287,8 +287,8 @@ class ClassDumper {
         for (int i = 0; i < attributes_count; i++) {
             attributes[i] = Attribute.readAttribute(file, constant_pool);
             // indent all lines by two spaces
-            String[] lines = attributes[i].toString().split("\\r?\\n");
-            for (String line : lines) {
+            final String[] lines = attributes[i].toString().split("\\r?\\n");
+            for (final String line : lines) {
                 System.out.println("  " + line);
             }
         }
@@ -301,25 +301,25 @@ class ClassDumper {
      * @throws ClassFormatException
      */
     private final void processFieldOrMethod () throws IOException, ClassFormatException {
-        int access_flags = file.readUnsignedShort();
-        int name_index = file.readUnsignedShort();
+        final int access_flags = file.readUnsignedShort();
+        final int name_index = file.readUnsignedShort();
         System.out.printf("  name_index: %d (", name_index); 
         System.out.println(constantToString(name_index) + ")"); 
         System.out.println("  access_flags: " + BCELifier.printFlags(access_flags,
                 BCELifier.FLAGS.METHOD));
-        int descriptor_index = file.readUnsignedShort();
+        final int descriptor_index = file.readUnsignedShort();
         System.out.printf("  descriptor_index: %d (", descriptor_index); 
         System.out.println(constantToString(descriptor_index) + ")"); 
 
-        int attributes_count = file.readUnsignedShort();
-        Attribute[] attributes = new Attribute[attributes_count];
+        final int attributes_count = file.readUnsignedShort();
+        final Attribute[] attributes = new Attribute[attributes_count];
         System.out.println("  attribute count: " + attributes_count); 
 
         for (int i = 0; i < attributes_count; i++) {
             // going to peek ahead a bit
             file.mark();
-            int attribute_name_index = file.readUnsignedShort();
-            int attribute_length = file.readInt();
+            final int attribute_name_index = file.readUnsignedShort();
+            final int attribute_length = file.readInt();
             // restore file location
             file.reset();
             // Usefull for debugging
@@ -332,9 +332,9 @@ class ClassDumper {
             // into a buffer.  Then pass that buffer to readAttribute and also
             // verify we're at EOF of the buffer on return.
 
-            long pos1 = file.getStreamPosition();
+            final long pos1 = file.getStreamPosition();
             attributes[i] = Attribute.readAttribute(file, constant_pool);
-            long pos2 = file.getStreamPosition();
+            final long pos2 = file.getStreamPosition();
             if ((pos2 - pos1) != (attribute_length + 6)) {
                 System.out.printf("%nWHOOPS attribute_length: %d pos2-pos1-6: %d pos1: %x(%d) pos2: %x(%d)%n",
                         attribute_length, pos2-pos1-6, pos1, pos1, pos2, pos2); 
@@ -344,8 +344,8 @@ class ClassDumper {
         }
     }
 
-    private final String constantToString (int index) {
-        Constant c = constant_items[index]; 
+    private final String constantToString (final int index) {
+        final Constant c = constant_items[index]; 
         return constant_pool.constantToString(c); 
     }    
 
@@ -353,7 +353,7 @@ class ClassDumper {
 
 class DumpClass {
 
-    public static void main(String[] args) throws IOException {
+    public static void main(final String[] args) throws IOException {
 
         if (args.length != 1) {
             throw new RuntimeException("Require file name as only argument");
@@ -361,7 +361,7 @@ class DumpClass {
 
         try (FileImageInputStream file = new FileImageInputStream(new File(args[0]))) {
 
-            ClassDumper cd = new ClassDumper(file, args[0]);
+            final ClassDumper cd = new ClassDumper(file, args[0]);
             cd.dump();
         }
 
diff --git a/src/examples/HelloWorldBuilder.java b/src/examples/HelloWorldBuilder.java
index 4e63c6d..eb45906 100644
--- a/src/examples/HelloWorldBuilder.java
+++ b/src/examples/HelloWorldBuilder.java
@@ -60,14 +60,14 @@ import org.apache.bcel.generic.Type;
  *
  */
 public class HelloWorldBuilder {
-    public static void main(String[] argv) {
-        ClassGen cg = new ClassGen("HelloWorld", "java.lang.Object",
+    public static void main(final String[] argv) {
+        final ClassGen cg = new ClassGen("HelloWorld", "java.lang.Object",
                 "<generated>", Constants.ACC_PUBLIC |
                 Constants.ACC_SUPER,
                 null);
-        ConstantPoolGen cp = cg.getConstantPool(); // cg creates constant pool
-        InstructionList il = new InstructionList();
-        MethodGen mg = new MethodGen(Constants.ACC_STATIC |
+        final ConstantPoolGen cp = cg.getConstantPool(); // cg creates constant pool
+        final InstructionList il = new InstructionList();
+        final MethodGen mg = new MethodGen(Constants.ACC_STATIC |
                 Constants.ACC_PUBLIC,// access flags
                 Type.VOID,              // return type
                 new Type[]{            // argument types
@@ -76,10 +76,10 @@ public class HelloWorldBuilder {
                 new String[]{"argv"}, // arg names
                 "main", "HelloWorld",    // method, class
                 il, cp);
-        InstructionFactory factory = new InstructionFactory(cg);
+        final InstructionFactory factory = new InstructionFactory(cg);
 
-        ObjectType i_stream = new ObjectType("java.io.InputStream");
-        ObjectType p_stream = new ObjectType("java.io.PrintStream");
+        final ObjectType i_stream = new ObjectType("java.io.InputStream");
+        final ObjectType p_stream = new ObjectType("java.io.PrintStream");
 
         // Create BufferedReader object and store it in local variable `in'.
         il.append(factory.createNew("java.io.BufferedReader"));
@@ -98,17 +98,17 @@ public class HelloWorldBuilder {
 
         // Create local variable `in'
         LocalVariableGen lg = mg.addLocalVariable("in", new ObjectType("java.io.BufferedReader"), null, null);
-        int in = lg.getIndex();
+        final int in = lg.getIndex();
         lg.setStart(il.append(new ASTORE(in))); // `i' valid from here
 
         // Create local variable `name'
         lg = mg.addLocalVariable("name", Type.STRING, null, null);
-        int name = lg.getIndex();
+        final int name = lg.getIndex();
         il.append(InstructionConstants.ACONST_NULL);
         lg.setStart(il.append(new ASTORE(name))); // `name' valid from here
 
         // try { ...
-        InstructionHandle try_start =
+        final InstructionHandle try_start =
                 il.append(factory.createFieldAccess("java.lang.System", "out", p_stream, Constants.GETSTATIC));
 
         il.append(new PUSH(cp, "Please enter your name> "));
@@ -120,13 +120,13 @@ public class HelloWorldBuilder {
         il.append(new ASTORE(name));
 
         // Upon normal execution we jump behind exception handler, the target address is not known yet.
-        GOTO g = new GOTO(null);
-        InstructionHandle try_end = il.append(g);
+        final GOTO g = new GOTO(null);
+        final InstructionHandle try_end = il.append(g);
 
         /* } catch() { ... }
          * Add exception handler: print exception and return from method
          */
-        InstructionHandle handler =
+        final InstructionHandle handler =
                 il.append(factory.createFieldAccess("java.lang.System", "out", p_stream, Constants.GETSTATIC));
         // Little trick in order not to save exception object temporarily
         il.append(InstructionConstants.SWAP);
@@ -136,7 +136,7 @@ public class HelloWorldBuilder {
         mg.addExceptionHandler(try_start, try_end, handler, new ObjectType("java.io.IOException"));
 
         // Normal code continues, now we can set the branch target of the GOTO that jumps over the handler code.
-        InstructionHandle ih =
+        final InstructionHandle ih =
                 il.append(factory.createFieldAccess("java.lang.System", "out", p_stream, Constants.GETSTATIC));
         g.setTarget(ih);
 
@@ -174,7 +174,7 @@ public class HelloWorldBuilder {
         // Get JavaClass object and dump it to file.
         try {
             cg.getJavaClass().dump("HelloWorld.class");
-        } catch (IOException e) {
+        } catch (final IOException e) {
             System.err.println(e);
         }
     }
diff --git a/src/examples/JasminVisitor.java b/src/examples/JasminVisitor.java
index 1f02b8c..9b1cd37 100644
--- a/src/examples/JasminVisitor.java
+++ b/src/examples/JasminVisitor.java
@@ -57,12 +57,12 @@ import org.apache.bcel.generic.TABLESWITCH;
  *
  */
 public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
-    private JavaClass clazz;
-    private PrintWriter out;
-    private String class_name;
-    private ConstantPoolGen cp;
+    private final JavaClass clazz;
+    private final PrintWriter out;
+    private final String class_name;
+    private final ConstantPoolGen cp;
 
-    public JasminVisitor(JavaClass clazz, OutputStream out) {
+    public JasminVisitor(final JavaClass clazz, final OutputStream out) {
         this.clazz = clazz;
         this.out = new PrintWriter(out);
         this.class_name = clazz.getClassName();
@@ -78,7 +78,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
     }
 
     @Override
-    public void visitJavaClass(JavaClass clazz) {
+    public void visitJavaClass(final JavaClass clazz) {
         out.println(";; Produced by JasminVisitor (BCEL)");
         out.println(";; https://commons.apache.org/bcel/");
         out.println(";; " + new Date() + "\n");
@@ -89,7 +89,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
                 " " + clazz.getClassName().replace('.', '/'));
         out.println(".super " + clazz.getSuperclassName().replace('.', '/'));
 
-        for (String iface : clazz.getInterfaceNames()) {
+        for (final String iface : clazz.getInterfaceNames()) {
             out.println(".implements " + iface.replace('.', '/'));
         }
 
@@ -97,7 +97,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
     }
 
     @Override
-    public void visitField(Field field) {
+    public void visitField(final Field field) {
         out.print(".field " + Utility.accessToString(field.getAccessFlags()) +
                 " \"" + field.getName() + "\"" + field.getSignature());
         if (field.getAttributes().length == 0) {
@@ -106,7 +106,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
     }
 
     @Override
-    public void visitConstantValue(ConstantValue cv) {
+    public void visitConstantValue(final ConstantValue cv) {
         out.println(" = " + cv);
     }
 
@@ -117,8 +117,8 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
      * for every of the method's attributes if it's the last one and print ".end method"
      * then.
      */
-    private void printEndMethod(Attribute attr) {
-        Attribute[] attributes = _method.getAttributes();
+    private void printEndMethod(final Attribute attr) {
+        final Attribute[] attributes = _method.getAttributes();
 
         if (attr == attributes[attributes.length - 1]) {
             out.println(".end method");
@@ -126,33 +126,33 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
     }
 
     @Override
-    public void visitDeprecated(Deprecated attribute) {
+    public void visitDeprecated(final Deprecated attribute) {
         printEndMethod(attribute);
     }
 
     @Override
-    public void visitSynthetic(Synthetic attribute) {
+    public void visitSynthetic(final Synthetic attribute) {
         if (_method != null) {
             printEndMethod(attribute);
         }
     }
 
     @Override
-    public void visitMethod(Method method) {
+    public void visitMethod(final Method method) {
         this._method = method; // Remember for use in subsequent visitXXX calls
 
         out.println("\n.method " + Utility.accessToString(_method.getAccessFlags()) +
                 " " + _method.getName() + _method.getSignature());
 
-        Attribute[] attributes = _method.getAttributes();
+        final Attribute[] attributes = _method.getAttributes();
         if ((attributes == null) || (attributes.length == 0)) {
             out.println(".end method");
         }
     }
 
     @Override
-    public void visitExceptionTable(ExceptionTable e) {
-        for (String name : e.getExceptionNames()) {
+    public void visitExceptionTable(final ExceptionTable e) {
+        for (final String name : e.getExceptionNames()) {
             out.println(".throws " + name.replace('.', '/'));
         }
 
@@ -162,46 +162,46 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
     private Hashtable<InstructionHandle, String> map;
 
     @Override
-    public void visitCode(Code code) {
+    public void visitCode(final Code code) {
         int label_counter = 0;
 
         out.println(".limit stack " + code.getMaxStack());
         out.println(".limit locals " + code.getMaxLocals());
 
-        MethodGen mg = new MethodGen(_method, class_name, cp);
-        InstructionList il = mg.getInstructionList();
-        InstructionHandle[] ihs = il.getInstructionHandles();
+        final MethodGen mg = new MethodGen(_method, class_name, cp);
+        final InstructionList il = mg.getInstructionList();
+        final InstructionHandle[] ihs = il.getInstructionHandles();
 
     /* Pass 1: Give all referenced instruction handles a symbolic name, i.e. a
      * label.
      */
         map = new Hashtable<InstructionHandle, String>();
 
-        for (InstructionHandle ih1 : ihs) {
+        for (final InstructionHandle ih1 : ihs) {
             if (ih1 instanceof BranchHandle) {
-                BranchInstruction bi = (BranchInstruction) ih1.getInstruction();
+                final BranchInstruction bi = (BranchInstruction) ih1.getInstruction();
 
                 if (bi instanceof Select) { // Special cases LOOKUPSWITCH and TABLESWITCH
-                    for (InstructionHandle target : ((Select) bi).getTargets()) {
+                    for (final InstructionHandle target : ((Select) bi).getTargets()) {
                         put(target, "Label" + label_counter++ + ":");
                     }
                 }
 
-                InstructionHandle ih = bi.getTarget();
+                final InstructionHandle ih = bi.getTarget();
                 put(ih, "Label" + label_counter++ + ":");
             }
         }
 
-        LocalVariableGen[] lvs = mg.getLocalVariables();
-        for (LocalVariableGen lv : lvs) {
+        final LocalVariableGen[] lvs = mg.getLocalVariables();
+        for (final LocalVariableGen lv : lvs) {
             InstructionHandle ih = lv.getStart();
             put(ih, "Label" + label_counter++ + ":");
             ih = lv.getEnd();
             put(ih, "Label" + label_counter++ + ":");
         }
 
-        CodeExceptionGen[] ehs = mg.getExceptionHandlers();
-        for (CodeExceptionGen c : ehs) {
+        final CodeExceptionGen[] ehs = mg.getExceptionHandlers();
+        for (final CodeExceptionGen c : ehs) {
             InstructionHandle ih = c.getStartPC();
 
             put(ih, "Label" + label_counter++ + ":");
@@ -211,14 +211,14 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
             put(ih, "Label" + label_counter++ + ":");
         }
 
-        LineNumberGen[] lns = mg.getLineNumbers();
-        for (LineNumberGen ln : lns) {
-            InstructionHandle ih = ln.getInstruction();
+        final LineNumberGen[] lns = mg.getLineNumbers();
+        for (final LineNumberGen ln : lns) {
+            final InstructionHandle ih = ln.getInstruction();
             put(ih, ".line " + ln.getSourceLine());
         }
 
         // Pass 2: Output code.
-        for (LocalVariableGen l : lvs) {
+        for (final LocalVariableGen l : lvs) {
             out.println(".var " + l.getIndex() + " is " + l.getName() + " " +
                     l.getType().getSignature() +
                     " from " + get(l.getStart()) +
@@ -228,7 +228,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
         out.print("\n");
 
         for (InstructionHandle ih : ihs) {
-            Instruction inst = ih.getInstruction();
+            final Instruction inst = ih.getInstruction();
             String str = map.get(ih);
 
             if (str != null) {
@@ -237,14 +237,14 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
 
             if (inst instanceof BranchInstruction) {
                 if (inst instanceof Select) { // Special cases LOOKUPSWITCH and TABLESWITCH
-                    Select s = (Select) inst;
-                    int[] matchs = s.getMatchs();
-                    InstructionHandle[] targets = s.getTargets();
+                    final Select s = (Select) inst;
+                    final int[] matchs = s.getMatchs();
+                    final InstructionHandle[] targets = s.getTargets();
 
                     if (s instanceof TABLESWITCH) {
                         out.println("\ttableswitch " + matchs[0] + " " + matchs[matchs.length - 1]);
 
-                        for (InstructionHandle target : targets) {
+                        for (final InstructionHandle target : targets) {
                             out.println("\t\t" + get(target));
                         }
 
@@ -258,7 +258,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
 
                     out.println("\t\tdefault: " + get(s.getTarget())); // Applies for both
                 } else {
-                    BranchInstruction bi = (BranchInstruction) inst;
+                    final BranchInstruction bi = (BranchInstruction) inst;
                     ih = bi.getTarget();
                     str = get(ih);
                     out.println("\t" + Constants.OPCODE_NAMES[bi.getOpcode()] + " " + str);
@@ -270,9 +270,9 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
 
         out.print("\n");
 
-        for (CodeExceptionGen c : ehs) {
-            ObjectType caught = c.getCatchType();
-            String class_name = (caught == null) ?  // catch any exception, used when compiling finally
+        for (final CodeExceptionGen c : ehs) {
+            final ObjectType caught = c.getCatchType();
+            final String class_name = (caught == null) ?  // catch any exception, used when compiling finally
                     "all" : caught.getClassName().replace('.', '/');
 
             out.println(".catch " + class_name + " from " +
@@ -283,13 +283,13 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
         printEndMethod(code);
     }
 
-    private String get(InstructionHandle ih) {
-        String str = new StringTokenizer(map.get(ih), "\n").nextToken();
+    private String get(final InstructionHandle ih) {
+        final String str = new StringTokenizer(map.get(ih), "\n").nextToken();
         return str.substring(0, str.length() - 1);
     }
 
-    private void put(InstructionHandle ih, String line) {
-        String str = map.get(ih);
+    private void put(final InstructionHandle ih, final String line) {
+        final String str = map.get(ih);
 
         if (str == null) {
             map.put(ih, line);
@@ -302,7 +302,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
         }
     }
 
-    public static void main(String[] argv) throws Exception {
+    public static void main(final String[] argv) throws Exception {
         JavaClass java_class;
 
         if (argv.length == 0) {
@@ -310,23 +310,23 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
             return;
         }
 
-        for (String arg : argv) {
+        for (final String arg : argv) {
             if ((java_class = Repository.lookupClass(arg)) == null) {
                 java_class = new ClassParser(arg).parse();
             }
 
             String class_name = java_class.getClassName();
-            int index = class_name.lastIndexOf('.');
-            String path = class_name.substring(0, index + 1).replace('.', File.separatorChar);
+            final int index = class_name.lastIndexOf('.');
+            final String path = class_name.substring(0, index + 1).replace('.', File.separatorChar);
             class_name = class_name.substring(index + 1);
 
             if (!path.equals("")) {
-                File f = new File(path);
+                final File f = new File(path);
                 f.mkdirs();
             }
 
-            String name = path + class_name + ".j";
-            FileOutputStream out = new FileOutputStream(name);
+            final String name = path + class_name + ".j";
+            final FileOutputStream out = new FileOutputStream(name);
             new JasminVisitor(java_class, out).disassemble();
             System.out.println("File dumped to: " + name);
         }
diff --git a/src/examples/Mini/ASCII_CharStream.java b/src/examples/Mini/ASCII_CharStream.java
index d5cae33..f2398b5 100644
--- a/src/examples/Mini/ASCII_CharStream.java
+++ b/src/examples/Mini/ASCII_CharStream.java
@@ -45,11 +45,11 @@ public final class ASCII_CharStream
   static private int maxNextCharInd = 0;
   static private int inBuf = 0;
 
-  static private void ExpandBuff(boolean wrapAround)
+  static private void ExpandBuff(final boolean wrapAround)
   {
-     char[] newbuffer = new char[bufsize + 2048];
-     int newbufline[] = new int[bufsize + 2048];
-     int newbufcolumn[] = new int[bufsize + 2048];
+     final char[] newbuffer = new char[bufsize + 2048];
+     final int newbufline[] = new int[bufsize + 2048];
+     final int newbufcolumn[] = new int[bufsize + 2048];
 
      try
      {
@@ -84,7 +84,7 @@ public final class ASCII_CharStream
            maxNextCharInd = (bufpos -= tokenBegin);
         }
      }
-     catch (Throwable t)
+     catch (final Throwable t)
      {
         throw new Error(t.getMessage());
      }
@@ -133,7 +133,7 @@ public final class ASCII_CharStream
         }
         return;
      }
-     catch(java.io.IOException e) {
+     catch(final java.io.IOException e) {
         --bufpos;
         backup(0);
         if (tokenBegin == -1) {
@@ -146,13 +146,13 @@ public final class ASCII_CharStream
   static public final char BeginToken() throws java.io.IOException
   {
      tokenBegin = -1;
-     char c = readChar();
+     final char c = readChar();
      tokenBegin = bufpos;
 
      return c;
   }
 
-  static private void UpdateLineColumn(char c)
+  static private void UpdateLineColumn(final char c)
   {
      column++;
 
@@ -204,7 +204,7 @@ public final class ASCII_CharStream
         FillBuff();
     }
 
-     char c = (char)((char)0xff & buffer[bufpos]);
+     final char c = (char)((char)0xff & buffer[bufpos]);
 
      UpdateLineColumn(c);
      return (c);
@@ -226,7 +226,7 @@ public final class ASCII_CharStream
      return bufline[tokenBegin];
   }
 
-  static public final void backup(int amount) {
+  static public final void backup(final int amount) {
 
     inBuf += amount;
     if ((bufpos -= amount) < 0) {
@@ -234,8 +234,8 @@ public final class ASCII_CharStream
     }
   }
 
-  public ASCII_CharStream(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
+  public ASCII_CharStream(final java.io.Reader dstream, final int startline,
+  final int startcolumn, final int buffersize)
   {
     if (inputStream != null) {
         throw new Error("\n   ERROR: Second call to the constructor of a static ASCII_CharStream.  You must\n" +
@@ -252,13 +252,13 @@ public final class ASCII_CharStream
     bufcolumn = new int[buffersize];
   }
 
-  public ASCII_CharStream(java.io.Reader dstream, int startline,
-                                                           int startcolumn)
+  public ASCII_CharStream(final java.io.Reader dstream, final int startline,
+                                                           final int startcolumn)
   {
      this(dstream, startline, startcolumn, 4096);
   }
-  static public void ReInit(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
+  static public void ReInit(final java.io.Reader dstream, final int startline,
+  final int startcolumn, final int buffersize)
   {
     inputStream = dstream;
     line = startline;
@@ -276,30 +276,30 @@ public final class ASCII_CharStream
     bufpos = -1;
   }
 
-  static public void ReInit(java.io.Reader dstream, int startline,
-                                                           int startcolumn)
+  static public void ReInit(final java.io.Reader dstream, final int startline,
+                                                           final int startcolumn)
   {
      ReInit(dstream, startline, startcolumn, 4096);
   }
-  public ASCII_CharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
+  public ASCII_CharStream(final java.io.InputStream dstream, final int startline,
+  final int startcolumn, final int buffersize)
   {
      this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
   }
 
-  public ASCII_CharStream(java.io.InputStream dstream, int startline,
-                                                           int startcolumn)
+  public ASCII_CharStream(final java.io.InputStream dstream, final int startline,
+                                                           final int startcolumn)
   {
      this(dstream, startline, startcolumn, 4096);
   }
 
-  static public void ReInit(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
+  static public void ReInit(final java.io.InputStream dstream, final int startline,
+  final int startcolumn, final int buffersize)
   {
      ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
   }
-  static public void ReInit(java.io.InputStream dstream, int startline,
-                                                           int startcolumn)
+  static public void ReInit(final java.io.InputStream dstream, final int startline,
+                                                           final int startcolumn)
   {
      ReInit(dstream, startline, startcolumn, 4096);
   }
@@ -313,9 +313,9 @@ public final class ASCII_CharStream
     }
   }
 
-  static public final char[] GetSuffix(int len)
+  static public final char[] GetSuffix(final int len)
   {
-     char[] ret = new char[len];
+     final char[] ret = new char[len];
 
      if ((bufpos + 1) >= len) {
         System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
@@ -339,7 +339,7 @@ public final class ASCII_CharStream
   /**
    * Method to adjust line and column numbers for the start of a token.<BR>
    */
-  static public void adjustBeginLineColumn(int newLine, int newCol)
+  static public void adjustBeginLineColumn(int newLine, final int newCol)
   {
      int start = tokenBegin;
      int len;
diff --git a/src/examples/Mini/ASTExpr.java b/src/examples/Mini/ASTExpr.java
index 7388d86..a82442b 100644
--- a/src/examples/Mini/ASTExpr.java
+++ b/src/examples/Mini/ASTExpr.java
@@ -62,25 +62,25 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   protected int         type = T_UNKNOWN;
 
   // Generated methods
-  ASTExpr(int id) {
+  ASTExpr(final int id) {
     super(id);
   }
 
-  ASTExpr(MiniParser p, int id) {
+  ASTExpr(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTExpr(p, id);
   }
 
-  ASTExpr(int line, int column, int id) {
+  ASTExpr(final int line, final int column, final int id) {
     super(id);
     this.line   = line;
     this.column = column;
   }
 
-  ASTExpr(int line, int column, int kind, int id) {
+  ASTExpr(final int line, final int column, final int kind, final int id) {
     this(line, column, id);
     this.kind = kind;
   }
@@ -89,7 +89,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
    * ASTFactor.traverse(), when traverse()ing the parse tree replace
    * themselves with Expr nodes. 
    */
-  ASTExpr(ASTExpr[] children, int kind, int line, int column) {
+  ASTExpr(final ASTExpr[] children, final int kind, final int line, final int column) {
     this(line, column, kind, JJTEXPR);
     exprs = children;
   }
@@ -100,7 +100,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   @Override
   public String toString() {
     String op="";
-    int    len = (children != null)? children.length : 0;
+    final int    len = (children != null)? children.length : 0;
     if(unop != -1) {
         op = tokenImage[unop];
     } else if(kind != -1) {
@@ -131,7 +131,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
    * Overridden by subclasses. Traverse the whole parse tree recursively and
    * drop redundant nodes.
    */
-  public ASTExpr traverse(Environment env) {
+  public ASTExpr traverse(final Environment env) {
     this.env = env;
 
     if((kind == -1) && (unop == -1)) {
@@ -150,7 +150,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
    * @return type of expression
    * @param expected type
    */
-  public int eval(int expected) {
+  public int eval(final int expected) {
     int child_type = T_UNKNOWN, t;
     
     is_simple = true;
@@ -192,21 +192,21 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
     return type;
   }
 
-  private static String toBool(String i) {
+  private static String toBool(final String i) {
     return "(" + i + " != 0)";
   }
 
-  private static String toInt(String i) {
+  private static String toInt(final String i) {
     return "((" + i + ")? 1 : 0)";
   }
 
   /**
    * Fourth pass, produce Java code.
    */  
-  public void code(StringBuffer buf) {
+  public void code(final StringBuffer buf) {
     if(unop != -1) {
       exprs[0].code(buf);
-      String top = ASTFunDecl.pop();
+      final String top = ASTFunDecl.pop();
       if(unop == MINUS) {
         ASTFunDecl.push(buf, "-" + top);
     } else {
@@ -216,8 +216,8 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
     else {
       exprs[0].code(buf);
       exprs[1].code(buf);
-      String _body_int2 = ASTFunDecl.pop();
-      String _body_int  = ASTFunDecl.pop();
+      final String _body_int2 = ASTFunDecl.pop();
+      final String _body_int  = ASTFunDecl.pop();
 
       switch(kind) {
       case PLUS:  ASTFunDecl.push(buf, _body_int + " + " + _body_int2); break;
@@ -251,7 +251,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   /**
    * Fifth pass, produce Java byte code.
    */
-  public void byte_code(InstructionList il, MethodGen method, ConstantPoolGen cp) {
+  public void byte_code(final InstructionList il, final MethodGen method, final ConstantPoolGen cp) {
     exprs[0].byte_code(il, method, cp);
 
     if(unop != -1) { // Apply unary operand
@@ -302,23 +302,23 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   }
 
   public boolean isSimple()         { return is_simple; }
-  public void setType(int type)     { this.type = type; }
+  public void setType(final int type)     { this.type = type; }
   public int  getType()             { return type; }
-  public void setKind(int kind)     { this.kind = kind; }
+  public void setKind(final int kind)     { this.kind = kind; }
   public int  getKind()             { return kind; }
-  public void setUnOp(int unop)     { this.unop = unop; }
+  public void setUnOp(final int unop)     { this.unop = unop; }
   public int  getUnOp()             { return unop; }
-  public void setLine(int line)     { this.line = line; }
+  public void setLine(final int line)     { this.line = line; }
   public int  getLine()             { return line; }
-  public void setColumn(int column) { this.column = column; }
+  public void setColumn(final int column) { this.column = column; }
   public int  getColumn()           { return column; }
-  public void setPosition(int line, int column) {
+  public void setPosition(final int line, final int column) {
     this.line = line;
     this.column = column;
   }
 
   @Override
-  public void dump(String prefix) {
+  public void dump(final String prefix) {
     System.out.println(toString(prefix));
 
     if(exprs != null) {
diff --git a/src/examples/Mini/ASTFactor.java b/src/examples/Mini/ASTFactor.java
index a0840a1..56f82cd 100644
--- a/src/examples/Mini/ASTFactor.java
+++ b/src/examples/Mini/ASTFactor.java
@@ -25,15 +25,15 @@ package Mini;
  */
 public class ASTFactor extends ASTExpr {
   // Generated methods
-  ASTFactor(int id) {
+  ASTFactor(final int id) {
     super(id);
   }
 
-  ASTFactor(MiniParser p, int id) {
+  ASTFactor(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTFactor(p, id);
   }
 
@@ -44,7 +44,7 @@ public class ASTFactor extends ASTExpr {
    * and may be safely replaced with it.
    */
   @Override
-  public ASTExpr traverse(Environment env) {
+  public ASTExpr traverse(final Environment env) {
     if(kind == -1) {
         return exprs[0].traverse(env);
     } else {
diff --git a/src/examples/Mini/ASTFunAppl.java b/src/examples/Mini/ASTFunAppl.java
index 1f7410b..6cede8b 100644
--- a/src/examples/Mini/ASTFunAppl.java
+++ b/src/examples/Mini/ASTFunAppl.java
@@ -34,19 +34,19 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
   private Function function; // Points to Function in environment
 
   // Generated methods
-  ASTFunAppl(int id) {
+  ASTFunAppl(final int id) {
     super(id);
   }
 
-  ASTFunAppl(MiniParser p, int id) {
+  ASTFunAppl(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTFunAppl(p, id);
   }
 
-  ASTFunAppl(ASTIdent name, Function function, ASTExpr[] exprs) {
+  ASTFunAppl(final ASTIdent name, final Function function, final ASTExpr[] exprs) {
     this(JJTFUNAPPL);
 
     this.name     = name;
@@ -78,9 +78,9 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
    * Overrides ASTExpr.traverse()
    */
   @Override
-  public ASTExpr traverse(Environment env) {
-    String   fname = name.getName();
-    EnvEntry entry = env.get(fname);
+  public ASTExpr traverse(final Environment env) {
+    final String   fname = name.getName();
+    final EnvEntry entry = env.get(fname);
 
     this.env = env;
 
@@ -92,8 +92,8 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
         MiniC.addError(name.getLine(), name.getColumn(),
                  "Applying non-function " + fname + ".");
     } else {
-        int      len = (exprs != null)? exprs.length : 0;
-        Function fun = (Function)entry;
+        final int      len = (exprs != null)? exprs.length : 0;
+        final Function fun = (Function)entry;
 
         if(len != fun.getNoArgs()) {
         MiniC.addError(name.getLine(), name.getColumn(),
@@ -122,11 +122,11 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
    * @param expected type
    */
   @Override
-  public int eval(int expected) {
-    String     fname = name.getName();
-    Function   f     = function;
-    ASTIdent   fun   = f.getName();
-    ASTIdent[] args  = f.getArgs();
+  public int eval(final int expected) {
+    final String     fname = name.getName();
+    final Function   f     = function;
+    final ASTIdent   fun   = f.getName();
+    final ASTIdent[] args  = f.getArgs();
     int        t     = fun.getType();
 
     is_simple = true; // Only true if all arguments are simple expressions
@@ -134,8 +134,8 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
     // Check arguments
     if(exprs != null) {
       for(int i=0; i < exprs.length; i++) { // length match checked in previous pass
-        int expect = args[i].getType();     // May be T_UNKNOWN
-        int t_e    = exprs[i].eval(expect); // May be T_UNKNOWN
+        final int expect = args[i].getType();     // May be T_UNKNOWN
+        final int t_e    = exprs[i].eval(expect); // May be T_UNKNOWN
 
         if((expect != T_UNKNOWN) && (t_e != expect)) {
         MiniC.addError(exprs[i].getLine(), exprs[i].getColumn(),
@@ -161,8 +161,8 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
    * Fourth pass, produce Java code.
    */
   @Override
-  public void code(StringBuffer buf) {
-    String     fname = name.getName();
+  public void code(final StringBuffer buf) {
+    final String     fname = name.getName();
 //    Function   f     = function;
 //    ASTIdent[] args  = f.getArgs();
 
@@ -179,7 +179,7 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
     }
       }
 
-      StringBuffer call = new StringBuffer(fname + "(");
+      final StringBuffer call = new StringBuffer(fname + "(");
       // Function call
 
       if(exprs != null) {
@@ -200,12 +200,12 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
    * Fifth pass, produce Java byte code.
    */
   @Override
-  public void byte_code(InstructionList il, MethodGen method, ConstantPoolGen cp) {
-    String     fname = name.getName();
+  public void byte_code(final InstructionList il, final MethodGen method, final ConstantPoolGen cp) {
+    final String     fname = name.getName();
 //    Function   f     = function;
     //ASTIdent   fun   = f.getName();
 //    ASTIdent[] args  = f.getArgs();
-    String     class_name = method.getClassName();
+    final String     class_name = method.getClassName();
 
     if(fname.equals("READ")) {
         il.append(new INVOKESTATIC(cp.addMethodref(class_name,
@@ -219,7 +219,7 @@ public class ASTFunAppl extends ASTExpr implements MiniParserTreeConstants,
                                                  "(I)I")));
     }
     else { // Normal function
-      int size    = exprs.length;
+      final int size    = exprs.length;
       Type[] argv = null;
 
       if(exprs != null) {
diff --git a/src/examples/Mini/ASTFunDecl.java b/src/examples/Mini/ASTFunDecl.java
index 44a8166..4b2e507 100644
--- a/src/examples/Mini/ASTFunDecl.java
+++ b/src/examples/Mini/ASTFunDecl.java
@@ -59,19 +59,19 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
   private Environment env;
 
   // Generated methods
-  ASTFunDecl(int id) {
+  ASTFunDecl(final int id) {
     super(id);
   }
 
-  ASTFunDecl(MiniParser p, int id) {
+  ASTFunDecl(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTFunDecl(p, id);
   }
 
-  ASTFunDecl(ASTIdent name, ASTIdent[] argv, ASTExpr body, int type) {
+  ASTFunDecl(final ASTIdent name, final ASTIdent[] argv, final ASTExpr body, final int type) {
     this(JJTFUNDECL);
     
     this.name = name;
@@ -100,12 +100,12 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
   /**
    * First pass of parse tree.
    */
-  public ASTFunDecl traverse(Environment env) {
+  public ASTFunDecl traverse(final Environment env) {
     this.env = env;
 
     // Put arguments into hash table aka environment
     for(int i=0; i < argv.length; i++) {
-      EnvEntry entry = env.get(argv[i].getName());
+      final EnvEntry entry = env.get(argv[i].getName());
 
       if(entry != null) {
         MiniC.addError(argv[i].getLine(), argv[i].getColumn(),
@@ -120,9 +120,9 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
      * i.e. the user defined a function `TRUE', e.g. and `TRUE' is of type `Variable'.
      */   
     try {
-      Function fun = (Function)env.get(name.getName());
+      final Function fun = (Function)env.get(name.getName());
       fun.setArgs(argv);
-    } catch(ClassCastException e) {} // Who cares?
+    } catch(final ClassCastException e) {} // Who cares?
     
     body = body.traverse(env); // Traverse expression body
 
@@ -132,8 +132,8 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
   /** Second pass
    * @return type of expression
    */
-  public int eval(int pass) {
-    int expected = name.getType(); // Maybe other function has already called us
+  public int eval(final int pass) {
+    final int expected = name.getType(); // Maybe other function has already called us
     type = body.eval(expected);    // And updated the env
 
     if((expected != T_UNKNOWN) && (type != expected)) {
@@ -156,11 +156,11 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
   /**
    * Fourth pass, produce Java code.
    */
-  public void code(PrintWriter out) {
+  public void code(final PrintWriter out) {
     String expr;
     boolean main=false, ignore=false;
 
-    String fname = name.getName();
+    final String fname = name.getName();
 
     if(fname.equals("main")) {
       out.println("  public static void main(String[] _argv) {");
@@ -185,7 +185,7 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
     }
     
     if(!ignore) {
-      StringBuffer buf = new StringBuffer();
+      final StringBuffer buf = new StringBuffer();
 
       body.code(buf);
       out.println(getVarDecls());
@@ -211,12 +211,12 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
   /**
    * Fifth pass, produce Java byte code.
    */
-  public void byte_code(ClassGen class_gen, ConstantPoolGen cp) {
+  public void byte_code(final ClassGen class_gen, final ConstantPoolGen cp) {
     MethodGen method=null;
     boolean main=false, ignore=false;
-    String class_name = class_gen.getClassName();
-    String fname      = name.getName();
-    InstructionList il = new InstructionList();
+    final String class_name = class_gen.getClassName();
+    final String fname      = name.getName();
+    final InstructionList il = new InstructionList();
 
     Type[] args = { new ArrayType(Type.STRING, 1) }; // default for `main'
     String[] arg_names = { "$argv" };
@@ -230,7 +230,7 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
     } else if(fname.equals("READ") || fname.equals("WRITE")) { // Do nothing
       ignore = true;
     } else {
-      int    size  = argv.length;
+      final int    size  = argv.length;
 
       arg_names = new String[size];
       args      = new Type[size];
@@ -244,9 +244,9 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
                              Type.INT, args, arg_names,
                              fname, class_name, il, cp);
 
-      LocalVariableGen[] lv = method.getLocalVariables();
+      final LocalVariableGen[] lv = method.getLocalVariables();
       for(int i = 0; i < size; i++) {
-        Variable entry = (Variable)env.get(arg_names[i]);
+        final Variable entry = (Variable)env.get(arg_names[i]);
         entry.setLocalVariable(lv[i]);
       }
 
@@ -257,12 +257,13 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
       body.byte_code(il, method, cp);
 
       if(main) {
-        ObjectType e_type = new ObjectType("java.lang.Exception");
-        InstructionHandle start = il.getStart(), end, handler, end_handler;
-        LocalVariableGen exc = method.addLocalVariable("$e",
+        final ObjectType e_type = new ObjectType("java.lang.Exception");
+        final InstructionHandle start = il.getStart();
+        InstructionHandle end, handler, end_handler;
+        final LocalVariableGen exc = method.addLocalVariable("$e",
                                                        e_type,
                                                        null, null);
-        int slot = exc.getIndex();
+        final int slot = exc.getIndex();
 
         il.append(InstructionConstants.POP); pop(); // Remove last element on stack
         end = il.append(InstructionConstants.RETURN); // Use instruction constants, if possible
@@ -296,9 +297,9 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
 
   private static final InstructionFinder.CodeConstraint my_constraint =
     new InstructionFinder.CodeConstraint() {
-      public boolean checkCode(InstructionHandle[] match) {
-        BranchInstruction if_icmp = (BranchInstruction)match[0].getInstruction();
-        GOTO              goto_   = (GOTO)match[2].getInstruction();
+      public boolean checkCode(final InstructionHandle[] match) {
+        final BranchInstruction if_icmp = (BranchInstruction)match[0].getInstruction();
+        final GOTO              goto_   = (GOTO)match[2].getInstruction();
         return (if_icmp.getTarget() == match[3]) && (goto_.getTarget() == match[4]);
       }
     };
@@ -315,27 +316,27 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
    *
    * where the IF_ICMP__ now branches to the target of the previous IFEQ instruction.
    */
-  private static void optimizeIFs(InstructionList il) {
-    InstructionFinder f   = new InstructionFinder(il);
-    String      pat = "IF_ICMP ICONST_1 GOTO ICONST_0 IFEQ Instruction";
+  private static void optimizeIFs(final InstructionList il) {
+    final InstructionFinder f   = new InstructionFinder(il);
+    final String      pat = "IF_ICMP ICONST_1 GOTO ICONST_0 IFEQ Instruction";
 
-    for(Iterator<InstructionHandle[]> it = f.search(pat, my_constraint); it.hasNext();) {
-      InstructionHandle[] match = it.next();
+    for(final Iterator<InstructionHandle[]> it = f.search(pat, my_constraint); it.hasNext();) {
+      final InstructionHandle[] match = it.next();
       // Everything ok, update code
-      BranchInstruction ifeq    = (BranchInstruction)(match[4].getInstruction());
-      BranchHandle      if_icmp = (BranchHandle)match[0];
+      final BranchInstruction ifeq    = (BranchInstruction)(match[4].getInstruction());
+      final BranchHandle      if_icmp = (BranchHandle)match[0];
 
       if_icmp.setTarget(ifeq.getTarget());
 
       try {
         il.delete(match[1], match[4]);
-      } catch(TargetLostException e) {
-        InstructionHandle[] targets = e.getTargets();
+      } catch(final TargetLostException e) {
+        final InstructionHandle[] targets = e.getTargets();
 
         System.err.println(targets[0]);
 
         for(int i=0; i < targets.length; i++) {
-          InstructionTargeter[] targeters = targets[i].getTargeters();
+          final InstructionTargeter[] targeters = targets[i].getTargeters();
 
           for(int j=0; j < targeters.length; j++) {
         if((targets[i] != match[4]) || (targeters[j] != match[2])) {
@@ -352,7 +353,7 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
    */
   @Override
   public String toString() {
-    StringBuffer buf = new StringBuffer();
+    final StringBuffer buf = new StringBuffer();
     buf.append(jjtNodeName[id] + " " + name + "(");
 
     for(int i = 0; i < argv.length; i++) {
@@ -372,12 +373,12 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
   public int        getNoArgs()           { return argv.length; }
   public ASTIdent[] getArgs()             { return argv; }
   public int        getType()             { return type; }
-  public void       setType(int type)     { this.type = type; }
-  public void       setLine(int line)     { this.line = line; }
+  public void       setType(final int type)     { this.type = type; }
+  public void       setLine(final int line)     { this.line = line; }
   public int        getLine()             { return line; }
-  public void       setColumn(int column) { this.column = column; }
+  public void       setColumn(final int column) { this.column = column; }
   public int        getColumn()           { return column; }
-  public void       setPosition(int line, int column) {
+  public void       setPosition(final int line, final int column) {
     this.line = line;
     this.column = column;
   }
@@ -386,7 +387,7 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
    * Overrides SimpleNode.dump()
    */
   @Override
-  public void dump(String prefix) {
+  public void dump(final String prefix) {
     System.out.println(toString(prefix));
 
     for(int i = 0; i < argv.length; i++) {
@@ -403,7 +404,7 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
   static void reset() { size = max_size = 0; }
 
   private static String getVarDecls() {
-    StringBuffer buf = new StringBuffer("    int ");
+    final StringBuffer buf = new StringBuffer("    int ");
 
     for(int i=0; i < max_size; i++) {
       buf.append("_s" + i);
@@ -419,8 +420,8 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
 
   /** Used by byte_code()
    */
-  static void pop(int s) { size -= s; }
-  static void push(int s) {
+  static void pop(final int s) { size -= s; }
+  static void push(final int s) {
     size += s;
 
     if(size > max_size) {
@@ -431,7 +432,7 @@ implements MiniParserTreeConstants, org.apache.bcel.Constants {
 
   /** Used byte code()
    */
-  static void push(StringBuffer buf, String str) {
+  static void push(final StringBuffer buf, final String str) {
     buf.append("    _s" + size + " = " + str + ";\n");
     push(1);
   }
diff --git a/src/examples/Mini/ASTIdent.java b/src/examples/Mini/ASTIdent.java
index ab53e59..fb639d3 100644
--- a/src/examples/Mini/ASTIdent.java
+++ b/src/examples/Mini/ASTIdent.java
@@ -34,19 +34,19 @@ public class ASTIdent extends ASTExpr implements org.apache.bcel.Constants {
   private Variable reference; // Reference in environment to decl of this ident
 
   // Generated methods
-  ASTIdent(int id) {
+  ASTIdent(final int id) {
     super(id);
   }
 
-  ASTIdent(MiniParser p, int id) {
+  ASTIdent(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTIdent(p, id);
   }
 
-  public ASTIdent(String name, int type, int line, int column) {
+  public ASTIdent(final String name, final int type, final int line, final int column) {
     super(line, column, JJTIDENT);
 
     this.name  = name;
@@ -67,8 +67,8 @@ public class ASTIdent extends ASTExpr implements org.apache.bcel.Constants {
    * Overrides ASTExpr.traverse()
    */
   @Override
-  public ASTExpr traverse(Environment env) {
-    EnvEntry entry = env.get(name);
+  public ASTExpr traverse(final Environment env) {
+    final EnvEntry entry = env.get(name);
 
     if(entry == null) {
         MiniC.addError(line, column, "Undeclared identifier " + name);
@@ -86,9 +86,9 @@ public class ASTIdent extends ASTExpr implements org.apache.bcel.Constants {
    * Overrides AstExpr.eval()
    */
   @Override
-  public int eval(int expected) {
-    ASTIdent ident = reference.getName();
-    int      t     = ident.getType();
+  public int eval(final int expected) {
+    final ASTIdent ident = reference.getName();
+    final int      t     = ident.getType();
 
     is_simple = true; // (Very) simple expression, always true
 
@@ -112,7 +112,7 @@ public class ASTIdent extends ASTExpr implements org.apache.bcel.Constants {
    * Fourth pass, produce Java code.
    */
   @Override
-  public void code(StringBuffer buf) {
+  public void code(final StringBuffer buf) {
     if(name.equals("TRUE")) {
         ASTFunDecl.push(buf, "1");
     } else if(name.equals("FALSE")) {
@@ -126,19 +126,19 @@ public class ASTIdent extends ASTExpr implements org.apache.bcel.Constants {
    * Fifth pass, produce Java byte code.
    */
   @Override
-  public void byte_code(InstructionList il, MethodGen method, ConstantPoolGen cp) {
+  public void byte_code(final InstructionList il, final MethodGen method, final ConstantPoolGen cp) {
     if(name.equals("TRUE")) {
         il.append(new PUSH(cp, 1));
     } else if(name.equals("FALSE")) {
         il.append(new PUSH(cp, 0));
     } else {
-      LocalVariableGen local_var = reference.getLocalVariable();
+      final LocalVariableGen local_var = reference.getLocalVariable();
       il.append(new ILOAD(local_var.getIndex()));
     }
     ASTFunDecl.push();
   }
 
 
-  public void   setName(String name) { this.name = name; }
+  public void   setName(final String name) { this.name = name; }
   public String getName()            { return name; }
 }
diff --git a/src/examples/Mini/ASTIfExpr.java b/src/examples/Mini/ASTIfExpr.java
index 4829f49..d331d9a 100644
--- a/src/examples/Mini/ASTIfExpr.java
+++ b/src/examples/Mini/ASTIfExpr.java
@@ -34,15 +34,15 @@ public class ASTIfExpr extends ASTExpr implements org.apache.bcel.Constants {
   private ASTExpr if_expr, then_expr, else_expr;
 
   // Generated methods
-  ASTIfExpr(int id) {
+  ASTIfExpr(final int id) {
     super(id);
   }
 
-  ASTIfExpr(MiniParser p, int id) {
+  ASTIfExpr(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTIfExpr(p, id);
   }
 
@@ -69,7 +69,7 @@ public class ASTIfExpr extends ASTExpr implements org.apache.bcel.Constants {
    * Overrides ASTExpr.traverse()
    */
   @Override
-  public ASTExpr traverse(Environment env) { 
+  public ASTExpr traverse(final Environment env) { 
     this.env = env;
 
     if_expr   = if_expr.traverse(env);
@@ -89,7 +89,7 @@ public class ASTIfExpr extends ASTExpr implements org.apache.bcel.Constants {
    * @param expected type
    */
   @Override
-  public int eval(int expected) {
+  public int eval(final int expected) {
     int then_type, else_type, if_type;
 
     if((if_type=if_expr.eval(T_BOOLEAN)) != T_BOOLEAN) {
@@ -140,11 +140,11 @@ public class ASTIfExpr extends ASTExpr implements org.apache.bcel.Constants {
    * Fourth pass, produce Java code.
    */
   @Override
-  public void code(StringBuffer buf) {
+  public void code(final StringBuffer buf) {
     if_expr.code(buf);
 
     buf.append("    if(" + ASTFunDecl.pop() + " == 1) {\n");
-    int size = ASTFunDecl.size;
+    final int size = ASTFunDecl.size;
     then_expr.code(buf);
     ASTFunDecl.size = size; // reset stack
     buf.append("    } else {\n");
@@ -156,11 +156,11 @@ public class ASTIfExpr extends ASTExpr implements org.apache.bcel.Constants {
    * Fifth pass, produce Java byte code.
    */
   @Override
-  public void byte_code(InstructionList il, MethodGen method, ConstantPoolGen cp) {
+  public void byte_code(final InstructionList il, final MethodGen method, final ConstantPoolGen cp) {
     if_expr.byte_code(il, method, cp);
 
-    InstructionList then_code = new InstructionList();
-    InstructionList else_code = new InstructionList();
+    final InstructionList then_code = new InstructionList();
+    final InstructionList else_code = new InstructionList();
 
     then_expr.byte_code(then_code, method, cp);
     else_expr.byte_code(else_code, method, cp);
@@ -176,7 +176,7 @@ public class ASTIfExpr extends ASTExpr implements org.apache.bcel.Constants {
   }
 
   @Override
-  public void dump(String prefix) {
+  public void dump(final String prefix) {
     System.out.println(toString(prefix));
 
     if_expr.dump(prefix + " ");
diff --git a/src/examples/Mini/ASTInteger.java b/src/examples/Mini/ASTInteger.java
index 0ae5fbf..70c2046 100644
--- a/src/examples/Mini/ASTInteger.java
+++ b/src/examples/Mini/ASTInteger.java
@@ -31,15 +31,15 @@ public class ASTInteger extends ASTExpr {
   private int value;
 
   // Generated methods
-  ASTInteger(int id) {
+  ASTInteger(final int id) {
     super(id);
   }
 
-  ASTInteger(MiniParser p, int id) {
+  ASTInteger(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTInteger(p, id);
   }
 
@@ -57,7 +57,7 @@ public class ASTInteger extends ASTExpr {
    * Overrides ASTExpr.traverse()
    */
   @Override
-  public ASTExpr traverse(Environment env) {
+  public ASTExpr traverse(final Environment env) {
     this.env = env;
     return this; // Nothing to reduce/traverse here
   }
@@ -68,7 +68,7 @@ public class ASTInteger extends ASTExpr {
    * @return type of expression
    */
   @Override
-  public int eval(int expected) {
+  public int eval(final int expected) {
     is_simple = true; // (Very) simple expression, always true
 
     return type = T_INT;
@@ -78,7 +78,7 @@ public class ASTInteger extends ASTExpr {
    * Fourth pass, produce Java code.
    */
   @Override
-  public void code(StringBuffer buf) {
+  public void code(final StringBuffer buf) {
     ASTFunDecl.push(buf, "" + value);
   }
 
@@ -86,10 +86,10 @@ public class ASTInteger extends ASTExpr {
    * Fifth pass, produce Java byte code.
    */
   @Override
-  public void byte_code(InstructionList il, MethodGen method, ConstantPoolGen cp) {
+  public void byte_code(final InstructionList il, final MethodGen method, final ConstantPoolGen cp) {
     il.append(new PUSH(cp, value)); ASTFunDecl.push();
   }
 
-  void setValue(int value) { this.value = value; }
+  void setValue(final int value) { this.value = value; }
   int  getValue()          { return value; }
 }
diff --git a/src/examples/Mini/ASTLetExpr.java b/src/examples/Mini/ASTLetExpr.java
index 4f68e30..364625b 100644
--- a/src/examples/Mini/ASTLetExpr.java
+++ b/src/examples/Mini/ASTLetExpr.java
@@ -37,15 +37,15 @@ public class ASTLetExpr extends ASTExpr implements org.apache.bcel.Constants {
   private ASTExpr     body;
 
   // Generated methods
-  ASTLetExpr(int id) {
+  ASTLetExpr(final int id) {
     super(id);
   }
 
-  ASTLetExpr(MiniParser p, int id) {
+  ASTLetExpr(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTLetExpr(p, id);
   }
 
@@ -56,8 +56,9 @@ public class ASTLetExpr extends ASTExpr implements org.apache.bcel.Constants {
    */
   @Override
   public void closeNode() {
-    int i, len_2 = children.length / 2; /* length must be a multiple of 
+    int i; /* length must be a multiple of 
                                          * two (ident = expr) + 1 (body expr) */
+    final int len_2 = children.length / 2;
     idents = new ASTIdent[len_2];
     exprs  = new ASTExpr[len_2];
 
@@ -75,7 +76,7 @@ public class ASTLetExpr extends ASTExpr implements org.apache.bcel.Constants {
    * Overrides ASTExpr.traverse()
    */
   @Override
-  public ASTExpr traverse(Environment env) {
+  public ASTExpr traverse(final Environment env) {
     this.env = env;
     
     // Traverse RHS exprs first, so no references to LHS vars are allowed
@@ -85,9 +86,9 @@ public class ASTLetExpr extends ASTExpr implements org.apache.bcel.Constants {
     
     // Put argument names into hash table aka. environment
     for(int i=0; i < idents.length; i++) {
-      ASTIdent id    = idents[i];
-      String   name  = id.getName();
-      EnvEntry entry = env.get(name);
+      final ASTIdent id    = idents[i];
+      final String   name  = id.getName();
+      final EnvEntry entry = env.get(name);
 
       if(entry != null) {
         MiniC.addError(id.getLine(), id.getColumn(),
@@ -109,11 +110,11 @@ public class ASTLetExpr extends ASTExpr implements org.apache.bcel.Constants {
    * @param expected type
    */
   @Override
-  public int eval(int expected) {
+  public int eval(final int expected) {
     //is_simple = true;
 
     for(int i=0; i < idents.length; i++) {
-      int t = exprs[i].eval(T_UNKNOWN);
+      final int t = exprs[i].eval(T_UNKNOWN);
       
       idents[i].setType(t);
       //      is_simple = is_simple && exprs[i].isSimple();
@@ -126,10 +127,10 @@ public class ASTLetExpr extends ASTExpr implements org.apache.bcel.Constants {
    * Fifth pass, produce Java code.
    */
   @Override
-  public void code(StringBuffer buf) {
+  public void code(final StringBuffer buf) {
     for(int i = 0; i < idents.length; i++) {
-      String ident = idents[i].getName();
-      int    t     = idents[i].getType(); // can only be int
+      final String ident = idents[i].getName();
+      final int    t     = idents[i].getType(); // can only be int
 
       /* Idents have to be declared at start of function for later use.
        * Each name is unique, so there shouldn't be a problem in application.
@@ -147,16 +148,16 @@ public class ASTLetExpr extends ASTExpr implements org.apache.bcel.Constants {
    * Fifth pass, produce Java byte code.
    */
   @Override
-  public void byte_code(InstructionList il, MethodGen method, ConstantPoolGen cp) {
-    int size = idents.length;
-    LocalVariableGen[] l = new LocalVariableGen[size];
+  public void byte_code(final InstructionList il, final MethodGen method, final ConstantPoolGen cp) {
+    final int size = idents.length;
+    final LocalVariableGen[] l = new LocalVariableGen[size];
 
     for(int i=0; i < size; i++) {
-      String           ident = idents[i].getName();
-      Variable         entry = (Variable)env.get(ident);
-      Type             t     = BasicType.getType((byte)idents[i].getType());
-      LocalVariableGen lg    = method.addLocalVariable(ident, t, null, null);
-      int              slot  = lg.getIndex();
+      final String           ident = idents[i].getName();
+      final Variable         entry = (Variable)env.get(ident);
+      final Type             t     = BasicType.getType((byte)idents[i].getType());
+      final LocalVariableGen lg    = method.addLocalVariable(ident, t, null, null);
+      final int              slot  = lg.getIndex();
 
       entry.setLocalVariable(lg);
       InstructionHandle start = il.getEnd();
@@ -168,14 +169,14 @@ public class ASTLetExpr extends ASTExpr implements org.apache.bcel.Constants {
     }
 
     body.byte_code(il, method, cp);
-    InstructionHandle end = il.getEnd();
+    final InstructionHandle end = il.getEnd();
     for(int i=0; i < size; i++) {
         l[i].setEnd(end);
     }
   }
 
   @Override
-  public void dump(String prefix) {
+  public void dump(final String prefix) {
     System.out.println(toString(prefix));
 
     for(int i=0; i < idents.length; i++) {
diff --git a/src/examples/Mini/ASTProgram.java b/src/examples/Mini/ASTProgram.java
index 5f0a460..8966ccf 100644
--- a/src/examples/Mini/ASTProgram.java
+++ b/src/examples/Mini/ASTProgram.java
@@ -48,7 +48,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   private ASTFunDecl[] fun_decls; // Children: Function declarations
   private Environment  env;       // Environment contains variables and functions
 
-  ASTProgram(int id) {
+  ASTProgram(final int id) {
     super(id);
 
     env = new Environment();
@@ -77,11 +77,11 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
     env.put(var);
   }
 
-  ASTProgram(MiniParser p, int id) {
+  ASTProgram(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTProgram(p, id);
   }
 
@@ -157,13 +157,13 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   /** 
    * Second pass, determine type of each node, if possible.
    */
-  public void eval(int pass) {
+  public void eval(final int pass) {
 
     for(int i=0; i < fun_decls.length; i++) {
       fun_decls[i].eval(pass);
 
       if(pass == 3) { // Final check for unresolved types
-        ASTIdent name = fun_decls[i].getName();
+        final ASTIdent name = fun_decls[i].getName();
 
         if(name.getType() == T_UNKNOWN) {
         MiniC.addError(name.getColumn(), name.getLine(),
@@ -177,7 +177,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   /**
    * Fifth pass, produce Java code.
    */
-  public void code(PrintWriter out, String name) {
+  public void code(final PrintWriter out, final String name) {
     out.println("import java.io.BufferedReader;");
     out.println("import java.io.InputStreamReader;");
     out.println("import java.io.IOException;\n");
@@ -203,7 +203,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   /**
    * Fifth pass, produce Java byte code.
    */
-  public void byte_code(ClassGen class_gen, ConstantPoolGen cp) {
+  public void byte_code(final ClassGen class_gen, final ConstantPoolGen cp) {
     /* private static BufferedReader _in;
      */
     class_gen.addField(new Field(ACC_PRIVATE | ACC_STATIC,
@@ -213,13 +213,13 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
 
     MethodGen       method;
     InstructionList il = new InstructionList();
-    String          class_name = class_gen.getClassName();
+    final String          class_name = class_gen.getClassName();
 
     /* Often used constant pool entries
      */
-    int             _in = cp.addFieldref(class_name, "_in", "Ljava/io/BufferedReader;");
+    final int             _in = cp.addFieldref(class_name, "_in", "Ljava/io/BufferedReader;");
 
-    int             out = cp.addFieldref("java.lang.System", "out",
+    final int             out = cp.addFieldref("java.lang.System", "out",
                                          "Ljava/io/PrintStream;");
 
     il.append(new GETSTATIC(out));
@@ -249,8 +249,8 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
 
     /* private static int _writeInt(int i) throws IOException
      */
-    Type[]   args = { Type.INT };
-    String[] argv = { "i" } ;
+    final Type[]   args = { Type.INT };
+    final String[] argv = { "i" } ;
     il = new InstructionList();
     il.append(new GETSTATIC(out));
     il.append(new NEW(cp.addClass("java.lang.StringBuffer")));
@@ -327,7 +327,7 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan
   }
 
   @Override
-  public void dump(String prefix) {
+  public void dump(final String prefix) {
     System.out.println(toString(prefix));
 
     for(int i = 0; i < fun_decls.length; ++i) {
diff --git a/src/examples/Mini/ASTTerm.java b/src/examples/Mini/ASTTerm.java
index a2d3ddb..41936ad 100644
--- a/src/examples/Mini/ASTTerm.java
+++ b/src/examples/Mini/ASTTerm.java
@@ -25,15 +25,15 @@ package Mini;
  */
 public class ASTTerm extends ASTExpr {
   // Generated methods
-  ASTTerm(int id) {
+  ASTTerm(final int id) {
     super(id);
   }
 
-  ASTTerm(MiniParser p, int id) {
+  ASTTerm(final MiniParser p, final int id) {
     super(p, id);
   }
 
-  public static Node jjtCreate(MiniParser p, int id) {
+  public static Node jjtCreate(final MiniParser p, final int id) {
     return new ASTTerm(p, id);
   }
 
@@ -44,7 +44,7 @@ public class ASTTerm extends ASTExpr {
    * and may be safely replaced with it.
    */
   @Override
-  public ASTExpr traverse(Environment env) {
+  public ASTExpr traverse(final Environment env) {
     if(kind == -1) {
         return exprs[0].traverse(env);
     } else {
diff --git a/src/examples/Mini/Environment.java b/src/examples/Mini/Environment.java
index a0af25b..b1b56f3 100644
--- a/src/examples/Mini/Environment.java
+++ b/src/examples/Mini/Environment.java
@@ -34,16 +34,16 @@ public class Environment implements Cloneable {
   private static final int SIZE  = 127; // Prime number large enough for most cases
   private static final int SLOTS = 3;   // Number of slots of each field
   
-  private int       size;               // The table is an array of
-  private Vector<EnvEntry>[]  table;              // Vectors
+  private final int       size;               // The table is an array of
+  private final Vector<EnvEntry>[]  table;              // Vectors
   private int       elements=0;
 
-  public Environment(int size) {
+  public Environment(final int size) {
     this.size = size;
     table     = new Vector[size];
   }
 
-  private Environment(Vector<EnvEntry>[] table) {
+  private Environment(final Vector<EnvEntry>[] table) {
     size       = table.length;
     this.table = table;
   }
@@ -52,7 +52,7 @@ public class Environment implements Cloneable {
     this(SIZE);
   }
 
-  private int hashCode(String key) {
+  private int hashCode(final String key) {
     return Math.abs(key.hashCode()) % size;
   }
 
@@ -60,10 +60,10 @@ public class Environment implements Cloneable {
    * Inserts macro into table or overwrite old contents if it
    * was already stored.
    */
-  public void put(EnvEntry obj) {
+  public void put(final EnvEntry obj) {
     int    hash;
     Vector<EnvEntry> v;
-    String key = obj.getHashKey();
+    final String key = obj.getHashKey();
 
     hash = hashCode(key);
     v    = table[hash];
@@ -74,13 +74,13 @@ public class Environment implements Cloneable {
         table[hash] = v = new Vector<EnvEntry>(SLOTS);
     } else {
       try {
-        int index = lookup(v, key);
+        final int index = lookup(v, key);
 
         if(index >= 0) {
           v.setElementAt(obj, index); // Overwrite
           return;
         }
-      } catch(ArrayIndexOutOfBoundsException e) {}
+      } catch(final ArrayIndexOutOfBoundsException e) {}
     }
 
     // Not found in Vector -> add it
@@ -89,7 +89,7 @@ public class Environment implements Cloneable {
 
   /** Get entry from hash table.
    */
-  public EnvEntry get(String key) {
+  public EnvEntry get(final String key) {
     int       hash;
     Vector<EnvEntry>    v;
     EnvEntry entry = null;
@@ -102,12 +102,12 @@ public class Environment implements Cloneable {
     }
 
     try {
-      int index = lookup(v, key);
+      final int index = lookup(v, key);
 
       if(index >= 0) {
         entry = v.elementAt(index);
     }
-    } catch(ArrayIndexOutOfBoundsException e) {}
+    } catch(final ArrayIndexOutOfBoundsException e) {}
 
     return entry;
   }
@@ -115,7 +115,7 @@ public class Environment implements Cloneable {
   /**
    * Delete an object if it does exist.
    */
-  public void delete(String key) {
+  public void delete(final String key) {
     int       hash;
     Vector<EnvEntry>    v;
 
@@ -127,22 +127,22 @@ public class Environment implements Cloneable {
     }
 
     try {
-      int index = lookup(v, key);
+      final int index = lookup(v, key);
 
       if(index >= 0) {
         elements--; // Count
         v.removeElementAt(index);
       }
-    } catch(ArrayIndexOutOfBoundsException e) {}
+    } catch(final ArrayIndexOutOfBoundsException e) {}
   }
 
-  private static int lookup(Vector<EnvEntry> v, String key) 
+  private static int lookup(final Vector<EnvEntry> v, final String key) 
        throws ArrayIndexOutOfBoundsException
   {
-    int len = v.size();
+    final int len = v.size();
 
     for(int i=0; i < len; i++) {
-      EnvEntry entry = v.elementAt(i);
+      final EnvEntry entry = v.elementAt(i);
 
       if(entry.getHashKey().equals(key)) {
         return i;
@@ -154,7 +154,7 @@ public class Environment implements Cloneable {
 
   @Override
   public Object clone() { 
-    Vector<EnvEntry>[] copy = new Vector[size];
+    final Vector<EnvEntry>[] copy = new Vector[size];
 
     for(int i=0; i < size; i++) {
       if(table[i] != null) {
@@ -176,7 +176,7 @@ public class Environment implements Cloneable {
 
   @Override
   public String toString() {
-    StringBuffer buf = new StringBuffer();
+    final StringBuffer buf = new StringBuffer();
 
     for(int i=0; i < size; i++) {
         if(table[i] != null) {
@@ -188,18 +188,18 @@ public class Environment implements Cloneable {
   }
 
   public EnvEntry[] getEntries() {
-    EnvEntry[] entries = new EnvEntry[elements];
+    final EnvEntry[] entries = new EnvEntry[elements];
     int        k       = 0;
     Vector<EnvEntry>     v;
 
     for(int i=0; i < size; i++) {
       if((v = table[i]) != null) {
-        int len = v.size();
+        final int len = v.size();
         try {
           for(int j=0; j < len; j++) {
         entries[k++] = v.elementAt(j);
     }
-        } catch(ArrayIndexOutOfBoundsException e) {}  
+        } catch(final ArrayIndexOutOfBoundsException e) {}  
       }
     }
 
diff --git a/src/examples/Mini/Function.java b/src/examples/Mini/Function.java
index 52f1dec..f6c56bd 100644
--- a/src/examples/Mini/Function.java
+++ b/src/examples/Mini/Function.java
@@ -23,19 +23,19 @@ package Mini;
  *
  */
 public class Function implements org.apache.bcel.Constants, EnvEntry {
-  private ASTIdent   name;         // Reference to the original declaration
+  private final ASTIdent   name;         // Reference to the original declaration
   private ASTIdent[] args;         // Reference to argument identifiers
 //  private ASTExpr    body;         // Reference to function expression body
-  private boolean    reserved;     // Is a key word?
-  private int        line, column; // Short for name.getToken()
-  private String     fun_name;     // Short for name.getName()
+  private final boolean    reserved;     // Is a key word?
+  private final int        line, column; // Short for name.getToken()
+  private final String     fun_name;     // Short for name.getName()
   private int        no_args;
 
-  public Function(ASTIdent name, ASTIdent[] args) {
+  public Function(final ASTIdent name, final ASTIdent[] args) {
     this(name, args, false);
   }
 
-  public Function(ASTIdent name, ASTIdent[] args, boolean reserved) {
+  public Function(final ASTIdent name, final ASTIdent[] args, final boolean reserved) {
     this.name     = name;
     this.args     = args;
     this.reserved = reserved;
@@ -48,7 +48,7 @@ public class Function implements org.apache.bcel.Constants, EnvEntry {
   
   @Override
   public String toString() {
-    StringBuffer buf = new StringBuffer();
+    final StringBuffer buf = new StringBuffer();
 
     for(int i=0; i < no_args; i++) {
       buf.append(args[i].getName());
@@ -58,7 +58,7 @@ public class Function implements org.apache.bcel.Constants, EnvEntry {
     }
     }
 
-    String prefix = "Function " + fun_name + "(" + buf.toString() + ")";
+    final String prefix = "Function " + fun_name + "(" + buf.toString() + ")";
 
     if(!reserved) {
         return prefix + " declared at line " + line + ", column " + column;
@@ -72,9 +72,9 @@ public class Function implements org.apache.bcel.Constants, EnvEntry {
   public String     getHashKey()      { return fun_name; }
   public int        getLine()         { return line; }
   public int        getColumn()       { return column; }
-  public ASTIdent   getArg(int i)     { return args[i]; }
+  public ASTIdent   getArg(final int i)     { return args[i]; }
   public ASTIdent[] getArgs()         { return args; }
-  public void       setArgs(ASTIdent[] args) { 
+  public void       setArgs(final ASTIdent[] args) { 
     this.args = args; 
     no_args   = (args == null)? 0 : args.length;
   }
diff --git a/src/examples/Mini/JJTMiniParserState.java b/src/examples/Mini/JJTMiniParserState.java
index aaf39f6..c4dd397 100644
--- a/src/examples/Mini/JJTMiniParserState.java
+++ b/src/examples/Mini/JJTMiniParserState.java
@@ -20,8 +20,8 @@
 package Mini;
 
 class JJTMiniParserState {
-  private java.util.Stack<Node> nodes;
-  private java.util.Stack<Integer> marks;
+  private final java.util.Stack<Node> nodes;
+  private final java.util.Stack<Integer> marks;
 
   private int sp;                // number of nodes on stack
   private int mk;                // current mark
@@ -57,7 +57,7 @@ class JJTMiniParserState {
   }
 
   /* Pushes a node on to the stack. */
-  void pushNode(Node n) {
+  void pushNode(final Node n) {
     nodes.push(n);
     ++sp;
   }
@@ -83,7 +83,7 @@ class JJTMiniParserState {
   }
 
 
-  void clearNodeScope(Node n) {
+  void clearNodeScope(final Node n) {
     while (sp > mk) {
       popNode();
     }
@@ -91,7 +91,7 @@ class JJTMiniParserState {
   }
 
 
-  void openNodeScope(Node n) {
+  void openNodeScope(final Node n) {
     marks.push(new Integer(mk));
     mk = sp;
     n.jjtOpen();
@@ -102,10 +102,10 @@ class JJTMiniParserState {
      children.  That number of nodes are popped from the stack and
      made the children of the definite node.  Then the definite node
      is pushed on to the stack. */
-  void closeNodeScope(Node n, int num) {
+  void closeNodeScope(final Node n, int num) {
     mk = marks.pop().intValue();
     while (num-- > 0) {
-      Node c = popNode();
+      final Node c = popNode();
       c.jjtSetParent(n);
       n.jjtAddChild(c, num);
     }
@@ -120,12 +120,12 @@ class JJTMiniParserState {
      made children of the the conditional node, which is then pushed
      on to the stack.  If the condition is false the node is not
      constructed and they are left on the stack. */
-  void closeNodeScope(Node n, boolean condition) {
+  void closeNodeScope(final Node n, final boolean condition) {
     if (condition) {
       int a = nodeArity();
       mk = marks.pop().intValue();
       while (a-- > 0) {
-        Node c = popNode();
+        final Node c = popNode();
         c.jjtSetParent(n);
         n.jjtAddChild(c, a);
       }
diff --git a/src/examples/Mini/MiniC.java b/src/examples/Mini/MiniC.java
index f064f54..add7097 100644
--- a/src/examples/Mini/MiniC.java
+++ b/src/examples/Mini/MiniC.java
@@ -31,8 +31,8 @@ public class MiniC implements org.apache.bcel.Constants {
   private static String file     = null;
   private static int   pass      = 0;
         
-  public static void main(String[] argv) {
-    String[]   file_name = new String[argv.length];
+  public static void main(final String[] argv) {
+    final String[]   file_name = new String[argv.length];
     int        files=0;
     MiniParser parser=null;
     String     base_name=null;
@@ -114,30 +114,30 @@ public class MiniC implements org.apache.bcel.Constants {
         if(errors.size() == 0) {
           if(byte_code) {
             System.out.println("Pass 5: Generating byte code ...");
-            ClassGen class_gen = new ClassGen(base_name, "java.lang.Object",
+            final ClassGen class_gen = new ClassGen(base_name, "java.lang.Object",
                                               file_name[j],
                                               ACC_PUBLIC | ACC_FINAL |
                                               ACC_SUPER, null);
-            ConstantPoolGen cp = class_gen.getConstantPool();
+            final ConstantPoolGen cp = class_gen.getConstantPool();
 
             program.byte_code(class_gen, cp);
-            JavaClass clazz = class_gen.getJavaClass();
+            final JavaClass clazz = class_gen.getJavaClass();
             clazz.dump(base_name + ".class");
           }
           else {
             System.out.println("Pass 5: Generating Java code ...");
-            PrintWriter out = new PrintWriter(new FileOutputStream(base_name + ".java"));
+            final PrintWriter out = new PrintWriter(new FileOutputStream(base_name + ".java"));
             program.code(out, base_name);
             out.close();
 
             System.out.println("Pass 6: Compiling Java code ...");
 
-            String[] args = { "javac", base_name + ".java" };
+            final String[] args = { "javac", base_name + ".java" };
             //sun.tools.javac.Main compiler = new sun.tools.javac.Main(System.err, "javac");
             try {
-              Process p = Runtime.getRuntime().exec(args);
+              final Process p = Runtime.getRuntime().exec(args);
               p.waitFor();
-            } catch(Exception e) {System.out.println(e); }
+            } catch(final Exception e) {System.out.println(e); }
 
             //compiler.compile(args);
           }
@@ -148,28 +148,28 @@ public class MiniC implements org.apache.bcel.Constants {
                              " warnings.");
     }
       }
-    } catch(Exception e) { e.printStackTrace(); }
+    } catch(final Exception e) { e.printStackTrace(); }
   }
 
 
-  final static void addError(int line, int column, String err) {
+  final static void addError(final int line, final int column, final String err) {
     if(pass != 2) {
         errors.addElement(file + ":" + fillup(line, 3) + "," + fillup(column, 2) +
                           ": " + err);
     }
   }
 
-  final static void addWarning(int line, int column, String err) {
+  final static void addWarning(final int line, final int column, final String err) {
     warnings.addElement("Warning: " + file + ":" + fillup(line, 3) + "," +
                         fillup(column, 3) + ": " + err);
   }
 
-  final static String fillup(int n, int len) {
-    String str  = Integer.toString(n);
-    int    diff = len - str.length();
+  final static String fillup(final int n, final int len) {
+    final String str  = Integer.toString(n);
+    final int    diff = len - str.length();
 
     if(diff > 0) {
-      char[] chs = new char[diff];
+      final char[] chs = new char[diff];
       
       for(int i=0; i < diff; i++) {
         chs[i] = ' ';
@@ -181,5 +181,5 @@ public class MiniC implements org.apache.bcel.Constants {
     }
   }
 
-  final static void addWarning(String err) { warnings.addElement(err); }
+  final static void addWarning(final String err) { warnings.addElement(err); }
 }
diff --git a/src/examples/Mini/MiniParser.java b/src/examples/Mini/MiniParser.java
index 1c4985d..cbb5f6c 100644
--- a/src/examples/Mini/MiniParser.java
+++ b/src/examples/Mini/MiniParser.java
@@ -21,15 +21,15 @@ package Mini;
 public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, MiniParserConstants {/*@bgen(jjtree)*/
   protected static JJTMiniParserState jjtree = new JJTMiniParserState();private static Token expr_token;
 
-  final static void jjtreeOpenNodeScope(Node n) {}
-  final static void jjtreeCloseNodeScope(Node n) {((SimpleNode)n).closeNode();}
+  final static void jjtreeOpenNodeScope(final Node n) {}
+  final static void jjtreeCloseNodeScope(final Node n) {((SimpleNode)n).closeNode();}
 
 /* A program consists of a number of function declarations with a
  * distinguished function `main' that starts the program.
  */
   static public void Program() throws ParseException {
                   /*@bgen(jjtree) Program */
-  ASTProgram jjtn000 = new ASTProgram(JJTPROGRAM);
+  final ASTProgram jjtn000 = new ASTProgram(JJTPROGRAM);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);
@@ -46,7 +46,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
         FunDecl();
       }
       jj_consume_token(0);
-    } catch (Throwable jjte000) {
+    } catch (final Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
@@ -78,7 +78,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
  */
   static public void FunDecl() throws ParseException {
  /*@bgen(jjtree) FunDecl */
-  ASTFunDecl jjtn000 = new ASTFunDecl(JJTFUNDECL);
+  final ASTFunDecl jjtn000 = new ASTFunDecl(JJTFUNDECL);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);Token    t;
@@ -113,7 +113,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
       jj_consume_token(RPAREN);
       jj_consume_token(ASSIGN);
       Expr();
-    } catch (Throwable jjte000) {
+    } catch (final Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
@@ -143,7 +143,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
 
   static public void Expr() throws ParseException {
  /*@bgen(jjtree) Expr */
-  ASTExpr jjtn000 = new ASTExpr(JJTEXPR);
+  final ASTExpr jjtn000 = new ASTExpr(JJTEXPR);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);int kind=-1;
@@ -187,7 +187,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
         jj_consume_token(-1);
         throw new ParseException();
       }
-    } catch (Throwable jjte000) {
+    } catch (final Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
@@ -222,7 +222,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
  */
   static public void IfExpr() throws ParseException {
  /*@bgen(jjtree) IfExpr */
-  ASTIfExpr jjtn000 = new ASTIfExpr(JJTIFEXPR);
+  final ASTIfExpr jjtn000 = new ASTIfExpr(JJTIFEXPR);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);Token t=null;
@@ -241,7 +241,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
         jj_la1[5] = jj_gen;
       }
       jj_consume_token(13);
-    } catch (Throwable jjte000) {
+    } catch (final Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
@@ -271,7 +271,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
 
   static public void LetExpr() throws ParseException {
  /*@bgen(jjtree) LetExpr */
-  ASTLetExpr jjtn000 = new ASTLetExpr(JJTLETEXPR);
+  final ASTLetExpr jjtn000 = new ASTLetExpr(JJTLETEXPR);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);Token t=null;
@@ -297,7 +297,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
       }
       jj_consume_token(15);
       Expr();
-    } catch (Throwable jjte000) {
+    } catch (final Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
@@ -327,7 +327,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
 
   static public Token FunAppl() throws ParseException {
  /*@bgen(jjtree) FunAppl */
-  ASTFunAppl jjtn000 = new ASTFunAppl(JJTFUNAPPL);
+  final ASTFunAppl jjtn000 = new ASTFunAppl(JJTFUNAPPL);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);Token t=null;
@@ -371,7 +371,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
           {if (true) {
             return t;
         }}
-    } catch (Throwable jjte000) {
+    } catch (final Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
@@ -402,7 +402,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
 
   static public void Term() throws ParseException {
  /*@bgen(jjtree) Term */
-  ASTTerm jjtn000 = new ASTTerm(JJTTERM);
+  final ASTTerm jjtn000 = new ASTTerm(JJTTERM);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);int kind=-1;
@@ -424,7 +424,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
           jjtc000 = false;
           jjtreeCloseNodeScope(jjtn000);
           jjtn000.setPosition(expr_token.beginLine, expr_token.beginColumn);
-    } catch (Throwable jjte000) {
+    } catch (final Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
@@ -454,7 +454,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
 
   static public void Factor() throws ParseException {
  /*@bgen(jjtree) Factor */
-  ASTFactor jjtn000 = new ASTFactor(JJTFACTOR);
+  final ASTFactor jjtn000 = new ASTFactor(JJTFACTOR);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);int kind=-1;
@@ -478,7 +478,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
           jjtc000 = false;
           jjtreeCloseNodeScope(jjtn000);
           jjtn000.setPosition(expr_token.beginLine, expr_token.beginColumn);
-    } catch (Throwable jjte000) {
+    } catch (final Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
@@ -536,7 +536,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
 
   static public Token Integer() throws ParseException {
  /*@bgen(jjtree) Integer */
-  ASTInteger jjtn000 = new ASTInteger(JJTINTEGER);
+  final ASTInteger jjtn000 = new ASTInteger(JJTINTEGER);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);Token t;
@@ -561,7 +561,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
 
   static public Token Ident() throws ParseException {
  /*@bgen(jjtree) Ident */
-  ASTIdent jjtn000 = new ASTIdent(JJTIDENT);
+  final ASTIdent jjtn000 = new ASTIdent(JJTIDENT);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);Token t;
@@ -705,9 +705,9 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     throw new Error("Missing return statement in function");
   }
 
-  static private boolean jj_2_1(int xla) {
+  static private boolean jj_2_1(final int xla) {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    boolean retval = !jj_3_1();
+    final boolean retval = !jj_3_1();
     jj_save(0, xla);
     return retval;
   }
@@ -838,7 +838,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
   static private boolean jj_rescan = false;
   static private int jj_gc = 0;
 
-  public MiniParser(java.io.InputStream stream) {
+  public MiniParser(final java.io.InputStream stream) {
     if (jj_initialized_once) {
       System.out.println("ERROR: Second call to constructor of static parser.  You must");
       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
@@ -859,7 +859,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     }
   }
 
-  static public void ReInit(java.io.InputStream stream) {
+  static public void ReInit(final java.io.InputStream stream) {
     ASCII_CharStream.ReInit(stream, 1, 1);
     MiniParserTokenManager.ReInit(jj_input_stream);
     token = new Token();
@@ -874,7 +874,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     }
   }
 
-  public MiniParser(java.io.Reader stream) {
+  public MiniParser(final java.io.Reader stream) {
     if (jj_initialized_once) {
       System.out.println("ERROR: Second call to constructor of static parser.  You must");
       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
@@ -895,7 +895,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     }
   }
 
-  static public void ReInit(java.io.Reader stream) {
+  static public void ReInit(final java.io.Reader stream) {
     ASCII_CharStream.ReInit(stream, 1, 1);
     MiniParserTokenManager.ReInit(jj_input_stream);
     token = new Token();
@@ -910,7 +910,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     }
   }
 
-  public MiniParser(MiniParserTokenManager tm) {
+  public MiniParser(final MiniParserTokenManager tm) {
     if (jj_initialized_once) {
       System.out.println("ERROR: Second call to constructor of static parser.  You must");
       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
@@ -930,7 +930,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     }
   }
 
-  public void ReInit(MiniParserTokenManager tm) {
+  public void ReInit(final MiniParserTokenManager tm) {
     token_source = tm;
     token = new Token();
     jj_ntk = -1;
@@ -944,7 +944,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     }
   }
 
-  static private Token jj_consume_token(int kind) throws ParseException {
+  static private Token jj_consume_token(final int kind) throws ParseException {
     Token oldToken;
     if ((oldToken = token).next != null) {
         token = token.next;
@@ -973,7 +973,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     throw generateParseException();
   }
 
-  static private boolean jj_scan_token(int kind) {
+  static private boolean jj_scan_token(final int kind) {
     if (jj_scanpos == jj_lastpos) {
       jj_la--;
       if (jj_scanpos.next == null) {
@@ -1005,7 +1005,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     return token;
   }
 
-  static public Token getToken(int index) {
+  static public Token getToken(final int index) {
     Token t = lookingAhead ? jj_scanpos : token;
     for (int i = 0; i < index; i++) {
       if (t.next != null) {
@@ -1031,7 +1031,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
   static private int[] jj_lasttokens = new int[100];
   static private int jj_endpos;
 
-  static private void jj_add_error_token(int kind, int pos) {
+  static private void jj_add_error_token(final int kind, final int pos) {
     if (pos >= 100) {
         return;
     }
@@ -1043,8 +1043,8 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
         jj_expentry[i] = jj_lasttokens[i];
       }
       boolean exists = false;
-      for (java.util.Enumeration<int[]> e = jj_expentries.elements(); e.hasMoreElements();) {
-        int[] oldentry = (e.nextElement());
+      for (final java.util.Enumeration<int[]> e = jj_expentries.elements(); e.hasMoreElements();) {
+        final int[] oldentry = (e.nextElement());
         if (oldentry.length == jj_expentry.length) {
           exists = true;
           for (int i = 0; i < jj_expentry.length; i++) {
@@ -1069,7 +1069,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
 
   static public ParseException generateParseException() {
     jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[43];
+    final boolean[] la1tokens = new boolean[43];
     for (int i = 0; i < 43; i++) {
       la1tokens[i] = false;
     }
@@ -1099,7 +1099,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     jj_endpos = 0;
     jj_rescan_token();
     jj_add_error_token(0, 0);
-    int[][] exptokseq = new int[jj_expentries.size()][];
+    final int[][] exptokseq = new int[jj_expentries.size()][];
     for (int i = 0; i < jj_expentries.size(); i++) {
       exptokseq[i] = jj_expentries.elementAt(i);
     }
@@ -1129,7 +1129,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     jj_rescan = false;
   }
 
-  static private void jj_save(int index, int xla) {
+  static private void jj_save(final int index, final int xla) {
     JJCalls p = jj_2_rtns[index];
     while (p.gen > jj_gen) {
       if (p.next == null) { p = p.next = new JJCalls(); break; }
diff --git a/src/examples/Mini/MiniParserTokenManager.java b/src/examples/Mini/MiniParserTokenManager.java
index d321a02..694e1f7 100644
--- a/src/examples/Mini/MiniParserTokenManager.java
+++ b/src/examples/Mini/MiniParserTokenManager.java
@@ -24,7 +24,7 @@ static private int jjMoveStringLiteralDfa0_1()
 {
    return jjMoveNfa_1(0, 0);
 }
-static private void jjCheckNAdd(int state)
+static private void jjCheckNAdd(final int state)
 {
    if (jjrounds[state] != jjround)
    {
@@ -32,13 +32,13 @@ static private void jjCheckNAdd(int state)
       jjrounds[state] = jjround;
    }
 }
-static private void jjAddStates(int start, int end)
+static private void jjAddStates(int start, final int end)
 {
    do {
       jjstateSet[jjnewStateCnt++] = jjnextStates[start];
    } while (start++ != end);
 }
-static private void jjCheckNAddTwoStates(int state1, int state2)
+static private void jjCheckNAddTwoStates(final int state1, final int state2)
 {
    jjCheckNAdd(state1);
    jjCheckNAdd(state2);
@@ -54,7 +54,7 @@ static private void jjCheckNAddTwoStates(int state1, int state2)
 //   jjCheckNAdd(jjnextStates[start]);
 //   jjCheckNAdd(jjnextStates[start + 1]);
 //}
-static private int jjMoveNfa_1(int startState, int curPos)
+static private int jjMoveNfa_1(final int startState, int curPos)
 {
    int startsAt = 0;
    jjnewStateCnt = 3;
@@ -68,7 +68,7 @@ static private int jjMoveNfa_1(int startState, int curPos)
     }
       if (curChar < 64)
       {
-         long l = 1L << curChar;
+         final long l = 1L << curChar;
          do
          {
             switch(jjstateSet[--i])
@@ -129,10 +129,10 @@ static private int jjMoveNfa_1(int startState, int curPos)
         return curPos;
     }
       try { curChar = ASCII_CharStream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
+      catch(final java.io.IOException e) { return curPos; }
    }
 }
-private static int jjStopStringLiteralDfa_0(int pos, long active0)
+private static int jjStopStringLiteralDfa_0(final int pos, final long active0)
 {
    switch (pos)
    {
@@ -180,22 +180,22 @@ private static int jjStopStringLiteralDfa_0(int pos, long active0)
          return -1;
    }
 }
-private static int jjStartNfa_0(int pos, long active0)
+private static int jjStartNfa_0(final int pos, final long active0)
 {
    return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
 }
-static private int jjStopAtPos(int pos, int kind)
+static private int jjStopAtPos(final int pos, final int kind)
 {
    jjmatchedKind = kind;
    jjmatchedPos = pos;
    return pos + 1;
 }
-static private int jjStartNfaWithStates_0(int pos, int kind, int state)
+static private int jjStartNfaWithStates_0(final int pos, final int kind, final int state)
 {
    jjmatchedKind = kind;
    jjmatchedPos = pos;
    try { curChar = ASCII_CharStream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
+   catch(final java.io.IOException e) { return pos + 1; }
    return jjMoveNfa_0(state, pos + 1);
 }
 static private int jjMoveStringLiteralDfa0_0()
@@ -253,10 +253,10 @@ static private int jjMoveStringLiteralDfa0_0()
          return jjMoveNfa_0(0, 0);
    }
 }
-static private int jjMoveStringLiteralDfa1_0(long active0)
+static private int jjMoveStringLiteralDfa1_0(final long active0)
 {
    try { curChar = ASCII_CharStream.readChar(); }
-   catch(java.io.IOException e) {
+   catch(final java.io.IOException e) {
       jjStopStringLiteralDfa_0(0, active0);
       return 1;
    }
@@ -313,13 +313,13 @@ static private int jjMoveStringLiteralDfa1_0(long active0)
    }
    return jjStartNfa_0(0, active0);
 }
-static private int jjMoveStringLiteralDfa2_0(long old0, long active0)
+static private int jjMoveStringLiteralDfa2_0(final long old0, long active0)
 {
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_0(0, old0);
 } 
    try { curChar = ASCII_CharStream.readChar(); }
-   catch(java.io.IOException e) {
+   catch(final java.io.IOException e) {
       jjStopStringLiteralDfa_0(1, active0);
       return 2;
    }
@@ -357,13 +357,13 @@ static private int jjMoveStringLiteralDfa2_0(long old0, long active0)
    }
    return jjStartNfa_0(1, active0);
 }
-static private int jjMoveStringLiteralDfa3_0(long old0, long active0)
+static private int jjMoveStringLiteralDfa3_0(final long old0, long active0)
 {
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_0(1, old0);
 } 
    try { curChar = ASCII_CharStream.readChar(); }
-   catch(java.io.IOException e) {
+   catch(final java.io.IOException e) {
       jjStopStringLiteralDfa_0(2, active0);
       return 3;
    }
@@ -395,13 +395,13 @@ static private int jjMoveStringLiteralDfa3_0(long old0, long active0)
    }
    return jjStartNfa_0(2, active0);
 }
-static private int jjMoveStringLiteralDfa4_0(long old0, long active0)
+static private int jjMoveStringLiteralDfa4_0(final long old0, long active0)
 {
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_0(2, old0);
 } 
    try { curChar = ASCII_CharStream.readChar(); }
-   catch(java.io.IOException e) {
+   catch(final java.io.IOException e) {
       jjStopStringLiteralDfa_0(3, active0);
       return 4;
    }
@@ -422,7 +422,7 @@ static private int jjMoveStringLiteralDfa4_0(long old0, long active0)
 static final long[] jjbitVec0 = {
    0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
 };
-static private int jjMoveNfa_0(int startState, int curPos)
+static private int jjMoveNfa_0(final int startState, int curPos)
 {
    int startsAt = 0;
    jjnewStateCnt = 6;
@@ -436,7 +436,7 @@ static private int jjMoveNfa_0(int startState, int curPos)
     }
       if (curChar < 64)
       {
-         long l = 1L << curChar;
+         final long l = 1L << curChar;
          do
          {
             switch(jjstateSet[--i])
@@ -492,7 +492,7 @@ static private int jjMoveNfa_0(int startState, int curPos)
       }
       else if (curChar < 128)
       {
-         long l = 1L << (curChar & 077);
+         final long l = 1L << (curChar & 077);
          do
          {
             switch(jjstateSet[--i])
@@ -524,8 +524,8 @@ static private int jjMoveNfa_0(int startState, int curPos)
       }
       else
       {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
+         final int i2 = (curChar & 0xff) >> 6;
+         final long l2 = 1L << (curChar & 077);
          do
          {
             switch(jjstateSet[--i])
@@ -550,7 +550,7 @@ static private int jjMoveNfa_0(int startState, int curPos)
         return curPos;
     }
       try { curChar = ASCII_CharStream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
+      catch(final java.io.IOException e) { return curPos; }
    }
 }
 static final int[] jjnextStates = {
@@ -590,7 +590,7 @@ static StringBuffer image;
 static int jjimageLen;
 static int lengthOfMatch;
 static protected char curChar;
-public MiniParserTokenManager(ASCII_CharStream stream)
+public MiniParserTokenManager(final ASCII_CharStream stream)
 {
    if (input_stream != null) {
     throw new TokenMgrError(
@@ -599,12 +599,12 @@ public MiniParserTokenManager(ASCII_CharStream stream)
 }
    input_stream = stream;
 }
-public MiniParserTokenManager(ASCII_CharStream stream, int lexState)
+public MiniParserTokenManager(final ASCII_CharStream stream, final int lexState)
 {
    this(stream);
    SwitchTo(lexState);
 }
-static public void ReInit(ASCII_CharStream stream)
+static public void ReInit(final ASCII_CharStream stream)
 {
    jjmatchedPos = jjnewStateCnt = 0;
    curLexState = defaultLexState;
@@ -619,12 +619,12 @@ static private void ReInitRounds()
     jjrounds[i] = 0x80000000;
 }
 }
-static public void ReInit(ASCII_CharStream stream, int lexState)
+static public void ReInit(final ASCII_CharStream stream, final int lexState)
 {
    ReInit(stream);
    SwitchTo(lexState);
 }
-static public void SwitchTo(int lexState)
+static public void SwitchTo(final int lexState)
 {
    if (lexState >= 2 || lexState < 0) {
     throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.",
@@ -636,9 +636,9 @@ static public void SwitchTo(int lexState)
 
 static private Token jjFillToken()
 {
-   Token t = Token.newToken(jjmatchedKind);
+   final Token t = Token.newToken(jjmatchedKind);
    t.kind = jjmatchedKind;
-   String im = jjstrLiteralImages[jjmatchedKind];
+   final String im = jjstrLiteralImages[jjmatchedKind];
    t.image = (im == null) ? ASCII_CharStream.GetImage() : im;
    t.beginLine = ASCII_CharStream.getBeginLine();
    t.beginColumn = ASCII_CharStream.getBeginColumn();
@@ -667,7 +667,7 @@ public static Token getNextToken()
    {     
       curChar = ASCII_CharStream.BeginToken();
    }     
-   catch(java.io.IOException e)
+   catch(final java.io.IOException e)
    {        
       jjmatchedKind = 0;
       matchedToken = jjFillToken();
@@ -687,7 +687,7 @@ public static Token getNextToken()
                 curChar = ASCII_CharStream.BeginToken();
             }
          }
-         catch (java.io.IOException e1) { continue EOFLoop; }
+         catch (final java.io.IOException e1) { continue EOFLoop; }
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_0();
@@ -747,14 +747,14 @@ public static Token getNextToken()
            curChar = ASCII_CharStream.readChar();
            continue;
         }
-        catch (java.io.IOException e1) { }
+        catch (final java.io.IOException e1) { }
      }
      int error_line = ASCII_CharStream.getEndLine();
      int error_column = ASCII_CharStream.getEndColumn();
      String error_after = null;
      boolean EOFSeen = false;
      try { ASCII_CharStream.readChar(); ASCII_CharStream.backup(1); }
-     catch (java.io.IOException e1) {
+     catch (final java.io.IOException e1) {
         EOFSeen = true;
         error_after = curPos <= 1 ? "" : ASCII_CharStream.GetImage();
         if (curChar == '\n' || curChar == '\r') {
@@ -773,7 +773,7 @@ public static Token getNextToken()
   }
 }
 
-static void SkipLexicalActions(Token matchedToken)
+static void SkipLexicalActions(final Token matchedToken)
 {
    switch(jjmatchedKind)
    {
diff --git a/src/examples/Mini/ParseException.java b/src/examples/Mini/ParseException.java
index 3626f6c..399b9bd 100644
--- a/src/examples/Mini/ParseException.java
+++ b/src/examples/Mini/ParseException.java
@@ -41,9 +41,9 @@ public class ParseException extends Exception {
    * print the error message in the form:
    *     ParseException: <result of getMessage>
    */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
+  public ParseException(final Token currentTokenVal,
+                        final int[][] expectedTokenSequencesVal,
+                        final String[] tokenImageVal
                        )
   {
     super("");
@@ -68,7 +68,7 @@ public class ParseException extends Exception {
     specialConstructor = false;
   }
 
-  public ParseException(String message) {
+  public ParseException(final String message) {
     super(message);
     specialConstructor = false;
   }
@@ -163,8 +163,8 @@ public class ParseException extends Exception {
    * when these raw version cannot be used as part of an ASCII
    * string literal.
    */
-  protected String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
+  protected String add_escapes(final String str) {
+      final StringBuffer retval = new StringBuffer();
       char ch;
       for (int i = 0; i < str.length(); i++) {
         switch (str.charAt(i))
@@ -197,7 +197,7 @@ public class ParseException extends Exception {
               continue;
            default:
               if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
+                 final String s = "0000" + Integer.toString(ch, 16);
                  retval.append("\\u" + s.substring(s.length() - 4, s.length()));
               } else {
                  retval.append(ch);
diff --git a/src/examples/Mini/SimpleNode.java b/src/examples/Mini/SimpleNode.java
index d7deb9a..54ed00d 100644
--- a/src/examples/Mini/SimpleNode.java
+++ b/src/examples/Mini/SimpleNode.java
@@ -29,11 +29,11 @@ public abstract class SimpleNode implements Node {
   protected int id;
   protected MiniParser parser;
 
-  public SimpleNode(int i) {
+  public SimpleNode(final int i) {
     id = i;
   }
 
-  public SimpleNode(MiniParser p, int i) {
+  public SimpleNode(final MiniParser p, final int i) {
     this(i);
     parser = p;
   }
@@ -47,21 +47,21 @@ public abstract class SimpleNode implements Node {
   public void closeNode() {
   }
   
-  public void jjtSetParent(Node n) { parent = n; }
+  public void jjtSetParent(final Node n) { parent = n; }
   public Node jjtGetParent() { return parent; }
 
-  public void jjtAddChild(Node n, int i) {
+  public void jjtAddChild(final Node n, final int i) {
     if (children == null) {
       children = new Node[i + 1];
     } else if (i >= children.length) {
-      Node c[] = new Node[i + 1];
+      final Node c[] = new Node[i + 1];
       System.arraycopy(children, 0, c, 0, children.length);
       children = c;
     }
     children[i] = n;
   }
 
-  public Node jjtGetChild(int i) {
+  public Node jjtGetChild(final int i) {
     return children[i];
   }
 
@@ -77,16 +77,16 @@ public abstract class SimpleNode implements Node {
 
   @Override
   public String toString() { return MiniParserTreeConstants.jjtNodeName[id]; }
-  public String toString(String prefix) { return prefix + toString(); }
+  public String toString(final String prefix) { return prefix + toString(); }
 
   /* Override this method if you want to customize how the node dumps
      out its children. */
 
-  public void dump(String prefix) {
+  public void dump(final String prefix) {
     System.out.println(toString(prefix));
     if (children != null) {
       for (int i = 0; i < children.length; ++i) {
-        SimpleNode n = (SimpleNode)children[i];
+        final SimpleNode n = (SimpleNode)children[i];
         if (n != null) {
           n.dump(prefix + " ");
         }
diff --git a/src/examples/Mini/Token.java b/src/examples/Mini/Token.java
index 7f1dcb6..2ed86dc 100644
--- a/src/examples/Mini/Token.java
+++ b/src/examples/Mini/Token.java
@@ -88,7 +88,7 @@ public class Token {
    * to the following switch statement. Then you can cast matchedToken
    * variable to the appropriate type and use it in your lexical actions.
    */
-  public static Token newToken(int ofKind)
+  public static Token newToken(final int ofKind)
   {
      switch(ofKind)
      {
diff --git a/src/examples/Mini/TokenMgrError.java b/src/examples/Mini/TokenMgrError.java
index 3f4ccd4..587d3f7 100644
--- a/src/examples/Mini/TokenMgrError.java
+++ b/src/examples/Mini/TokenMgrError.java
@@ -54,8 +54,8 @@ public class TokenMgrError extends Error
     * Replaces unprintable characters by their espaced (or unicode escaped)
     * equivalents in the given string
     */
-   protected static String addEscapes(String str) {
-      StringBuffer retval = new StringBuffer();
+   protected static String addEscapes(final String str) {
+      final StringBuffer retval = new StringBuffer();
       char ch;
       for (int i = 0; i < str.length(); i++) {
         switch (str.charAt(i))
@@ -88,7 +88,7 @@ public class TokenMgrError extends Error
               continue;
            default:
               if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
+                 final String s = "0000" + Integer.toString(ch, 16);
                  retval.append("\\u" + s.substring(s.length() - 4, s.length()));
               } else {
                  retval.append(ch);
@@ -111,7 +111,7 @@ public class TokenMgrError extends Error
     *    curchar     : the offending character
     * Note: You can customize the lexical error message by modifying this method.
     */
-   private static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+   private static String LexicalError(final boolean EOFSeen, final int lexState, final int errorLine, final int errorColumn, final String errorAfter, final char curChar) {
       return("Lexical error at line " +
            errorLine + ", column " +
            errorColumn + ".  Encountered: " +
@@ -140,12 +140,12 @@ public class TokenMgrError extends Error
    public TokenMgrError() {
    }
 
-   public TokenMgrError(String message, int reason) {
+   public TokenMgrError(final String message, final int reason) {
       super(message);
       errorCode = reason;
    }
 
-   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+   public TokenMgrError(final boolean EOFSeen, final int lexState, final int errorLine, final int errorColumn, final String errorAfter, final char curChar, final int reason) {
       this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
    }
 }
diff --git a/src/examples/Mini/Variable.java b/src/examples/Mini/Variable.java
index a3bc7d8..4008645 100644
--- a/src/examples/Mini/Variable.java
+++ b/src/examples/Mini/Variable.java
@@ -23,18 +23,18 @@ import org.apache.bcel.generic.LocalVariableGen;
  *
  */
 public class Variable implements EnvEntry {
-  private ASTIdent name;         // Reference to the original declaration
-  private boolean  reserved;     // Is a key word?
+  private final ASTIdent name;         // Reference to the original declaration
+  private final boolean  reserved;     // Is a key word?
 
-  private int      line, column; // Extracted from name.getToken()
-  private String   var_name;     // Short for name.getName()
+  private final int      line, column; // Extracted from name.getToken()
+  private final String   var_name;     // Short for name.getName()
   private LocalVariableGen local_var; // local var associated with this variable
 
-  public Variable(ASTIdent name) {
+  public Variable(final ASTIdent name) {
     this(name, false);
   }
 
-  public Variable(ASTIdent name, boolean reserved) {
+  public Variable(final ASTIdent name, final boolean reserved) {
     this.name     = name;
     this.reserved = reserved;
 
@@ -58,7 +58,7 @@ public class Variable implements EnvEntry {
   public int      getColumn()  { return column; }
   public int      getType()    { return name.getType(); }
 
-  void setLocalVariable(LocalVariableGen local_var) {
+  void setLocalVariable(final LocalVariableGen local_var) {
     this.local_var = local_var;
   }
   LocalVariableGen getLocalVariable() { return local_var; }
diff --git a/src/examples/Package.java b/src/examples/Package.java
index e0591f8..3bd04dd 100644
--- a/src/examples/Package.java
+++ b/src/examples/Package.java
@@ -54,11 +54,11 @@ public class Package {
      * See usage() for arguments. Create an instance and run that
      *(just so not all members have to be static)
      */
-    static void main(String args[]) {
-        Package instance = new Package();
+    static void main(final String args[]) {
+        final Package instance = new Package();
         try {
             instance.go(args);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             e.printStackTrace();
             instance.usage();
         }
@@ -126,10 +126,10 @@ public class Package {
     /**
      * the main of this class
      */
-    void go(String[] args) throws IOException {
+    void go(final String[] args) throws IOException {
         JavaClass clazz;
         // sort the options
-        for (String arg : args) {
+        for (final String arg : args) {
             if (arg.startsWith("-e")) {
                 showNotFound = true;
                 continue;
@@ -163,14 +163,14 @@ public class Package {
         // starting processing: Grab from the dependents list an add back to it
         // and the allClasses list. see addDependents
         while (!dependents.isEmpty()) {
-            String name = dependents.firstKey();
-            String from = dependents.remove(name);
+            final String name = dependents.firstKey();
+            final String from = dependents.remove(name);
             if (allClasses.get(name) == null) {
                 try {
-                    InputStream is = classPath.getInputStream(name);
+                    final InputStream is = classPath.getInputStream(name);
                     clazz = new ClassParser(is, name).parse();
                     addDependents(clazz);
-                } catch (IOException e) {
+                } catch (final IOException e) {
                     //System.err.println("Error, class not found " + name );
                     notFound.put(name, from);
                 }
@@ -182,14 +182,14 @@ public class Package {
         }
 
         // create the jar
-        JarOutputStream jarFile = new JarOutputStream(new FileOutputStream(defaultJar));
+        final JarOutputStream jarFile = new JarOutputStream(new FileOutputStream(defaultJar));
         jarFile.setLevel(5); // use compression
         int written = 0;
-        for (String name : allClasses.keySet()) { // add entries for every class
-            JavaClass claz = allClasses.get(name);
-            ZipEntry zipEntry = new ZipEntry(name + ".class");
-            byte[] bytes = claz.getBytes();
-            int length = bytes.length;
+        for (final String name : allClasses.keySet()) { // add entries for every class
+            final JavaClass claz = allClasses.get(name);
+            final ZipEntry zipEntry = new ZipEntry(name + ".class");
+            final byte[] bytes = claz.getBytes();
+            final int length = bytes.length;
             jarFile.putNextEntry(zipEntry);
             jarFile.write(bytes, 0, length);
             written += length;  // for logging
@@ -202,7 +202,7 @@ public class Package {
             System.err.println(notFound.size() + " classes could not be found");
             if (showNotFound) { // if wanted show the actual classes that we not found
                 while (!notFound.isEmpty()) {
-                    String name = notFound.firstKey();
+                    final String name = notFound.firstKey();
                     System.err.println(name + " (" + notFound.remove(name) + ")");
                 }
             } else {
@@ -216,10 +216,10 @@ public class Package {
      * overview. Enabled by -s option
      */
     void printAllClasses() {
-        List<String> names = new ArrayList<String>(allClasses.keySet());
+        final List<String> names = new ArrayList<String>(allClasses.keySet());
         Collections.sort(names);
         for (int i = 0; i < names.size(); i++) {
-            String cl = names.get(i);
+            final String cl = names.get(i);
             System.err.println(cl);
         }
     }
@@ -228,16 +228,16 @@ public class Package {
      * Add this class to allClasses. Then go through all its dependents
      * and add them to the dependents list if they are not in allClasses
      */
-    void addDependents(JavaClass clazz) throws IOException {
-        String name = clazz.getClassName().replace('.', '/');
+    void addDependents(final JavaClass clazz) throws IOException {
+        final String name = clazz.getClassName().replace('.', '/');
         allClasses.put(name, clazz);
-        ConstantPool pool = clazz.getConstantPool();
+        final ConstantPool pool = clazz.getConstantPool();
         for (int i = 1; i < pool.getLength(); i++) {
-            Constant cons = pool.getConstant(i);
+            final Constant cons = pool.getConstant(i);
             //System.out.println("("+i+") " + cons );
             if (cons != null && cons.getTag() == Constants.CONSTANT_Class) {
-                int idx = ((ConstantClass) pool.getConstant(i)).getNameIndex();
-                String clas = ((ConstantUtf8) pool.getConstant(idx)).getBytes();
+                final int idx = ((ConstantClass) pool.getConstant(i)).getNameIndex();
+                final String clas = ((ConstantUtf8) pool.getConstant(idx)).getBytes();
                 addClassString(clas, name);
             }
         }
@@ -247,7 +247,7 @@ public class Package {
      * add given class to dependents (from is where its dependent from)
      * some fiddeling to be done because of array class notation
      */
-    void addClassString(String clas, String from) throws IOException {
+    void addClassString(final String clas, final String from) throws IOException {
         if (log) {
             System.out.println("processing: " + clas + " referenced by " + from);
         }
diff --git a/src/examples/Peephole.java b/src/examples/Peephole.java
index 4ac7512..1c861fd 100644
--- a/src/examples/Peephole.java
+++ b/src/examples/Peephole.java
@@ -35,17 +35,17 @@ import org.apache.bcel.util.InstructionFinder;
  */
 public class Peephole {
 
-    public static void main(String[] argv) {
+    public static void main(final String[] argv) {
         try {
             // Load the class from CLASSPATH.
-            JavaClass clazz = Repository.lookupClass(argv[0]);
-            Method[] methods = clazz.getMethods();
-            ConstantPoolGen cp = new ConstantPoolGen(clazz.getConstantPool());
+            final JavaClass clazz = Repository.lookupClass(argv[0]);
+            final Method[] methods = clazz.getMethods();
+            final ConstantPoolGen cp = new ConstantPoolGen(clazz.getConstantPool());
 
             for (int i = 0; i < methods.length; i++) {
                 if (!(methods[i].isAbstract() || methods[i].isNative())) {
-                    MethodGen mg = new MethodGen(methods[i], clazz.getClassName(), cp);
-                    Method stripped = removeNOPs(mg);
+                    final MethodGen mg = new MethodGen(methods[i], clazz.getClassName(), cp);
+                    final Method stripped = removeNOPs(mg);
 
                     if (stripped != null) {
                         methods[i] = stripped; // Overwrite with stripped method
@@ -56,22 +56,22 @@ public class Peephole {
             // Dump the class to <class name>_.class
             clazz.setConstantPool(cp.getFinalConstantPool());
             clazz.dump(clazz.getClassName() + "_.class");
-        } catch (Exception e) {
+        } catch (final Exception e) {
             e.printStackTrace();
         }
     }
 
-    private static Method removeNOPs(MethodGen mg) {
-        InstructionList il = mg.getInstructionList();
-        InstructionFinder f = new InstructionFinder(il);
-        String pat = "NOP+"; // Find at least one NOP
+    private static Method removeNOPs(final MethodGen mg) {
+        final InstructionList il = mg.getInstructionList();
+        final InstructionFinder f = new InstructionFinder(il);
+        final String pat = "NOP+"; // Find at least one NOP
         InstructionHandle next = null;
         int count = 0;
 
-        for (Iterator<InstructionHandle[]> e = f.search(pat); e.hasNext(); ) {
-            InstructionHandle[] match = e.next();
-            InstructionHandle first = match[0];
-            InstructionHandle last = match[match.length - 1];
+        for (final Iterator<InstructionHandle[]> e = f.search(pat); e.hasNext(); ) {
+            final InstructionHandle[] match = e.next();
+            final InstructionHandle first = match[0];
+            final InstructionHandle last = match[match.length - 1];
 
             // Some nasty Java compilers may add NOP at end of method.
             if ((next = last.getNext()) == null) {
@@ -83,9 +83,9 @@ public class Peephole {
             // Delete NOPs and redirect any references to them to the following (non-nop) instruction.
             try {
                 il.delete(first, last);
-            } catch (TargetLostException e2) {
-                for (InstructionHandle target : e2.getTargets()) {
-                    for (InstructionTargeter targeter : target.getTargeters()) {
+            } catch (final TargetLostException e2) {
+                for (final InstructionHandle target : e2.getTargets()) {
+                    for (final InstructionTargeter targeter : target.getTargeters()) {
                         targeter.updateTarget(target, next);
                     }
                 }
diff --git a/src/examples/ProxyCreator.java b/src/examples/ProxyCreator.java
index 10be153..dd257d2 100644
--- a/src/examples/ProxyCreator.java
+++ b/src/examples/ProxyCreator.java
@@ -56,11 +56,11 @@ public class ProxyCreator {
     /**
      * Load class and create instance
      */
-    public static Object createProxy(String pack, String class_name) {
+    public static Object createProxy(final String pack, final String class_name) {
         try {
-            Class<?> cl = Class.forName(pack + "$$BCEL$$" + class_name);
+            final Class<?> cl = Class.forName(pack + "$$BCEL$$" + class_name);
             return cl.newInstance();
-        } catch (Exception e) {
+        } catch (final Exception e) {
             e.printStackTrace();
         }
 
@@ -72,28 +72,28 @@ public class ProxyCreator {
      * that just prints the passed arguments, load and use it via the class loader
      * mechanism.
      */
-    public static void main(String[] argv) throws Exception {
-        ClassLoader loader = ProxyCreator.class.getClassLoader();
+    public static void main(final String[] argv) throws Exception {
+        final ClassLoader loader = ProxyCreator.class.getClassLoader();
 
         // instanceof won't work here ...
         // TODO this is broken; cannot ever be true now that ClassLoader has been dropped
         if (loader.getClass().toString().equals("class org.apache.bcel.util.ClassLoader")) {
             // Real class name will be set by the class loader
-            ClassGen cg = new ClassGen("foo", "java.lang.Object", "", Constants.ACC_PUBLIC,
+            final ClassGen cg = new ClassGen("foo", "java.lang.Object", "", Constants.ACC_PUBLIC,
                     new String[]{"java.awt.event.ActionListener"});
 
             // That's important, otherwise newInstance() won't work
             cg.addEmptyConstructor(Constants.ACC_PUBLIC);
 
-            InstructionList il = new InstructionList();
-            ConstantPoolGen cp = cg.getConstantPool();
-            InstructionFactory factory = new InstructionFactory(cg);
+            final InstructionList il = new InstructionList();
+            final ConstantPoolGen cp = cg.getConstantPool();
+            final InstructionFactory factory = new InstructionFactory(cg);
 
-            int out = cp.addFieldref("java.lang.System", "out",
+            final int out = cp.addFieldref("java.lang.System", "out",
                     "Ljava/io/PrintStream;");
-            int println = cp.addMethodref("java.io.PrintStream", "println",
+            final int println = cp.addMethodref("java.io.PrintStream", "println",
                     "(Ljava/lang/Object;)V");
-            MethodGen mg = new MethodGen(Constants.ACC_PUBLIC, Type.VOID,
+            final MethodGen mg = new MethodGen(Constants.ACC_PUBLIC, Type.VOID,
                     new Type[]{
                             new ObjectType("java.awt.event.ActionEvent")
                     }, null, "actionPerformed", "foo", il, cp);
@@ -116,15 +116,15 @@ public class ProxyCreator {
             mg.setMaxLocals();
             cg.addMethod(mg.getMethod());
 
-            byte[] bytes = cg.getJavaClass().getBytes();
+            final byte[] bytes = cg.getJavaClass().getBytes();
 
             System.out.println("Uncompressed class: " + bytes.length);
 
-            String s = Utility.encode(bytes, true);
+            final String s = Utility.encode(bytes, true);
             System.out.println("Encoded class: " + s.length());
 
             System.out.print("Creating proxy ... ");
-            ActionListener a = (ActionListener) createProxy("foo.bar.", s);
+            final ActionListener a = (ActionListener) createProxy("foo.bar.", s);
             System.out.println("Done. Now calling actionPerformed()");
 
             a.actionPerformed(new ActionEvent(a, ActionEvent.ACTION_PERFORMED, "hello"));
diff --git a/src/examples/TransitiveHull.java b/src/examples/TransitiveHull.java
index 02d8809..8e17a8d 100644
--- a/src/examples/TransitiveHull.java
+++ b/src/examples/TransitiveHull.java
@@ -55,15 +55,15 @@ import org.apache.bcel.util.ClassSet;
  */
 public class TransitiveHull extends org.apache.bcel.classfile.EmptyVisitor {
 
-    private ClassQueue queue;
-    private ClassSet set;
+    private final ClassQueue queue;
+    private final ClassSet set;
     private ConstantPool cp;
     private String[] ignored = IGNORED;
 
     public static final String[] IGNORED = {"java[.].*", "javax[.].*", "sun[.].*", "sunw[.].*",
             "com[.]sun[.].*", "org[.]omg[.].*", "org[.]w3c[.].*", "org[.]xml[.].*", "net[.]jini[.].*"};
 
-    public TransitiveHull(JavaClass clazz) {
+    public TransitiveHull(final JavaClass clazz) {
         queue = new ClassQueue();
         queue.enqueue(clazz);
         set = new ClassSet();
@@ -83,7 +83,7 @@ public class TransitiveHull extends org.apache.bcel.classfile.EmptyVisitor {
      */
     public void start() {
         while (!queue.empty()) {
-            JavaClass clazz = queue.dequeue();
+            final JavaClass clazz = queue.dequeue();
             cp = clazz.getConstantPool();
 
             new org.apache.bcel.classfile.DescendingVisitor(clazz, this).visit();
@@ -93,26 +93,26 @@ public class TransitiveHull extends org.apache.bcel.classfile.EmptyVisitor {
     private void add(String class_name) {
         class_name = class_name.replace('/', '.');
 
-        for (String anIgnored : ignored) {
+        for (final String anIgnored : ignored) {
             if (Pattern.matches(anIgnored, class_name)) {
                 return;
             }
         }
 
         try {
-            JavaClass clazz = Repository.lookupClass(class_name);
+            final JavaClass clazz = Repository.lookupClass(class_name);
 
             if (set.add(clazz)) {
                 queue.enqueue(clazz);
             }
-        } catch (ClassNotFoundException e) {
+        } catch (final ClassNotFoundException e) {
             throw new IllegalStateException("Missing class: " + e.toString());
         }
     }
 
     @Override
-    public void visitConstantClass(ConstantClass cc) {
-        String class_name = (String) cc.getConstantValue(cp);
+    public void visitConstantClass(final ConstantClass cc) {
+        final String class_name = (String) cc.getConstantValue(cp);
         add(class_name);
     }
 
@@ -126,21 +126,21 @@ public class TransitiveHull extends org.apache.bcel.classfile.EmptyVisitor {
         }
     }
 
-    private void visitRef(ConstantCP ccp, boolean method) {
-        String class_name = ccp.getClass(cp);
+    private void visitRef(final ConstantCP ccp, final boolean method) {
+        final String class_name = ccp.getClass(cp);
         add(class_name);
 
-        ConstantNameAndType cnat = (ConstantNameAndType) cp.getConstant(ccp.getNameAndTypeIndex(),
+        final ConstantNameAndType cnat = (ConstantNameAndType) cp.getConstant(ccp.getNameAndTypeIndex(),
                 Constants.CONSTANT_NameAndType);
 
-        String signature = cnat.getSignature(cp);
+        final String signature = cnat.getSignature(cp);
 
         if (method) {
-            Type type = Type.getReturnType(signature);
+            final Type type = Type.getReturnType(signature);
 
             checkType(type);
 
-            for (Type type1 : Type.getArgumentTypes(signature)) {
+            for (final Type type1 : Type.getArgumentTypes(signature)) {
                 checkType(type1);
             }
         } else {
@@ -149,17 +149,17 @@ public class TransitiveHull extends org.apache.bcel.classfile.EmptyVisitor {
     }
 
     @Override
-    public void visitConstantMethodref(ConstantMethodref cmr) {
+    public void visitConstantMethodref(final ConstantMethodref cmr) {
         visitRef(cmr, true);
     }
 
     @Override
-    public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref cimr) {
+    public void visitConstantInterfaceMethodref(final ConstantInterfaceMethodref cimr) {
         visitRef(cimr, true);
     }
 
     @Override
-    public void visitConstantFieldref(ConstantFieldref cfr) {
+    public void visitConstantFieldref(final ConstantFieldref cfr) {
         visitRef(cfr, false);
     }
 
@@ -172,11 +172,11 @@ public class TransitiveHull extends org.apache.bcel.classfile.EmptyVisitor {
      *
      * @param v Value to assign to ignored.
      */
-    public void setIgnored(String[] v) {
+    public void setIgnored(final String[] v) {
         ignored = v;
     }
 
-    public static void main(String[] argv) {
+    public static void main(final String[] argv) {
         JavaClass java_class;
 
         try {
@@ -187,12 +187,12 @@ public class TransitiveHull extends org.apache.bcel.classfile.EmptyVisitor {
                     java_class = new ClassParser(argv[0]).parse();
                 }
 
-                TransitiveHull hull = new TransitiveHull(java_class);
+                final TransitiveHull hull = new TransitiveHull(java_class);
 
                 hull.start();
                 System.out.println(Arrays.asList(hull.getClassNames()));
             }
-        } catch (Exception e) {
+        } catch (final Exception e) {
             e.printStackTrace();
         }
     }
diff --git a/src/examples/helloify.java b/src/examples/helloify.java
index bc71ae1..2df07b7 100644
--- a/src/examples/helloify.java
+++ b/src/examples/helloify.java
@@ -46,12 +46,12 @@ public final class helloify implements Constants {
     private static int out;     // reference to System.out
     private static int println; // reference to PrintStream.println
 
-    public static void main(String[] argv) throws Exception {
-        for (String arg : argv) {
+    public static void main(final String[] argv) throws Exception {
+        for (final String arg : argv) {
             if (arg.endsWith(".class")) {
-                JavaClass java_class = new ClassParser(arg).parse();
-                ConstantPool constants = java_class.getConstantPool();
-                String file_name = arg.substring(0, arg.length() - 6) + "_hello.class";
+                final JavaClass java_class = new ClassParser(arg).parse();
+                final ConstantPool constants = java_class.getConstantPool();
+                final String file_name = arg.substring(0, arg.length() - 6) + "_hello.class";
                 cp = new ConstantPoolGen(constants);
 
                 helloifyClassName(java_class);
@@ -59,7 +59,7 @@ public final class helloify implements Constants {
                 out = cp.addFieldref("java.lang.System", "out", "Ljava/io/PrintStream;");
                 println = cp.addMethodref("java.io.PrintStream", "println", "(Ljava/lang/String;)V");
                 // Patch all methods.
-                Method[] methods = java_class.getMethods();
+                final Method[] methods = java_class.getMethods();
 
                 for (int j = 0; j < methods.length; j++) {
                     methods[j] = helloifyMethod(methods[j]);
@@ -75,7 +75,7 @@ public final class helloify implements Constants {
     /**
      * Change class name to <old_name>_hello
      */
-    private static void helloifyClassName(JavaClass java_class) {
+    private static void helloifyClassName(final JavaClass java_class) {
         class_name = java_class.getClassName() + "_hello";
         int index = java_class.getClassNameIndex();
 
@@ -87,9 +87,9 @@ public final class helloify implements Constants {
      * Patch a method.
      */
     private static Method helloifyMethod(Method m) {
-        Code code = m.getCode();
-        int flags = m.getAccessFlags();
-        String name = m.getName();
+        final Code code = m.getCode();
+        final int flags = m.getAccessFlags();
+        final String name = m.getName();
 
         // Sanity check
         if (m.isNative() || m.isAbstract() || (code == null)) {
@@ -97,17 +97,17 @@ public final class helloify implements Constants {
         }
     
         // Create instruction list to be inserted at method start.
-        String mesg = "Hello from " + Utility.methodSignatureToString(m.getSignature(),
+        final String mesg = "Hello from " + Utility.methodSignatureToString(m.getSignature(),
                 name,
                 Utility.accessToString(flags));
-        InstructionList patch = new InstructionList();
+        final InstructionList patch = new InstructionList();
         patch.append(new GETSTATIC(out));
         patch.append(new PUSH(cp, mesg));
         patch.append(new INVOKEVIRTUAL(println));
 
-        MethodGen mg = new MethodGen(m, class_name, cp);
-        InstructionList il = mg.getInstructionList();
-        InstructionHandle[] ihs = il.getInstructionHandles();
+        final MethodGen mg = new MethodGen(m, class_name, cp);
+        final InstructionList il = mg.getInstructionList();
+        final InstructionHandle[] ihs = il.getInstructionHandles();
 
         if (name.equals("<init>")) { // First let the super or other constructor be called
             for (int j = 1; j < ihs.length; j++) {
diff --git a/src/examples/id.java b/src/examples/id.java
index 8de6ed7..32848aa 100644
--- a/src/examples/id.java
+++ b/src/examples/id.java
@@ -41,22 +41,22 @@ import org.apache.bcel.generic.MethodGen;
  */
 public class id {
 
-    public static void main(String[] argv) throws Exception {
+    public static void main(final String[] argv) throws Exception {
         JavaClass clazz;
 
         if ((clazz = Repository.lookupClass(argv[0])) == null) {
             clazz = new ClassParser(argv[0]).parse(); // May throw IOException
         }
 
-        ClassGen cg = new ClassGen(clazz);
+        final ClassGen cg = new ClassGen(clazz);
 
-        for (Method method : clazz.getMethods()) {
-            MethodGen mg = new MethodGen(method, cg.getClassName(), cg.getConstantPool());
+        for (final Method method : clazz.getMethods()) {
+            final MethodGen mg = new MethodGen(method, cg.getClassName(), cg.getConstantPool());
             cg.replaceMethod(method, mg.getMethod());
         }
 
-        for (Field field : clazz.getFields()) {
-            FieldGen fg = new FieldGen(field, cg.getConstantPool());
+        for (final Field field : clazz.getFields()) {
+            final FieldGen fg = new FieldGen(field, cg.getConstantPool());
             cg.replaceField(field, fg.getField());
         }
 
diff --git a/src/examples/listclass.java b/src/examples/listclass.java
index 43e52f0..cf7baec 100644
--- a/src/examples/listclass.java
+++ b/src/examples/listclass.java
@@ -91,9 +91,9 @@ public class listclass {
     Map<String, String> listedClasses;
     List<String> exclude_name;
 
-    public static void main(String[] argv) {
-        List<String> file_name = new ArrayList<String>();
-        List<String> exclude_name = new ArrayList<String>();
+    public static void main(final String[] argv) {
+        final List<String> file_name = new ArrayList<String>();
+        final List<String> exclude_name = new ArrayList<String>();
         boolean code = false;
         boolean constants = false;
         boolean verbose = true;
@@ -104,7 +104,7 @@ public class listclass {
         String name;
 
         // Parse command line arguments.
-        for (String arg : argv) {
+        for (final String arg : argv) {
             if (arg.charAt(0) == '-') {  // command line switch
                 if (arg.equals("-constants")) {
                     constants = true;
@@ -148,7 +148,7 @@ public class listclass {
         if (file_name.size() == 0) {
             System.err.println("list: No input files specified");
         } else {
-            listclass listClass = new listclass(code, constants, verbose, classdep,
+            final listclass listClass = new listclass(code, constants, verbose, classdep,
                     nocontents, recurse, exclude_name);
 
             for (int i = 0; i < file_name.size(); i++) {
@@ -159,8 +159,8 @@ public class listclass {
         }
     }
 
-    public listclass(boolean code, boolean constants, boolean verbose, boolean classdep,
-                     boolean nocontents, boolean recurse, List<String> exclude_name) {
+    public listclass(final boolean code, final boolean constants, final boolean verbose, final boolean classdep,
+                     final boolean nocontents, final boolean recurse, final List<String> exclude_name) {
         this.code = code;
         this.constants = constants;
         this.verbose = verbose;
@@ -174,7 +174,7 @@ public class listclass {
     /**
      * Print the given class on screen
      */
-    public void list(String name) {
+    public void list(final String name) {
         try {
             JavaClass java_class;
 
@@ -215,15 +215,15 @@ public class listclass {
             listedClasses.put(name, name);
 
             if (recurse) {
-                String[] dependencies = getClassDependencies(java_class.getConstantPool());
+                final String[] dependencies = getClassDependencies(java_class.getConstantPool());
 
-                for (String dependency : dependencies) {
+                for (final String dependency : dependencies) {
                     list(dependency);
                 }
             }
-        } catch (IOException e) {
+        } catch (final IOException e) {
             System.out.println("Error loading class " + name + " (" + e.getMessage() + ")");
-        } catch (Exception e) {
+        } catch (final Exception e) {
             System.out.println("Error processing class " + name + " (" + e.getMessage() + ")");
         }
     }
@@ -231,22 +231,22 @@ public class listclass {
     /**
      * Dump the list of classes this class is dependent on
      */
-    public static void printClassDependencies(ConstantPool pool) {
+    public static void printClassDependencies(final ConstantPool pool) {
         System.out.println("Dependencies:");
-        for (String name : getClassDependencies(pool)) {
+        for (final String name : getClassDependencies(pool)) {
             System.out.println("\t" + name);
         }
     }
 
-    public static String[] getClassDependencies(ConstantPool pool) {
-        String[] tempArray = new String[pool.getLength()];
+    public static String[] getClassDependencies(final ConstantPool pool) {
+        final String[] tempArray = new String[pool.getLength()];
         int size = 0;
-        StringBuilder buf = new StringBuilder();
+        final StringBuilder buf = new StringBuilder();
 
         for (int idx = 0; idx < pool.getLength(); idx++) {
-            Constant c = pool.getConstant(idx);
+            final Constant c = pool.getConstant(idx);
             if (c != null && c.getTag() == Constants.CONSTANT_Class) {
-                ConstantUtf8 c1 = (ConstantUtf8) pool.getConstant(((ConstantClass) c).getNameIndex());
+                final ConstantUtf8 c1 = (ConstantUtf8) pool.getConstant(((ConstantClass) c).getNameIndex());
                 buf.setLength(0);
                 buf.append(c1.getBytes());
                 for (int n = 0; n < buf.length(); n++) {
@@ -259,7 +259,7 @@ public class listclass {
             }
         }
 
-        String[] dependencies = new String[size];
+        final String[] dependencies = new String[size];
         System.arraycopy(tempArray, 0, dependencies, 0, size);
         return dependencies;
     }
@@ -267,11 +267,11 @@ public class listclass {
     /**
      * Dump the disassembled code of all methods in the class.
      */
-    public static void printCode(Method[] methods, boolean verbose) {
-        for (Method method : methods) {
+    public static void printCode(final Method[] methods, final boolean verbose) {
+        for (final Method method : methods) {
             System.out.println(method);
 
-            Code code = method.getCode();
+            final Code code = method.getCode();
             if (code != null) {
                 System.out.println(code.toString(verbose));
             }
diff --git a/src/examples/maxstack.java b/src/examples/maxstack.java
index 3b81cdf..77c6fa6 100644
--- a/src/examples/maxstack.java
+++ b/src/examples/maxstack.java
@@ -30,26 +30,26 @@ import org.apache.bcel.generic.MethodGen;
  */
 public final class maxstack {
 
-    public static void main(String[] argv) throws Exception {
-        for (String class_name : argv) {
+    public static void main(final String[] argv) throws Exception {
+        for (final String class_name : argv) {
             JavaClass java_class = Repository.lookupClass(class_name);
 
             if (java_class == null) {
                 java_class = new ClassParser(class_name).parse();
             }
 
-            ConstantPoolGen cp = new ConstantPoolGen(java_class.getConstantPool());
+            final ConstantPoolGen cp = new ConstantPoolGen(java_class.getConstantPool());
 
-            for (Method m : java_class.getMethods()) {
+            for (final Method m : java_class.getMethods()) {
                 if (!(m.isAbstract() || m.isNative())) {
-                    MethodGen mg = new MethodGen(m, class_name, cp);
+                    final MethodGen mg = new MethodGen(m, class_name, cp);
 
-                    int compiled_stack = mg.getMaxStack();
-                    int compiled_locals = mg.getMaxLocals();
+                    final int compiled_stack = mg.getMaxStack();
+                    final int compiled_locals = mg.getMaxLocals();
                     mg.setMaxStack(); // Recompute value
                     mg.setMaxLocals();
-                    int computed_stack = mg.getMaxStack();
-                    int computed_locals = mg.getMaxLocals();
+                    final int computed_stack = mg.getMaxStack();
+                    final int computed_locals = mg.getMaxLocals();
 
                     mg.getInstructionList().dispose(); // Reuse instruction handles
 
diff --git a/src/examples/patchclass.java b/src/examples/patchclass.java
index ab7edfd..029f584 100644
--- a/src/examples/patchclass.java
+++ b/src/examples/patchclass.java
@@ -30,8 +30,8 @@ import org.apache.bcel.classfile.JavaClass;
  */
 public class patchclass {
 
-    public static void main(String[] argv) throws Exception {
-        String[] file_name = new String[argv.length];
+    public static void main(final String[] argv) throws Exception {
+        final String[] file_name = new String[argv.length];
         int files = 0;
 
         if (argv.length < 3) {
@@ -44,8 +44,8 @@ public class patchclass {
         }
 
         for (int i = 0; i < files; i++) {
-            ClassParser parser = new ClassParser(file_name[i]);
-            JavaClass java_class = parser.parse();
+            final ClassParser parser = new ClassParser(file_name[i]);
+            final JavaClass java_class = parser.parse();
 
             patchIt(argv[0], argv[1], java_class.getConstantPool().getConstantPool());
 
@@ -59,7 +59,7 @@ public class patchclass {
      * Replace all occurences of string "<em>old</em>" with 
      * "<em>replacement</em>" in all Utf8 constants
      */
-    private static void patchIt(String old, String replacement, Constant[] constant_pool) {
+    private static void patchIt(final String old, final String replacement, final Constant[] constant_pool) {
         ConstantUtf8 c;
         String str;
         int index, old_index;
@@ -91,7 +91,7 @@ public class patchclass {
                         c = new ConstantUtf8(str);
                         constant_pool[i] = c;
                     }
-                } catch (StringIndexOutOfBoundsException e) { // Should not occur
+                } catch (final StringIndexOutOfBoundsException e) { // Should not occur
                     System.err.println(e);
                 }
             }
diff --git a/src/main/java/org/apache/bcel/classfile/Module.java b/src/main/java/org/apache/bcel/classfile/Module.java
index 7ce5030..824cd8d 100644
--- a/src/main/java/org/apache/bcel/classfile/Module.java
+++ b/src/main/java/org/apache/bcel/classfile/Module.java
@@ -32,15 +32,15 @@ import org.apache.bcel.Const;
  */
 public final class Module extends Attribute {
 
-    private int module_name_index;
-    private int module_flags;
-    private int module_version_index;
+    private final int module_name_index;
+    private final int module_flags;
+    private final int module_version_index;
 
     private ModuleRequires[] requires_table;
     private ModuleExports[] exports_table;
     private ModuleOpens[] opens_table;
-    private int uses_count;
-    private int uses_index[];
+    private final int uses_count;
+    private final int uses_index[];
     private ModuleProvides[] provides_table;
 
     /**
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleExports.java b/src/main/java/org/apache/bcel/classfile/ModuleExports.java
index faa8611..51c0399 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleExports.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleExports.java
@@ -32,10 +32,10 @@ import org.apache.bcel.Const;
  */
 public final class ModuleExports implements Cloneable, Node {
 
-    private int exports_index;  // points to CONSTANT_Package_info
-    private int exports_flags;
-    private int exports_to_count;
-    private int exports_to_index[];  // points to CONSTANT_Module_info
+    private final int exports_index;  // points to CONSTANT_Package_info
+    private final int exports_flags;
+    private final int exports_to_count;
+    private final int exports_to_index[];  // points to CONSTANT_Module_info
 
 
     /**
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleOpens.java b/src/main/java/org/apache/bcel/classfile/ModuleOpens.java
index 87f821d..9539afc 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleOpens.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleOpens.java
@@ -32,10 +32,10 @@ import org.apache.bcel.Const;
  */
 public final class ModuleOpens implements Cloneable, Node {
 
-    private int opens_index;  // points to CONSTANT_Package_info
-    private int opens_flags;
-    private int opens_to_count;
-    private int opens_to_index[];  // points to CONSTANT_Module_info
+    private final int opens_index;  // points to CONSTANT_Package_info
+    private final int opens_flags;
+    private final int opens_to_count;
+    private final int opens_to_index[];  // points to CONSTANT_Module_info
 
 
     /**
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleProvides.java b/src/main/java/org/apache/bcel/classfile/ModuleProvides.java
index f9fa089..a98834e 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleProvides.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleProvides.java
@@ -32,9 +32,9 @@ import org.apache.bcel.Const;
  */
 public final class ModuleProvides implements Cloneable, Node {
 
-    private int provides_index;  // points to CONSTANT_Class_info
-    private int provides_with_count;
-    private int provides_with_index[];  // points to CONSTANT_Class_info
+    private final int provides_index;  // points to CONSTANT_Class_info
+    private final int provides_with_count;
+    private final int provides_with_index[];  // points to CONSTANT_Class_info
 
 
     /**
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleRequires.java b/src/main/java/org/apache/bcel/classfile/ModuleRequires.java
index b9bcdc3..4f24391 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleRequires.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleRequires.java
@@ -32,9 +32,9 @@ import org.apache.bcel.Const;
  */
 public final class ModuleRequires implements Cloneable, Node {
 
-    private int requires_index;  // points to CONSTANT_Module_info
-    private int requires_flags;
-    private int requires_version_index;  // either 0 or points to CONSTANT_Utf8_info
+    private final int requires_index;  // points to CONSTANT_Module_info
+    private final int requires_flags;
+    private final int requires_version_index;  // either 0 or points to CONSTANT_Utf8_info
 
 
     /**
diff --git a/src/main/java/org/apache/bcel/classfile/Utility.java b/src/main/java/org/apache/bcel/classfile/Utility.java
index 5072c34..17a7441 100644
--- a/src/main/java/org/apache/bcel/classfile/Utility.java
+++ b/src/main/java/org/apache/bcel/classfile/Utility.java
@@ -840,7 +840,7 @@ public abstract class Utility {
                 return type;
             }
             // We have a Class signature.
-            StringBuilder typeClass = new StringBuilder(typeParams);
+            final StringBuilder typeClass = new StringBuilder(typeParams);
             typeClass.append(" extends ");
             typeClass.append(type);
             if (index < signature.length()) {
@@ -867,7 +867,7 @@ public abstract class Utility {
      */
     private static String typeParamTypesToString( final String signature, final boolean chopit ) {
         // The first character is guranteed to be '<'
-        StringBuilder typeParams = new StringBuilder("<");
+        final StringBuilder typeParams = new StringBuilder("<");
         int index = 1;  // skip the '<'
         // get the first TypeParameter
         typeParams.append(typeParamTypeToString(signature.substring(index), chopit));
@@ -896,7 +896,7 @@ public abstract class Utility {
             throw new ClassFormatException("Invalid type parameter signature: " + signature);
         }
         // get the TypeParameter identifier
-        StringBuilder typeParam = new StringBuilder(signature.substring(0, index));
+        final StringBuilder typeParam = new StringBuilder(signature.substring(0, index));
         index++;  // account for the ':'
         if (signature.charAt(index) != ':') {
             // we have a class bound
@@ -926,7 +926,7 @@ public abstract class Utility {
      */
     private static String typeSignaturesToString( final String signature, final boolean chopit, final char term ) {
         // The first character will be an 'open' that matches the 'close' contained in term.
-        StringBuilder typeList = new StringBuilder(signature.substring(0, 1));
+        final StringBuilder typeList = new StringBuilder(signature.substring(0, 1));
         int index = 1;  // skip the 'open' character
         // get the first Type in the list
         if (signature.charAt(index) != term) {
diff --git a/src/main/java/org/apache/bcel/classfile/Visitor.java b/src/main/java/org/apache/bcel/classfile/Visitor.java
index b2d74d2..9dec839 100644
--- a/src/main/java/org/apache/bcel/classfile/Visitor.java
+++ b/src/main/java/org/apache/bcel/classfile/Visitor.java
@@ -134,7 +134,7 @@ public interface Visitor
     /**
      * @since 6.4.0
      */
-    default void visitMethodParameter(MethodParameter obj) {
+    default void visitMethodParameter(final MethodParameter obj) {
         // empty
     }
 
@@ -166,7 +166,7 @@ public interface Visitor
     /**
      * @since 6.3
      */
-    default void visitConstantDynamic(ConstantDynamic constantDynamic) {
+    default void visitConstantDynamic(final ConstantDynamic constantDynamic) {
         // empty
     }
 
diff --git a/src/main/java/org/apache/bcel/generic/InvokeInstruction.java b/src/main/java/org/apache/bcel/generic/InvokeInstruction.java
index aa19c6c..f543a8b 100644
--- a/src/main/java/org/apache/bcel/generic/InvokeInstruction.java
+++ b/src/main/java/org/apache/bcel/generic/InvokeInstruction.java
@@ -55,9 +55,9 @@ public abstract class InvokeInstruction extends FieldOrMethod implements Excepti
         final Constant c = cp.getConstant(super.getIndex());
         final StringTokenizer tok = new StringTokenizer(cp.constantToString(c));
 
-        String opcodeName = Const.getOpcodeName(super.getOpcode());
+        final String opcodeName = Const.getOpcodeName(super.getOpcode());
 
-        StringBuilder sb = new StringBuilder(opcodeName);
+        final StringBuilder sb = new StringBuilder(opcodeName);
         if (tok.hasMoreTokens()) {
             sb.append(" ");
             sb.append(tok.nextToken().replace('.', '/'));
diff --git a/src/main/java/org/apache/bcel/util/ClassPath.java b/src/main/java/org/apache/bcel/util/ClassPath.java
index cc02534..7ac79fd 100644
--- a/src/main/java/org/apache/bcel/util/ClassPath.java
+++ b/src/main/java/org/apache/bcel/util/ClassPath.java
@@ -352,7 +352,7 @@ public class ClassPath implements Closeable {
         private final ModularRuntimeImage modularRuntimeImage;
         private final JrtModule[] modules;
 
-        public JrtModules(String path) throws IOException {
+        public JrtModules(final String path) throws IOException {
             this.modularRuntimeImage = new ModularRuntimeImage();
             final List<Path> list = modularRuntimeImage.list(path);
             this.modules = new JrtModule[list.size()];
diff --git a/src/main/java/org/apache/bcel/util/LruCacheClassPathRepository.java b/src/main/java/org/apache/bcel/util/LruCacheClassPathRepository.java
index ed2c808..4b5f099 100644
--- a/src/main/java/org/apache/bcel/util/LruCacheClassPathRepository.java
+++ b/src/main/java/org/apache/bcel/util/LruCacheClassPathRepository.java
@@ -42,14 +42,14 @@ public class LruCacheClassPathRepository extends AbstractClassPathRepository {
         if (cacheSize < 1) {
             throw new IllegalArgumentException("cacheSize must be a positive number.");
         }
-        int initialCapacity = (int) (0.75 * cacheSize);
-        boolean accessOrder = true; // Evicts least-recently-accessed
+        final int initialCapacity = (int) (0.75 * cacheSize);
+        final boolean accessOrder = true; // Evicts least-recently-accessed
         loadedClasses = new LinkedHashMap<String, JavaClass>(initialCapacity, cacheSize, accessOrder) {
 
             private static final long serialVersionUID = 1L;
 
             @Override
-            protected boolean removeEldestEntry(Map.Entry<String, JavaClass> eldest) {
+            protected boolean removeEldestEntry(final Map.Entry<String, JavaClass> eldest) {
                 return size() > cacheSize;
             }
         };
diff --git a/src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java b/src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java
index dbf9ab1..fdf1375 100644
--- a/src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/JdkGenericDumpTestCase.java
@@ -169,12 +169,12 @@ public class JdkGenericDumpTestCase {
         return javaHomes;
     }
 
-    private static void addAllJavaHomes(String extraJavaHomesProp, Set<String> javaHomes) {
-        String path = System.getProperty(extraJavaHomesProp);
+    private static void addAllJavaHomes(final String extraJavaHomesProp, final Set<String> javaHomes) {
+        final String path = System.getProperty(extraJavaHomesProp);
         if (StringUtils.isEmpty(path)) {
             return;
         }
-        String[] paths = path.split(File.pathSeparator);
+        final String[] paths = path.split(File.pathSeparator);
         javaHomes.addAll(Arrays.asList(paths));
 
     }
diff --git a/src/test/java/org/apache/bcel/util/ClassPathRepositoryTestCase.java b/src/test/java/org/apache/bcel/util/ClassPathRepositoryTestCase.java
index b456caa..a1a26f9 100644
--- a/src/test/java/org/apache/bcel/util/ClassPathRepositoryTestCase.java
+++ b/src/test/java/org/apache/bcel/util/ClassPathRepositoryTestCase.java
@@ -31,11 +31,11 @@ import org.junit.Test;
  */
 public class ClassPathRepositoryTestCase {
 
-    private void verifyCaching(AbstractClassPathRepository repository) throws ClassNotFoundException {
+    private void verifyCaching(final AbstractClassPathRepository repository) throws ClassNotFoundException {
         // Tests loadClass()
-        JavaClass class1 = repository.loadClass("java.lang.String");
+        final JavaClass class1 = repository.loadClass("java.lang.String");
         Assert.assertNotNull(class1);
-        JavaClass class2 = repository.loadClass("java/lang/Long"); // Slashes should work
+        final JavaClass class2 = repository.loadClass("java/lang/Long"); // Slashes should work
         Assert.assertNotNull(class2);
 
         // Tests findClass()
@@ -75,7 +75,7 @@ public class ClassPathRepositoryTestCase {
     @Test
     public void testClassPath() throws IOException {
         try (final ClassPath classPath = new ClassPath("")) {
-            ClassPathRepository repository = new ClassPathRepository(classPath);
+            final ClassPathRepository repository = new ClassPathRepository(classPath);
             Assert.assertEquals(classPath, repository.getClassPath());
         }
     }
@@ -83,7 +83,7 @@ public class ClassPathRepositoryTestCase {
     @Test(expected = ClassNotFoundException.class)
     public void testNoClassNotFound() throws ClassNotFoundException, IOException {
         try (final ClassPath classPath = new ClassPath("")) {
-            ClassPathRepository repository = new ClassPathRepository(classPath);
+            final ClassPathRepository repository = new ClassPathRepository(classPath);
             repository.loadClass("no.such.Class");
         }
     }
@@ -91,7 +91,7 @@ public class ClassPathRepositoryTestCase {
     @Test(expected = ClassNotFoundException.class)
     public void testClassWithoutPackage() throws ClassNotFoundException, IOException {
         try (final ClassPath classPath = new ClassPath("")) {
-            ClassPathRepository repository = new ClassPathRepository(classPath);
+            final ClassPathRepository repository = new ClassPathRepository(classPath);
             repository.loadClass("ClassXYZ");
         }
     }
@@ -99,7 +99,7 @@ public class ClassPathRepositoryTestCase {
     @Test(expected = IllegalArgumentException.class)
     public void testEmptyInput() throws ClassNotFoundException, IOException {
         try (final ClassPath classPath = new ClassPath("")) {
-            ClassPathRepository repository = new ClassPathRepository(classPath);
+            final ClassPathRepository repository = new ClassPathRepository(classPath);
             repository.loadClass("");
         }
     }
@@ -107,7 +107,7 @@ public class ClassPathRepositoryTestCase {
     @Test(expected = IllegalArgumentException.class)
     public void testNullInput() throws ClassNotFoundException, IOException {
         try (final ClassPath classPath = new ClassPath("")) {
-            ClassPathRepository repository = new ClassPathRepository(classPath);
+            final ClassPathRepository repository = new ClassPathRepository(classPath);
             repository.loadClass((String) null);
         }
     }
diff --git a/src/test/java/org/apache/bcel/util/LruCacheClassPathRepositoryTestCase.java b/src/test/java/org/apache/bcel/util/LruCacheClassPathRepositoryTestCase.java
index c64a7e0..86b6ecd 100644
--- a/src/test/java/org/apache/bcel/util/LruCacheClassPathRepositoryTestCase.java
+++ b/src/test/java/org/apache/bcel/util/LruCacheClassPathRepositoryTestCase.java
@@ -34,16 +34,16 @@ public class LruCacheClassPathRepositoryTestCase {
     @Test
     public void testCacheEviction() throws ClassNotFoundException, IOException {
         try (final ClassPath classPath = new ClassPath("")) {
-            LruCacheClassPathRepository repository = new LruCacheClassPathRepository(classPath, 2);
-            JavaClass class1 = repository.loadClass("java.lang.String");
+            final LruCacheClassPathRepository repository = new LruCacheClassPathRepository(classPath, 2);
+            final JavaClass class1 = repository.loadClass("java.lang.String");
             Assert.assertNotNull(class1);
-            JavaClass class2 = repository.loadClass("java.lang.Long");
+            final JavaClass class2 = repository.loadClass("java.lang.Long");
             Assert.assertNotNull(class2);
-            JavaClass class3 = repository.loadClass("java.lang.Integer"); // Evicts class1
+            final JavaClass class3 = repository.loadClass("java.lang.Integer"); // Evicts class1
             Assert.assertNotNull(class3);
 
             assertNull(repository.findClass("java.lang.String"));
-            JavaClass cachedClass2 = repository.findClass("java.lang.Long");
+            final JavaClass cachedClass2 = repository.findClass("java.lang.Long");
             assertEquals(class2, cachedClass2);
         }
     }
@@ -51,17 +51,17 @@ public class LruCacheClassPathRepositoryTestCase {
     @Test
     public void testLeastRecentlyUsedEviction() throws ClassNotFoundException, IOException {
         try (final ClassPath classPath = new ClassPath("")) {
-            LruCacheClassPathRepository repository = new LruCacheClassPathRepository(classPath, 2);
-            JavaClass class1 = repository.loadClass("java.lang.String");
+            final LruCacheClassPathRepository repository = new LruCacheClassPathRepository(classPath, 2);
+            final JavaClass class1 = repository.loadClass("java.lang.String");
             Assert.assertNotNull(class1);
-            JavaClass class2 = repository.loadClass("java.lang.Long");
+            final JavaClass class2 = repository.loadClass("java.lang.Long");
             Assert.assertNotNull(class2);
             repository.findClass("java.lang.String"); // Uses class1
-            JavaClass class3 = repository.loadClass("java.lang.Integer"); // Evicts class2
+            final JavaClass class3 = repository.loadClass("java.lang.Integer"); // Evicts class2
             Assert.assertNotNull(class3);
 
             assertNull(repository.findClass("java.lang.Long"));
-            JavaClass cachedClass1 = repository.findClass("java.lang.String");
+            final JavaClass cachedClass1 = repository.findClass("java.lang.String");
             assertEquals(class1, cachedClass1);
         }
     }
diff --git a/src/test/java/org/apache/bcel/verifier/tests/JiraBcel291TestFixture.java b/src/test/java/org/apache/bcel/verifier/tests/JiraBcel291TestFixture.java
index 380ee27..41decb2 100644
--- a/src/test/java/org/apache/bcel/verifier/tests/JiraBcel291TestFixture.java
+++ b/src/test/java/org/apache/bcel/verifier/tests/JiraBcel291TestFixture.java
@@ -20,7 +20,7 @@ package org.apache.bcel.verifier.tests;
 
 public class JiraBcel291TestFixture {
 
-    public static Object[] bug(Object[] arg) {
+    public static Object[] bug(final Object[] arg) {
         return arg.clone();
     }
 }


[commons-bcel] 04/04: Cannot break binary compatibility with 6.3.1.

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-bcel.git

commit 97f928db392457adcd8777afe6415d0440116cd7
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Sep 1 18:08:17 2019 -0400

    Cannot break binary compatibility with 6.3.1.
---
 .../java/org/apache/bcel/classfile/Visitor.java    | 38 ++++++++++++++++------
 1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/apache/bcel/classfile/Visitor.java b/src/main/java/org/apache/bcel/classfile/Visitor.java
index 9dec839..0655c13 100644
--- a/src/main/java/org/apache/bcel/classfile/Visitor.java
+++ b/src/main/java/org/apache/bcel/classfile/Visitor.java
@@ -173,45 +173,63 @@ public interface Visitor
     /**
      * @since 6.4.0
      */
-    void visitModule(Module constantModule);
+    default void visitModule(Module constantModule) {
+        // empty
+    }
 
     /**
      * @since 6.4.0
      */
-    void visitModuleRequires(ModuleRequires constantModule);
-
+    default void visitModuleRequires(ModuleRequires constantModule) {
+        // empty
+    }
+    
     /**
      * @since 6.4.0
      */
-    void visitModuleExports(ModuleExports constantModule);
+    default void visitModuleExports(ModuleExports constantModule) {
+        // empty
+    }
 
     /**
      * @since 6.4.0
      */
-    void visitModuleOpens(ModuleOpens constantModule);
+    default void visitModuleOpens(ModuleOpens constantModule) {
+        // empty
+    }
 
     /**
      * @since 6.4.0
      */
-    void visitModuleProvides(ModuleProvides constantModule);
+    default void visitModuleProvides(ModuleProvides constantModule) {
+        // empty
+    }
 
     /**
      * @since 6.4.0
      */
-    void visitModulePackages(ModulePackages constantModule);
+    default void visitModulePackages(ModulePackages constantModule) {
+        // empty
+    }
 
     /**
      * @since 6.4.0
      */
-    void visitModuleMainClass(ModuleMainClass obj);
+    default void visitModuleMainClass(ModuleMainClass obj) {
+        // empty
+    }
 
     /**
      * @since 6.4.0
      */
-    void visitNestHost(NestHost obj);
+    default void visitNestHost(NestHost obj) {
+        // empty
+    }
 
     /**
      * @since 6.4.0
      */
-    void visitNestMembers(NestMembers obj);
+    default void visitNestMembers(NestMembers obj) {
+        // empty
+    }
 }


[commons-bcel] 02/04: Remove redundant type arguments.

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-bcel.git

commit dc78738b2083ef2526b0f392e6359b621b8f3f35
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Sep 1 17:23:23 2019 -0400

    Remove redundant type arguments.
---
 src/examples/JasminVisitor.java           | 2 +-
 src/examples/Mini/Environment.java        | 2 +-
 src/examples/Mini/JJTMiniParserState.java | 4 ++--
 src/examples/Mini/MiniC.java              | 4 ++--
 src/examples/Mini/MiniParser.java         | 2 +-
 src/examples/Package.java                 | 8 ++++----
 src/examples/listclass.java               | 6 +++---
 7 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/examples/JasminVisitor.java b/src/examples/JasminVisitor.java
index 9b1cd37..12425b9 100644
--- a/src/examples/JasminVisitor.java
+++ b/src/examples/JasminVisitor.java
@@ -175,7 +175,7 @@ public class JasminVisitor extends org.apache.bcel.classfile.EmptyVisitor {
     /* Pass 1: Give all referenced instruction handles a symbolic name, i.e. a
      * label.
      */
-        map = new Hashtable<InstructionHandle, String>();
+        map = new Hashtable<>();
 
         for (final InstructionHandle ih1 : ihs) {
             if (ih1 instanceof BranchHandle) {
diff --git a/src/examples/Mini/Environment.java b/src/examples/Mini/Environment.java
index b1b56f3..3f61c02 100644
--- a/src/examples/Mini/Environment.java
+++ b/src/examples/Mini/Environment.java
@@ -71,7 +71,7 @@ public class Environment implements Cloneable {
     elements++; // Count
 
     if(v == null) {
-        table[hash] = v = new Vector<EnvEntry>(SLOTS);
+        table[hash] = v = new Vector<>(SLOTS);
     } else {
       try {
         final int index = lookup(v, key);
diff --git a/src/examples/Mini/JJTMiniParserState.java b/src/examples/Mini/JJTMiniParserState.java
index c4dd397..ed38cff 100644
--- a/src/examples/Mini/JJTMiniParserState.java
+++ b/src/examples/Mini/JJTMiniParserState.java
@@ -28,8 +28,8 @@ class JJTMiniParserState {
   private boolean node_created;
 
   JJTMiniParserState() {
-    nodes = new java.util.Stack<Node>();
-    marks = new java.util.Stack<Integer>();
+    nodes = new java.util.Stack<>();
+    marks = new java.util.Stack<>();
     sp = 0;
     mk = 0;
   }
diff --git a/src/examples/Mini/MiniC.java b/src/examples/Mini/MiniC.java
index add7097..645c0fc 100644
--- a/src/examples/Mini/MiniC.java
+++ b/src/examples/Mini/MiniC.java
@@ -61,8 +61,8 @@ public class MiniC implements org.apache.bcel.Constants {
     }
 
       for(int j=0; j < files; j++) {
-        errors   = new Vector<String>();
-        warnings = new Vector<String>();
+        errors   = new Vector<>();
+        warnings = new Vector<>();
         pass     = 0;
 
         if(j == 0) {
diff --git a/src/examples/Mini/MiniParser.java b/src/examples/Mini/MiniParser.java
index cbb5f6c..c737013 100644
--- a/src/examples/Mini/MiniParser.java
+++ b/src/examples/Mini/MiniParser.java
@@ -1025,7 +1025,7 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini
     }
   }
 
-  static private java.util.Vector<int[]> jj_expentries = new java.util.Vector<int[]>();
+  static private java.util.Vector<int[]> jj_expentries = new java.util.Vector<>();
   static private int[] jj_expentry;
   static private int jj_kind = -1;
   static private int[] jj_lasttokens = new int[100];
diff --git a/src/examples/Package.java b/src/examples/Package.java
index 3bd04dd..35c24a7 100644
--- a/src/examples/Package.java
+++ b/src/examples/Package.java
@@ -75,20 +75,20 @@ public class Package {
      * Store class name against the JavaClass. From the JavaClass
      * we get the bytes to create the jar.
      */
-    Map<String, JavaClass> allClasses = new TreeMap<String, JavaClass>();
+    Map<String, JavaClass> allClasses = new TreeMap<>();
 
     /**
      * We start at the root classes, put them in here, then go through
      * this list, putting dependent classes in here and from there
      * into allClasses. Store class names against class names of their dependents
      */
-    TreeMap<String, String> dependents = new TreeMap<String, String>();
+    TreeMap<String, String> dependents = new TreeMap<>();
 
     /**
      * Collect all classes that could not be found in the classpath.
      * Store class names against class names of their dependents
      */
-    TreeMap<String, String> notFound = new TreeMap<String, String>();
+    TreeMap<String, String> notFound = new TreeMap<>();
 
     /**
      * See wheather we print the classes that were not found (default = false)
@@ -216,7 +216,7 @@ public class Package {
      * overview. Enabled by -s option
      */
     void printAllClasses() {
-        final List<String> names = new ArrayList<String>(allClasses.keySet());
+        final List<String> names = new ArrayList<>(allClasses.keySet());
         Collections.sort(names);
         for (int i = 0; i < names.size(); i++) {
             final String cl = names.get(i);
diff --git a/src/examples/listclass.java b/src/examples/listclass.java
index cf7baec..1b2fd5f 100644
--- a/src/examples/listclass.java
+++ b/src/examples/listclass.java
@@ -92,8 +92,8 @@ public class listclass {
     List<String> exclude_name;
 
     public static void main(final String[] argv) {
-        final List<String> file_name = new ArrayList<String>();
-        final List<String> exclude_name = new ArrayList<String>();
+        final List<String> file_name = new ArrayList<>();
+        final List<String> exclude_name = new ArrayList<>();
         boolean code = false;
         boolean constants = false;
         boolean verbose = true;
@@ -167,7 +167,7 @@ public class listclass {
         this.classdep = classdep;
         this.nocontents = nocontents;
         this.recurse = recurse;
-        this.listedClasses = new HashMap<String, String>();
+        this.listedClasses = new HashMap<>();
         this.exclude_name = exclude_name;
     }
 


[commons-bcel] 03/04: Cannot break binary compatibility with 6.3.1.

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-bcel.git

commit 06151c0b5f7f78f73354370f8ca4d863342fde39
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Sep 1 17:47:35 2019 -0400

    Cannot break binary compatibility with 6.3.1.
---
 src/main/java/org/apache/bcel/Const.java             | 15 ++++++++++++++-
 src/main/java/org/apache/bcel/classfile/Utility.java |  2 +-
 src/main/java/org/apache/bcel/util/BCELifier.java    |  2 +-
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/bcel/Const.java b/src/main/java/org/apache/bcel/Const.java
index 79268ae..ba9e156 100644
--- a/src/main/java/org/apache/bcel/Const.java
+++ b/src/main/java/org/apache/bcel/Const.java
@@ -329,7 +329,20 @@ public final class Const {
    *  @see #ACC_PUBLIC
    */
   public static final short ACC_MODULE       = (short) 0x8000;
-  public static final int MAX_ACC_FLAG       = 0x8000; // ACC_MODULE is negative as a short
+
+  /** One of the access flags for fields, methods, or classes.
+   *  @see #ACC_PUBLIC
+   *  @deprecated Use {@link #MAX_ACC_FLAG_I}
+   */
+  @Deprecated
+  public static final short MAX_ACC_FLAG     = ACC_ENUM;
+  
+  /** One of the access flags for fields, methods, or classes.
+   * ACC_MODULE is negative as a short.
+   * @see #ACC_PUBLIC
+   * @since 6.4.0
+   */
+  public static final int MAX_ACC_FLAG_I = 0x8000; // ACC_MODULE is negative as a short
 
   // Note that do to overloading:
   // 'synchronized' is for methods, might be 'open' (if Module), 'super' (if class), or 'transitive' (if Module).
diff --git a/src/main/java/org/apache/bcel/classfile/Utility.java b/src/main/java/org/apache/bcel/classfile/Utility.java
index 17a7441..daf6013 100644
--- a/src/main/java/org/apache/bcel/classfile/Utility.java
+++ b/src/main/java/org/apache/bcel/classfile/Utility.java
@@ -102,7 +102,7 @@ public abstract class Utility {
     public static String accessToString( final int access_flags, final boolean for_class ) {
         final StringBuilder buf = new StringBuilder();
         int p = 0;
-        for (int i = 0; p < Const.MAX_ACC_FLAG; i++) { // Loop through known flags
+        for (int i = 0; p < Const.MAX_ACC_FLAG_I; i++) { // Loop through known flags
             p = pow2(i);
             if ((access_flags & p) != 0) {
                 /* Special case: Classes compiled with new compilers and with the
diff --git a/src/main/java/org/apache/bcel/util/BCELifier.java b/src/main/java/org/apache/bcel/util/BCELifier.java
index f861f7a..cb34928 100644
--- a/src/main/java/org/apache/bcel/util/BCELifier.java
+++ b/src/main/java/org/apache/bcel/util/BCELifier.java
@@ -213,7 +213,7 @@ public class BCELifier extends org.apache.bcel.classfile.EmptyVisitor {
             return "0";
         }
         final StringBuilder buf = new StringBuilder();
-        for (int i = 0, pow = 1; pow <= Const.MAX_ACC_FLAG; i++) {
+        for (int i = 0, pow = 1; pow <= Const.MAX_ACC_FLAG_I; i++) {
             if ((flags & pow) != 0) {
                 if ((pow == Const.ACC_SYNCHRONIZED) && (location == FLAGS.CLASS)) {
                     buf.append(CONSTANT_PREFIX+"ACC_SUPER | ");