diff --git a/src/main/java/org/sablecc/sablecc/ConstructNFA.java b/src/main/java/org/sablecc/sablecc/ConstructNFA.java
index 83b29b01dd97b7b1f5d9c0a8d34aafe570f90816..996bda34aae51264c0c96384e0e19f83bd0db2b4 100644
--- a/src/main/java/org/sablecc/sablecc/ConstructNFA.java
+++ b/src/main/java/org/sablecc/sablecc/ConstructNFA.java
@@ -315,20 +315,19 @@ public class ConstructNFA extends DepthFirstAdapter
   @Override
   public void outACharChar(ACharChar node)
   {
-    setOut(node, new Character(node.getChar().getText().charAt(1)));
+    setOut(node, node.getChar().getText().charAt(1));
   }
 
   @Override
   public void outADecChar(ADecChar node)
   {
-    setOut(node, new Character((char) Integer.parseInt(node.getDecChar().getText())));
+    setOut(node, (char)Integer.parseInt(node.getDecChar().getText()));
   }
 
   @Override
   public void outAHexChar(AHexChar node)
   {
-    setOut(node, new Character((char)
-                               Integer.parseInt(node.getHexChar().getText().substring(2), 16)));
+    setOut(node, (char)Integer.parseInt(node.getHexChar().getText().substring(2), 16));
   }
 
   @Override
@@ -338,7 +337,7 @@ public class ConstructNFA extends DepthFirstAdapter
     {
       CharSet cs1 = (CharSet) getOut(node.getLeft());
       CharSet cs2 = (CharSet) getOut(node.getRight());
-      char binop = ((Character) getOut(node.getBinOp())).charValue();
+      char binop = (Character) getOut(node.getBinOp());
 
       switch(binop)
       {
@@ -391,31 +390,31 @@ public class ConstructNFA extends DepthFirstAdapter
   @Override
   public void outAStarUnOp(AStarUnOp node)
   {
-    setOut(node, new Character('*'));
+    setOut(node, '*');
   }
 
   @Override
   public void outAQMarkUnOp(AQMarkUnOp node)
   {
-    setOut(node, new Character('?'));
+    setOut(node, '?');
   }
 
   @Override
   public void outAPlusUnOp(APlusUnOp node)
   {
-    setOut(node, new Character('+'));
+    setOut(node, '+');
   }
 
   @Override
   public void outAPlusBinOp(APlusBinOp node)
   {
-    setOut(node, new Character('+'));
+    setOut(node, '+');
   }
 
   @Override
   public void outAMinusBinOp(AMinusBinOp node)
   {
-    setOut(node, new Character('-'));
+    setOut(node, '-');
   }
 
   @Override
diff --git a/src/main/java/org/sablecc/sablecc/DFA.java b/src/main/java/org/sablecc/sablecc/DFA.java
index ecc0c6759d4d7b2dbb3a3d1a5d7441ed1b7a9096..e9b53880b6c93ca35311a05de7143cd2ddb48a46 100644
--- a/src/main/java/org/sablecc/sablecc/DFA.java
+++ b/src/main/java/org/sablecc/sablecc/DFA.java
@@ -141,7 +141,7 @@ public class DFA
 
     State state = new State(initial);
     states.addElement(state);
-    finder.put(state.nfaStates, new Integer(0));
+    finder.put(state.nfaStates, 0);
 
     int i = -1;
     while(++i < states.size())
@@ -228,7 +228,7 @@ public class DFA
           {
             State s = new State(destination);
             states.addElement(s);
-            finder.put(s.nfaStates, new Integer(states.size() - 1));
+            finder.put(s.nfaStates, states.size() - 1);
 
             state.transitions.addElement(
               new Transition((CharSet.Interval) interval.clone(), states.size() - 1));
diff --git a/src/main/java/org/sablecc/sablecc/GenLexer.java b/src/main/java/org/sablecc/sablecc/GenLexer.java
index 58d1f32c4c0df4d34306e88462f7972f562c3057..7aa607bcfaf9a7be7de12f8142e32367f64f0479 100644
--- a/src/main/java/org/sablecc/sablecc/GenLexer.java
+++ b/src/main/java/org/sablecc/sablecc/GenLexer.java
@@ -293,7 +293,7 @@ public class GenLexer extends AnalysisAdapter
           DFA.State state = (DFA.State) dfa.states.elementAt(j);
 
           file.write(state.accept + ", ");
-          innerArray.addElement(new Integer(state.accept));
+          innerArray.addElement(state.accept);
         }
 
         file.write("}," + System.getProperty("line.separator"));
diff --git a/src/main/java/org/sablecc/sablecc/GenParser.java b/src/main/java/org/sablecc/sablecc/GenParser.java
index 9a0598737a5fe55aff499efd9ec87552ef5b6359..9aaa62b5e0ef204c6c8369a0aca2f4541c74459f 100644
--- a/src/main/java/org/sablecc/sablecc/GenParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenParser.java
@@ -681,8 +681,8 @@ public class GenParser extends DepthFirstAdapter
         {
           table.append("\t\t\t\"" + s + "\"," + System.getProperty("line.separator"));
           outerArray.addElement(s.toString());
-          errorIndex.put(s.toString(), new Integer(nextIndex));
-          indexArray.addElement(new Integer(nextIndex));
+          errorIndex.put(s.toString(), nextIndex);
+          indexArray.addElement(nextIndex);
           index.append(nextIndex++ + ", ");
         }
       }
diff --git a/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java b/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java
index b0fd5a6be5de629acf22738d851f36d575fbf232..5932fa1fe2fa3757535b0a1f11ab5d054794a92b 100644
--- a/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+++ b/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java
@@ -125,27 +125,27 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
                  @Override
                  public void inAElem(AElem node)
                  {
-                   InternalTransformationsToGrammar.this.setOut(node, new Integer(NONE));
+                   InternalTransformationsToGrammar.this.setOut(node, NONE);
                  }
 
                  @Override
                  public void caseAStarUnOp(AStarUnOp node)
                  {
                    count *= 2;
-                   InternalTransformationsToGrammar.this.setOut(node.parent(), new Integer(STAR));
+                   InternalTransformationsToGrammar.this.setOut(node.parent(), STAR);
                  }
 
                  @Override
                  public void caseAQMarkUnOp(AQMarkUnOp node)
                  {
                    count *= 2;
-                   InternalTransformationsToGrammar.this.setOut(node.parent(), new Integer(QMARK));
+                   InternalTransformationsToGrammar.this.setOut(node.parent(), QMARK);
                  }
 
                  @Override
                  public void caseAPlusUnOp(APlusUnOp node)
                  {
-                   InternalTransformationsToGrammar.this.setOut(node.parent(), new Integer(PLUS));
+                   InternalTransformationsToGrammar.this.setOut(node.parent(), PLUS);
                  }
                }
               );
