diff --git a/src-derived/GenerateCode.hs b/src-derived/GenerateCode.hs
--- a/src-derived/GenerateCode.hs
+++ b/src-derived/GenerateCode.hs
@@ -844,7 +844,8 @@
                                                             nil  = SimpleExpr (semname _lhsIprefix nt_ (identifier "Nil" ))
                                                             arg  = SimpleExpr "list"
                                                             rarg = case tp of
-                                                                     NT t _ -> SimpleExpr ("(Prelude.map " ++ (cataname _lhsIprefix t) ++ " list)")
+                                                                     NT t _ -> let t' = maybe t id (deforestedNt t)
+                                                                               in SimpleExpr ("(Prelude.map " ++ (cataname _lhsIprefix t') ++ " list)")
                                                                      _      -> arg
                                                             lhs = Fun (cataname _lhsIprefix nt_) [arg]
                                                             rhs = (App "Prelude.foldr" [cons,nil,rarg])
@@ -854,7 +855,8 @@
                                                             nothing = semname _lhsIprefix nt_ (identifier "Nothing" )
                                                             arg  = SimpleExpr "x"
                                                             rarg = case tp of
-                                                                     NT t _ -> App (cataname _lhsIprefix t) [arg]
+                                                                     NT t _ -> let t' = maybe t id (deforestedNt t)
+                                                                               in App (cataname _lhsIprefix t') [arg]
                                                                      _      -> arg
                                                             lhs a = Fun (cataname _lhsIprefix nt_) [a]
                                                         in  [Decl (lhs (App "Prelude.Just" [arg]))     (App just [rarg])    Set.empty Set.empty
@@ -865,10 +867,12 @@
                                                             right = semname _lhsIprefix nt_ (identifier "Right" )
                                                             arg   = SimpleExpr "x"
                                                             rarg0 = case tp1 of
-                                                                     NT t _ -> App (cataname _lhsIprefix t) [arg]
+                                                                     NT t _ -> let t' = maybe t id (deforestedNt t)
+                                                                               in App (cataname _lhsIprefix t') [arg]
                                                                      _      -> arg
                                                             rarg1 = case tp2 of
-                                                                     NT t _ -> App (cataname _lhsIprefix t) [arg]
+                                                                     NT t _ -> let t' = maybe t id (deforestedNt t)
+                                                                               in App (cataname _lhsIprefix t') [arg]
                                                                      _      -> arg
                                                             lhs a = Fun (cataname _lhsIprefix nt_) [a]
                                                         in  [Decl (lhs (App "Prelude.Left"  [arg]))     (App left  [rarg0])    Set.empty Set.empty
@@ -879,7 +883,8 @@
                                                           nil   = SimpleExpr (semname _lhsIprefix nt_ (identifier "Nil"))
                                                           arg   = SimpleExpr "m"
                                                           rarg  = case tp of
-                                                                    NT t _ -> App "Map.map" [SimpleExpr $ cataname _lhsIprefix t, arg]
+                                                                    NT t _ -> let t' = maybe t id (deforestedNt t)
+                                                                              in App "Map.map" [SimpleExpr $ cataname _lhsIprefix t', arg]
                                                                     _      -> arg
                                                           lhs   = Fun (cataname _lhsIprefix nt_) [arg]
                                                           rhs   = App "Map.foldWithKey" [entry,nil,rarg]
@@ -889,7 +894,8 @@
                                                           nil   = SimpleExpr (semname _lhsIprefix nt_ (identifier "Nil"))
                                                           arg   = SimpleExpr "m"
                                                           rarg  = case tp of
-                                                                    NT t _ -> App "IntMap.map" [SimpleExpr $ cataname _lhsIprefix t, arg]
+                                                                    NT t _ -> let t' = maybe t id (deforestedNt t)
+                                                                              in App "IntMap.map" [SimpleExpr $ cataname _lhsIprefix t', arg]
                                                                     _      -> arg
                                                           lhs   = Fun (cataname _lhsIprefix nt_) [arg]
                                                           rhs   = App "IntMap.foldWithKey" [entry,nil,rarg]
@@ -899,7 +905,8 @@
                                                             tps' = [ (SimpleExpr (getName x),y) | (x,y) <- tps]
                                                             rargs = map rarg tps'
                                                             rarg (n, tp) = case tp of
-                                                                     NT t _ -> App (cataname _lhsIprefix t) [n]
+                                                                     NT t _ -> let t' = maybe t id (deforestedNt t)
+                                                                               in App (cataname _lhsIprefix t') [n]
                                                                      _      -> n
                                                             lhs = Fun (cataname _lhsIprefix nt_) [TupleExpr (map fst tps')]
                                                             rhs = App con rargs
@@ -1629,15 +1636,16 @@
                              -- "GenerateCode.ag"(line 870, column 17)
                              _lhsOdataAlt =
                                  DataAlt (conname _lhsIo_rename _lhsInt con_) (map (\(_,t,_) -> typeToHaskellString (Just _lhsInt) _params     t) _firstOrderChildren    )
-                             -- "GenerateCode.ag"(line 962, column 17)
+                             -- "GenerateCode.ag"(line 969, column 17)
                              _lhsOcataAlt =
                                  let lhs = Fun (cataname _lhsIprefix _lhsInt) [lhs_pat]
                                      lhs_pat = App (conname _lhsIo_rename _lhsInt con_)
                                                     (map (\(n,_,_) -> SimpleExpr $ locname $ n) _firstOrderChildren    )
                                      rhs = App (semname _lhsIprefix _lhsInt con_)
                                                 (map argument _firstOrderChildren    )
-                                     argument (nm,NT tp _,_) = App (cataname _lhsIprefix tp)
-                                                                  [SimpleExpr (locname nm)]
+                                     argument (nm,NT tp _,_) = let tp' = maybe tp id (deforestedNt tp)
+                                                               in App (cataname _lhsIprefix tp')
+                                                                      [SimpleExpr (locname nm)]
                                      argument (nm, _,_)    = SimpleExpr (locname nm)
                                   in Decl lhs rhs Set.empty Set.empty
                              -- use rule "GenerateCode.ag"(line 706, column 39)
@@ -1649,7 +1657,7 @@
                              -- use rule "GenerateCode.ag"(line 719, column 32)
                              _lhsOerrors =
                                  _visitsIerrors
-                             -- use rule "GenerateCode.ag"(line 977, column 61)
+                             -- use rule "GenerateCode.ag"(line 985, column 61)
                              _lhsOsemNames =
                                  _visitsIsemNames
                              -- copy rule (down)
@@ -1920,7 +1928,7 @@
                               -- "GenerateCode.ag"(line 865, column 17)
                               _lhsOdataAlts =
                                   _hdIdataAlt : _tlIdataAlts
-                              -- "GenerateCode.ag"(line 958, column 10)
+                              -- "GenerateCode.ag"(line 965, column 10)
                               _lhsOcataAlts =
                                   _hdIcataAlt : _tlIcataAlts
                               -- use rule "GenerateCode.ag"(line 706, column 39)
@@ -1935,7 +1943,7 @@
                               -- use rule "GenerateCode.ag"(line 719, column 32)
                               _lhsOerrors =
                                   _hdIerrors Seq.>< _tlIerrors
-                              -- use rule "GenerateCode.ag"(line 977, column 61)
+                              -- use rule "GenerateCode.ag"(line 985, column 61)
                               _lhsOsemNames =
                                   _hdIsemNames ++ _tlIsemNames
                               -- copy rule (down)
@@ -2130,7 +2138,7 @@
                               -- "GenerateCode.ag"(line 866, column 17)
                               _lhsOdataAlts =
                                   []
-                              -- "GenerateCode.ag"(line 959, column 10)
+                              -- "GenerateCode.ag"(line 966, column 10)
                               _lhsOcataAlts =
                                   []
                               -- use rule "GenerateCode.ag"(line 706, column 39)
@@ -2145,7 +2153,7 @@
                               -- use rule "GenerateCode.ag"(line 719, column 32)
                               _lhsOerrors =
                                   Seq.empty
-                              -- use rule "GenerateCode.ag"(line 977, column 61)
+                              -- use rule "GenerateCode.ag"(line 985, column 61)
                               _lhsOsemNames =
                                   []
                           in  ( _lhsOallTpsFound,_lhsOcataAlts,_lhsOcomments,_lhsOdataAlts,_lhsOdecls,_lhsOerrors,_lhsOsemNames))) )
@@ -3528,7 +3536,7 @@
                         -- "GenerateCode.ag"(line 761, column 18)
                         _intraOwhat =
                             "intra"
-                        -- "GenerateCode.ag"(line 987, column 7)
+                        -- "GenerateCode.ag"(line 995, column 7)
                         _lhsOsemNames =
                             [_funcname    ]
                         -- copy rule (down)
@@ -3970,7 +3978,7 @@
                          -- use rule "GenerateCode.ag"(line 447, column 44)
                          _lhsOgatherInstVisitNrs =
                              _hdIgatherInstVisitNrs `Map.union` _tlIgatherInstVisitNrs
-                         -- use rule "GenerateCode.ag"(line 977, column 61)
+                         -- use rule "GenerateCode.ag"(line 985, column 61)
                          _lhsOsemNames =
                              _hdIsemNames ++ _tlIsemNames
                          -- copy rule (down)
@@ -4227,7 +4235,7 @@
                          -- use rule "GenerateCode.ag"(line 447, column 44)
                          _lhsOgatherInstVisitNrs =
                              Map.empty
-                         -- use rule "GenerateCode.ag"(line 977, column 61)
+                         -- use rule "GenerateCode.ag"(line 985, column 61)
                          _lhsOsemNames =
                              []
                      in  ( _lhsOallTpsFound,_lhsOcomments,_lhsOdecls,_lhsOerrors,_lhsOgatherInstVisitNrs,_lhsOintra,_lhsOintraVars,_lhsOisNil,_lhsOsemNames))) )
diff --git a/src-derived/Transform.hs b/src-derived/Transform.hs
--- a/src-derived/Transform.hs
+++ b/src-derived/Transform.hs
@@ -110,8 +110,10 @@
         checkDefi :: Bool -> AttrName -> AccumDefiCheck -> AccumDefiCheck
         checkDefi owrt fa@(field,attr) (e,m,u,bs)
          = case lookup field fieldmap
-            of  Just (NT tp _) -> if field == _LOC || field == _INST || field == _FIRST || field == _LAST
-                                     || hasAttrib (if getName field==getName _LHS then snd else fst) tp attr
+            of  Just (NT tp _) -> 
+                  let tp' = maybe tp id (deforestedNt tp)
+                  in              if field == _LOC || field == _INST || field == _FIRST || field == _LAST
+                                     || hasAttrib (if getName field==getName _LHS then snd else fst) tp' attr
                                   then case Map.lookupIndex fa m of
                                            Just ix -> let ((_,attr2),b) = Map.elemAt ix m
                                                        in  if b && not (fa `elem` bs)
@@ -546,22 +548,22 @@
                     -- "Transform.ag"(line 305, column 10)
                     _lhsOerrors =
                         _elemsIerrors >< _errs1 >< _errs2 >< _errs3 >< _errs4 >< _errs5 >< _errs6 >< _errs7 >< _errs8
-                    -- "Transform.ag"(line 453, column 10)
+                    -- "Transform.ag"(line 455, column 10)
                     _allNonterminals =
                         _elemsIcollectedNames `Set.difference` _elemsIcollectedSetNames
-                    -- "Transform.ag"(line 473, column 8)
+                    -- "Transform.ag"(line 475, column 8)
                     _elemsOallConstructors =
                         _elemsIcollectedConstructorsMap
-                    -- "Transform.ag"(line 546, column 8)
+                    -- "Transform.ag"(line 548, column 8)
                     _elemsOdefSets =
                         Map.fromList (map (\x->(x,(Set.singleton x, Set.empty))) (Set.toList _allNonterminals    ))
-                    -- "Transform.ag"(line 547, column 8)
+                    -- "Transform.ag"(line 549, column 8)
                     _elemsOdefinedSets =
                         Map.map fst _elemsIdefSets
-                    -- "Transform.ag"(line 799, column 8)
+                    -- "Transform.ag"(line 801, column 8)
                     _elemsOattrDecls =
                         Map.empty
-                    -- "Transform.ag"(line 838, column 9)
+                    -- "Transform.ag"(line 840, column 9)
                     _allAttrDecls =
                         if withSelf _lhsIoptions
                          then foldr addSelf _elemsIattrDecls (Set.toList _allNonterminals    )
@@ -569,10 +571,10 @@
                     -- use rule "Transform.ag"(line 44, column 19)
                     _lhsOblocks =
                         _elemsIblocks
-                    -- use rule "Transform.ag"(line 941, column 37)
+                    -- use rule "Transform.ag"(line 943, column 37)
                     _lhsOmoduleDecl =
                         _elemsImoduleDecl
-                    -- use rule "Transform.ag"(line 628, column 34)
+                    -- use rule "Transform.ag"(line 630, column 34)
                     _lhsOpragmas =
                         _elemsIpragmas
                     -- copy rule (from local)
@@ -808,16 +810,16 @@
                   (let _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))
                        _lhsOerrors :: (Seq Error)
                        _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))
-                       -- "Transform.ag"(line 807, column 15)
+                       -- "Transform.ag"(line 809, column 15)
                        __tup1 =
                            checkAttrs _lhsIallFields (Set.toList _lhsInts) _inherited _synthesized _lhsIattrDecls
-                       -- "Transform.ag"(line 807, column 15)
+                       -- "Transform.ag"(line 809, column 15)
                        (_attrDecls,_) =
                            __tup1
-                       -- "Transform.ag"(line 807, column 15)
+                       -- "Transform.ag"(line 809, column 15)
                        (_,_errors) =
                            __tup1
-                       -- "Transform.ag"(line 809, column 15)
+                       -- "Transform.ag"(line 811, column 15)
                        __tup2 =
                            let splitAttrs xs = unzip [ ((n,makeType _lhsIallNonterminals t),(n,ud))
                                                      | (n,t,ud) <- xs
@@ -827,16 +829,16 @@
                                (syn,uses2) = splitAttrs syn_
                                isUse (n,(e1,e2,_)) = not (null e1 || null e2)
                            in (inh++chn,chn++syn, Map.fromList (Prelude.filter isUse (uses1++uses2)))
-                       -- "Transform.ag"(line 809, column 15)
+                       -- "Transform.ag"(line 811, column 15)
                        (_inherited,_,_) =
                            __tup2
-                       -- "Transform.ag"(line 809, column 15)
+                       -- "Transform.ag"(line 811, column 15)
                        (_,_synthesized,_) =
                            __tup2
-                       -- "Transform.ag"(line 809, column 15)
+                       -- "Transform.ag"(line 811, column 15)
                        (_,_,_useMap) =
                            __tup2
-                       -- "Transform.ag"(line 817, column 11)
+                       -- "Transform.ag"(line 819, column 11)
                        _lhsOuseMap =
                            Map.fromList (zip (Set.toList _lhsInts) (repeat _useMap))
                        -- use rule "Transform.ag"(line 42, column 19)
@@ -891,7 +893,7 @@
     (T_ConstructorSet (let _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))
                            _lhsOcollectedConstructorNames :: (Set ConstructorIdent)
                            _lhsOerrors :: (Seq Error)
-                           -- "Transform.ag"(line 613, column 17)
+                           -- "Transform.ag"(line 615, column 17)
                            _lhsOconstructors =
                                \ds -> ds
                            -- use rule "Transform.ag"(line 90, column 62)
@@ -914,7 +916,7 @@
                            _set2IcollectedConstructorNames :: (Set ConstructorIdent)
                            _set2Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))
                            _set2Ierrors :: (Seq Error)
-                           -- "Transform.ag"(line 612, column 17)
+                           -- "Transform.ag"(line 614, column 17)
                            _lhsOconstructors =
                                \ds -> _set1Iconstructors ds `Set.difference` _set2Iconstructors ds
                            -- use rule "Transform.ag"(line 90, column 62)
@@ -934,10 +936,10 @@
     (T_ConstructorSet (let _lhsOcollectedConstructorNames :: (Set ConstructorIdent)
                            _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))
                            _lhsOerrors :: (Seq Error)
-                           -- "Transform.ag"(line 461, column 11)
+                           -- "Transform.ag"(line 463, column 11)
                            _lhsOcollectedConstructorNames =
                                Set.singleton name_
-                           -- "Transform.ag"(line 610, column 17)
+                           -- "Transform.ag"(line 612, column 17)
                            _lhsOconstructors =
                                \ds -> Set.singleton name_
                            -- use rule "Transform.ag"(line 42, column 19)
@@ -957,7 +959,7 @@
                            _set2IcollectedConstructorNames :: (Set ConstructorIdent)
                            _set2Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))
                            _set2Ierrors :: (Seq Error)
-                           -- "Transform.ag"(line 611, column 17)
+                           -- "Transform.ag"(line 613, column 17)
                            _lhsOconstructors =
                                \ds -> _set1Iconstructors ds `Set.union`      _set2Iconstructors ds
                            -- use rule "Transform.ag"(line 90, column 62)
@@ -1156,15 +1158,15 @@
                       _attrsIattrDecls :: (Map NontermIdent (Attributes, Attributes))
                       _attrsIerrors :: (Seq Error)
                       _attrsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))
