diff --git a/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java b/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java
index 778421d712db550a73d025a71c10d2a447cde2bb..eb66ba56f3abf71031549293475e10cb5a489aa1 100644
--- a/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+++ b/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java
@@ -110,6 +110,8 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
   LinkedList listOfAlternativeElemsWHaveName;
 
+  private final Map<AElem, Integer> elemOperators = new HashMap<>();
+
   @Override
   public void caseAAlt(AAlt node)
   {
@@ -125,27 +127,27 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
                  @Override
                  public void inAElem(AElem node)
                  {
-                   InternalTransformationsToGrammar.this.setOut(node, NONE);
+                   InternalTransformationsToGrammar.this.elemOperators.put(node, NONE);
                  }
 
                  @Override
                  public void caseAStarUnOp(AStarUnOp node)
                  {
                    count *= 2;
-                   InternalTransformationsToGrammar.this.setOut(node.parent(), STAR);
+                   InternalTransformationsToGrammar.this.elemOperators.put((AElem)node.parent(), STAR);
                  }
 
                  @Override
                  public void caseAQMarkUnOp(AQMarkUnOp node)
                  {
                    count *= 2;
-                   InternalTransformationsToGrammar.this.setOut(node.parent(), QMARK);
+                   InternalTransformationsToGrammar.this.elemOperators.put((AElem)node.parent(), QMARK);
                  }
 
                  @Override
                  public void caseAPlusUnOp(APlusUnOp node)
                  {
-                   InternalTransformationsToGrammar.this.setOut(node.parent(), PLUS);
+                   InternalTransformationsToGrammar.this.elemOperators.put((AElem)node.parent(), PLUS);
                  }
                }
               );
@@ -275,7 +277,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
   {
     if(!processingAst)
     {
-      int op = ((Integer) getOut(node)).intValue();
+      int op = this.elemOperators.get(node);
       String name = ids.elemTypes.get(node);
       String numero = (countElementNecessary == true ? ""+(count+1) : "" );
       String qMarkOrPlusElemType;