diff --git a/src/main/java/org/sablecc/sablecc/LR0Collection.java b/src/main/java/org/sablecc/sablecc/LR0Collection.java
index 9c306dae60b0605ed17ee45ca2038d9f2e26ebeb..f2d663465189d453dd386012cee366fe9ca25d33 100644
--- a/src/main/java/org/sablecc/sablecc/LR0Collection.java
+++ b/src/main/java/org/sablecc/sablecc/LR0Collection.java
@@ -48,7 +48,7 @@ final class LR0Collection
 
       if(result == null)
       {
-        result = new Integer(sets.size());
+        result = sets.size();
 
         setIndices.put(set
                        , result);
@@ -79,8 +79,7 @@ final class LR0Collection
   {
     if(!to.equals(empty))
     {
-      ((TreeMap) GOTO.elementAt(from)).put(symbol, new Integer(add
-                                           (to, from, symbol)));
+      ((TreeMap) GOTO.elementAt(from)).put(symbol, add(to, from, symbol));
     }
   }
 
diff --git a/src/main/java/org/sablecc/sablecc/SymbolSet.java b/src/main/java/org/sablecc/sablecc/SymbolSet.java
index bb229d4c914852a0de8d369f4effd1a63f9bb674..576e1b6a8c4779570ce5ca7d5d3308fe0a3cac2c 100644
--- a/src/main/java/org/sablecc/sablecc/SymbolSet.java
+++ b/src/main/java/org/sablecc/sablecc/SymbolSet.java
@@ -133,7 +133,7 @@ final class SymbolSet implements Cloneable
   @Override
   public int hashCode()
   {
-    return terminals.hashCode() + nonterminals.hashCode() + new Boolean(empty).hashCode();
+    return terminals.hashCode() + nonterminals.hashCode() + Boolean.valueOf(empty).hashCode();
   }
 
   @Override