-                      -- "Transform.ag"(line 759, column 7)
+                      -- "Transform.ag"(line 761, column 7)
                       _lhsOctxCollect =
                           if null ctx_
                           then Map.empty
                           else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]
-                      -- "Transform.ag"(line 803, column 10)
+                      -- "Transform.ag"(line 805, column 10)
                       _attrsOnts =
                           _namesInontSet
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -1197,31 +1199,31 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           _namesIerrors Seq.>< _attrsIerrors
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 732, column 37)
+                      -- use rule "Transform.ag"(line 734, column 37)
                       _lhsOparamsCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           _attrsIuseMap
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (up)
@@ -1313,26 +1315,26 @@
                       -- "Transform.ag"(line 163, column 10)
                       _altsOnts =
                           _namesInontSet
-                      -- "Transform.ag"(line 467, column 11)
+                      -- "Transform.ag"(line 469, column 11)
                       _lhsOcollectedConstructorsMap =
                           Map.fromList
                           [ (n, _altsIcollectedConstructorNames)
                           | n <- Set.toList _namesInontSet
                           ]
-                      -- "Transform.ag"(line 736, column 7)
+                      -- "Transform.ag"(line 738, column 7)
                       _lhsOparamsCollect =
                           if null params_
                           then Map.empty
                           else Map.fromList [(nt, params_) | nt <- Set.toList _namesInontSet]
