diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index ef14faa8e459f24d4aab4554bb5cea23ffd6e0fa..941b84c3139e9b7ab236ea8e8860ae754a997b85 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -107,17 +107,15 @@ public class Parser implements IParser
 
     private void push(int numstate, List<Object> listNode) throws ParserException, LexerException, IOException
     {
-        this.nodeList = listNode;
-
         if(!this.stack.hasNext())
         {
-            this.stack.add(new State(numstate, this.nodeList));
+            this.stack.add(new State(numstate, listNode));
             return;
         }
 
         State s = this.stack.next();
         s.state = numstate;
-        s.nodes = this.nodeList;
+        s.nodes = listNode;
     }
 
     private int goTo(int index)
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index c7ea71cf9d2a1e8020c887a9e09d66110752f94f..d3f4b0c27200b2923077df0123dfa31aa952c499 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -119,7 +119,16 @@ Macro:ParserInliningPushHeader
 
     private void push(int numstate, List<Object> listNode) throws ParserException, LexerException, IOException
     {
-        this.nodeList = listNode;
+        if(!this.stack.hasNext())
+        {
+            this.stack.add(new State(numstate, listNode));
+            return;
+        }
+
+        State s = this.stack.next();
+        s.state = numstate;
+        s.nodes = listNode;
+    }
 
 
 $
@@ -137,10 +146,6 @@ Macro:ParserNoInliningPushHeader
             filter();
         }
 
-
-$
-
-Macro:ParserCommon
         if(!this.stack.hasNext())
         {
             this.stack.add(new State(numstate, this.nodeList));
@@ -152,6 +157,10 @@ Macro:ParserCommon
         s.nodes = this.nodeList;
     }
 
+
+$
+
+Macro:ParserCommon
     private int goTo(int index)
     {
         int state = state();