diff --git a/src/main/java/org/sablecc/sablecc/CharSet.java b/src/main/java/org/sablecc/sablecc/CharSet.java
index e49bceaa3dee922aafa33f042e243700811808b0..e3faaa91cfcc4a07e1957cffc9fae10a153f151f 100644
--- a/src/main/java/org/sablecc/sablecc/CharSet.java
+++ b/src/main/java/org/sablecc/sablecc/CharSet.java
@@ -34,7 +34,7 @@ public class CharSet implements Cloneable
   }
 
   @Override
-  public Object clone()
+  public CharSet clone()
   {
     return new CharSet(intervals);
   }
@@ -183,7 +183,7 @@ public class CharSet implements Cloneable
     }
 
     @Override
-    public Object clone()
+    public Interval clone()
     {
       return new Interval(start, end);
     }
diff --git a/src/main/java/org/sablecc/sablecc/IntSet.java b/src/main/java/org/sablecc/sablecc/IntSet.java
index 120c707623905e47b64e9b6fea5d31d29a73d18a..503dc7ff7a953f8c8f2898521bfaf415541da8c3 100644
--- a/src/main/java/org/sablecc/sablecc/IntSet.java
+++ b/src/main/java/org/sablecc/sablecc/IntSet.java
@@ -82,7 +82,7 @@ public class IntSet
   }
 
   @Override
-  public Object clone()
+  public IntSet clone()
   {
     return new IntSet(this);
   }
diff --git a/src/main/java/org/sablecc/sablecc/LR0Item.java b/src/main/java/org/sablecc/sablecc/LR0Item.java
index df2f3f202b21951f9a07a66c47fbfdda533ebb6d..16d87c993ea2367e0d2a72c7b25732aa018630c0 100644
--- a/src/main/java/org/sablecc/sablecc/LR0Item.java
+++ b/src/main/java/org/sablecc/sablecc/LR0Item.java
@@ -36,7 +36,7 @@ final class LR0Item implements Cloneable, Comparable
   }
 
   @Override
-  public Object clone()
+  public LR0Item clone()
   {
     return new LR0Item(production, position);
   }
diff --git a/src/main/java/org/sablecc/sablecc/LR0ItemSet.java b/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
index 824097a82c174ad0d4d6f1a596bd8d348c1890de..56fc438e0b681769dc11da4b9d4ade7edcb86347 100644
--- a/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
+++ b/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
@@ -108,7 +108,7 @@ final class LR0ItemSet implements Cloneable, Comparable
   }
 
   @Override
-  public Object clone()
+  public LR0ItemSet clone()
   {
     return new LR0ItemSet(this);
   }
diff --git a/src/main/java/org/sablecc/sablecc/LR1Item.java b/src/main/java/org/sablecc/sablecc/LR1Item.java
index 7f93dc2938b3caf8ec46ed1d1c026428607ee1e9..a3471f0c91068d520758db49694dd9b9fcec75ae 100644
--- a/src/main/java/org/sablecc/sablecc/LR1Item.java
+++ b/src/main/java/org/sablecc/sablecc/LR1Item.java
@@ -21,7 +21,7 @@ final class LR1Item implements Cloneable, Comparable
   }
 
   @Override
-  public Object clone()
+  public LR1Item clone()
   {
     return new LR1Item(lr0Item, terminal);
   }
diff --git a/src/main/java/org/sablecc/sablecc/LR1ItemSet.java b/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
index 68f3bab32135db1c0bf7c41d2e1025594c926b12..983c7cb2e000a2593a139c9bdeba10cfdc5cd9e1 100644
--- a/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
+++ b/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
@@ -162,7 +162,7 @@ final class LR1ItemSet implements Cloneable, Comparable
   }
 
   @Override
-  public Object clone()
+  public LR1ItemSet clone()
   {
     return new LR1ItemSet(this);
   }
diff --git a/src/main/java/org/sablecc/sablecc/NFA.java b/src/main/java/org/sablecc/sablecc/NFA.java
index cf8cce1742b7033111a59719ffdfaebc306321b7..ba1475b9423f83c25abe6c595ac7522a82e14ad1 100644
--- a/src/main/java/org/sablecc/sablecc/NFA.java
+++ b/src/main/java/org/sablecc/sablecc/NFA.java
@@ -270,7 +270,7 @@ public class NFA implements Cloneable
   }
 
   @Override
-  public Object clone()
+  public NFA clone()
   {
     return new NFA(this);
   }
diff --git a/src/main/java/org/sablecc/sablecc/SymbolSet.java b/src/main/java/org/sablecc/sablecc/SymbolSet.java
index 576e1b6a8c4779570ce5ca7d5d3308fe0a3cac2c..d64dd838917b8a6be40d3f017c6bc74d6cb75eb5 100644
--- a/src/main/java/org/sablecc/sablecc/SymbolSet.java
+++ b/src/main/java/org/sablecc/sablecc/SymbolSet.java
@@ -204,7 +204,7 @@ final class SymbolSet implements Cloneable
   }
 
   @Override
-  public Object clone()
+  public SymbolSet clone()
   {
     return new SymbolSet(this);
   }