-                      -- "Transform.ag"(line 759, column 7)
+                      -- "Transform.ag"(line 761, column 7)
                       _lhsOctxCollect =
                           if null ctx_
                           then Map.empty
                           else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]
-                      -- "Transform.ag"(line 802, column 10)
+                      -- "Transform.ag"(line 804, column 10)
                       _attrsOnts =
                           _namesInontSet
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -1362,28 +1364,28 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           _namesIerrors Seq.>< _attrsIerrors
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           _attrsIuseMap
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (up)
@@ -1464,10 +1466,10 @@
                       _setIcollectedNames :: (Set Identifier)
                       _setIerrors :: (Seq Error)
                       _setInontSet :: (Set NontermIdent)
-                      -- "Transform.ag"(line 787, column 14)
+                      -- "Transform.ag"(line 789, column 14)
                       _lhsOderivings =
                           Map.fromList [(nt,Set.fromList classes_) | nt <- Set.toList _setInontSet]
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -1500,31 +1502,31 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 755, column 34)
+                      -- use rule "Transform.ag"(line 757, column 34)
                       _lhsOctxCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           _setIerrors
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 732, column 37)
+                      -- use rule "Transform.ag"(line 734, column 37)
                       _lhsOparamsCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           Map.empty
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (chain)
@@ -1581,10 +1583,10 @@
                       _lhsOwrappers :: (Set NontermIdent)
                       _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))
                       _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))
-                      -- "Transform.ag"(line 945, column 7)
+                      -- "Transform.ag"(line 947, column 7)
                       _lhsOmoduleDecl =
                           Just (name_, exports_, imports_)
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -1617,31 +1619,31 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 755, column 34)
+                      -- use rule "Transform.ag"(line 757, column 34)
                       _lhsOctxCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           Seq.empty
-                      -- use rule "Transform.ag"(line 732, column 37)
+                      -- use rule "Transform.ag"(line 734, column 37)
                       _lhsOparamsCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           Map.empty
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (chain)
@@ -1685,7 +1687,7 @@
                       _lhsOwrappers :: (Set NontermIdent)
                       _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))
                       _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))
-                      -- "Transform.ag"(line 631, column 13)
+                      -- "Transform.ag"(line 633, column 13)
                       _lhsOpragmas =
                           let mk n o = case getName n of
                                          "gencatas"     -> o { folds       = True  }
@@ -1727,7 +1729,7 @@
                                          "nonewtypes"     -> o { newtypes = False }
                                          _              -> o
                           in \o -> foldr mk o names_
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -1760,31 +1762,31 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 755, column 34)
+                      -- use rule "Transform.ag"(line 757, column 34)
                       _lhsOctxCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           Seq.empty
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 732, column 37)
+                      -- use rule "Transform.ag"(line 734, column 37)
                       _lhsOparamsCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           Map.empty
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (chain)
@@ -1858,15 +1860,15 @@
                       -- "Transform.ag"(line 164, column 10)
                       _altsOnts =
                           _namesInontSet
-                      -- "Transform.ag"(line 759, column 7)
+                      -- "Transform.ag"(line 761, column 7)
                       _lhsOctxCollect =
                           if null ctx_
                           then Map.empty
                           else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]
-                      -- "Transform.ag"(line 804, column 10)
+                      -- "Transform.ag"(line 806, column 10)
                       _attrsOnts =
                           _namesInontSet
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           _altsIattrOrderCollect
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -1899,31 +1901,31 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           _altsIcollectedUniques
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           _namesIerrors Seq.>< _attrsIerrors Seq.>< _altsIerrors
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 732, column 37)
+                      -- use rule "Transform.ag"(line 734, column 37)
                       _lhsOparamsCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           _altsIsemPragmasCollect
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           _attrsIuseMap
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (up)
@@ -2004,10 +2006,10 @@
                       _setIcollectedNames :: (Set Identifier)
                       _setIerrors :: (Seq Error)
                       _setInontSet :: (Set NontermIdent)
-                      -- "Transform.ag"(line 444, column 10)
+                      -- "Transform.ag"(line 446, column 10)
                       _lhsOcollectedSetNames =
                           Set.singleton name_
-                      -- "Transform.ag"(line 551, column 13)
+                      -- "Transform.ag"(line 553, column 13)
                       __tup3 =
                           let allUsedNames = Set.unions [ maybe (Set.singleton n)
                                                                 snd
@@ -2019,19 +2021,19 @@
                                            | otherwise = (_setInontSet, Seq.empty)
                               (res, e2) = checkDuplicate DupSet  name_ (nontSet,Set.insert name_ allUsedNames) _lhsIdefSets
                           in (res, e1 Seq.>< e2)
-                      -- "Transform.ag"(line 551, column 13)
+                      -- "Transform.ag"(line 553, column 13)
                       (_defSets2,_) =
                           __tup3
-                      -- "Transform.ag"(line 551, column 13)
+                      -- "Transform.ag"(line 553, column 13)
                       (_,_errs) =
                           __tup3
-                      -- "Transform.ag"(line 561, column 9)
+                      -- "Transform.ag"(line 563, column 9)
                       _lhsOdefSets =
                           _defSets2
-                      -- "Transform.ag"(line 561, column 9)
+                      -- "Transform.ag"(line 563, column 9)
                       _lhsOerrors =
                           _errs >< _setIerrors
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -2061,31 +2063,31 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 755, column 34)
+                      -- use rule "Transform.ag"(line 757, column 34)
                       _lhsOctxCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 732, column 37)
