diff --git a/src/main/java/org/sablecc/sablecc/ComputeInlining.java b/src/main/java/org/sablecc/sablecc/ComputeInlining.java
index 6b1c880b10d2767d71e1e9c6d9bf42c1f225f6f2..8a2e01e52e08cd1f2a0c4618e8f4b4326d6de883 100644
--- a/src/main/java/org/sablecc/sablecc/ComputeInlining.java
+++ b/src/main/java/org/sablecc/sablecc/ComputeInlining.java
@@ -28,14 +28,13 @@ import org.sablecc.sablecc.node.*;
 public class ComputeInlining
 {
   //Productions implied in a conflict
-  private Set setOfProdToBeInline;
+  private Set<String> setOfProdToBeInline;
 
   //Map of all productions in the grammar
   private Map<String, AProd> productionsMap;
   private Start tree;
 
-  public ComputeInlining(Set set
-                           ,
+  public ComputeInlining(Set<String> set,
                            Map<String, AProd> productionsMap,
                            Start tree)
   {
@@ -55,11 +54,9 @@ public class ComputeInlining
   public boolean computeInlining()
   {
     final BooleanEx atLeastOneProductionInlined = new BooleanEx(false);
-    String []nameOfProds = (String[])setOfProdToBeInline.toArray(new String[0]);
-
-    for(int i=0; i<nameOfProds.length; i++)
+    for(String nameOfProd : setOfProdToBeInline)
     {
-      final AProd prod = productionsMap.get(nameOfProds[i]);
+      final AProd prod = productionsMap.get(nameOfProd);
 
       //We proceed inlining only if the production to inline is not recursive
       //and if it doesn't have more than SableCC.inliningMaxAlts alternatives.
@@ -92,13 +89,12 @@ public class ComputeInlining
       }
     }
 
-    LinkedList listOfGrammarProds = ((AProductions)((AGrammar)tree.getPGrammar()).getProductions()).getProds();
+    List<PProd> listOfGrammarProds = ((AProductions)((AGrammar)tree.getPGrammar()).getProductions()).getProds();
 
     //Once the production is inlined, we do not need it anymore, so we remove it from the grammar.
-    String[] inlinedProductionsToRemove = (String[])Inlining.productionsToBeRemoved.toArray(new String[0]);
-    for(int i=0; i<inlinedProductionsToRemove.length; i++)
+    for(String nameOfProd : Inlining.productionsToBeRemoved)
     {
-      listOfGrammarProds.remove(productionsMap.get(inlinedProductionsToRemove[i]) );
+      listOfGrammarProds.remove(productionsMap.get(nameOfProd) );
     }
 
     Inlining.productionsToBeRemoved.clear();
diff --git a/src/main/java/org/sablecc/sablecc/ConflictException.java b/src/main/java/org/sablecc/sablecc/ConflictException.java
index ab0e29263294c55a3888eb112a1e93a1efdb29ba..8120a9aac34f4f9b5e6f61fec19b0676f0abefb1 100644
--- a/src/main/java/org/sablecc/sablecc/ConflictException.java
+++ b/src/main/java/org/sablecc/sablecc/ConflictException.java
@@ -13,15 +13,15 @@ import java.util.Set;
 @SuppressWarnings("serial")
 public class ConflictException extends Exception
 {
-  private Set conflictualProductions;
+  private Set<String> conflictualProductions;
 
-  public ConflictException(Set conflictualProductions, String message)
+  public ConflictException(Set<String> conflictualProductions, String message)
   {
     super(message);
     this.conflictualProductions = conflictualProductions;
   }
 
-  public Set getConflictualProductions()
+  public Set<String> getConflictualProductions()
   {
     return conflictualProductions;
   }
diff --git a/src/main/java/org/sablecc/sablecc/Grammar.java b/src/main/java/org/sablecc/sablecc/Grammar.java
index 720185603091c27d111acc1ba334048f1d6a829f..625014142d553dcd45e2843e06e64962a2ed9963 100644
--- a/src/main/java/org/sablecc/sablecc/Grammar.java
+++ b/src/main/java/org/sablecc/sablecc/Grammar.java
@@ -12,8 +12,8 @@ import java.util.*;
 
 public final class Grammar
 {
-  private static TreeMap fastLr0Closure = new TreeMap();
-  private static TreeMap fastLr1Closure = new TreeMap();
+  private static Map<LR0Item, LR0ItemSet> fastLr0Closure = new TreeMap<>();
+  private static Map<LR1Item, LR1ItemSet> fastLr1Closure = new TreeMap<>();
 
   static int startSymbol;
   static int startProduction;
@@ -61,8 +61,8 @@ public final class Grammar
 
   public static void reinit()
   {
-    fastLr0Closure = new TreeMap();
-    fastLr1Closure = new TreeMap();
+    fastLr0Closure = new TreeMap<>();
+    fastLr1Closure = new TreeMap<>();
     startSymbol = 0;
     startProduction = -1;
     eof = -1;
@@ -99,7 +99,7 @@ public final class Grammar
     action_ = new int[sets.length][terminals.length - 1][];
     goto_ = new int[sets.length][nonterminals.length - 1];
 
-    Set listOfConflictualProds = new HashSet();
+    Set<String> listOfConflictualProds = new HashSet<>();
     StringBuffer conflictMessage = new StringBuffer();
 
     for(int i = 0; i < sets.length; i++)
@@ -452,7 +452,7 @@ public final class Grammar
 
   static LR0ItemSet CLOSURE(LR0Item item)
   {
-    LR0ItemSet result = (LR0ItemSet) fastLr0Closure.get(item);
+    LR0ItemSet result = fastLr0Closure.get(item);
 
     if(result != null)
     {
@@ -541,7 +541,7 @@ public final class Grammar
 
   static LR1ItemSet CLOSURE(LR1Item item)
   {
-    LR1ItemSet result = (LR1ItemSet) fastLr1Closure.get(item);
+    LR1ItemSet result = fastLr1Closure.get(item);
 
     if(result != null)
     {
@@ -569,7 +569,7 @@ public final class Grammar
 
           if(!symbol.terminal)
           {
-            Vector tailVector = new Vector(0);
+            Vector<Symbol> tailVector = new Vector<>(0);
 
             for(int k = items[i].lr0Item.position + 1; k < rightside.length; k++)
             {
diff --git a/src/main/java/org/sablecc/sablecc/Inlining.java b/src/main/java/org/sablecc/sablecc/Inlining.java
index 906808e0d92746585d585c1b868a5bcedbbcd2eb..a1686f6d4c63d9118318e2716944215f8071b2aa 100644
--- a/src/main/java/org/sablecc/sablecc/Inlining.java
+++ b/src/main/java/org/sablecc/sablecc/Inlining.java
@@ -22,8 +22,7 @@ import org.sablecc.sablecc.node.*;
 
 public class Inlining
 {
-  public static HashSet productionsToBeRemoved =
-    new HashSet();
+  public static Set<String> productionsToBeRemoved = new HashSet<>();
 
   private AProd current_production;