diff --git a/src-derived/AG2AspectAG.hs b/src-derived/AG2AspectAG.hs
--- a/src-derived/AG2AspectAG.hs
+++ b/src-derived/AG2AspectAG.hs
@@ -4,6 +4,8 @@
 module AG2AspectAG where
 {-# LINE 7 "AG2AspectAG.ag" #-}
 
+import Options
+
 import Data.Char
 import Data.List
 import qualified Data.Map as Map
@@ -16,7 +18,7 @@
 import AbstractSyntax
 import TokenDef
 import CommonTypes
-{-# LINE 20 "../src-derived/AG2AspectAG.hs" #-}
+{-# LINE 22 "../src-derived/AG2AspectAG.hs" #-}
 
 {-# LINE 2 "./AbstractSyntax.ag" #-}
 
@@ -26,27 +28,27 @@
 import Patterns    (Pattern(..),Patterns)
 import Expression  (Expression(..))
 import CommonTypes
-{-# LINE 30 "../src-derived/AG2AspectAG.hs" #-}
+{-# LINE 32 "../src-derived/AG2AspectAG.hs" #-}
 
 {-# LINE 2 "./Patterns.ag" #-}
 
 -- Patterns.ag imports
 import UU.Scanner.Position(Pos)
 import CommonTypes (ConstructorIdent,Identifier)
-{-# LINE 37 "../src-derived/AG2AspectAG.hs" #-}
+{-# LINE 39 "../src-derived/AG2AspectAG.hs" #-}
 
 {-# LINE 2 "./Expression.ag" #-}
 
 import UU.Scanner.Position(Pos)
 import HsToken
-{-# LINE 43 "../src-derived/AG2AspectAG.hs" #-}
+{-# LINE 45 "../src-derived/AG2AspectAG.hs" #-}
 
 {-# LINE 2 "./HsToken.ag" #-}
 
 import CommonTypes
 import UU.Scanner.Position(Pos)
-{-# LINE 49 "../src-derived/AG2AspectAG.hs" #-}
-{-# LINE 22 "AG2AspectAG.ag" #-}
+{-# LINE 51 "../src-derived/AG2AspectAG.hs" #-}
+{-# LINE 24 "AG2AspectAG.ag" #-}
 
 pragmaAspectAG =  pp  "{-# LANGUAGE EmptyDataDecls, NoMonomorphismRestriction , TypeSynonymInstances, MultiParamTypeClasses, FlexibleContexts #-}"
 
@@ -56,11 +58,21 @@
                   pp  "import Data.HList.TypeEqGeneric1" >-<
                   pp  "import Data.HList.TypeCastGeneric1"
 
-{-# LINE 60 "../src-derived/AG2AspectAG.hs" #-}
+{-# LINE 62 "../src-derived/AG2AspectAG.hs" #-}
 
-{-# LINE 142 "AG2AspectAG.ag" #-}
+{-# LINE 108 "AG2AspectAG.ag" #-}
 
 
+prodName :: Bool -> PP_Doc -> PP_Doc -> PP_Doc
+prodName rename ppNt ppCon | rename     = ppCon
+                           | otherwise  = ppListSep "" "" "_" [ppNt, ppCon] 
+
+
+{-# LINE 72 "../src-derived/AG2AspectAG.hs" #-}
+
+{-# LINE 177 "AG2AspectAG.ag" #-}
+
+
 defAtts =  pp "data Att_inh; att_inh = proxy :: Proxy Att_inh" >-<
            pp "data Att_syn; att_syn = proxy :: Proxy Att_syn" >-<
            pp "data Att_loc; att_loc = proxy :: Proxy Att_loc" 
@@ -80,9 +92,9 @@
                                                defLocalAtts ppNt ppProd total (actual+1) ls
 defLocalAtts _ _ _ _ [] = empty
 
-{-# LINE 84 "../src-derived/AG2AspectAG.hs" #-}
+{-# LINE 96 "../src-derived/AG2AspectAG.hs" #-}
 
-{-# LINE 235 "AG2AspectAG.ag" #-}
+{-# LINE 270 "AG2AspectAG.ag" #-}
 
 
 defInhRule ppNt prod ch rules chids locals =  
@@ -186,11 +198,12 @@
       StrToken value _       -> pp $ show value
       Err mesg _             -> pp $ " ***" ++ mesg ++ "*** "
 
-{-# LINE 190 "../src-derived/AG2AspectAG.hs" #-}
+{-# LINE 202 "../src-derived/AG2AspectAG.hs" #-}
 -- Child -------------------------------------------------------
 {-
    visit 0:
       inherited attributes:
+         o_rename             : Bool
          ppNt                 : PP_Doc
          ppProd               : PP_Doc
       synthesized attributes:
@@ -213,16 +226,17 @@
 sem_Child (Child _name _tp _inh _syn _virtual )  =
     (sem_Child_Child _name _tp _inh _syn _virtual )
 -- semantic domain
-newtype T_Child  = T_Child (PP_Doc ->
+newtype T_Child  = T_Child (Bool ->
                             PP_Doc ->
+                            PP_Doc ->
                             ( ([(Identifier,Type)]),([(Identifier,PP_Doc)]),([PP_Doc]),PP_Doc,PP_Doc))
-data Inh_Child  = Inh_Child {ppNt_Inh_Child :: PP_Doc,ppProd_Inh_Child :: PP_Doc}
+data Inh_Child  = Inh_Child {o_rename_Inh_Child :: Bool,ppNt_Inh_Child :: PP_Doc,ppProd_Inh_Child :: PP_Doc}
 data Syn_Child  = Syn_Child {idCL_Syn_Child :: ([(Identifier,Type)]),ppCSF_Syn_Child :: ([(Identifier,PP_Doc)]),ppDL_Syn_Child :: ([PP_Doc]),ppL_Syn_Child :: PP_Doc,ppR_Syn_Child :: PP_Doc}
 wrap_Child :: T_Child  ->
               Inh_Child  ->
               Syn_Child 
-wrap_Child (T_Child sem ) (Inh_Child _lhsIppNt _lhsIppProd )  =
-    (let ( _lhsOidCL,_lhsOppCSF,_lhsOppDL,_lhsOppL,_lhsOppR) = sem _lhsIppNt _lhsIppProd 
+wrap_Child (T_Child sem ) (Inh_Child _lhsIo_rename _lhsIppNt _lhsIppProd )  =
+    (let ( _lhsOidCL,_lhsOppCSF,_lhsOppDL,_lhsOppL,_lhsOppR) = sem _lhsIo_rename _lhsIppNt _lhsIppProd 
      in  (Syn_Child _lhsOidCL _lhsOppCSF _lhsOppDL _lhsOppL _lhsOppR ))
 sem_Child_Child :: Identifier ->
                    Type ->
@@ -231,24 +245,25 @@
                    (Maybe (Maybe Type)) ->
                    T_Child 
 sem_Child_Child name_ tp_ inh_ syn_ virtual_  =
-    (T_Child (\ _lhsIppNt
+    (T_Child (\ _lhsIo_rename
+                _lhsIppNt
                 _lhsIppProd ->
                   (let _lhsOppDL :: ([PP_Doc])
                        _lhsOppL :: PP_Doc
                        _lhsOppR :: PP_Doc
                        _lhsOidCL :: ([(Identifier,Type)])
                        _lhsOppCSF :: ([(Identifier,PP_Doc)])
-                       -- "AG2AspectAG.ag"(line 93, column 25)
+                       -- "AG2AspectAG.ag"(line 128, column 25)
                        _lhsOppDL =
-                           ({-# LINE 93 "AG2AspectAG.ag" #-}
+                           ({-# LINE 128 "AG2AspectAG.ag" #-}
                             case virtual_ of
                              Nothing    ->  let chName = ppListSep "" "" "_" [pp name_, _lhsIppNt, _lhsIppProd]
                                             in  [ chName >|< pp " :: " >|< ppShow tp_ ]
                              otherwise  ->  []
-                            {-# LINE 249 "AG2AspectAG.hs" #-})
-                       -- "AG2AspectAG.ag"(line 118, column 25)
+                            {-# LINE 264 "AG2AspectAG.hs" #-})
+                       -- "AG2AspectAG.ag"(line 153, column 25)
                        _lhsOppL =
-                           ({-# LINE 118 "AG2AspectAG.ag" #-}
+                           ({-# LINE 153 "AG2AspectAG.ag" #-}
                             let   chName = ppListSep "" "" "_" [pp name_, _lhsIppNt, _lhsIppProd]
                             in    pp "data Ch_" >|< chName >|< pp "; " >|<
                                   pp "ch_" >|< chName >|< pp " = proxy :: " >|<
@@ -256,24 +271,24 @@
                                    Nothing    ->  pp "Proxy " >|< pp "(Ch_" >|< chName >|< ", " >|< ppShow tp_ >|< pp ")"
                                    otherwise  ->  pp "SemType " >|< ppShow tp_ >|< pp " nt =>  Proxy " >|<
                                                   pp "(Ch_" >|< chName >|< pp ", nt)"
-                            {-# LINE 260 "AG2AspectAG.hs" #-})
-                       -- "AG2AspectAG.ag"(line 196, column 25)
+                            {-# LINE 275 "AG2AspectAG.hs" #-})
+                       -- "AG2AspectAG.ag"(line 231, column 25)
                        _lhsOppR =
-                           ({-# LINE 196 "AG2AspectAG.ag" #-}
+                           ({-# LINE 231 "AG2AspectAG.ag" #-}
                             let chName = ppListSep "" "" "_" [pp name_, _lhsIppNt, _lhsIppProd]
                             in  pp name_ >|< " <- at ch_" >|< chName
-                            {-# LINE 266 "AG2AspectAG.hs" #-})
-                       -- "AG2AspectAG.ag"(line 227, column 25)
+                            {-# LINE 281 "AG2AspectAG.hs" #-})
+                       -- "AG2AspectAG.ag"(line 262, column 25)
                        _lhsOidCL =
-                           ({-# LINE 227 "AG2AspectAG.ag" #-}
+                           ({-# LINE 262 "AG2AspectAG.ag" #-}
                             [ (name_, case (stripPrefix "T_" (show tp_)) of
                                         Nothing -> tp_
                                         Just t  -> NT (Ident t undefined) []
                             ) ]
-                            {-# LINE 274 "AG2AspectAG.hs" #-})
-                       -- "AG2AspectAG.ag"(line 389, column 25)
+                            {-# LINE 289 "AG2AspectAG.hs" #-})
+                       -- "AG2AspectAG.ag"(line 433, column 25)
                        _lhsOppCSF =
-                           ({-# LINE 389 "AG2AspectAG.ag" #-}
+                           ({-# LINE 433 "AG2AspectAG.ag" #-}
                             let
                                  ppProd = ppListSep "" "" "_" [_lhsIppNt,_lhsIppProd]
                                  ppChi  = ppListSep "" "" "_" [pp "ch", pp name_, ppProd]
@@ -283,12 +298,13 @@
                             in   case virtual_ of
                                       Nothing    ->  [(name_, ppChi >|< pp " .=. (" >|< semC >|< pp ") .*. ")]
                                       otherwise  ->  []
-                            {-# LINE 287 "AG2AspectAG.hs" #-})
+                            {-# LINE 302 "AG2AspectAG.hs" #-})
                    in  ( _lhsOidCL,_lhsOppCSF,_lhsOppDL,_lhsOppL,_lhsOppR))) )
 -- Children ----------------------------------------------------
 {-
    visit 0:
       inherited attributes:
+         o_rename             : Bool
          ppNt                 : PP_Doc
          ppProd               : PP_Doc
       synthesized attributes:
@@ -309,30 +325,34 @@
 sem_Children list  =
     (Prelude.foldr sem_Children_Cons sem_Children_Nil (Prelude.map sem_Child list) )
 -- semantic domain
-newtype T_Children  = T_Children (PP_Doc ->
+newtype T_Children  = T_Children (Bool ->
                                   PP_Doc ->
+                                  PP_Doc ->
                                   ( ([(Identifier,Type)]),([(Identifier,PP_Doc)]),([PP_Doc]),PP_Doc,PP_Doc))
-data Inh_Children  = Inh_Children {ppNt_Inh_Children :: PP_Doc,ppProd_Inh_Children :: PP_Doc}
+data Inh_Children  = Inh_Children {o_rename_Inh_Children :: Bool,ppNt_Inh_Children :: PP_Doc,ppProd_Inh_Children :: PP_Doc}
 data Syn_Children  = Syn_Children {idCL_Syn_Children :: ([(Identifier,Type)]),ppCSF_Syn_Children :: ([(Identifier,PP_Doc)]),ppDL_Syn_Children :: ([PP_Doc]),ppL_Syn_Children :: PP_Doc,ppR_Syn_Children :: PP_Doc}
 wrap_Children :: T_Children  ->
                  Inh_Children  ->
                  Syn_Children 
-wrap_Children (T_Children sem ) (Inh_Children _lhsIppNt _lhsIppProd )  =
-    (let ( _lhsOidCL,_lhsOppCSF,_lhsOppDL,_lhsOppL,_lhsOppR) = sem _lhsIppNt _lhsIppProd 
+wrap_Children (T_Children sem ) (Inh_Children _lhsIo_rename _lhsIppNt _lhsIppProd )  =
+    (let ( _lhsOidCL,_lhsOppCSF,_lhsOppDL,_lhsOppL,_lhsOppR) = sem _lhsIo_rename _lhsIppNt _lhsIppProd 
      in  (Syn_Children _lhsOidCL _lhsOppCSF _lhsOppDL _lhsOppL _lhsOppR ))
 sem_Children_Cons :: T_Child  ->
                      T_Children  ->
                      T_Children 
 sem_Children_Cons (T_Child hd_ ) (T_Children tl_ )  =
-    (T_Children (\ _lhsIppNt
+    (T_Children (\ _lhsIo_rename
+                   _lhsIppNt
                    _lhsIppProd ->
                      (let _lhsOppDL :: ([PP_Doc])
                           _lhsOidCL :: ([(Identifier,Type)])
                           _lhsOppCSF :: ([(Identifier,PP_Doc)])
                           _lhsOppL :: PP_Doc
                           _lhsOppR :: PP_Doc
+                          _hdOo_rename :: Bool
                           _hdOppNt :: PP_Doc
                           _hdOppProd :: PP_Doc
+                          _tlOo_rename :: Bool
                           _tlOppNt :: PP_Doc
                           _tlOppProd :: PP_Doc
                           _hdIidCL :: ([(Identifier,Type)])
@@ -345,90 +365,101 @@
                           _tlIppDL :: ([PP_Doc])
                           _tlIppL :: PP_Doc
                           _tlIppR :: PP_Doc
-                          -- "AG2AspectAG.ag"(line 89, column 33)
+                          -- "AG2AspectAG.ag"(line 124, column 33)
                           _lhsOppDL =
-                              ({-# LINE 89 "AG2AspectAG.ag" #-}
+                              ({-# LINE 124 "AG2AspectAG.ag" #-}
                                _hdIppDL ++ _tlIppDL
-                               {-# LINE 353 "AG2AspectAG.hs" #-})
-                          -- use rule "AG2AspectAG.ag"(line 225, column 31)
+                               {-# LINE 373 "AG2AspectAG.hs" #-})
+                          -- use rule "AG2AspectAG.ag"(line 260, column 31)
                           _lhsOidCL =
-                              ({-# LINE 225 "AG2AspectAG.ag" #-}
+                              ({-# LINE 260 "AG2AspectAG.ag" #-}
                                _hdIidCL ++ _tlIidCL
-                               {-# LINE 358 "AG2AspectAG.hs" #-})
-                          -- use rule "AG2AspectAG.ag"(line 385, column 34)
+                               {-# LINE 378 "AG2AspectAG.hs" #-})
+                          -- use rule "AG2AspectAG.ag"(line 429, column 34)
                           _lhsOppCSF =
-                              ({-# LINE 385 "AG2AspectAG.ag" #-}
+                              ({-# LINE 429 "AG2AspectAG.ag" #-}
                                _hdIppCSF ++ _tlIppCSF
-                               {-# LINE 363 "AG2AspectAG.hs" #-})
-                          -- use rule "AG2AspectAG.ag"(line 110, column 79)
+                               {-# LINE 383 "AG2AspectAG.hs" #-})
+                          -- use rule "AG2AspectAG.ag"(line 145, column 79)
                           _lhsOppL =
-                              ({-# LINE 110 "AG2AspectAG.ag" #-}
+                              ({-# LINE 145 "AG2AspectAG.ag" #-}
                                _hdIppL >-< _tlIppL
-                               {-# LINE 368 "AG2AspectAG.hs" #-})
-                          -- use rule "AG2AspectAG.ag"(line 184, column 79)
+                               {-# LINE 388 "AG2AspectAG.hs" #-})
+                          -- use rule "AG2AspectAG.ag"(line 219, column 79)
                           _lhsOppR =
-                              ({-# LINE 184 "AG2AspectAG.ag" #-}
+                              ({-# LINE 219 "AG2AspectAG.ag" #-}
                                _hdIppR >-< _tlIppR
-                               {-# LINE 373 "AG2AspectAG.hs" #-})
+                               {-# LINE 393 "AG2AspectAG.hs" #-})
                           -- copy rule (down)
+                          _hdOo_rename =
+                              ({-# LINE 37 "AG2AspectAG.ag" #-}
+                               _lhsIo_rename
+                               {-# LINE 398 "AG2AspectAG.hs" #-})
+                          -- copy rule (down)
                           _hdOppNt =
-                              ({-# LINE 47 "AG2AspectAG.ag" #-}
+                              ({-# LINE 75 "AG2AspectAG.ag" #-}
                                _lhsIppNt
-                               {-# LINE 378 "AG2AspectAG.hs" #-})
+                               {-# LINE 403 "AG2AspectAG.hs" #-})
                           -- copy rule (down)
                           _hdOppProd =
-                              ({-# LINE 53 "AG2AspectAG.ag" #-}
+                              ({-# LINE 81 "AG2AspectAG.ag" #-}
                                _lhsIppProd
-                               {-# LINE 383 "AG2AspectAG.hs" #-})
+                               {-# LINE 408 "AG2AspectAG.hs" #-})
                           -- copy rule (down)
+                          _tlOo_rename =
+                              ({-# LINE 37 "AG2AspectAG.ag" #-}
+                               _lhsIo_rename
+                               {-# LINE 413 "AG2AspectAG.hs" #-})
+                          -- copy rule (down)
                           _tlOppNt =
-                              ({-# LINE 47 "AG2AspectAG.ag" #-}
+                              ({-# LINE 75 "AG2AspectAG.ag" #-}
                                _lhsIppNt
-                               {-# LINE 388 "AG2AspectAG.hs" #-})
+                               {-# LINE 418 "AG2AspectAG.hs" #-})
                           -- copy rule (down)
                           _tlOppProd =
-                              ({-# LINE 53 "AG2AspectAG.ag" #-}
+                              ({-# LINE 81 "AG2AspectAG.ag" #-}
                                _lhsIppProd
-                               {-# LINE 393 "AG2AspectAG.hs" #-})
+                               {-# LINE 423 "AG2AspectAG.hs" #-})
                           ( _hdIidCL,_hdIppCSF,_hdIppDL,_hdIppL,_hdIppR) =
-                              hd_ _hdOppNt _hdOppProd 
+                              hd_ _hdOo_rename _hdOppNt _hdOppProd 
                           ( _tlIidCL,_tlIppCSF,_tlIppDL,_tlIppL,_tlIppR) =
-                              tl_ _tlOppNt _tlOppProd 
+                              tl_ _tlOo_rename _tlOppNt _tlOppProd 
                       in  ( _lhsOidCL,_lhsOppCSF,_lhsOppDL,_lhsOppL,_lhsOppR))) )
 sem_Children_Nil :: T_Children 
 sem_Children_Nil  =
-    (T_Children (\ _lhsIppNt
+    (T_Children (\ _lhsIo_rename
+                   _lhsIppNt
                    _lhsIppProd ->
                      (let _lhsOppDL :: ([PP_Doc])
                           _lhsOidCL :: ([(Identifier,Type)])
                           _lhsOppCSF :: ([(Identifier,PP_Doc)])
                           _lhsOppL :: PP_Doc
                           _lhsOppR :: PP_Doc
-                          -- "AG2AspectAG.ag"(line 90, column 33)
+                          -- "AG2AspectAG.ag"(line 125, column 33)
                           _lhsOppDL =
-                              ({-# LINE 90 "AG2AspectAG.ag" #-}
+                              ({-# LINE 125 "AG2AspectAG.ag" #-}
                                []
-                               {-# LINE 412 "AG2AspectAG.hs" #-})
-                          -- use rule "AG2AspectAG.ag"(line 225, column 31)
+                               {-# LINE 443 "AG2AspectAG.hs" #-})
+                          -- use rule "AG2AspectAG.ag"(line 260, column 31)
                           _lhsOidCL =
-                              ({-# LINE 225 "AG2AspectAG.ag" #-}
+                              ({-# LINE 260 "AG2AspectAG.ag" #-}
                                []
-                               {-# LINE 417 "AG2AspectAG.hs" #-})
-                          -- use rule "AG2AspectAG.ag"(line 385, column 34)
+                               {-# LINE 448 "AG2AspectAG.hs" #-})
+                          -- use rule "AG2AspectAG.ag"(line 429, column 34)
                           _lhsOppCSF =
-                              ({-# LINE 385 "AG2AspectAG.ag" #-}
+                              ({-# LINE 429 "AG2AspectAG.ag" #-}
                                []
-                               {-# LINE 422 "AG2AspectAG.hs" #-})
-                          -- use rule "AG2AspectAG.ag"(line 110, column 79)
+                               {-# LINE 453 "AG2AspectAG.hs" #-})
+                          -- use rule "AG2AspectAG.ag"(line 145, column 79)
                           _lhsOppL =
-                              ({-# LINE 110 "AG2AspectAG.ag" #-}
+                              ({-# LINE 145 "AG2AspectAG.ag" #-}
                                empty
-                               {-# LINE 427 "AG2AspectAG.hs" #-})
-                          -- use rule "AG2AspectAG.ag"(line 184, column 79)
+                               {-# LINE 458 "AG2AspectAG.hs" #-})
+                          -- use rule "AG2AspectAG.ag"(line 219, column 79)
                           _lhsOppR =
-                              ({-# LINE 184 "AG2AspectAG.ag" #-}
+                              ({-# LINE 219 "AG2AspectAG.ag" #-}
                                empty
-                               {-# LINE 432 "AG2AspectAG.hs" #-})
+                               {-# LINE 463 "AG2AspectAG.hs" #-})
                       in  ( _lhsOidCL,_lhsOppCSF,_lhsOppDL,_lhsOppL,_lhsOppR))) )
 -- Expression --------------------------------------------------
 {-
@@ -467,15 +498,17 @@
     (T_Expression (\ _lhsIppNt
                      _lhsIppProd ->
                        (let _lhsOppRE :: (Identifier -> [(Identifier,Type)] -> [Identifier] -> PP_Doc)
-                            -- "AG2AspectAG.ag"(line 221, column 25)
+                            -- "AG2AspectAG.ag"(line 256, column 25)
                             _lhsOppRE =
-                                ({-# LINE 221 "AG2AspectAG.ag" #-}
+                                ({-# LINE 256 "AG2AspectAG.ag" #-}
                                  rhsRule _lhsIppNt _lhsIppProd tks_
-                                 {-# LINE 475 "AG2AspectAG.hs" #-})
+                                 {-# LINE 506 "AG2AspectAG.hs" #-})
                         in  ( _lhsOppRE))) )
 -- Grammar -----------------------------------------------------
 {-
    visit 0:
+      inherited attribute:
+         options              : Options
       synthesized attribute:
          pp                   : PP_Doc
    alternatives:
@@ -500,14 +533,15 @@
 sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap _augmentsMap _aroundsMap _mergeMap )  =
     (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts ) _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap _augmentsMap _aroundsMap _mergeMap )
 -- semantic domain
-newtype T_Grammar  = T_Grammar (( PP_Doc))
-data Inh_Grammar  = Inh_Grammar {}
+newtype T_Grammar  = T_Grammar (Options ->
+                                ( PP_Doc))
+data Inh_Grammar  = Inh_Grammar {options_Inh_Grammar :: Options}
 data Syn_Grammar  = Syn_Grammar {pp_Syn_Grammar :: PP_Doc}
 wrap_Grammar :: T_Grammar  ->
                 Inh_Grammar  ->
                 Syn_Grammar 
-wrap_Grammar (T_Grammar sem ) (Inh_Grammar )  =
-    (let ( _lhsOpp) = sem 
+wrap_Grammar (T_Grammar sem ) (Inh_Grammar _lhsIoptions )  =
+    (let ( _lhsOpp) = sem _lhsIoptions 
      in  (Syn_Grammar _lhsOpp ))
 sem_Grammar_Grammar :: TypeSyns ->
                        UseMap ->
@@ -524,39 +558,59 @@
                        (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) ->
                        T_Grammar 
 sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_ ) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ uniqueMap_ augmentsMap_ aroundsMap_ mergeMap_  =
-    (T_Grammar (let _lhsOpp :: PP_Doc
-                    _nontsOderivs :: Derivings
-                    _nontsOtSyns :: TypeSyns
-                    _nontsIppA :: PP_Doc
-                    _nontsIppD :: PP_Doc
-                    _nontsIppL :: PP_Doc
-                    _nontsIppNtL :: PP_Doc
-                    _nontsIppR :: PP_Doc
-                    _nontsIppS :: PP_Doc
-                    _nontsIppW :: PP_Doc
-                    -- "AG2AspectAG.ag"(line 36, column 25)
-                    _lhsOpp =
-                        ({-# LINE 36 "AG2AspectAG.ag" #-}
-                         pp "-- datatypes"               >-< _nontsIppD >-<
-                         pp "-- labels"                  >-< _nontsIppL >-<
-                         pp "-- attributes"              >-< defAtts >-< _nontsIppA >-<
-                         pp "-- rules"                   >-< pp "listNt = " >|< _nontsIppNtL >-< _nontsIppR >-<
-                         pp "-- semantic functions"      >-< _nontsIppS >-<
-                         pp "-- wrappers"                >-< _nontsIppW
-                         {-# LINE 547 "AG2AspectAG.hs" #-})
-                    -- "AG2AspectAG.ag"(line 63, column 25)
-                    _nontsOderivs =
-                        ({-# LINE 63 "AG2AspectAG.ag" #-}
-                         derivings_
-                         {-# LINE 552 "AG2AspectAG.hs" #-})
-                    -- "AG2AspectAG.ag"(line 102, column 34)
-                    _nontsOtSyns =
-                        ({-# LINE 102 "AG2AspectAG.ag" #-}
-                         typeSyns_
-                         {-# LINE 557 "AG2AspectAG.hs" #-})
-                    ( _nontsIppA,_nontsIppD,_nontsIppL,_nontsIppNtL,_nontsIppR,_nontsIppS,_nontsIppW) =
-                        nonts_ _nontsOderivs _nontsOtSyns 
-                in  ( _lhsOpp)) )
+    (T_Grammar (\ _lhsIoptions ->
+                    (let _nontsOo_rename :: Bool
+                         _lhsOpp :: PP_Doc
+                         _nontsOderivs :: Derivings
+                         _nontsOtSyns :: TypeSyns
+                         _nontsIppA :: PP_Doc
+                         _nontsIppCata :: PP_Doc
+                         _nontsIppD :: PP_Doc
+                         _nontsIppL :: PP_Doc
+                         _nontsIppNtL :: PP_Doc
+                         _nontsIppR :: PP_Doc
+                         _nontsIppSF :: PP_Doc
+                         _nontsIppW :: PP_Doc
+                         -- "AG2AspectAG.ag"(line 39, column 14)
+                         _nontsOo_rename =
+                             ({-# LINE 39 "AG2AspectAG.ag" #-}
+                              rename    _lhsIoptions
+                              {-# LINE 579 "AG2AspectAG.hs" #-})
+                         -- "AG2AspectAG.ag"(line 46, column 25)
+                         _lhsOpp =
+                             ({-# LINE 46 "AG2AspectAG.ag" #-}
+                              (if dataTypes _lhsIoptions
+                              then  pp "-- datatypes"               >-< _nontsIppD >-<
+                                    pp "-- labels"                  >-< _nontsIppL
+                              else  empty)
+                              >-<
+                              (if folds _lhsIoptions
+                              then  pp "-- attributes"              >-< defAtts >-< _nontsIppA >-<
+                                    pp "-- rules"                   >-< pp "listNt = " >|< _nontsIppNtL >-< _nontsIppR >-<
+                                    pp "-- catas"                   >-< _nontsIppCata
+                              else  empty)
+                              >-<
+                              (if semfuns _lhsIoptions
+                              then  pp "-- semantic functions"      >-< _nontsIppSF
+                              else  empty)
+                              >-<
+                              (if wrappers _lhsIoptions
+                              then  pp "-- wrappers"    >-< _nontsIppW
+                              else  empty)
+                              {-# LINE 601 "AG2AspectAG.hs" #-})
+                         -- "AG2AspectAG.ag"(line 91, column 25)
+                         _nontsOderivs =
+                             ({-# LINE 91 "AG2AspectAG.ag" #-}
+                              derivings_
+                              {-# LINE 606 "AG2AspectAG.hs" #-})
+                         -- "AG2AspectAG.ag"(line 137, column 34)
+                         _nontsOtSyns =
+                             ({-# LINE 137 "AG2AspectAG.ag" #-}
+                              typeSyns_
+                              {-# LINE 611 "AG2AspectAG.hs" #-})
+                         ( _nontsIppA,_nontsIppCata,_nontsIppD,_nontsIppL,_nontsIppNtL,_nontsIppR,_nontsIppSF,_nontsIppW) =
+                             nonts_ _nontsOderivs _nontsOo_rename _nontsOtSyns 
+                     in  ( _lhsOpp))) )
 -- HsToken -----------------------------------------------------
 {-
    alternatives:
@@ -710,14 +764,16 @@
    visit 0:
       inherited attributes:
          derivs               : Derivings
+         o_rename             : Bool
          tSyns                : TypeSyns
       synthesized attributes:
          ppA                  : PP_Doc
+         ppCata               : PP_Doc
          ppD                  : PP_Doc
          ppL                  : PP_Doc
          ppNtL                : PP_Doc
          ppR                  : PP_Doc
-         ppS                  : PP_Doc
+         ppSF                 : PP_Doc
          ppW                  : PP_Doc
    alternatives:
       alternative Nonterminal:
@@ -734,16 +790,17 @@
     (sem_Nonterminal_Nonterminal _nt _params _inh _syn (sem_Productions _prods ) )
 -- semantic domain
 newtype T_Nonterminal  = T_Nonterminal (Derivings ->
+                                        Bool ->
                                         TypeSyns ->
-                                        ( PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc))
-data Inh_Nonterminal  = Inh_Nonterminal {derivs_Inh_Nonterminal :: Derivings,tSyns_Inh_Nonterminal :: TypeSyns}
-data Syn_Nonterminal  = Syn_Nonterminal {ppA_Syn_Nonterminal :: PP_Doc,ppD_Syn_Nonterminal :: PP_Doc,ppL_Syn_Nonterminal :: PP_Doc,ppNtL_Syn_Nonterminal :: PP_Doc,ppR_Syn_Nonterminal :: PP_Doc,ppS_Syn_Nonterminal :: PP_Doc,ppW_Syn_Nonterminal :: PP_Doc}
+                                        ( PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc))
+data Inh_Nonterminal  = Inh_Nonterminal {derivs_Inh_Nonterminal :: Derivings,o_rename_Inh_Nonterminal :: Bool,tSyns_Inh_Nonterminal :: TypeSyns}
+data Syn_Nonterminal  = Syn_Nonterminal {ppA_Syn_Nonterminal :: PP_Doc,ppCata_Syn_Nonterminal :: PP_Doc,ppD_Syn_Nonterminal :: PP_Doc,ppL_Syn_Nonterminal :: PP_Doc,ppNtL_Syn_Nonterminal :: PP_Doc,ppR_Syn_Nonterminal :: PP_Doc,ppSF_Syn_Nonterminal :: PP_Doc,ppW_Syn_Nonterminal :: PP_Doc}
 wrap_Nonterminal :: T_Nonterminal  ->
                     Inh_Nonterminal  ->
                     Syn_Nonterminal 
-wrap_Nonterminal (T_Nonterminal sem ) (Inh_Nonterminal _lhsIderivs _lhsItSyns )  =
-    (let ( _lhsOppA,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppS,_lhsOppW) = sem _lhsIderivs _lhsItSyns 
-     in  (Syn_Nonterminal _lhsOppA _lhsOppD _lhsOppL _lhsOppNtL _lhsOppR _lhsOppS _lhsOppW ))
+wrap_Nonterminal (T_Nonterminal sem ) (Inh_Nonterminal _lhsIderivs _lhsIo_rename _lhsItSyns )  =
+    (let ( _lhsOppA,_lhsOppCata,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppSF,_lhsOppW) = sem _lhsIderivs _lhsIo_rename _lhsItSyns 
+     in  (Syn_Nonterminal _lhsOppA _lhsOppCata _lhsOppD _lhsOppL _lhsOppNtL _lhsOppR _lhsOppSF _lhsOppW ))
 sem_Nonterminal_Nonterminal :: NontermIdent ->
                                ([Identifier]) ->
                                Attributes ->
@@ -752,6 +809,7 @@
                                T_Nonterminal 
 sem_Nonterminal_Nonterminal nt_ params_ inh_ syn_ (T_Productions prods_ )  =
     (T_Nonterminal (\ _lhsIderivs
+                      _lhsIo_rename
                       _lhsItSyns ->
                         (let _prodsOppNt :: PP_Doc
                              _lhsOppD :: PP_Doc
@@ -759,88 +817,103 @@
                              _lhsOppA :: PP_Doc
                              _lhsOppNtL :: PP_Doc
                              _lhsOppR :: PP_Doc
-                             _lhsOppS :: PP_Doc
+                             _lhsOppCata :: PP_Doc
+                             _lhsOppSF :: PP_Doc
                              _lhsOppW :: PP_Doc
+                             _prodsOo_rename :: Bool
                              _prodsIppA :: PP_Doc
+                             _prodsIppCata :: PP_Doc
                              _prodsIppDL :: ([PP_Doc])
                              _prodsIppL :: PP_Doc
                              _prodsIppR :: PP_Doc
-                             _prodsIppS :: PP_Doc
                              _prodsIppSF :: PP_Doc
-                             -- "AG2AspectAG.ag"(line 50, column 25)
+                             -- "AG2AspectAG.ag"(line 78, column 25)
                              _prodsOppNt =
-                                 ({-# LINE 50 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 78 "AG2AspectAG.ag" #-}
                                   pp nt_
-                                  {-# LINE 775 "AG2AspectAG.hs" #-})
-                             -- "AG2AspectAG.ag"(line 69, column 25)
+                                  {-# LINE 835 "AG2AspectAG.hs" #-})
+                             -- "AG2AspectAG.ag"(line 97, column 25)
                              _lhsOppD =
-                                 ({-# LINE 69 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 97 "AG2AspectAG.ag" #-}
                                   case (lookup nt_ _lhsItSyns) of
                                    Nothing ->  pp "data " >|< pp nt_ >|< " = " >|< vlist_sep " | " _prodsIppDL >-<
                                                case (Map.lookup nt_ _lhsIderivs) of
                                                 Just ntds -> pp "  deriving " >|<  (ppListSep "(" ")" ", " $ Set.elems ntds)
                                                 Nothing   -> empty
                                    Just tp ->  pp "type " >|< pp nt_ >|< " = " >|< ppShow tp
-                                  {-# LINE 785 "AG2AspectAG.hs" #-})
-                             -- "AG2AspectAG.ag"(line 113, column 25)
+                                  {-# LINE 845 "AG2AspectAG.hs" #-})
+                             -- "AG2AspectAG.ag"(line 148, column 25)
                              _lhsOppL =
-                                 ({-# LINE 113 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 148 "AG2AspectAG.ag" #-}
                                   pp "nt_" >|< pp nt_ >|< " = proxy :: Proxy " >|< pp nt_ >-<
                                   _prodsIppL
-                                  {-# LINE 791 "AG2AspectAG.hs" #-})
-                             -- "AG2AspectAG.ag"(line 135, column 25)
+                                  {-# LINE 851 "AG2AspectAG.hs" #-})
+                             -- "AG2AspectAG.ag"(line 170, column 25)
                              _lhsOppA =
-                                 ({-# LINE 135 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 170 "AG2AspectAG.ag" #-}
                                   defTAtt "inh" (pp nt_) inh_ >-<
                                   defTAtt "syn" (pp nt_) syn_ >-<
                                   _prodsIppA
-                                  {-# LINE 798 "AG2AspectAG.hs" #-})
-                             -- "AG2AspectAG.ag"(line 180, column 25)
+                                  {-# LINE 858 "AG2AspectAG.hs" #-})
+                             -- "AG2AspectAG.ag"(line 215, column 25)
                              _lhsOppNtL =
-                                 ({-# LINE 180 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 215 "AG2AspectAG.ag" #-}
                                   pp "nt_" >|< pp nt_ >|< pp " .*. "
-                                  {-# LINE 803 "AG2AspectAG.hs" #-})
-                             -- "AG2AspectAG.ag"(line 187, column 25)
+                                  {-# LINE 863 "AG2AspectAG.hs" #-})
+                             -- "AG2AspectAG.ag"(line 222, column 25)
                              _lhsOppR =
-                                 ({-# LINE 187 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 222 "AG2AspectAG.ag" #-}
                                   pp "----" >|< pp nt_ >-< _prodsIppR
-                                  {-# LINE 808 "AG2AspectAG.hs" #-})
-                             -- "AG2AspectAG.ag"(line 347, column 25)
-                             _lhsOppS =
-                                 ({-# LINE 347 "AG2AspectAG.ag" #-}
+                                  {-# LINE 868 "AG2AspectAG.hs" #-})
+                             -- "AG2AspectAG.ag"(line 382, column 25)
+                             _lhsOppCata =
+                                 ({-# LINE 382 "AG2AspectAG.ag" #-}
                                   let   ppNt = pp nt_
                                   in    pp "----" >|< ppNt >-<
+                                        _prodsIppCata
+                                  {-# LINE 875 "AG2AspectAG.hs" #-})
+                             -- "AG2AspectAG.ag"(line 403, column 25)
+                             _lhsOppSF =
+                                 ({-# LINE 403 "AG2AspectAG.ag" #-}
+                                  let   ppNt = pp nt_
+                                  in    pp "----" >|< ppNt >-<
                                         pp "type T_" >|< ppNt >|< pp " = " >|<
                                         pp "(Record (HCons (LVPair (Proxy Att_inh) Inh_" >|< ppNt >|< pp ") HNil)) -> " >|<
                                         pp "(Record (HCons (LVPair (Proxy Att_syn) Syn_" >|< ppNt >|< pp ") HNil))"     >-<
                                         pp "instance SemType T_" >|< ppNt >|< pp " " >|< ppNt >-<
-                                        _prodsIppS >-<
                                         pp "-- sem_" >|< ppNt >|< pp " :: " >|< ppNt >|< pp " -> T_" >|<  ppNt >-<
                                         _prodsIppSF
-                                  {-# LINE 821 "AG2AspectAG.hs" #-})
-                             -- "AG2AspectAG.ag"(line 406, column 25)
+                                  {-# LINE 887 "AG2AspectAG.hs" #-})
+                             -- "AG2AspectAG.ag"(line 450, column 25)
                              _lhsOppW =
-                                 ({-# LINE 406 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 450 "AG2AspectAG.ag" #-}
                                   pp "wrap_" >|< pp nt_ >|< pp " sem _inh = " >-<
                                   pp "  let (Record (HCons _syn HNil)) = sem (att_inh .=. _inh .*. emptyRecord)" >|<
                                   pp "  in  (valueLVPair _syn)"
-                                  {-# LINE 828 "AG2AspectAG.hs" #-})
-                             ( _prodsIppA,_prodsIppDL,_prodsIppL,_prodsIppR,_prodsIppS,_prodsIppSF) =
-                                 prods_ _prodsOppNt 
-                         in  ( _lhsOppA,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppS,_lhsOppW))) )
+                                  {-# LINE 894 "AG2AspectAG.hs" #-})
+                             -- copy rule (down)
+                             _prodsOo_rename =
+                                 ({-# LINE 37 "AG2AspectAG.ag" #-}
+                                  _lhsIo_rename
+                                  {-# LINE 899 "AG2AspectAG.hs" #-})
+                             ( _prodsIppA,_prodsIppCata,_prodsIppDL,_prodsIppL,_prodsIppR,_prodsIppSF) =
+                                 prods_ _prodsOo_rename _prodsOppNt 
+                         in  ( _lhsOppA,_lhsOppCata,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppSF,_lhsOppW))) )
 -- Nonterminals ------------------------------------------------
 {-
    visit 0:
       inherited attributes:
          derivs               : Derivings
+         o_rename             : Bool
          tSyns                : TypeSyns
       synthesized attributes:
          ppA                  : PP_Doc
+         ppCata               : PP_Doc
          ppD                  : PP_Doc
          ppL                  : PP_Doc
          ppNtL                : PP_Doc
          ppR                  : PP_Doc
-         ppS                  : PP_Doc
+         ppSF                 : PP_Doc
          ppW                  : PP_Doc
    alternatives:
       alternative Cons:
@@ -855,154 +928,183 @@
     (Prelude.foldr sem_Nonterminals_Cons sem_Nonterminals_Nil (Prelude.map sem_Nonterminal list) )
 -- semantic domain
 newtype T_Nonterminals  = T_Nonterminals (Derivings ->
+                                          Bool ->
                                           TypeSyns ->
-                                          ( PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc))
-data Inh_Nonterminals  = Inh_Nonterminals {derivs_Inh_Nonterminals :: Derivings,tSyns_Inh_Nonterminals :: TypeSyns}
-data Syn_Nonterminals  = Syn_Nonterminals {ppA_Syn_Nonterminals :: PP_Doc,ppD_Syn_Nonterminals :: PP_Doc,ppL_Syn_Nonterminals :: PP_Doc,ppNtL_Syn_Nonterminals :: PP_Doc,ppR_Syn_Nonterminals :: PP_Doc,ppS_Syn_Nonterminals :: PP_Doc,ppW_Syn_Nonterminals :: PP_Doc}
+                                          ( PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc))
+data Inh_Nonterminals  = Inh_Nonterminals {derivs_Inh_Nonterminals :: Derivings,o_rename_Inh_Nonterminals :: Bool,tSyns_Inh_Nonterminals :: TypeSyns}
+data Syn_Nonterminals  = Syn_Nonterminals {ppA_Syn_Nonterminals :: PP_Doc,ppCata_Syn_Nonterminals :: PP_Doc,ppD_Syn_Nonterminals :: PP_Doc,ppL_Syn_Nonterminals :: PP_Doc,ppNtL_Syn_Nonterminals :: PP_Doc,ppR_Syn_Nonterminals :: PP_Doc,ppSF_Syn_Nonterminals :: PP_Doc,ppW_Syn_Nonterminals :: PP_Doc}
 wrap_Nonterminals :: T_Nonterminals  ->
                      Inh_Nonterminals  ->
                      Syn_Nonterminals 
-wrap_Nonterminals (T_Nonterminals sem ) (Inh_Nonterminals _lhsIderivs _lhsItSyns )  =
-    (let ( _lhsOppA,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppS,_lhsOppW) = sem _lhsIderivs _lhsItSyns 
-     in  (Syn_Nonterminals _lhsOppA _lhsOppD _lhsOppL _lhsOppNtL _lhsOppR _lhsOppS _lhsOppW ))
+wrap_Nonterminals (T_Nonterminals sem ) (Inh_Nonterminals _lhsIderivs _lhsIo_rename _lhsItSyns )  =
+    (let ( _lhsOppA,_lhsOppCata,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppSF,_lhsOppW) = sem _lhsIderivs _lhsIo_rename _lhsItSyns 
+     in  (Syn_Nonterminals _lhsOppA _lhsOppCata _lhsOppD _lhsOppL _lhsOppNtL _lhsOppR _lhsOppSF _lhsOppW ))
 sem_Nonterminals_Cons :: T_Nonterminal  ->
                          T_Nonterminals  ->
                          T_Nonterminals 
 sem_Nonterminals_Cons (T_Nonterminal hd_ ) (T_Nonterminals tl_ )  =
     (T_Nonterminals (\ _lhsIderivs
+                       _lhsIo_rename
                        _lhsItSyns ->
                          (let _lhsOppA :: PP_Doc
+                              _lhsOppCata :: PP_Doc
                               _lhsOppD :: PP_Doc
                               _lhsOppL :: PP_Doc
                               _lhsOppNtL :: PP_Doc
                               _lhsOppR :: PP_Doc
-                              _lhsOppS :: PP_Doc
+                              _lhsOppSF :: PP_Doc
                               _lhsOppW :: PP_Doc
                               _hdOderivs :: Derivings
+                              _hdOo_rename :: Bool
                               _hdOtSyns :: TypeSyns
                               _tlOderivs :: Derivings
+                              _tlOo_rename :: Bool
                               _tlOtSyns :: TypeSyns
                               _hdIppA :: PP_Doc
+                              _hdIppCata :: PP_Doc
                               _hdIppD :: PP_Doc
                               _hdIppL :: PP_Doc
                               _hdIppNtL :: PP_Doc
                               _hdIppR :: PP_Doc
-                              _hdIppS :: PP_Doc
+                              _hdIppSF :: PP_Doc
                               _hdIppW :: PP_Doc
                               _tlIppA :: PP_Doc
+                              _tlIppCata :: PP_Doc
                               _tlIppD :: PP_Doc
                               _tlIppL :: PP_Doc
                               _tlIppNtL :: PP_Doc
                               _tlIppR :: PP_Doc
-                              _tlIppS :: PP_Doc
+                              _tlIppSF :: PP_Doc
                               _tlIppW :: PP_Doc
-                              -- use rule "AG2AspectAG.ag"(line 132, column 64)
+                              -- use rule "AG2AspectAG.ag"(line 167, column 64)
                               _lhsOppA =
-                                  ({-# LINE 132 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 167 "AG2AspectAG.ag" #-}
                                    _hdIppA >-< _tlIppA
-                                   {-# LINE 904 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 66, column 52)
+                                   {-# LINE 984 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 379, column 67)
+                              _lhsOppCata =
+                                  ({-# LINE 379 "AG2AspectAG.ag" #-}
+                                   _hdIppCata >-< _tlIppCata
+                                   {-# LINE 989 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 94, column 52)
                               _lhsOppD =
-                                  ({-# LINE 66 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 94 "AG2AspectAG.ag" #-}
                                    _hdIppD >-< _tlIppD
-                                   {-# LINE 909 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 110, column 79)
+                                   {-# LINE 994 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 145, column 79)
                               _lhsOppL =
-                                  ({-# LINE 110 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 145 "AG2AspectAG.ag" #-}
                                    _hdIppL >-< _tlIppL
-                                   {-# LINE 914 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 177, column 44)
+                                   {-# LINE 999 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 212, column 44)
                               _lhsOppNtL =
-                                  ({-# LINE 177 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 212 "AG2AspectAG.ag" #-}
                                    _hdIppNtL >|< _tlIppNtL
-                                   {-# LINE 919 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 184, column 79)
+                                   {-# LINE 1004 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 219, column 79)
                               _lhsOppR =
-                                  ({-# LINE 184 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 219 "AG2AspectAG.ag" #-}
                                    _hdIppR >-< _tlIppR
-                                   {-# LINE 924 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 344, column 64)
-                              _lhsOppS =
-                                  ({-# LINE 344 "AG2AspectAG.ag" #-}
-                                   _hdIppS >-< _tlIppS
-                                   {-# LINE 929 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 403, column 42)
+                                   {-# LINE 1009 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 400, column 66)
+                              _lhsOppSF =
+                                  ({-# LINE 400 "AG2AspectAG.ag" #-}
+                                   _hdIppSF >-< _tlIppSF
+                                   {-# LINE 1014 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 447, column 42)
                               _lhsOppW =
-                                  ({-# LINE 403 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 447 "AG2AspectAG.ag" #-}
                                    _hdIppW >-< _tlIppW
-                                   {-# LINE 934 "AG2AspectAG.hs" #-})
+                                   {-# LINE 1019 "AG2AspectAG.hs" #-})
                               -- copy rule (down)
                               _hdOderivs =
-                                  ({-# LINE 60 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 88 "AG2AspectAG.ag" #-}
                                    _lhsIderivs
-                                   {-# LINE 939 "AG2AspectAG.hs" #-})
+                                   {-# LINE 1024 "AG2AspectAG.hs" #-})
                               -- copy rule (down)
+                              _hdOo_rename =
+                                  ({-# LINE 37 "AG2AspectAG.ag" #-}
+                                   _lhsIo_rename
+                                   {-# LINE 1029 "AG2AspectAG.hs" #-})
+                              -- copy rule (down)
                               _hdOtSyns =
-                                  ({-# LINE 99 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 134 "AG2AspectAG.ag" #-}
                                    _lhsItSyns
-                                   {-# LINE 944 "AG2AspectAG.hs" #-})
+                                   {-# LINE 1034 "AG2AspectAG.hs" #-})
                               -- copy rule (down)
                               _tlOderivs =
-                                  ({-# LINE 60 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 88 "AG2AspectAG.ag" #-}
                                    _lhsIderivs
-                                   {-# LINE 949 "AG2AspectAG.hs" #-})
+                                   {-# LINE 1039 "AG2AspectAG.hs" #-})
                               -- copy rule (down)
+                              _tlOo_rename =
+                                  ({-# LINE 37 "AG2AspectAG.ag" #-}
+                                   _lhsIo_rename
+                                   {-# LINE 1044 "AG2AspectAG.hs" #-})
+                              -- copy rule (down)
                               _tlOtSyns =
-                                  ({-# LINE 99 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 134 "AG2AspectAG.ag" #-}
                                    _lhsItSyns
-                                   {-# LINE 954 "AG2AspectAG.hs" #-})
-                              ( _hdIppA,_hdIppD,_hdIppL,_hdIppNtL,_hdIppR,_hdIppS,_hdIppW) =
-                                  hd_ _hdOderivs _hdOtSyns 
-                              ( _tlIppA,_tlIppD,_tlIppL,_tlIppNtL,_tlIppR,_tlIppS,_tlIppW) =
-                                  tl_ _tlOderivs _tlOtSyns 
-                          in  ( _lhsOppA,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppS,_lhsOppW))) )
+                                   {-# LINE 1049 "AG2AspectAG.hs" #-})
+                              ( _hdIppA,_hdIppCata,_hdIppD,_hdIppL,_hdIppNtL,_hdIppR,_hdIppSF,_hdIppW) =
+                                  hd_ _hdOderivs _hdOo_rename _hdOtSyns 
+                              ( _tlIppA,_tlIppCata,_tlIppD,_tlIppL,_tlIppNtL,_tlIppR,_tlIppSF,_tlIppW) =
+                                  tl_ _tlOderivs _tlOo_rename _tlOtSyns 
+                          in  ( _lhsOppA,_lhsOppCata,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppSF,_lhsOppW))) )
 sem_Nonterminals_Nil :: T_Nonterminals 
 sem_Nonterminals_Nil  =
     (T_Nonterminals (\ _lhsIderivs
+                       _lhsIo_rename
                        _lhsItSyns ->
                          (let _lhsOppA :: PP_Doc
+                              _lhsOppCata :: PP_Doc
                               _lhsOppD :: PP_Doc
                               _lhsOppL :: PP_Doc
                               _lhsOppNtL :: PP_Doc
                               _lhsOppR :: PP_Doc
-                              _lhsOppS :: PP_Doc
+                              _lhsOppSF :: PP_Doc
                               _lhsOppW :: PP_Doc
-                              -- use rule "AG2AspectAG.ag"(line 132, column 64)
+                              -- use rule "AG2AspectAG.ag"(line 167, column 64)
                               _lhsOppA =
-                                  ({-# LINE 132 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 167 "AG2AspectAG.ag" #-}
                                    empty
-                                   {-# LINE 975 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 66, column 52)
+                                   {-# LINE 1072 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 379, column 67)
+                              _lhsOppCata =
+                                  ({-# LINE 379 "AG2AspectAG.ag" #-}
+                                   empty
+                                   {-# LINE 1077 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 94, column 52)
                               _lhsOppD =
-                                  ({-# LINE 66 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 94 "AG2AspectAG.ag" #-}
                                    empty
-                                   {-# LINE 980 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 110, column 79)
+                                   {-# LINE 1082 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 145, column 79)
                               _lhsOppL =
-                                  ({-# LINE 110 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 145 "AG2AspectAG.ag" #-}
                                    empty
-                                   {-# LINE 985 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 177, column 44)
+                                   {-# LINE 1087 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 212, column 44)
                               _lhsOppNtL =
-                                  ({-# LINE 177 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 212 "AG2AspectAG.ag" #-}
                                    pp "hNil"
-                                   {-# LINE 990 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 184, column 79)
+                                   {-# LINE 1092 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 219, column 79)
                               _lhsOppR =
-                                  ({-# LINE 184 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 219 "AG2AspectAG.ag" #-}
                                    empty
-                                   {-# LINE 995 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 344, column 64)
-                              _lhsOppS =
-                                  ({-# LINE 344 "AG2AspectAG.ag" #-}
+                                   {-# LINE 1097 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 400, column 66)
+                              _lhsOppSF =
+                                  ({-# LINE 400 "AG2AspectAG.ag" #-}
                                    empty
-                                   {-# LINE 1000 "AG2AspectAG.hs" #-})
-                              -- use rule "AG2AspectAG.ag"(line 403, column 42)
+                                   {-# LINE 1102 "AG2AspectAG.hs" #-})
+                              -- use rule "AG2AspectAG.ag"(line 447, column 42)
                               _lhsOppW =
-                                  ({-# LINE 403 "AG2AspectAG.ag" #-}
+                                  ({-# LINE 447 "AG2AspectAG.ag" #-}
                                    empty
-                                   {-# LINE 1005 "AG2AspectAG.hs" #-})
-                          in  ( _lhsOppA,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppS,_lhsOppW))) )
+                                   {-# LINE 1107 "AG2AspectAG.hs" #-})
+                          in  ( _lhsOppA,_lhsOppCata,_lhsOppD,_lhsOppL,_lhsOppNtL,_lhsOppR,_lhsOppSF,_lhsOppW))) )
 -- Pattern -----------------------------------------------------
 {-
    visit 0:
@@ -1070,21 +1172,21 @@
                     _patIcopy :: Pattern 
                     _patIinfo :: ((Identifier, Identifier))
                     _partsIcopy :: Patterns 
-                    -- "AG2AspectAG.ag"(line 204, column 25)
+                    -- "AG2AspectAG.ag"(line 239, column 25)
                     _lhsOinfo =
-                        ({-# LINE 204 "AG2AspectAG.ag" #-}
+                        ({-# LINE 239 "AG2AspectAG.ag" #-}
                          (field_, attr_)
-                         {-# LINE 1078 "AG2AspectAG.hs" #-})
+                         {-# LINE 1180 "AG2AspectAG.hs" #-})
                     -- self rule
                     _copy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          Alias field_ attr_ _patIcopy _partsIcopy
-                         {-# LINE 1083 "AG2AspectAG.hs" #-})
+                         {-# LINE 1185 "AG2AspectAG.hs" #-})
                     -- self rule
                     _lhsOcopy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          _copy
-                         {-# LINE 1088 "AG2AspectAG.hs" #-})
+                         {-# LINE 1190 "AG2AspectAG.hs" #-})
                     ( _patIcopy,_patIinfo) =
                         pat_ 
                     ( _partsIcopy) =
@@ -1097,21 +1199,21 @@
     (T_Pattern (let _lhsOinfo :: ((Identifier, Identifier))
                     _lhsOcopy :: Pattern 
                     _patsIcopy :: Patterns 
-                    -- "AG2AspectAG.ag"(line 205, column 25)
+                    -- "AG2AspectAG.ag"(line 240, column 25)
                     _lhsOinfo =
-                        ({-# LINE 205 "AG2AspectAG.ag" #-}
+                        ({-# LINE 240 "AG2AspectAG.ag" #-}
                          error "Pattern Constr undefined!!"
-                         {-# LINE 1105 "AG2AspectAG.hs" #-})
+                         {-# LINE 1207 "AG2AspectAG.hs" #-})
                     -- self rule
                     _copy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          Constr name_ _patsIcopy
-                         {-# LINE 1110 "AG2AspectAG.hs" #-})
+                         {-# LINE 1212 "AG2AspectAG.hs" #-})
                     -- self rule
                     _lhsOcopy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          _copy
-                         {-# LINE 1115 "AG2AspectAG.hs" #-})
+                         {-# LINE 1217 "AG2AspectAG.hs" #-})
                     ( _patsIcopy) =
                         pats_ 
                 in  ( _lhsOcopy,_lhsOinfo)) )
@@ -1126,17 +1228,17 @@
                     _copy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          Irrefutable _patIcopy
-                         {-# LINE 1130 "AG2AspectAG.hs" #-})
+                         {-# LINE 1232 "AG2AspectAG.hs" #-})
                     -- self rule
                     _lhsOcopy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          _copy
-                         {-# LINE 1135 "AG2AspectAG.hs" #-})
+                         {-# LINE 1237 "AG2AspectAG.hs" #-})
                     -- copy rule (up)
                     _lhsOinfo =
-                        ({-# LINE 202 "AG2AspectAG.ag" #-}
+                        ({-# LINE 237 "AG2AspectAG.ag" #-}
                          _patIinfo
-                         {-# LINE 1140 "AG2AspectAG.hs" #-})
+                         {-# LINE 1242 "AG2AspectAG.hs" #-})
                     ( _patIcopy,_patIinfo) =
                         pat_ 
                 in  ( _lhsOcopy,_lhsOinfo)) )
@@ -1147,21 +1249,21 @@
     (T_Pattern (let _lhsOinfo :: ((Identifier, Identifier))
                     _lhsOcopy :: Pattern 
                     _patsIcopy :: Patterns 
-                    -- "AG2AspectAG.ag"(line 206, column 25)
+                    -- "AG2AspectAG.ag"(line 241, column 25)
                     _lhsOinfo =
-                        ({-# LINE 206 "AG2AspectAG.ag" #-}
+                        ({-# LINE 241 "AG2AspectAG.ag" #-}
                          error "Pattern Product undefined!!"
-                         {-# LINE 1155 "AG2AspectAG.hs" #-})
+                         {-# LINE 1257 "AG2AspectAG.hs" #-})
                     -- self rule
                     _copy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          Product pos_ _patsIcopy
-                         {-# LINE 1160 "AG2AspectAG.hs" #-})
+                         {-# LINE 1262 "AG2AspectAG.hs" #-})
                     -- self rule
                     _lhsOcopy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          _copy
-                         {-# LINE 1165 "AG2AspectAG.hs" #-})
+                         {-# LINE 1267 "AG2AspectAG.hs" #-})
                     ( _patsIcopy) =
                         pats_ 
                 in  ( _lhsOcopy,_lhsOinfo)) )
@@ -1170,21 +1272,21 @@
 sem_Pattern_Underscore pos_  =
     (T_Pattern (let _lhsOinfo :: ((Identifier, Identifier))
                     _lhsOcopy :: Pattern 
-                    -- "AG2AspectAG.ag"(line 207, column 25)
+                    -- "AG2AspectAG.ag"(line 242, column 25)
                     _lhsOinfo =
-                        ({-# LINE 207 "AG2AspectAG.ag" #-}
+                        ({-# LINE 242 "AG2AspectAG.ag" #-}
                          error "Pattern Underscore undefined!!"
-                         {-# LINE 1178 "AG2AspectAG.hs" #-})
+                         {-# LINE 1280 "AG2AspectAG.hs" #-})
                     -- self rule
                     _copy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          Underscore pos_
-                         {-# LINE 1183 "AG2AspectAG.hs" #-})
+                         {-# LINE 1285 "AG2AspectAG.hs" #-})
                     -- self rule
                     _lhsOcopy =
                         ({-# LINE 23 "./Patterns.ag" #-}
                          _copy
-                         {-# LINE 1188 "AG2AspectAG.hs" #-})
+                         {-# LINE 1290 "AG2AspectAG.hs" #-})
                 in  ( _lhsOcopy,_lhsOinfo)) )
 -- Patterns ----------------------------------------------------
 {-
@@ -1228,12 +1330,12 @@
                      _copy =
                          ({-# LINE 23 "./Patterns.ag" #-}
                           (:) _hdIcopy _tlIcopy
-                          {-# LINE 1232 "AG2AspectAG.hs" #-})
+                          {-# LINE 1334 "AG2AspectAG.hs" #-})
                      -- self rule
                      _lhsOcopy =
                          ({-# LINE 23 "./Patterns.ag" #-}
                           _copy
-                          {-# LINE 1237 "AG2AspectAG.hs" #-})
+                          {-# LINE 1339 "AG2AspectAG.hs" #-})
                      ( _hdIcopy,_hdIinfo) =
                          hd_ 
                      ( _tlIcopy) =
@@ -1246,24 +1348,25 @@
                      _copy =
                          ({-# LINE 23 "./Patterns.ag" #-}
                           []
-                          {-# LINE 1250 "AG2AspectAG.hs" #-})
+                          {-# LINE 1352 "AG2AspectAG.hs" #-})
                      -- self rule
                      _lhsOcopy =
                          ({-# LINE 23 "./Patterns.ag" #-}
                           _copy
-                          {-# LINE 1255 "AG2AspectAG.hs" #-})
+                          {-# LINE 1357 "AG2AspectAG.hs" #-})
                  in  ( _lhsOcopy)) )
 -- Production --------------------------------------------------
 {-
    visit 0:
-      inherited attribute:
+      inherited attributes:
+         o_rename             : Bool
          ppNt                 : PP_Doc
       synthesized attributes:
          ppA                  : PP_Doc
+         ppCata               : PP_Doc
          ppD                  : PP_Doc
          ppL                  : PP_Doc
          ppR                  : PP_Doc
-         ppS                  : PP_Doc
          ppSF                 : PP_Doc
    alternatives:
       alternative Production:
@@ -1278,31 +1381,34 @@
 sem_Production (Production _con _children _rules _typeSigs )  =
     (sem_Production_Production _con (sem_Children _children ) (sem_Rules _rules ) (sem_TypeSigs _typeSigs ) )
 -- semantic domain
-newtype T_Production  = T_Production (PP_Doc ->
+newtype T_Production  = T_Production (Bool ->
+                                      PP_Doc ->
                                       ( PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc,PP_Doc))
-data Inh_Production  = Inh_Production {ppNt_Inh_Production :: PP_Doc}
-data Syn_Production  = Syn_Production {ppA_Syn_Production :: PP_Doc,ppD_Syn_Production :: PP_Doc,ppL_Syn_Production :: PP_Doc,ppR_Syn_Production :: PP_Doc,ppS_Syn_Production :: PP_Doc,ppSF_Syn_Production :: PP_Doc}
+data Inh_Production  = Inh_Production {o_rename_Inh_Production :: Bool,ppNt_Inh_Production :: PP_Doc}
+data Syn_Production  = Syn_Production {ppA_Syn_Production :: PP_Doc,ppCata_Syn_Production :: PP_Doc,ppD_Syn_Production :: PP_Doc,ppL_Syn_Production :: PP_Doc,ppR_Syn_Production :: PP_Doc,ppSF_Syn_Production :: PP_Doc}
 wrap_Production :: T_Production  ->
                    Inh_Production  ->
                    Syn_Production 
-wrap_Production (T_Production sem ) (Inh_Production _lhsIppNt )  =
-    (let ( _lhsOppA,_lhsOppD,_lhsOppL,_lhsOppR,_lhsOppS,_lhsOppSF) = sem _lhsIppNt 
-     in  (Syn_Production _lhsOppA _lhsOppD _lhsOppL _lhsOppR _lhsOppS _lhsOppSF ))
+wrap_Production (T_Production sem ) (Inh_Production _lhsIo_rename _lhsIppNt )  =
+    (let ( _lhsOppA,_lhsOppCata,_lhsOppD,_lhsOppL,_lhsOppR,_lhsOppSF) = sem _lhsIo_rename _lhsIppNt 
+     in  (Syn_Production _lhsOppA _lhsOppCata _lhsOppD _lhsOppL _lhsOppR _lhsOppSF ))
 sem_Production_Production :: ConstructorIdent ->
                              T_Children  ->
                              T_Rules  ->
                              T_TypeSigs  ->
                              T_Production 
 sem_Production_Production con_ (T_Children children_ ) (T_Rules rules_ ) (T_TypeSigs typeSigs_ )  =
-    (T_Production (\ _lhsIppNt ->
+    (T_Production (\ _lhsIo_rename
+                     _lhsIppNt ->
                        (let _childrenOppProd :: PP_Doc
                             _rulesOppProd :: PP_Doc
                             _lhsOppD :: PP_Doc
                             _lhsOppA :: PP_Doc
                             _lhsOppR :: PP_Doc
-                            _lhsOppS :: PP_Doc
+                            _lhsOppCata :: PP_Doc
                             _lhsOppSF :: PP_Doc
                             _lhsOppL :: PP_Doc
+                            _childrenOo_rename :: Bool
                             _childrenOppNt :: PP_Doc
                             _rulesOppNt :: PP_Doc
                             _childrenIidCL :: ([(Identifier,Type)])
@@ -1312,89 +1418,95 @@
                             _childrenIppR :: PP_Doc
                             _rulesIlocals :: ([Identifier])
                             _rulesIppRL :: ([((Identifier,Identifier),[(Identifier,Type)] -> [Identifier] -> PP_Doc)])
-                            -- "AG2AspectAG.ag"(line 56, column 25)
+                            -- "AG2AspectAG.ag"(line 84, column 25)
                             _childrenOppProd =
-                                ({-# LINE 56 "AG2AspectAG.ag" #-}
+                                ({-# LINE 84 "AG2AspectAG.ag" #-}
                                  pp con_
-                                 {-# LINE 1320 "AG2AspectAG.hs" #-})
-                            -- "AG2AspectAG.ag"(line 57, column 25)
+                                 {-# LINE 1426 "AG2AspectAG.hs" #-})
+                            -- "AG2AspectAG.ag"(line 85, column 25)
                             _rulesOppProd =
-                                ({-# LINE 57 "AG2AspectAG.ag" #-}
+                                ({-# LINE 85 "AG2AspectAG.ag" #-}
                                  pp con_
-                                 {-# LINE 1325 "AG2AspectAG.hs" #-})
-                            -- "AG2AspectAG.ag"(line 78, column 25)
+                                 {-# LINE 1431 "AG2AspectAG.hs" #-})
+                            -- "AG2AspectAG.ag"(line 106, column 25)
                             _lhsOppD =
-                                ({-# LINE 78 "AG2AspectAG.ag" #-}
-                                 let prodName = ppListSep "" "" "_" [_lhsIppNt, pp con_]
-                                 in  prodName >|< ppListSep " {" "}" ", " _childrenIppDL
-                                 {-# LINE 1331 "AG2AspectAG.hs" #-})
-                            -- "AG2AspectAG.ag"(line 140, column 25)
+                                ({-# LINE 106 "AG2AspectAG.ag" #-}
+                                 let ppProd = prodName _lhsIo_rename _lhsIppNt (pp con_)
+                                 in  ppProd >|< ppListSep " {" "}" ", " _childrenIppDL
+                                 {-# LINE 1437 "AG2AspectAG.hs" #-})
+                            -- "AG2AspectAG.ag"(line 175, column 25)
                             _lhsOppA =
-                                ({-# LINE 140 "AG2AspectAG.ag" #-}
+                                ({-# LINE 175 "AG2AspectAG.ag" #-}
                                  defLocalAtts _lhsIppNt (pp con_) (length _rulesIlocals) 1 $ sort _rulesIlocals
-                                 {-# LINE 1336 "AG2AspectAG.hs" #-})
-                            -- "AG2AspectAG.ag"(line 190, column 25)
+                                 {-# LINE 1442 "AG2AspectAG.hs" #-})
+                            -- "AG2AspectAG.ag"(line 225, column 25)
                             _lhsOppR =
-                                ({-# LINE 190 "AG2AspectAG.ag" #-}
+                                ({-# LINE 225 "AG2AspectAG.ag" #-}
                                  defInstRules _lhsIppNt con_ _childrenIppR _rulesIppRL _childrenIidCL _rulesIlocals >-<
                                  defLocRule   _lhsIppNt con_ _childrenIppR _rulesIppRL _childrenIidCL _rulesIlocals >-<
                                  defInhRule   _lhsIppNt con_ _childrenIppR _rulesIppRL _childrenIidCL _rulesIlocals >-<
                                  defSynRule   _lhsIppNt con_ _childrenIppR _rulesIppRL _childrenIidCL _rulesIlocals
-                                 {-# LINE 1344 "AG2AspectAG.hs" #-})
-                            -- "AG2AspectAG.ag"(line 359, column 25)
-                            _lhsOppS =
-                                ({-# LINE 359 "AG2AspectAG.ag" #-}
+                                 {-# LINE 1450 "AG2AspectAG.hs" #-})
+                            -- "AG2AspectAG.ag"(line 389, column 25)
+                            _lhsOppCata =
+                                ({-# LINE 389 "AG2AspectAG.ag" #-}
                                  let  ppProd = ppListSep "" "" "_" [_lhsIppNt, pp con_]
                                  in   pp "asp_" >|< ppProd >|< pp " = inh_" >|< ppProd >|<
                                                                pp " `ext` syn_"  >|< ppProd >|<
                                                                pp " `ext` loc_"  >|< ppProd >|<
                                                                pp " `ext` inst_" >|< ppProd >-<
                                       pp "sem_" >|< ppProd >|< pp " = knit asp_" >|< ppProd
-                                 {-# LINE 1354 "AG2AspectAG.hs" #-})
-                            -- "AG2AspectAG.ag"(line 370, column 25)
+                                 {-# LINE 1460 "AG2AspectAG.hs" #-})
+                            -- "AG2AspectAG.ag"(line 414, column 25)
                             _lhsOppSF =
-                                ({-# LINE 370 "AG2AspectAG.ag" #-}
+                                ({-# LINE 414 "AG2AspectAG.ag" #-}
                                  let  chi = _childrenIppCSF
                                       ppProd = ppListSep "" "" "_" [_lhsIppNt,pp con_]
                                       ppPattern = case (show con_) of
                                                    "Cons"    -> ppParams (ppListSep "" "" " : ")
                                                    "Nil"     -> pp "[]"
-                                                   otherwise -> ppProd >|< pp " " >|< (ppParams ppSpaced)
+                                                   otherwise -> prodName _lhsIo_rename _lhsIppNt (pp con_) >|< pp " " >|< (ppParams ppSpaced)
                                       ppParams f =   f $ map (((>|<) (pp "_")) . fst) chi
                                  in   pp "sem_" >|< _lhsIppNt >|< pp " (" >|< ppPattern >|< ") = sem_" >|< ppProd >|<
                                       pp " (" >|< map snd chi >|< pp "emptyRecord)"
-                                 {-# LINE 1367 "AG2AspectAG.hs" #-})
-                            -- use rule "AG2AspectAG.ag"(line 110, column 79)
+                                 {-# LINE 1473 "AG2AspectAG.hs" #-})
+                            -- use rule "AG2AspectAG.ag"(line 145, column 79)
                             _lhsOppL =
-                                ({-# LINE 110 "AG2AspectAG.ag" #-}
+                                ({-# LINE 145 "AG2AspectAG.ag" #-}
                                  _childrenIppL
-                                 {-# LINE 1372 "AG2AspectAG.hs" #-})
+                                 {-# LINE 1478 "AG2AspectAG.hs" #-})
                             -- copy rule (down)
+                            _childrenOo_rename =
+                                ({-# LINE 37 "AG2AspectAG.ag" #-}
+                                 _lhsIo_rename
+                                 {-# LINE 1483 "AG2AspectAG.hs" #-})
+                            -- copy rule (down)
                             _childrenOppNt =
-                                ({-# LINE 47 "AG2AspectAG.ag" #-}
+                                ({-# LINE 75 "AG2AspectAG.ag" #-}
                                  _lhsIppNt
-                                 {-# LINE 1377 "AG2AspectAG.hs" #-})
+                                 {-# LINE 1488 "AG2AspectAG.hs" #-})
                             -- copy rule (down)
                             _rulesOppNt =
-                                ({-# LINE 47 "AG2AspectAG.ag" #-}
+                                ({-# LINE 75 "AG2AspectAG.ag" #-}
                                  _lhsIppNt
-                                 {-# LINE 1382 "AG2AspectAG.hs" #-})
+                                 {-# LINE 1493 "AG2AspectAG.hs" #-})
                             ( _childrenIidCL,_childrenIppCSF,_childrenIppDL,_childrenIppL,_childrenIppR) =
-                                children_ _childrenOppNt _childrenOppProd 
+                                children_ _childrenOo_rename _childrenOppNt _childrenOppProd 
                             ( _rulesIlocals,_rulesIppRL) =
                                 rules_ _rulesOppNt _rulesOppProd 
-                        in  ( _lhsOppA,_lhsOppD,_lhsOppL,_lhsOppR,_lhsOppS,_lhsOppSF))) )
+                        in  ( _lhsOppA,_lhsOppCata,_lhsOppD,_lhsOppL,_lhsOppR,_lhsOppSF))) )
 -- Productions -------------------------------------------------
 {-
    visit 0:
-      inherited attribute:
+      inherited attributes:
+         o_rename             : Bool
          ppNt                 : PP_Doc
       synthesized attributes:
          ppA                  : PP_Doc
+         ppCata               : PP_Doc
          ppDL                 : [PP_Doc]
          ppL                  : PP_Doc
          ppR                  : PP_Doc
-         ppS                  : PP_Doc
          ppSF                 : PP_Doc
    alternatives:
       alternative Cons:
@@ -1408,126 +1520,141 @@
 sem_Productions list  =
     (Prelude.foldr sem_Productions_Cons sem_Productions_Nil (Prelude.map sem_Production list) )
 -- semantic domain
-newtype T_Productions  = T_Productions (PP_Doc ->
-                                        ( PP_Doc,([PP_Doc]),PP_Doc,PP_Doc,PP_Doc,PP_Doc))
-data Inh_Productions  = Inh_Productions {ppNt_Inh_Productions :: PP_Doc}
-data Syn_Productions  = Syn_Productions {ppA_Syn_Productions :: PP_Doc,ppDL_Syn_Productions :: ([PP_Doc]),ppL_Syn_Productions :: PP_Doc,ppR_Syn_Productions :: PP_Doc,ppS_Syn_Productions :: PP_Doc,ppSF_Syn_Productions :: PP_Doc}
+newtype T_Productions  = T_Productions (Bool ->
+                                        PP_Doc ->
+                                        ( PP_Doc,PP_Doc,([PP_Doc]),PP_Doc,PP_Doc,PP_Doc))
+data Inh_Productions  = Inh_Productions {o_rename_Inh_Productions :: Bool,ppNt_Inh_Productions :: PP_Doc}
+data Syn_Productions  = Syn_Productions {ppA_Syn_Productions :: PP_Doc,ppCata_Syn_Productions :: PP_Doc,ppDL_Syn_Productions :: ([PP_Doc]),ppL_Syn_Productions :: PP_Doc,ppR_Syn_Productions :: PP_Doc,ppSF_Syn_Productions :: PP_Doc}
 wrap_Productions :: T_Productions  ->
                     Inh_Productions  ->
                     Syn_Productions 
-wrap_Productions (T_Productions sem ) (Inh_Productions _lhsIppNt )  =
-    (let ( _lhsOppA,_lhsOppDL,_lhsOppL,_lhsOppR,_lhsOppS,_lhsOppSF) = sem _lhsIppNt 
-     in  (Syn_Productions _lhsOppA _lhsOppDL _lhsOppL _lhsOppR _lhsOppS _lhsOppSF ))
+wrap_Productions (T_Productions sem ) (Inh_Productions _lhsIo_rename _lhsIppNt )  =
+    (let ( _lhsOppA,_lhsOppCata,_lhsOppDL,_lhsOppL,_lhsOppR,_lhsOppSF) = sem _lhsIo_rename _lhsIppNt 
+     in  (Syn_Productions _lhsOppA _lhsOppCata _lhsOppDL _lhsOppL _lhsOppR _lhsOppSF ))
 sem_Productions_Cons :: T_Production  ->
                         T_Productions  ->
                         T_Productions 
 sem_Productions_Cons (T_Production hd_ ) (T_Productions tl_ )  =
-    (T_Productions (\ _lhsIppNt ->
+    (T_Productions (\ _lhsIo_rename
+                      _lhsIppNt ->
                         (let _lhsOppDL :: ([PP_Doc])
                              _lhsOppA :: PP_Doc
+                             _lhsOppCata :: PP_Doc
                              _lhsOppL :: PP_Doc
                              _lhsOppR :: PP_Doc
-                             _lhsOppS :: PP_Doc
                              _lhsOppSF :: PP_Doc
+                             _hdOo_rename :: Bool
                              _hdOppNt :: PP_Doc
+                             _tlOo_rename :: Bool
                              _tlOppNt :: PP_Doc
                              _hdIppA :: PP_Doc
+                             _hdIppCata :: PP_Doc
                              _hdIppD :: PP_Doc
                              _hdIppL :: PP_Doc
                              _hdIppR :: PP_Doc
-                             _hdIppS :: PP_Doc
                              _hdIppSF :: PP_Doc
                              _tlIppA :: PP_Doc
+                             _tlIppCata :: PP_Doc
                              _tlIppDL :: ([PP_Doc])
                              _tlIppL :: PP_Doc
                              _tlIppR :: PP_Doc
-                             _tlIppS :: PP_Doc
                              _tlIppSF :: PP_Doc
-                             -- "AG2AspectAG.ag"(line 85, column 33)
+                             -- "AG2AspectAG.ag"(line 120, column 33)
                              _lhsOppDL =
-                                 ({-# LINE 85 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 120 "AG2AspectAG.ag" #-}
                                   _hdIppD : _tlIppDL
-                                  {-# LINE 1451 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 132, column 64)
+                                  {-# LINE 1567 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 167, column 64)
                              _lhsOppA =
-                                 ({-# LINE 132 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 167 "AG2AspectAG.ag" #-}
                                   _hdIppA >-< _tlIppA
-                                  {-# LINE 1456 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 110, column 79)
+                                  {-# LINE 1572 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 379, column 67)
+                             _lhsOppCata =
+                                 ({-# LINE 379 "AG2AspectAG.ag" #-}
+                                  _hdIppCata >-< _tlIppCata
+                                  {-# LINE 1577 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 145, column 79)
                              _lhsOppL =
-                                 ({-# LINE 110 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 145 "AG2AspectAG.ag" #-}
                                   _hdIppL >-< _tlIppL
-                                  {-# LINE 1461 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 184, column 79)
+                                  {-# LINE 1582 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 219, column 79)
                              _lhsOppR =
-                                 ({-# LINE 184 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 219 "AG2AspectAG.ag" #-}
                                   _hdIppR >-< _tlIppR
-                                  {-# LINE 1466 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 344, column 64)
-                             _lhsOppS =
-                                 ({-# LINE 344 "AG2AspectAG.ag" #-}
-                                  _hdIppS >-< _tlIppS
-                                  {-# LINE 1471 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 368, column 41)
+                                  {-# LINE 1587 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 400, column 66)
                              _lhsOppSF =
-                                 ({-# LINE 368 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 400 "AG2AspectAG.ag" #-}
                                   _hdIppSF >-< _tlIppSF
-                                  {-# LINE 1476 "AG2AspectAG.hs" #-})
+                                  {-# LINE 1592 "AG2AspectAG.hs" #-})
                              -- copy rule (down)
+                             _hdOo_rename =
+                                 ({-# LINE 37 "AG2AspectAG.ag" #-}
+                                  _lhsIo_rename
+                                  {-# LINE 1597 "AG2AspectAG.hs" #-})
+                             -- copy rule (down)
                              _hdOppNt =
-                                 ({-# LINE 47 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 75 "AG2AspectAG.ag" #-}
                                   _lhsIppNt
-                                  {-# LINE 1481 "AG2AspectAG.hs" #-})
+                                  {-# LINE 1602 "AG2AspectAG.hs" #-})
                              -- copy rule (down)
+                             _tlOo_rename =
+                                 ({-# LINE 37 "AG2AspectAG.ag" #-}
+                                  _lhsIo_rename
+                                  {-# LINE 1607 "AG2AspectAG.hs" #-})
+                             -- copy rule (down)
                              _tlOppNt =
-                                 ({-# LINE 47 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 75 "AG2AspectAG.ag" #-}
                                   _lhsIppNt
-                                  {-# LINE 1486 "AG2AspectAG.hs" #-})
-                             ( _hdIppA,_hdIppD,_hdIppL,_hdIppR,_hdIppS,_hdIppSF) =
-                                 hd_ _hdOppNt 
-                             ( _tlIppA,_tlIppDL,_tlIppL,_tlIppR,_tlIppS,_tlIppSF) =
-                                 tl_ _tlOppNt 
-                         in  ( _lhsOppA,_lhsOppDL,_lhsOppL,_lhsOppR,_lhsOppS,_lhsOppSF))) )
+                                  {-# LINE 1612 "AG2AspectAG.hs" #-})
+                             ( _hdIppA,_hdIppCata,_hdIppD,_hdIppL,_hdIppR,_hdIppSF) =
+                                 hd_ _hdOo_rename _hdOppNt 
+                             ( _tlIppA,_tlIppCata,_tlIppDL,_tlIppL,_tlIppR,_tlIppSF) =
+                                 tl_ _tlOo_rename _tlOppNt 
+                         in  ( _lhsOppA,_lhsOppCata,_lhsOppDL,_lhsOppL,_lhsOppR,_lhsOppSF))) )
 sem_Productions_Nil :: T_Productions 
 sem_Productions_Nil  =
-    (T_Productions (\ _lhsIppNt ->
+    (T_Productions (\ _lhsIo_rename
+                      _lhsIppNt ->
                         (let _lhsOppDL :: ([PP_Doc])
                              _lhsOppA :: PP_Doc
+                             _lhsOppCata :: PP_Doc
                              _lhsOppL :: PP_Doc
                              _lhsOppR :: PP_Doc
-                             _lhsOppS :: PP_Doc
                              _lhsOppSF :: PP_Doc
-                             -- "AG2AspectAG.ag"(line 86, column 33)
+                             -- "AG2AspectAG.ag"(line 121, column 33)
                              _lhsOppDL =
-                                 ({-# LINE 86 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 121 "AG2AspectAG.ag" #-}
                                   []
-                                  {-# LINE 1505 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 132, column 64)
+                                  {-# LINE 1632 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 167, column 64)
                              _lhsOppA =
-                                 ({-# LINE 132 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 167 "AG2AspectAG.ag" #-}
                                   empty
-                                  {-# LINE 1510 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 110, column 79)
+                                  {-# LINE 1637 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 379, column 67)
+                             _lhsOppCata =
+                                 ({-# LINE 379 "AG2AspectAG.ag" #-}
+                                  empty
+                                  {-# LINE 1642 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 145, column 79)
                              _lhsOppL =
-                                 ({-# LINE 110 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 145 "AG2AspectAG.ag" #-}
                                   empty
-                                  {-# LINE 1515 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 184, column 79)
+                                  {-# LINE 1647 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 219, column 79)
                              _lhsOppR =
-                                 ({-# LINE 184 "AG2AspectAG.ag" #-}
-                                  empty
-                                  {-# LINE 1520 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 344, column 64)
-                             _lhsOppS =
-                                 ({-# LINE 344 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 219 "AG2AspectAG.ag" #-}
                                   empty
-                                  {-# LINE 1525 "AG2AspectAG.hs" #-})
-                             -- use rule "AG2AspectAG.ag"(line 368, column 41)
+                                  {-# LINE 1652 "AG2AspectAG.hs" #-})
+                             -- use rule "AG2AspectAG.ag"(line 400, column 66)
                              _lhsOppSF =
-                                 ({-# LINE 368 "AG2AspectAG.ag" #-}
+                                 ({-# LINE 400 "AG2AspectAG.ag" #-}
                                   empty
-                                  {-# LINE 1530 "AG2AspectAG.hs" #-})
-                         in  ( _lhsOppA,_lhsOppDL,_lhsOppL,_lhsOppR,_lhsOppS,_lhsOppSF))) )
+                                  {-# LINE 1657 "AG2AspectAG.hs" #-})
+                         in  ( _lhsOppA,_lhsOppCata,_lhsOppDL,_lhsOppL,_lhsOppR,_lhsOppSF))) )
 -- Rule --------------------------------------------------------
 {-
    visit 0:
@@ -1580,28 +1707,28 @@
                       _patternIcopy :: Pattern 
                       _patternIinfo :: ((Identifier, Identifier))
                       _rhsIppRE :: (Identifier -> [(Identifier,Type)] -> [Identifier] -> PP_Doc)
-                      -- "AG2AspectAG.ag"(line 170, column 25)
+                      -- "AG2AspectAG.ag"(line 205, column 25)
                       _lhsOlocals =
-                          ({-# LINE 170 "AG2AspectAG.ag" #-}
+                          ({-# LINE 205 "AG2AspectAG.ag" #-}
                            if (show (fst _patternIinfo) == "loc")
                             then [ snd _patternIinfo ]
                             else [ ]
-                           {-# LINE 1590 "AG2AspectAG.hs" #-})
-                      -- "AG2AspectAG.ag"(line 217, column 33)
+                           {-# LINE 1717 "AG2AspectAG.hs" #-})
+                      -- "AG2AspectAG.ag"(line 252, column 33)
                       _lhsOppRL =
-                          ({-# LINE 217 "AG2AspectAG.ag" #-}
+                          ({-# LINE 252 "AG2AspectAG.ag" #-}
                            [ (_patternIinfo, defRule _lhsIppNt _patternIinfo _rhsIppRE) ]
-                           {-# LINE 1595 "AG2AspectAG.hs" #-})
+                           {-# LINE 1722 "AG2AspectAG.hs" #-})
                       -- copy rule (down)
                       _rhsOppNt =
-                          ({-# LINE 47 "AG2AspectAG.ag" #-}
+                          ({-# LINE 75 "AG2AspectAG.ag" #-}
                            _lhsIppNt
-                           {-# LINE 1600 "AG2AspectAG.hs" #-})
+                           {-# LINE 1727 "AG2AspectAG.hs" #-})
                       -- copy rule (down)
                       _rhsOppProd =
-                          ({-# LINE 53 "AG2AspectAG.ag" #-}
+                          ({-# LINE 81 "AG2AspectAG.ag" #-}
                            _lhsIppProd
-                           {-# LINE 1605 "AG2AspectAG.hs" #-})
+                           {-# LINE 1732 "AG2AspectAG.hs" #-})
                       ( _patternIcopy,_patternIinfo) =
                           pattern_ 
                       ( _rhsIppRE) =
@@ -1655,36 +1782,36 @@
                        _hdIppRL :: ([((Identifier,Identifier),[(Identifier,Type)] -> [Identifier] -> PP_Doc)])
                        _tlIlocals :: ([Identifier])
                        _tlIppRL :: ([((Identifier,Identifier),[(Identifier,Type)] -> [Identifier] -> PP_Doc)])
-                       -- "AG2AspectAG.ag"(line 213, column 33)
+                       -- "AG2AspectAG.ag"(line 248, column 33)
                        _lhsOppRL =
-                           ({-# LINE 213 "AG2AspectAG.ag" #-}
+                           ({-# LINE 248 "AG2AspectAG.ag" #-}
                             _hdIppRL ++ _tlIppRL
-                            {-# LINE 1663 "AG2AspectAG.hs" #-})
-                       -- use rule "AG2AspectAG.ag"(line 166, column 30)
+                            {-# LINE 1790 "AG2AspectAG.hs" #-})
+                       -- use rule "AG2AspectAG.ag"(line 201, column 30)
                        _lhsOlocals =
-                           ({-# LINE 166 "AG2AspectAG.ag" #-}
+                           ({-# LINE 201 "AG2AspectAG.ag" #-}
                             _hdIlocals ++ _tlIlocals
-                            {-# LINE 1668 "AG2AspectAG.hs" #-})
+                            {-# LINE 1795 "AG2AspectAG.hs" #-})
                        -- copy rule (down)
                        _hdOppNt =
-                           ({-# LINE 47 "AG2AspectAG.ag" #-}
+                           ({-# LINE 75 "AG2AspectAG.ag" #-}
                             _lhsIppNt
-                            {-# LINE 1673 "AG2AspectAG.hs" #-})
+                            {-# LINE 1800 "AG2AspectAG.hs" #-})
                        -- copy rule (down)
                        _hdOppProd =
-                           ({-# LINE 53 "AG2AspectAG.ag" #-}
+                           ({-# LINE 81 "AG2AspectAG.ag" #-}
                             _lhsIppProd
-                            {-# LINE 1678 "AG2AspectAG.hs" #-})
+                            {-# LINE 1805 "AG2AspectAG.hs" #-})
                        -- copy rule (down)
                        _tlOppNt =
-                           ({-# LINE 47 "AG2AspectAG.ag" #-}
+                           ({-# LINE 75 "AG2AspectAG.ag" #-}
                             _lhsIppNt
-                            {-# LINE 1683 "AG2AspectAG.hs" #-})
+                            {-# LINE 1810 "AG2AspectAG.hs" #-})
                        -- copy rule (down)
                        _tlOppProd =
-                           ({-# LINE 53 "AG2AspectAG.ag" #-}
+                           ({-# LINE 81 "AG2AspectAG.ag" #-}
                             _lhsIppProd
-                            {-# LINE 1688 "AG2AspectAG.hs" #-})
+                            {-# LINE 1815 "AG2AspectAG.hs" #-})
                        ( _hdIlocals,_hdIppRL) =
                            hd_ _hdOppNt _hdOppProd 
                        ( _tlIlocals,_tlIppRL) =
@@ -1696,16 +1823,16 @@
                 _lhsIppProd ->
                   (let _lhsOppRL :: ([((Identifier,Identifier),[(Identifier,Type)] -> [Identifier] -> PP_Doc)])
                        _lhsOlocals :: ([Identifier])
-                       -- "AG2AspectAG.ag"(line 214, column 33)
+                       -- "AG2AspectAG.ag"(line 249, column 33)
                        _lhsOppRL =
-                           ({-# LINE 214 "AG2AspectAG.ag" #-}
+                           ({-# LINE 249 "AG2AspectAG.ag" #-}
                             []
-                            {-# LINE 1704 "AG2AspectAG.hs" #-})
-                       -- use rule "AG2AspectAG.ag"(line 166, column 30)
+                            {-# LINE 1831 "AG2AspectAG.hs" #-})
+                       -- use rule "AG2AspectAG.ag"(line 201, column 30)
                        _lhsOlocals =
-                           ({-# LINE 166 "AG2AspectAG.ag" #-}
+                           ({-# LINE 201 "AG2AspectAG.ag" #-}
                             []
-                            {-# LINE 1709 "AG2AspectAG.hs" #-})
+                            {-# LINE 1836 "AG2AspectAG.hs" #-})
                    in  ( _lhsOlocals,_lhsOppRL))) )
 -- TypeSig -----------------------------------------------------
 {-
diff --git a/src-derived/GenerateCode.hs b/src-derived/GenerateCode.hs
--- a/src-derived/GenerateCode.hs
+++ b/src-derived/GenerateCode.hs
@@ -3169,7 +3169,7 @@
                                                                         ++ if isLast_ then [] else [unwrap ++ funname c (nr_+1)]
                                                              rhsVars = [ locname c ++ "_comp" | c <- cs ]
                                                              fun     = locname c ++ "_merge"
-                                                             rhs' = App "merge" [App fun (map SimpleExpr rhsVars)]
+                                                             rhs' = App fun (map SimpleExpr rhsVars)
                                                          in [Resume _lhsIo_monadic (typeName nt_ nr_) tuple' rhs']
                             in
                                (outDecls ++ outMerged)
@@ -3685,7 +3685,7 @@
                           _tp =
                               ({-# LINE 708 "GenerateCode.ag" #-}
                                if _altSemForm
-                               then TypeApp (SimpleType "Closure") [SimpleType "EvalInfo", _indexExpr     ]
+                               then TypeApp (SimpleType "Child") [SimpleType "EvalInfo", _indexExpr     ]
                                else foldr Arr _synTps     _inhTps
                                {-# LINE 3691 "GenerateCode.hs" #-})
                           -- "GenerateCode.ag"(line 711, column 15)
diff --git a/src-derived/PrintCode.hs b/src-derived/PrintCode.hs
--- a/src-derived/PrintCode.hs
+++ b/src-derived/PrintCode.hs
@@ -1209,7 +1209,7 @@
                         { !_leftOisDeclOfLet ->
                         (case (({-# LINE 129 "PrintCode.ag" #-}
                                 if breadthFirstStrict _lhsIoptions
-                                then "strictEval"
+                                then "stepwiseEval"
                                 else "lazyEval"
                                 {-# LINE 1215 "PrintCode.hs" #-})) of
                          { !_strat ->
@@ -2033,7 +2033,7 @@
                                { ( !_bodyIpp) ->
                                    (case (({-# LINE 205 "PrintCode.ag" #-}
                                            if breadthFirst _lhsIoptions
-                                           then "Closure" >#< pp_parens ( "\\" >|<
+                                           then "Child" >#< pp_parens ( "\\" >|<
                                                     pp_parens (nt_ >|< "_Inh" >#<
                                                       ppTuple False (map _addBang     _argsIpps)) >#< "->"
                                                 >-< indent 2 (_strictParams     `ppMultiSeqV` _bodyIpp))
diff --git a/src/Ag.hs b/src/Ag.hs
--- a/src/Ag.hs
+++ b/src/Ag.hs
@@ -83,7 +83,7 @@
           dump2    = GrammarDump.wrap_Grammar   (GrammarDump.sem_Grammar grammar2                     ) GrammarDump.Inh_Grammar
           dump3    = CGrammarDump.wrap_CGrammar (CGrammarDump.sem_CGrammar grammar3                   ) CGrammarDump.Inh_CGrammar
 
-          aspectAG  = AspectAGDump.wrap_Grammar   (AspectAGDump.sem_Grammar grammar2                     ) AspectAGDump.Inh_Grammar --marcos
+          aspectAG  = AspectAGDump.wrap_Grammar   (AspectAGDump.sem_Grammar grammar2                     ) AspectAGDump.Inh_Grammar {AspectAGDump.options_Inh_Grammar = flags'} --marcos
 
           outputVisage = VisageDump.wrap_VisageGrammar (VisageDump.sem_VisageGrammar grammarV) VisageDump.Inh_VisageGrammar
           aterm        = VisageDump.aterm_Syn_VisageGrammar outputVisage
diff --git a/src/Scanner.hs b/src/Scanner.hs
--- a/src/Scanner.hs
+++ b/src/Scanner.hs
@@ -50,7 +50,8 @@
   
     scan :: Lexer Token
     scan p []                        = Nothing
-    scan p ('-':'-':xs)              = let (com,rest) = span (/= '\n') xs
+    scan p ('-':'-':xs) | null xs || not (head xs `elem` "<>!?#@:%$^&")    
+                                     = let (com,rest) = span (/= '\n') xs
                                        in advc' (2+length com) p scan rest
     scan p ('{':'-':xs)              = advc' 2 p (ncomment scan) xs
     scan p ('{'    :xs)              = advc' 1 p codescrap xs
diff --git a/src/Version.hs b/src/Version.hs
--- a/src/Version.hs
+++ b/src/Version.hs
@@ -1,4 +1,4 @@
 module Version where
 
 banner :: String
-banner = "Attribute Grammar compiler / HUT project. Version 0.9.33"
+banner = "Attribute Grammar compiler / HUT project. Version 0.9.34"
diff --git a/uuagc.cabal b/uuagc.cabal
--- a/uuagc.cabal
+++ b/uuagc.cabal
@@ -1,7 +1,7 @@
 cabal-version: >=1.2
 build-type: Simple
 name: uuagc
-version: 0.9.33
+version: 0.9.34
 license: GPL
 license-file: LICENSE
 maintainer: Arie Middelkoop <ariem@cs.uu.nl>
diff --git a/uuagc.cabal-for-ghc-6.6 b/uuagc.cabal-for-ghc-6.6
--- a/uuagc.cabal-for-ghc-6.6
+++ b/uuagc.cabal-for-ghc-6.6
@@ -1,5 +1,5 @@
 name: uuagc
-version: 0.9.33
+version: 0.9.34
 license: GPL
 license-file: LICENSE
 maintainer: Arie Middelkoop <ariem@cs.uu.nl>