+                      -- use rule "Transform.ag"(line 734, column 37)
                       _lhsOparamsCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           Map.empty
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (chain)
@@ -2155,7 +2157,7 @@
                       -- "Transform.ag"(line 182, column 10)
                       _lhsOblocks =
                           Map.singleton _blockInfo     _blockValue
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 150, column 32)
@@ -2185,34 +2187,34 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 755, column 34)
+                      -- use rule "Transform.ag"(line 757, column 34)
                       _lhsOctxCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           Seq.empty
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 732, column 37)
+                      -- use rule "Transform.ag"(line 734, column 37)
                       _lhsOparamsCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           Map.empty
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (chain)
@@ -2262,10 +2264,10 @@
                       -- "Transform.ag"(line 235, column 10)
                       _lhsOcollectedFields =
                           map (\(x,y)->(name_, x, y)) _expanded
-                      -- "Transform.ag"(line 447, column 11)
+                      -- "Transform.ag"(line 449, column 11)
                       _lhsOcollectedNames =
                           Set.singleton name_
-                      -- "Transform.ag"(line 501, column 11)
+                      -- "Transform.ag"(line 503, column 11)
                       _expanded =
                           case _argType of
                                   List tp -> [(Ident "Cons" pos_, [(Ident "hd" pos_, tp)
@@ -2296,7 +2298,7 @@
                                                  , (Ident "Nil" pos_, [])
                                                  ]
                                   Tuple xs -> [(Ident "Tuple" pos_, xs)]
-                      -- "Transform.ag"(line 530, column 11)
+                      -- "Transform.ag"(line 532, column 11)
                       _argType =
                           case type_ of
                            Maybe tp       -> Maybe  (  makeType _lhsIallNonterminals tp)
@@ -2305,20 +2307,20 @@
                            Tuple xs       -> Tuple [(f,makeType _lhsIallNonterminals tp) | (f,tp) <- xs]
                            Map tp1 tp2    -> Map    (  makeType _lhsIallNonterminals tp1) (makeType _lhsIallNonterminals tp2)
                            IntMap tp      -> IntMap (  makeType _lhsIallNonterminals tp)
-                      -- "Transform.ag"(line 537, column 11)
+                      -- "Transform.ag"(line 539, column 11)
                       _lhsOtypeSyns =
                           [(name_,_argType)]
-                      -- "Transform.ag"(line 742, column 7)
+                      -- "Transform.ag"(line 744, column 7)
                       _lhsOparamsCollect =
                           if null params_
                           then Map.empty
                           else Map.singleton name_ params_
-                      -- "Transform.ag"(line 765, column 7)
+                      -- "Transform.ag"(line 767, column 7)
                       _lhsOctxCollect =
                           if null ctx_
                           then Map.empty
                           else Map.singleton name_ ctx_
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -2345,25 +2347,25 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           Seq.empty
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 134, column 15)
                       _lhsOuseMap =
                           Map.empty
-                      -- use rule "Transform.ag"(line 619, column 32)
+                      -- use rule "Transform.ag"(line 621, column 32)
                       _lhsOwrappers =
                           Set.empty
                       -- copy rule (chain)
@@ -2413,10 +2415,10 @@
                       _setIcollectedNames :: (Set Identifier)
                       _setIerrors :: (Seq Error)
                       _setInontSet :: (Set NontermIdent)
-                      -- "Transform.ag"(line 622, column 13)
+                      -- "Transform.ag"(line 624, column 13)
                       _lhsOwrappers =
                           _setInontSet
-                      -- use rule "Transform.ag"(line 700, column 55)
+                      -- use rule "Transform.ag"(line 702, column 55)
                       _lhsOattrOrderCollect =
                           Map.empty
                       -- use rule "Transform.ag"(line 44, column 19)
@@ -2449,28 +2451,28 @@
                       -- use rule "Transform.ag"(line 149, column 32)
                       _lhsOcollectedUniques =
                           []
-                      -- use rule "Transform.ag"(line 755, column 34)
+                      -- use rule "Transform.ag"(line 757, column 34)
                       _lhsOctxCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 780, column 33)
+                      -- use rule "Transform.ag"(line 782, column 33)
                       _lhsOderivings =
                           Map.empty
                       -- use rule "Transform.ag"(line 42, column 19)
                       _lhsOerrors =
                           _setIerrors
-                      -- use rule "Transform.ag"(line 941, column 37)
+                      -- use rule "Transform.ag"(line 943, column 37)
                       _lhsOmoduleDecl =
                           mzero
-                      -- use rule "Transform.ag"(line 732, column 37)
+                      -- use rule "Transform.ag"(line 734, column 37)
                       _lhsOparamsCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 628, column 34)
+                      -- use rule "Transform.ag"(line 630, column 34)
                       _lhsOpragmas =
                           id
-                      -- use rule "Transform.ag"(line 672, column 56)
+                      -- use rule "Transform.ag"(line 674, column 56)
                       _lhsOsemPragmasCollect =
                           Map.empty
-                      -- use rule "Transform.ag"(line 488, column 32)
+                      -- use rule "Transform.ag"(line 490, column 32)
                       _lhsOtypeSyns =
                           []
                       -- use rule "Transform.ag"(line 134, column 15)
@@ -2651,7 +2653,7 @@
                        _tlItypeSyns :: TypeSyns
                        _tlIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))
                        _tlIwrappers :: (Set NontermIdent)
-                       -- use rule "Transform.ag"(line 700, column 55)
+                       -- use rule "Transform.ag"(line 702, column 55)
                        _lhsOattrOrderCollect =
                            _hdIattrOrderCollect `orderMapUnion` _tlIattrOrderCollect
                        -- use rule "Transform.ag"(line 44, column 19)
@@ -2684,34 +2686,34 @@
                        -- use rule "Transform.ag"(line 149, column 32)
                        _lhsOcollectedUniques =
                            _hdIcollectedUniques ++ _tlIcollectedUniques
-                       -- use rule "Transform.ag"(line 755, column 34)
+                       -- use rule "Transform.ag"(line 757, column 34)
                        _lhsOctxCollect =
                            _hdIctxCollect `mergeCtx` _tlIctxCollect
-                       -- use rule "Transform.ag"(line 780, column 33)
+                       -- use rule "Transform.ag"(line 782, column 33)
                        _lhsOderivings =
                            _hdIderivings `mergeDerivings` _tlIderivings
                        -- use rule "Transform.ag"(line 42, column 19)
                        _lhsOerrors =
                            _hdIerrors Seq.>< _tlIerrors
-                       -- use rule "Transform.ag"(line 941, column 37)
+                       -- use rule "Transform.ag"(line 943, column 37)
                        _lhsOmoduleDecl =
                            _hdImoduleDecl `mplus` _tlImoduleDecl
-                       -- use rule "Transform.ag"(line 732, column 37)
+                       -- use rule "Transform.ag"(line 734, column 37)
                        _lhsOparamsCollect =
                            _hdIparamsCollect `mergeParams` _tlIparamsCollect
-                       -- use rule "Transform.ag"(line 628, column 34)
+                       -- use rule "Transform.ag"(line 630, column 34)
                        _lhsOpragmas =
                            _hdIpragmas . _tlIpragmas
-                       -- use rule "Transform.ag"(line 672, column 56)
+                       -- use rule "Transform.ag"(line 674, column 56)
                        _lhsOsemPragmasCollect =
                            _hdIsemPragmasCollect `pragmaMapUnion` _tlIsemPragmasCollect
