diff --git a/src/main/java/org/sablecc/sablecc/GenParser.java b/src/main/java/org/sablecc/sablecc/GenParser.java
index a927be88d55818ec39027c90583d9f4bbf2c63d9..0ce34c5530e41aeebe4661417e259d4533a09b67 100644
--- a/src/main/java/org/sablecc/sablecc/GenParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenParser.java
@@ -377,7 +377,7 @@ public class GenParser extends DepthFirstAdapter
       macros.apply(file, "ParserHeader", new String[] {pkgName,
                    ids.pkgName.equals("") ? "lexer" : ids.pkgName + ".lexer",
                    ids.pkgName.equals("") ? "node" : ids.pkgName + ".node",
-                   ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis"});
+      });
 
       if(activateFilter && !grammarHasTransformations)
       {
diff --git a/src/main/java/org/sablecc/sablecc/analysis/DepthFirstAdapter.java b/src/main/java/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
index f105e21825e12e69c75d65efa5bb4f537f458342..7132e6efa4369f2ac32663be65aa9a6cdb3cbc79 100644
--- a/src/main/java/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
+++ b/src/main/java/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
@@ -2,7 +2,9 @@
 
 package org.sablecc.sablecc.analysis;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.sablecc.sablecc.node.*;
 
 public class DepthFirstAdapter extends AnalysisAdapter
diff --git a/src/main/java/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java b/src/main/java/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java
index 7eae5aebbf3a707f87a8ea659a476fb1529b9c2d..3f75d98fdf099be198e5d7af5da0ce395527916f 100644
--- a/src/main/java/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java
+++ b/src/main/java/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java
@@ -2,9 +2,11 @@
 
 package org.sablecc.sablecc.analysis;
 
-import java.util.*;
-import org.sablecc.sablecc.node.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
+import org.sablecc.sablecc.node.*;
 
 public class ReversedDepthFirstAdapter extends AnalysisAdapter
 {
diff --git a/src/main/java/org/sablecc/sablecc/lexer/Lexer.java b/src/main/java/org/sablecc/sablecc/lexer/Lexer.java
index 3eafaec1931e12d2f44e3aae8263f8295de4a35c..0b5b70110e255373cdee211473387c8b4ded3523 100644
--- a/src/main/java/org/sablecc/sablecc/lexer/Lexer.java
+++ b/src/main/java/org/sablecc/sablecc/lexer/Lexer.java
@@ -2,12 +2,21 @@
 
 package org.sablecc.sablecc.lexer;
 
-import java.io.*;
-import java.util.*;
-import org.sablecc.sablecc.node.*;
-import de.hhu.stups.sablecc.patch.*;
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.PushbackReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Queue;
 import java.util.concurrent.LinkedBlockingQueue;
 
+import de.hhu.stups.sablecc.patch.IToken;
+import de.hhu.stups.sablecc.patch.ITokenListContainer;
+
+import org.sablecc.sablecc.node.*;
+
 @SuppressWarnings({"unused"})
 public class Lexer implements ITokenListContainer
 {
diff --git a/src/main/java/org/sablecc/sablecc/node/AAlt.java b/src/main/java/org/sablecc/sablecc/node/AAlt.java
index 144ab37c8b6026ac8124a54fcd0c01b4488abd2c..b856c3eaf36734c28905803d21371f756729bb25 100644
--- a/src/main/java/org/sablecc/sablecc/node/AAlt.java
+++ b/src/main/java/org/sablecc/sablecc/node/AAlt.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AAltTransform.java b/src/main/java/org/sablecc/sablecc/node/AAltTransform.java
index 16c9d4d0bd2a81f4c7a9eb46321a683afe78222a..c5019988f531d42b3479d45fc5ba03dd18726605 100644
--- a/src/main/java/org/sablecc/sablecc/node/AAltTransform.java
+++ b/src/main/java/org/sablecc/sablecc/node/AAltTransform.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AAst.java b/src/main/java/org/sablecc/sablecc/node/AAst.java
index c5002df4a52bc895fa0934205fe8c34aec79cafc..e27ff6ffff77d114cbb99cc3cb5fea8693a90136 100644
--- a/src/main/java/org/sablecc/sablecc/node/AAst.java
+++ b/src/main/java/org/sablecc/sablecc/node/AAst.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AAstAlt.java b/src/main/java/org/sablecc/sablecc/node/AAstAlt.java
index ade7c7e1ed01917d3f843d4dedb37d88c0a8b277..3b59880930fb1b652fc6f53ea2ef4f221a199fa5 100644
--- a/src/main/java/org/sablecc/sablecc/node/AAstAlt.java
+++ b/src/main/java/org/sablecc/sablecc/node/AAstAlt.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AAstProd.java b/src/main/java/org/sablecc/sablecc/node/AAstProd.java
index bf451c69cc0c9650809b694778c96d181ee0d73d..a903a330bbbb8a9d4a0a860e85546dec5ca5607f 100644
--- a/src/main/java/org/sablecc/sablecc/node/AAstProd.java
+++ b/src/main/java/org/sablecc/sablecc/node/AAstProd.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AConcat.java b/src/main/java/org/sablecc/sablecc/node/AConcat.java
index a3c666d899b9eba07d7f60c3d1dd7c14f86aefa7..00173c37a7d18e475a5c3ee869bfe856f903d18f 100644
--- a/src/main/java/org/sablecc/sablecc/node/AConcat.java
+++ b/src/main/java/org/sablecc/sablecc/node/AConcat.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AGrammar.java b/src/main/java/org/sablecc/sablecc/node/AGrammar.java
index 1408be174f1495e9d50121985c3ab83e92401a2c..e16f1d20d3df54e9480424c1f4025ffaf122c3b2 100644
--- a/src/main/java/org/sablecc/sablecc/node/AGrammar.java
+++ b/src/main/java/org/sablecc/sablecc/node/AGrammar.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AHelpers.java b/src/main/java/org/sablecc/sablecc/node/AHelpers.java
index 5b5f96a2fc755b92da1c790d5ed37651689977a9..ded07034284527c733add5b914075a5e4a9c3c9c 100644
--- a/src/main/java/org/sablecc/sablecc/node/AHelpers.java
+++ b/src/main/java/org/sablecc/sablecc/node/AHelpers.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java b/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java
index 4e89102c1903fe8b3ccd83a88ae9a6d4ffdb3600..ed818d02f933b039c6936e628b481317cd01b124 100644
--- a/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java
+++ b/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AListTerm.java b/src/main/java/org/sablecc/sablecc/node/AListTerm.java
index 33ef29cd0c671b9d752bbd7bb36b46c79a776b9d..6058e15341c48bdd850a763c3576942e55f4e358 100644
--- a/src/main/java/org/sablecc/sablecc/node/AListTerm.java
+++ b/src/main/java/org/sablecc/sablecc/node/AListTerm.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java b/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java
index d90bcba479d7d8106b4f28e99c5968397378a3b1..55f4202b0dd5dc6cb88b89fbecf678eec068333e 100644
--- a/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java
+++ b/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/ANewTerm.java b/src/main/java/org/sablecc/sablecc/node/ANewTerm.java
index 5b15adbda881acec82476b5edbd11a88bbe8b15c..1726c713cf8faa60b3d7dc38f89c208c11e2800f 100644
--- a/src/main/java/org/sablecc/sablecc/node/ANewTerm.java
+++ b/src/main/java/org/sablecc/sablecc/node/ANewTerm.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AProd.java b/src/main/java/org/sablecc/sablecc/node/AProd.java
index d058034bd0aebeceeaef06d86c224e16a49bb50f..961339d493443cf1755febff9ef8e586a9a46e9f 100644
--- a/src/main/java/org/sablecc/sablecc/node/AProd.java
+++ b/src/main/java/org/sablecc/sablecc/node/AProd.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AProductions.java b/src/main/java/org/sablecc/sablecc/node/AProductions.java
index d5078d560f1fbbed861ba7fcd3a378bd2cb9f7db..c26ba7c26825a855e7b6427cd5c76dda38be4c4b 100644
--- a/src/main/java/org/sablecc/sablecc/node/AProductions.java
+++ b/src/main/java/org/sablecc/sablecc/node/AProductions.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/ARegExp.java b/src/main/java/org/sablecc/sablecc/node/ARegExp.java
index e9a9eedb3c25e100bf69f23d6e5147f1be40a3d8..8c053d869fa9f25b47ca930c91d003f32c5910de 100644
--- a/src/main/java/org/sablecc/sablecc/node/ARegExp.java
+++ b/src/main/java/org/sablecc/sablecc/node/ARegExp.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AStateList.java b/src/main/java/org/sablecc/sablecc/node/AStateList.java
index f24a890d5701946bb38c36329b6e38697b9b8e95..7954c68be0b2ac7635dce724d0366be11dea7019 100644
--- a/src/main/java/org/sablecc/sablecc/node/AStateList.java
+++ b/src/main/java/org/sablecc/sablecc/node/AStateList.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/AStates.java b/src/main/java/org/sablecc/sablecc/node/AStates.java
index 1c8e4eec6b5720a5b3ed770eda397c1f1a9e91ab..f2708531c267618caababb1ea473c6a84ff89d83 100644
--- a/src/main/java/org/sablecc/sablecc/node/AStates.java
+++ b/src/main/java/org/sablecc/sablecc/node/AStates.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/node/ATokens.java b/src/main/java/org/sablecc/sablecc/node/ATokens.java
index 2ad3db72495dcb10f541587b3d10da2ea21f342b..f07f1855c268cecb245c9c1f1ef0e63f15ef8aa2 100644
--- a/src/main/java/org/sablecc/sablecc/node/ATokens.java
+++ b/src/main/java/org/sablecc/sablecc/node/ATokens.java
@@ -2,7 +2,10 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 import org.sablecc.sablecc.analysis.*;
 
 
diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index b8df0f004b0bc22a3ba73146404ac60eec18ce8d..051bcc2eed7999eced2001641b9b85bb459aa31c 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -2,17 +2,24 @@
 
 package org.sablecc.sablecc.parser;
 
-import org.sablecc.sablecc.lexer.*;
-import org.sablecc.sablecc.node.*;
-import org.sablecc.sablecc.analysis.*;
-import java.util.*;
-import de.hhu.stups.sablecc.patch.*;
-
-
 import java.io.DataInputStream;
 import java.io.BufferedInputStream;
 import java.io.InputStream;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import de.hhu.stups.sablecc.patch.IParser;
+import de.hhu.stups.sablecc.patch.IToken;
+import de.hhu.stups.sablecc.patch.PositionedNode;
+import de.hhu.stups.sablecc.patch.SourcecodeRange;
+
+import org.sablecc.sablecc.lexer.*;
+import org.sablecc.sablecc.node.*;
 
 @SuppressWarnings({"rawtypes","unchecked","unused"})
 public class Parser implements IParser
diff --git a/src/main/resources/org/sablecc/sablecc/alternatives.txt b/src/main/resources/org/sablecc/sablecc/alternatives.txt
index eb1569cd445760238f281c1b10430881090760ad..ba456e56bb41f9594723efdf9ea7813f2a613fab 100644
--- a/src/main/resources/org/sablecc/sablecc/alternatives.txt
+++ b/src/main/resources/org/sablecc/sablecc/alternatives.txt
@@ -14,7 +14,10 @@ package $0$;
 $
 
 Macro:AlternativeHeaderList
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
 
 $
 
diff --git a/src/main/resources/org/sablecc/sablecc/analyses.txt b/src/main/resources/org/sablecc/sablecc/analyses.txt
index 46dd8400e795e32f8b12a4b31ab273eaf41f19a3..18d24a46da3cd5a3fb1873202fae1d68c649d723 100644
--- a/src/main/resources/org/sablecc/sablecc/analyses.txt
+++ b/src/main/resources/org/sablecc/sablecc/analyses.txt
@@ -84,7 +84,9 @@ Macro:DepthFirstAdapterHeader
 
 package $0$;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+
 import $1$.*;
 
 public class DepthFirstAdapter extends AnalysisAdapter
@@ -125,9 +127,11 @@ Macro:ReversedDepthFirstAdapterHeader
 
 package $0$;
 
-import java.util.*;
-import $1$.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
+import $1$.*;
 
 public class ReversedDepthFirstAdapter extends AnalysisAdapter
 {
diff --git a/src/main/resources/org/sablecc/sablecc/lexer.txt b/src/main/resources/org/sablecc/sablecc/lexer.txt
index f9ccfb2dc96c980fd734deab2f20a2373e584280..03c36e5a735da0b6fc9e26de4b3dba6c5c8afe88 100644
--- a/src/main/resources/org/sablecc/sablecc/lexer.txt
+++ b/src/main/resources/org/sablecc/sablecc/lexer.txt
@@ -26,12 +26,21 @@ Macro:LexerHeader
 
 package $0$;
 
-import java.io.*;
-import java.util.*;
-import $1$.*;
-import de.hhu.stups.sablecc.patch.*;
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.PushbackReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Queue;
 import java.util.concurrent.LinkedBlockingQueue;
 
+import de.hhu.stups.sablecc.patch.IToken;
+import de.hhu.stups.sablecc.patch.ITokenListContainer;
+
+import $1$.*;
+
 @SuppressWarnings({"unused"})
 public class Lexer implements ITokenListContainer
 {
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index 9a416e2497df0848d955bfd5fb0b923768cee9d5..4c5723792f0858918d7596cfead33ef1161ef114 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -10,17 +10,24 @@ Macro:ParserHeader
 
 package $0$;
 
-import $1$.*;
-import $2$.*;
-import $3$.*;
-import java.util.*;
-import de.hhu.stups.sablecc.patch.*;
-
-
 import java.io.DataInputStream;
 import java.io.BufferedInputStream;
 import java.io.InputStream;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import de.hhu.stups.sablecc.patch.IParser;
+import de.hhu.stups.sablecc.patch.IToken;
+import de.hhu.stups.sablecc.patch.PositionedNode;
+import de.hhu.stups.sablecc.patch.SourcecodeRange;
+
+import $1$.*;
+import $2$.*;
 
 @SuppressWarnings({"rawtypes","unchecked","unused"})
 public class Parser implements IParser