-                       -- use rule "Transform.ag"(line 488, column 32)
+                       -- use rule "Transform.ag"(line 490, column 32)
                        _lhsOtypeSyns =
                            _hdItypeSyns ++ _tlItypeSyns
                        -- use rule "Transform.ag"(line 134, column 15)
                        _lhsOuseMap =
                            _hdIuseMap `merge` _tlIuseMap
-                       -- use rule "Transform.ag"(line 619, column 32)
+                       -- use rule "Transform.ag"(line 621, column 32)
                        _lhsOwrappers =
                            _hdIwrappers `Set.union` _tlIwrappers
                        -- copy rule (up)
@@ -2799,7 +2801,7 @@
                        _lhsOwrappers :: (Set NontermIdent)
                        _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))
                        _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))
-                       -- use rule "Transform.ag"(line 700, column 55)
+                       -- use rule "Transform.ag"(line 702, column 55)
                        _lhsOattrOrderCollect =
                            Map.empty
                        -- use rule "Transform.ag"(line 44, column 19)
@@ -2832,34 +2834,34 @@
                        -- use rule "Transform.ag"(line 149, column 32)
                        _lhsOcollectedUniques =
                            []
-                       -- use rule "Transform.ag"(line 755, column 34)
+                       -- use rule "Transform.ag"(line 757, column 34)
                        _lhsOctxCollect =
                            Map.empty
-                       -- use rule "Transform.ag"(line 780, column 33)
+                       -- use rule "Transform.ag"(line 782, column 33)
                        _lhsOderivings =
                            Map.empty
                        -- use rule "Transform.ag"(line 42, column 19)
                        _lhsOerrors =
                            Seq.empty
-                       -- use rule "Transform.ag"(line 941, column 37)
+                       -- use rule "Transform.ag"(line 943, column 37)
                        _lhsOmoduleDecl =
                            mzero
-                       -- use rule "Transform.ag"(line 732, column 37)
+                       -- use rule "Transform.ag"(line 734, column 37)
                        _lhsOparamsCollect =
                            Map.empty
-                       -- use rule "Transform.ag"(line 628, column 34)
+                       -- use rule "Transform.ag"(line 630, column 34)
                        _lhsOpragmas =
                            id
-                       -- use rule "Transform.ag"(line 672, column 56)
+                       -- use rule "Transform.ag"(line 674, column 56)
                        _lhsOsemPragmasCollect =
                            Map.empty
-                       -- use rule "Transform.ag"(line 488, column 32)
+                       -- use rule "Transform.ag"(line 490, column 32)
                        _lhsOtypeSyns =
                            []
                        -- use rule "Transform.ag"(line 134, column 15)
                        _lhsOuseMap =
                            Map.empty
-                       -- use rule "Transform.ag"(line 619, column 32)
+                       -- use rule "Transform.ag"(line 621, column 32)
                        _lhsOwrappers =
                            Set.empty
                        -- copy rule (chain)
@@ -2938,7 +2940,7 @@
                     (let _lhsOnontSet :: (Set NontermIdent)
                          _lhsOcollectedNames :: (Set Identifier)
                          _lhsOerrors :: (Seq Error)
-                         -- "Transform.ag"(line 565, column 16)
+                         -- "Transform.ag"(line 567, column 16)
                          _lhsOnontSet =
                              _lhsIallNonterminals
                          -- use rule "Transform.ag"(line 83, column 50)
@@ -2970,7 +2972,7 @@
                          _set2IcollectedNames :: (Set Identifier)
                          _set2Ierrors :: (Seq Error)
                          _set2InontSet :: (Set NontermIdent)
-                         -- "Transform.ag"(line 571, column 16)
+                         -- "Transform.ag"(line 573, column 16)
                          _lhsOnontSet =
                              Set.difference    _set1InontSet _set2InontSet
                          -- use rule "Transform.ag"(line 83, column 50)
@@ -3024,7 +3026,7 @@
                          _set2IcollectedNames :: (Set Identifier)
                          _set2Ierrors :: (Seq Error)
                          _set2InontSet :: (Set NontermIdent)
-                         -- "Transform.ag"(line 570, column 16)
+                         -- "Transform.ag"(line 572, column 16)
                          _lhsOnontSet =
                              Set.intersection  _set1InontSet _set2InontSet
                          -- use rule "Transform.ag"(line 83, column 50)
@@ -3065,18 +3067,18 @@
                     (let _lhsOcollectedNames :: (Set Identifier)
                          _lhsOerrors :: (Seq Error)
                          _lhsOnontSet :: (Set NontermIdent)
-                         -- "Transform.ag"(line 450, column 14)
+                         -- "Transform.ag"(line 452, column 14)
                          _lhsOcollectedNames =
                              Set.singleton name_
-                         -- "Transform.ag"(line 566, column 20)
+                         -- "Transform.ag"(line 568, column 20)
                          __tup4 =
                              case Map.lookup name_ _lhsIdefinedSets of
                                           Nothing  -> (Set.empty, Seq.singleton (UndefNont name_))
                                           Just set -> (set, Seq.empty)
-                         -- "Transform.ag"(line 566, column 20)
+                         -- "Transform.ag"(line 568, column 20)
                          (_nontSet,_) =
                              __tup4
-                         -- "Transform.ag"(line 566, column 20)
+                         -- "Transform.ag"(line 568, column 20)
                          (_,_errors) =
                              __tup4
                          -- use rule "Transform.ag"(line 42, column 19)
@@ -3096,11 +3098,11 @@
                     (let _lhsOnontSet :: (Set NontermIdent)
                          _lhsOerrors :: (Seq Error)
                          _lhsOcollectedNames :: (Set Identifier)
-                         -- "Transform.ag"(line 572, column 16)
+                         -- "Transform.ag"(line 574, column 16)
                          _lhsOnontSet =
                              let table = flattenDatas _lhsIallFields
                              in path table from_ to_
-                         -- "Transform.ag"(line 574, column 16)
+                         -- "Transform.ag"(line 576, column 16)
                          _lhsOerrors =
                              let check name | Set.member name _lhsIallNonterminals
                                                         = Seq.empty
@@ -3132,7 +3134,7 @@
                          _set2IcollectedNames :: (Set Identifier)
                          _set2Ierrors :: (Seq Error)
                          _set2InontSet :: (Set NontermIdent)
-                         -- "Transform.ag"(line 569, column 16)
+                         -- "Transform.ag"(line 571, column 16)
                          _lhsOnontSet =
                              Set.union         _set1InontSet _set2InontSet
                          -- use rule "Transform.ag"(line 83, column 50)
@@ -3244,16 +3246,16 @@
                     _partsIdefinedAttrs :: ([AttrName])
                     _partsIdefinedInsts :: ([Identifier])
                     _partsIpatunder :: ([AttrName]->Patterns)
-                    -- "Transform.ag"(line 917, column 11)
+                    -- "Transform.ag"(line 919, column 11)
                     _lhsOdefinedAttrs =
                         (field_, attr_) : _patIdefinedAttrs
-                    -- "Transform.ag"(line 918, column 11)
+                    -- "Transform.ag"(line 920, column 11)
                     _lhsOpatunder =
                         \us -> if ((field_,attr_) `elem` us) then Underscore noPos else _copy
-                    -- "Transform.ag"(line 919, column 11)
+                    -- "Transform.ag"(line 921, column 11)
                     _lhsOdefinedInsts =
                         (if field_ == _INST then [attr_] else []) ++ _patIdefinedInsts
-                    -- "Transform.ag"(line 934, column 16)
+                    -- "Transform.ag"(line 936, column 16)
                     _lhsOstpos =
                         getPos field_
                     -- self rule
@@ -3280,16 +3282,16 @@
                     _patsIdefinedAttrs :: ([AttrName])
                     _patsIdefinedInsts :: ([Identifier])
                     _patsIpatunder :: ([AttrName]->Patterns)
-                    -- "Transform.ag"(line 921, column 12)
+                    -- "Transform.ag"(line 923, column 12)
                     _lhsOpatunder =
                         \us -> Constr name_ (_patsIpatunder us)
-                    -- "Transform.ag"(line 932, column 16)
+                    -- "Transform.ag"(line 934, column 16)
                     _lhsOstpos =
                         getPos name_
-                    -- use rule "Transform.ag"(line 912, column 42)
+                    -- use rule "Transform.ag"(line 914, column 42)
                     _lhsOdefinedAttrs =
                         _patsIdefinedAttrs
-                    -- use rule "Transform.ag"(line 911, column 55)
+                    -- use rule "Transform.ag"(line 913, column 55)
                     _lhsOdefinedInsts =
                         _patsIdefinedInsts
                     -- self rule
@@ -3314,13 +3316,13 @@
                     _patIdefinedInsts :: ([Identifier])
                     _patIpatunder :: ([AttrName]->Pattern)
                     _patIstpos :: Pos
-                    -- "Transform.ag"(line 923, column 17)
+                    -- "Transform.ag"(line 925, column 17)
                     _lhsOpatunder =
                         \us -> Irrefutable (_patIpatunder us)
-                    -- use rule "Transform.ag"(line 912, column 42)
+                    -- use rule "Transform.ag"(line 914, column 42)
                     _lhsOdefinedAttrs =
                         _patIdefinedAttrs
-                    -- use rule "Transform.ag"(line 911, column 55)
+                    -- use rule "Transform.ag"(line 913, column 55)
                     _lhsOdefinedInsts =
                         _patIdefinedInsts
                     -- self rule
@@ -3348,16 +3350,16 @@
                     _patsIdefinedAttrs :: ([AttrName])
                     _patsIdefinedInsts :: ([Identifier])
                     _patsIpatunder :: ([AttrName]->Patterns)
-                    -- "Transform.ag"(line 922, column 13)
+                    -- "Transform.ag"(line 924, column 13)
                     _lhsOpatunder =
                         \us -> Product pos_ (_patsIpatunder us)
-                    -- "Transform.ag"(line 933, column 16)
+                    -- "Transform.ag"(line 935, column 16)
                     _lhsOstpos =
                         pos_
-                    -- use rule "Transform.ag"(line 912, column 42)
+                    -- use rule "Transform.ag"(line 914, column 42)
                     _lhsOdefinedAttrs =
                         _patsIdefinedAttrs
-                    -- use rule "Transform.ag"(line 911, column 55)
+                    -- use rule "Transform.ag"(line 913, column 55)
                     _lhsOdefinedInsts =
                         _patsIdefinedInsts
                     -- self rule
@@ -3377,16 +3379,16 @@
                     _lhsOdefinedAttrs :: ([AttrName])
                     _lhsOdefinedInsts :: ([Identifier])
                     _lhsOcopy :: Pattern
-                    -- "Transform.ag"(line 920, column 16)
+                    -- "Transform.ag"(line 922, column 16)
                     _lhsOpatunder =
                         \us -> _copy
-                    -- "Transform.ag"(line 935, column 16)
+                    -- "Transform.ag"(line 937, column 16)
                     _lhsOstpos =
                         pos_
-                    -- use rule "Transform.ag"(line 912, column 42)
+                    -- use rule "Transform.ag"(line 914, column 42)
                     _lhsOdefinedAttrs =
                         []
-                    -- use rule "Transform.ag"(line 911, column 55)
+                    -- use rule "Transform.ag"(line 913, column 55)
                     _lhsOdefinedInsts =
                         []
                     -- self rule
@@ -3447,13 +3449,13 @@
                      _tlIdefinedAttrs :: ([AttrName])
                      _tlIdefinedInsts :: ([Identifier])
                      _tlIpatunder :: ([AttrName]->Patterns)
-                     -- "Transform.ag"(line 927, column 10)
+                     -- "Transform.ag"(line 929, column 10)
                      _lhsOpatunder =
                          \us -> (_hdIpatunder us) : (_tlIpatunder us)
-                     -- use rule "Transform.ag"(line 912, column 42)
+                     -- use rule "Transform.ag"(line 914, column 42)
                      _lhsOdefinedAttrs =
                          _hdIdefinedAttrs ++ _tlIdefinedAttrs
-                     -- use rule "Transform.ag"(line 911, column 55)
+                     -- use rule "Transform.ag"(line 913, column 55)
                      _lhsOdefinedInsts =
                          _hdIdefinedInsts ++ _tlIdefinedInsts
                      -- self rule
@@ -3473,13 +3475,13 @@
                      _lhsOdefinedAttrs :: ([AttrName])
                      _lhsOdefinedInsts :: ([Identifier])
                      _lhsOcopy :: Patterns
-                     -- "Transform.ag"(line 926, column 9)
+                     -- "Transform.ag"(line 928, column 9)
                      _lhsOpatunder =
                          \us ->  []
-                     -- use rule "Transform.ag"(line 912, column 42)
+                     -- use rule "Transform.ag"(line 914, column 42)
                      _lhsOdefinedAttrs =
                          []
-                     -- use rule "Transform.ag"(line 911, column 55)
+                     -- use rule "Transform.ag"(line 913, column 55)
                      _lhsOdefinedInsts =
                          []
                      -- self rule
@@ -3560,25 +3562,25 @@
                         _rulesIruleInfos :: ([RuleInfo])
                         _rulesIsigInfos :: ([SigInfo])
                         _rulesIuniqueInfos :: ([UniqueInfo])
-                        -- "Transform.ag"(line 676, column 7)
+                        -- "Transform.ag"(line 678, column 7)
                         _pragmaNames =
                             Set.fromList _rulesIpragmaNamesCollect
-                        -- "Transform.ag"(line 677, column 7)
+                        -- "Transform.ag"(line 679, column 7)
                         _lhsOsemPragmasCollect =
                             foldr pragmaMapUnion Map.empty [ pragmaMapSingle nt con _pragmaNames
                                                            | (nt, conset, _) <- _coninfo
                                                            , con <- Set.toList conset
                                                            ]
-                        -- "Transform.ag"(line 705, column 7)
+                        -- "Transform.ag"(line 707, column 7)
                         _attrOrders =
                             [ orderMapSingle nt con _rulesIorderDepsCollect
                             | (nt, conset, _) <- _coninfo
                             , con <- Set.toList conset
                             ]
-                        -- "Transform.ag"(line 711, column 7)
+                        -- "Transform.ag"(line 713, column 7)
                         _lhsOattrOrderCollect =
                             foldr orderMapUnion Map.empty _attrOrders
-                        -- "Transform.ag"(line 855, column 12)
+                        -- "Transform.ag"(line 857, column 12)
                         _coninfo =
                             [ (nt, conset, conkeys)
                             | nt  <- Set.toList _lhsInts
@@ -3586,40 +3588,40 @@
                             , let conkeys = Set.fromList (Map.keys conmap)
                             , let conset  = _constructorSetIconstructors conkeys
                             ]
-                        -- "Transform.ag"(line 862, column 12)
+                        -- "Transform.ag"(line 864, column 12)
                         _lhsOerrors =
                             Seq.fromList
                                [ UndefAlt nt con
                                | (nt, conset, conkeys) <- _coninfo
                                , con <- Set.toList (Set.difference conset conkeys)
                                ]
-                        -- "Transform.ag"(line 867, column 12)
+                        -- "Transform.ag"(line 869, column 12)
                         _lhsOcollectedRules =
                             [ (nt,con,r)
                             | (nt, conset, _) <- _coninfo
                             , con <- Set.toList conset
                             , r <- _rulesIruleInfos
                             ]
-                        -- "Transform.ag"(line 873, column 12)
+                        -- "Transform.ag"(line 875, column 12)
                         _lhsOcollectedSigs =
                             [ (nt,con,ts)
                             | (nt, conset, _) <- _coninfo
                             , con <- Set.toList conset
                             , ts <- _rulesIsigInfos
                             ]
-                        -- "Transform.ag"(line 880, column 12)
+                        -- "Transform.ag"(line 882, column 12)
                         _lhsOcollectedInsts =
                             [ (nt,con,_rulesIdefinedInsts)
                             | (nt, conset, _) <- _coninfo
                             , con <- Set.toList conset
                             ]
-                        -- "Transform.ag"(line 886, column 12)
+                        -- "Transform.ag"(line 888, column 12)
                         _lhsOcollectedUniques =
                             [ (nt,con,_rulesIuniqueInfos)
                             | (nt, conset, _) <- _coninfo
                             , con <- Set.toList conset
                             ]
-                        -- "Transform.ag"(line 892, column 12)
+                        -- "Transform.ag"(line 894, column 12)
                         _lhsOcollectedAugments =
                             [ (nt, con, _rulesIaugmentInfos)
                             | (nt, conset, _) <- _coninfo
@@ -3708,7 +3710,7 @@
                          _tlIcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])
                          _tlIerrors :: (Seq Error)
                          _tlIsemPragmasCollect :: PragmaMap
-                         -- use rule "Transform.ag"(line 700, column 55)
+                         -- use rule "Transform.ag"(line 702, column 55)
                          _lhsOattrOrderCollect =
                              _hdIattrOrderCollect `orderMapUnion` _tlIattrOrderCollect
                          -- use rule "Transform.ag"(line 150, column 32)
@@ -3729,7 +3731,7 @@
                          -- use rule "Transform.ag"(line 42, column 19)
                          _lhsOerrors =
                              _hdIerrors Seq.>< _tlIerrors
-                         -- use rule "Transform.ag"(line 672, column 56)
+                         -- use rule "Transform.ag"(line 674, column 56)
                          _lhsOsemPragmasCollect =
                              _hdIsemPragmasCollect `pragmaMapUnion` _tlIsemPragmasCollect
                          -- copy rule (down)
@@ -3768,7 +3770,7 @@
                          _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])
                          _lhsOerrors :: (Seq Error)
                          _lhsOsemPragmasCollect :: PragmaMap
-                         -- use rule "Transform.ag"(line 700, column 55)
+                         -- use rule "Transform.ag"(line 702, column 55)
                          _lhsOattrOrderCollect =
                              Map.empty
                          -- use rule "Transform.ag"(line 150, column 32)
@@ -3789,7 +3791,7 @@
                          -- use rule "Transform.ag"(line 42, column 19)
                          _lhsOerrors =
                              Seq.empty
-                         -- use rule "Transform.ag"(line 672, column 56)
+                         -- use rule "Transform.ag"(line 674, column 56)
                          _lhsOsemPragmasCollect =
                              Map.empty
                      in  ( _lhsOattrOrderCollect,_lhsOcollectedAugments,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOerrors,_lhsOsemPragmasCollect))) )
@@ -3863,28 +3865,28 @@
                    _lhsOruleInfos :: ([RuleInfo])
                    _lhsOsigInfos :: ([SigInfo])
                    _lhsOuniqueInfos :: ([UniqueInfo])
-                   -- "Transform.ag"(line 717, column 7)
+                   -- "Transform.ag"(line 719, column 7)
                    _dependency =
                        [ Dependency b a | b <- before_, a <- after_ ]
-                   -- "Transform.ag"(line 718, column 7)
+                   -- "Transform.ag"(line 720, column 7)
                    _lhsOorderDepsCollect =
                        Set.fromList _dependency
-                   -- use rule "Transform.ag"(line 850, column 40)
+                   -- use rule "Transform.ag"(line 852, column 40)
                    _lhsOaugmentInfos =
                        []
-                   -- use rule "Transform.ag"(line 911, column 55)
+                   -- use rule "Transform.ag"(line 913, column 55)
                    _lhsOdefinedInsts =
                        []
-                   -- use rule "Transform.ag"(line 682, column 46)
+                   -- use rule "Transform.ag"(line 684, column 46)
                    _lhsOpragmaNamesCollect =
                        []
-                   -- use rule "Transform.ag"(line 847, column 40)
+                   -- use rule "Transform.ag"(line 849, column 40)
                    _lhsOruleInfos =
                        []
-                   -- use rule "Transform.ag"(line 848, column 40)
+                   -- use rule "Transform.ag"(line 850, column 40)
                    _lhsOsigInfos =
                        []
-                   -- use rule "Transform.ag"(line 849, column 40)
+                   -- use rule "Transform.ag"(line 851, column 40)
                    _lhsOuniqueInfos =
                        []
                in  ( _lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )
@@ -3899,25 +3901,25 @@
                    _lhsOruleInfos :: ([RuleInfo])
                    _lhsOsigInfos :: ([SigInfo])
                    _lhsOuniqueInfos :: ([UniqueInfo])
-                   -- "Transform.ag"(line 908, column 17)
+                   -- "Transform.ag"(line 910, column 17)
                    _lhsOaugmentInfos =
                        [ (ident_, rhs_) ]
-                   -- use rule "Transform.ag"(line 911, column 55)
+                   -- use rule "Transform.ag"(line 913, column 55)
                    _lhsOdefinedInsts =
                        []
-                   -- use rule "Transform.ag"(line 713, column 44)
+                   -- use rule "Transform.ag"(line 715, column 44)
                    _lhsOorderDepsCollect =
                        Set.empty
-                   -- use rule "Transform.ag"(line 682, column 46)
+                   -- use rule "Transform.ag"(line 684, column 46)
                    _lhsOpragmaNamesCollect =
                        []
-                   -- use rule "Transform.ag"(line 847, column 40)
+                   -- use rule "Transform.ag"(line 849, column 40)
                    _lhsOruleInfos =
                        []
-                   -- use rule "Transform.ag"(line 848, column 40)
+                   -- use rule "Transform.ag"(line 850, column 40)
                    _lhsOsigInfos =
                        []
-                   -- use rule "Transform.ag"(line 849, column 40)
+                   -- use rule "Transform.ag"(line 851, column 40)
                    _lhsOuniqueInfos =
                        []
                in  ( _lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )
@@ -3938,25 +3940,25 @@
                    _patternIdefinedInsts :: ([Identifier])
                    _patternIpatunder :: ([AttrName]->Pattern)
                    _patternIstpos :: Pos
-                   -- "Transform.ag"(line 899, column 10)
+                   -- "Transform.ag"(line 901, column 10)
                    _lhsOruleInfos =
                        [ (_patternIpatunder, rhs_, _patternIdefinedAttrs, owrt_, show _patternIstpos) ]
-                   -- use rule "Transform.ag"(line 850, column 40)
+                   -- use rule "Transform.ag"(line 852, column 40)
                    _lhsOaugmentInfos =
                        []
-                   -- use rule "Transform.ag"(line 911, column 55)
+                   -- use rule "Transform.ag"(line 913, column 55)
                    _lhsOdefinedInsts =
                        _patternIdefinedInsts
-                   -- use rule "Transform.ag"(line 713, column 44)
+                   -- use rule "Transform.ag"(line 715, column 44)
                    _lhsOorderDepsCollect =
                        Set.empty
-                   -- use rule "Transform.ag"(line 682, column 46)
+                   -- use rule "Transform.ag"(line 684, column 46)
                    _lhsOpragmaNamesCollect =
                        []
-                   -- use rule "Transform.ag"(line 848, column 40)
+                   -- use rule "Transform.ag"(line 850, column 40)
                    _lhsOsigInfos =
                        []
-                   -- use rule "Transform.ag"(line 849, column 40)
+                   -- use rule "Transform.ag"(line 851, column 40)
                    _lhsOuniqueInfos =
                        []
                    ( _patternIcopy,_patternIdefinedAttrs,_patternIdefinedInsts,_patternIpatunder,_patternIstpos) =
@@ -3972,25 +3974,25 @@
                    _lhsOruleInfos :: ([RuleInfo])
                    _lhsOsigInfos :: ([SigInfo])
                    _lhsOuniqueInfos :: ([UniqueInfo])
-                   -- "Transform.ag"(line 686, column 7)
+                   -- "Transform.ag"(line 688, column 7)
                    _lhsOpragmaNamesCollect =
                        names_
-                   -- use rule "Transform.ag"(line 850, column 40)
+                   -- use rule "Transform.ag"(line 852, column 40)
                    _lhsOaugmentInfos =
                        []
-                   -- use rule "Transform.ag"(line 911, column 55)
+                   -- use rule "Transform.ag"(line 913, column 55)
                    _lhsOdefinedInsts =
                        []
-                   -- use rule "Transform.ag"(line 713, column 44)
+                   -- use rule "Transform.ag"(line 715, column 44)
                    _lhsOorderDepsCollect =
                        Set.empty
-                   -- use rule "Transform.ag"(line 847, column 40)
+                   -- use rule "Transform.ag"(line 849, column 40)
                    _lhsOruleInfos =
                        []
-                   -- use rule "Transform.ag"(line 848, column 40)
+                   -- use rule "Transform.ag"(line 850, column 40)
                    _lhsOsigInfos =
                        []
-                   -- use rule "Transform.ag"(line 849, column 40)
+                   -- use rule "Transform.ag"(line 851, column 40)
                    _lhsOuniqueInfos =
                        []
                in  ( _lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )
@@ -4005,25 +4007,25 @@
                    _lhsOpragmaNamesCollect :: ([Identifier])
                    _lhsOruleInfos :: ([RuleInfo])
                    _lhsOuniqueInfos :: ([UniqueInfo])
-                   -- "Transform.ag"(line 902, column 14)
+                   -- "Transform.ag"(line 904, column 14)
                    _lhsOsigInfos =
                        [ (ident_, tp_) ]
-                   -- use rule "Transform.ag"(line 850, column 40)
+                   -- use rule "Transform.ag"(line 852, column 40)
                    _lhsOaugmentInfos =
                        []
-                   -- use rule "Transform.ag"(line 911, column 55)
+                   -- use rule "Transform.ag"(line 913, column 55)
                    _lhsOdefinedInsts =
                        []
-                   -- use rule "Transform.ag"(line 713, column 44)
+                   -- use rule "Transform.ag"(line 715, column 44)
                    _lhsOorderDepsCollect =
                        Set.empty
-                   -- use rule "Transform.ag"(line 682, column 46)
+                   -- use rule "Transform.ag"(line 684, column 46)
                    _lhsOpragmaNamesCollect =
                        []
-                   -- use rule "Transform.ag"(line 847, column 40)
+                   -- use rule "Transform.ag"(line 849, column 40)
                    _lhsOruleInfos =
                        []
-                   -- use rule "Transform.ag"(line 849, column 40)
+                   -- use rule "Transform.ag"(line 851, column 40)
                    _lhsOuniqueInfos =
                        []
                in  ( _lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )
@@ -4038,25 +4040,25 @@
                    _lhsOpragmaNamesCollect :: ([Identifier])
                    _lhsOruleInfos :: ([RuleInfo])
                    _lhsOsigInfos :: ([SigInfo])
-                   -- "Transform.ag"(line 905, column 16)
+                   -- "Transform.ag"(line 907, column 16)
                    _lhsOuniqueInfos =
                        [ (ident_, ref_) ]
-                   -- use rule "Transform.ag"(line 850, column 40)
+                   -- use rule "Transform.ag"(line 852, column 40)
                    _lhsOaugmentInfos =
                        []
-                   -- use rule "Transform.ag"(line 911, column 55)
+                   -- use rule "Transform.ag"(line 913, column 55)
                    _lhsOdefinedInsts =
                        []
-                   -- use rule "Transform.ag"(line 713, column 44)
+                   -- use rule "Transform.ag"(line 715, column 44)
                    _lhsOorderDepsCollect =
                        Set.empty
-                   -- use rule "Transform.ag"(line 682, column 46)
+                   -- use rule "Transform.ag"(line 684, column 46)
                    _lhsOpragmaNamesCollect =
                        []
-                   -- use rule "Transform.ag"(line 847, column 40)
+                   -- use rule "Transform.ag"(line 849, column 40)
                    _lhsOruleInfos =
                        []
-                   -- use rule "Transform.ag"(line 848, column 40)
+                   -- use rule "Transform.ag"(line 850, column 40)
                    _lhsOsigInfos =
                        []
                in  ( _lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )
@@ -4118,25 +4120,25 @@
                     _tlIruleInfos :: ([RuleInfo])
                     _tlIsigInfos :: ([SigInfo])
                     _tlIuniqueInfos :: ([UniqueInfo])
-                    -- use rule "Transform.ag"(line 850, column 40)
+                    -- use rule "Transform.ag"(line 852, column 40)
                     _lhsOaugmentInfos =
                         _hdIaugmentInfos ++ _tlIaugmentInfos
-                    -- use rule "Transform.ag"(line 911, column 55)
+                    -- use rule "Transform.ag"(line 913, column 55)
                     _lhsOdefinedInsts =
                         _hdIdefinedInsts ++ _tlIdefinedInsts
-                    -- use rule "Transform.ag"(line 713, column 44)
+                    -- use rule "Transform.ag"(line 715, column 44)
                     _lhsOorderDepsCollect =
                         _hdIorderDepsCollect `Set.union` _tlIorderDepsCollect
-                    -- use rule "Transform.ag"(line 682, column 46)
+                    -- use rule "Transform.ag"(line 684, column 46)
                     _lhsOpragmaNamesCollect =
                         _hdIpragmaNamesCollect ++ _tlIpragmaNamesCollect
-                    -- use rule "Transform.ag"(line 847, column 40)
+                    -- use rule "Transform.ag"(line 849, column 40)
                     _lhsOruleInfos =
                         _hdIruleInfos ++ _tlIruleInfos
-                    -- use rule "Transform.ag"(line 848, column 40)
+                    -- use rule "Transform.ag"(line 850, column 40)
                     _lhsOsigInfos =
                         _hdIsigInfos ++ _tlIsigInfos
-                    -- use rule "Transform.ag"(line 849, column 40)
+                    -- use rule "Transform.ag"(line 851, column 40)
                     _lhsOuniqueInfos =
                         _hdIuniqueInfos ++ _tlIuniqueInfos
                     ( _hdIaugmentInfos,_hdIdefinedInsts,_hdIorderDepsCollect,_hdIpragmaNamesCollect,_hdIruleInfos,_hdIsigInfos,_hdIuniqueInfos) =
@@ -4153,25 +4155,25 @@
                     _lhsOruleInfos :: ([RuleInfo])
                     _lhsOsigInfos :: ([SigInfo])
                     _lhsOuniqueInfos :: ([UniqueInfo])
-                    -- use rule "Transform.ag"(line 850, column 40)
+                    -- use rule "Transform.ag"(line 852, column 40)
                     _lhsOaugmentInfos =
                         []
-                    -- use rule "Transform.ag"(line 911, column 55)
+                    -- use rule "Transform.ag"(line 913, column 55)
                     _lhsOdefinedInsts =
                         []
-                    -- use rule "Transform.ag"(line 713, column 44)
+                    -- use rule "Transform.ag"(line 715, column 44)
                     _lhsOorderDepsCollect =
                         Set.empty
-                    -- use rule "Transform.ag"(line 682, column 46)
+                    -- use rule "Transform.ag"(line 684, column 46)
                     _lhsOpragmaNamesCollect =
                         []
-                    -- use rule "Transform.ag"(line 847, column 40)
+                    -- use rule "Transform.ag"(line 849, column 40)
                     _lhsOruleInfos =
                         []
-                    -- use rule "Transform.ag"(line 848, column 40)
+                    -- use rule "Transform.ag"(line 850, column 40)
                     _lhsOsigInfos =
                         []
-                    -- use rule "Transform.ag"(line 849, column 40)
+                    -- use rule "Transform.ag"(line 851, column 40)
                     _lhsOuniqueInfos =
                         []
                 in  ( _lhsOaugmentInfos,_lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)) )
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.16"
+banner = "Attribute Grammar compiler / HUT project. Version 0.9.17"
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.16
+version: 0.9.17
 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.16
+version: 0.9.17
 license: GPL
 license-file: LICENSE
 maintainer: Arie Middelkoop <ariem@cs.uu.nl>
