packages feed

uuagc 0.9.50.2 → 0.9.51

raw patch · 58 files changed

+31176/−22963 lines, 58 filesdep +minisatdep ~uuagc

Dependencies added: minisat

Dependency ranges changed: uuagc

Files

src-ag/ExecutionPlan.ag view
@@ -33,7 +33,7 @@                                  params      : {[Identifier]}                                  classCtxs   : {ClassContext}                  -- class context at the datatype level                                  initial     : {StateIdentifier}-                                 initialv    : {Maybe VisitIdentifier}+                                 initialv    : {[VisitIdentifier]}                                  nextVisits  : {Map StateIdentifier StateCtx}  -- info about the next visits from a given state                                  prevVisits  : {Map StateIdentifier StateCtx}  -- info about the previous visits to a given state                                  prods       : EProductions
src-ag/ExecutionPlan2Caml.ag view
@@ -617,8 +617,8 @@       >-< @loc.wrapperBody   loc.wrapperBody     = case @initialv of-        Nothing -> text "{ }"  -- case where there are no inherited or synthesized attributes-        Just initv ->+        [] -> text "{ }"  -- case where there are no inherited or synthesized attributes+        (initv:_) -> -- TODO: take care of multiple visits           let attach  = "let" >#< "sem" >#< "=" >#< "act." >|< nm_attach @nt >#< "()" >#< "in"  -- run attach code                -- result transformer to wrapper output record
src-ag/ExecutionPlan2Clean.ag view
@@ -540,8 +540,8 @@                                     >-<                                     indent 3 (case @initialv of                                       -- case where there are no inherited or synthesized attributes-                                      Nothing -> text @loc.synname -- TODO : Remove? >#< " { }"-                                      Just initv ->+                                      [] -> text @loc.synname -- TODO : Remove? >#< " { }"+                                      (initv:_) -> -- TODO: take care of multiple visits                                         let inCon  = conNmTVisitIn @nt initv                                             outCon = conNmTVisitOut @nt initv                                             pat    = @loc.addbang $ pp_parens $ pat0
src-ag/ExecutionPlan2Hs.ag view
@@ -469,31 +469,42 @@                                 >-<                                 indent 3 (case @initialv of                                   -- case where there are no inherited or synthesized attributes-                                  Nothing -> @loc.synname >#< " { }"-                                  Just initv ->-                                    let inCon  = conNmTVisitIn @nt initv-                                        outCon = conNmTVisitOut @nt initv-                                        pat    = @loc.addbang $ pp_parens $ pat0-                                        pat0   = outCon >#< ppSpaced @loc.synlist -- should be an "end" state, thus no continuation expected here-                                        arg    = inCon >#< ppSpaced @loc.inhlist1-                                        ind    = case @loc.firstVisitInfo of-                                                   NoneVis  -> error "wrapper: initial state should have a next visit but it has none"-                                                   OneVis _ -> empty-                                                   ManyVis  -> @loc.k_type >|< "_v" >|< initv-                                        extra  = if dummyTokenVisit @lhs.options+                                  [] -> @loc.synname >#< " { }"+                                  initvs@(initv:_) ->+                                    let extra  = if dummyTokenVisit @lhs.options                                                  then pp $ dummyArg @lhs.options True                                                  else empty-                                        convert = case Map.lookup initv @lhs.allVisitKinds of-                                                    Just kind -> case kind of-                                                                   VisitPure _  -> text "return"-                                                                   VisitMonadic -> empty                                         unMonad | monadicWrappers @lhs.options = empty                                                 | otherwise                    = unMon @lhs.options+                                        genSteps _      []           = []+                                        genSteps curst (curv:nextvs) = setarg : dovis : genSteps nextst nextvs where+                                          inCon = conNmTVisitIn @nt curv+                                          outCon = conNmTVisitOut @nt curv+                                          pat    = @loc.addbang $ pp_parens $ pat0+                                          pat0   = outCon >#< ppSpaced (map (lhsname @lhs.options False) syns) >#< cont+                                          cont   | null nextvs = empty+                                                 | otherwise   = pp "sem"+                                          inhs = Set.toList $ Map.findWithDefault Set.empty curv @prods.visituses+                                          syns = Set.toList $ Map.findWithDefault Set.empty curv @prods.visitdefs+                                          arg = inCon >#< ppSpaced (map (lhsname @lhs.options True) inhs)+                                          setarg = "let" >#< @loc.addbangWrap (pp "arg" >|< curv) >#< "=" >#< arg+                                          ind    = case Map.findWithDefault ManyVis curst @nextVisits of+                                                   NoneVis  -> error "wrapper: initial state should have a next visit but it has none"+                                                   OneVis _ -> empty+                                                   ManyVis  -> @loc.k_type >|< "_v" >|< initv+                                          nextst = curst + 1 -- This is not correct, but works both for KW and AOAG+                                                             -- Should be lookup up based on visit+                                          convert = case Map.lookup curv @lhs.allVisitKinds of+                                                      Just kind -> case kind of+                                                         VisitPure _  -> text "return"+                                                         VisitMonadic -> empty+                                          dovis  = pat >#< "<-" >#< convert >#< pp_parens +                                            ("inv_" >|< @nt >|< "_s" >|< curst >#< "sem" >#< ind +                                            >#< "arg" >|< curv >#< extra)                                     in unMonad >#< "("                                        >-< indent 2 (                                               "do" >#< ( @loc.addbang (pp "sem") >#< "<-" >#< "act"   -- run the per-node monadic code to get the initial state (of the root)-                                                       >-< "let" >#< @loc.addbangWrap (pp "arg") >#< "=" >#< arg-                                                       >-< pat >#< "<-" >#< convert >#< pp_parens ("inv_" >|< @nt >|< "_s" >|< @initial >#< "sem" >#< ind >#< "arg" >#< extra)  -- invoke initial state (of the root)+                                                       >-< vlist (genSteps @initial initvs)                                                        >-< "return" >#< pp_parens (@loc.synname >#< ppSpaced @loc.synlist)                                                        )                                             )
src-ag/KWOrder.ag view
@@ -3,6 +3,8 @@ INCLUDE "Expression.ag" INCLUDE "Patterns.ag" INCLUDE "DistChildAttr.ag"+INCLUDE "ExecutionPlanPre.ag"+INCLUDE "ExecutionPlanCommon.ag"  imports {@@ -28,158 +30,6 @@ }  ----------------------------------------------------------------------------------         Distributing options---------------------------------------------------------------------------------ATTR Grammar Nonterminals Nonterminal Productions Production Children Child-  [ options : {Options} | | ]------------------------------------------------------------------------------------         Give unique names to rules---------------------------------------------------------------------------------ATTR Nonterminal Nonterminals-     Production Productions-     Rule Rules  [ | rulenumber : Int | ]--SEM  Grammar-  |  Grammar nonts.rulenumber = 0--SEM  Rule-  |  Rule lhs.rulenumber = @lhs.rulenumber + 1-     	  loc.rulename   = maybe (identifier $ "rule" ++ show @lhs.rulenumber) id @mbName------------------------------------------------------------------------------------         Find out which nonterminals are recursive----------------------------------------------------------------------------------ATTR Nonterminals Nonterminal [ | | ntDeps, ntHoDeps USE {`mappend`} {mempty} : {Map NontermIdent (Set NontermIdent)} ]-ATTR Nonterminals Nonterminal [ closedNtDeps, closedHoNtDeps, closedHoNtRevDeps : {Map NontermIdent (Set NontermIdent)} | | ]-ATTR Productions Production Children Child [ | | refNts, refHoNts USE {`mappend`} {mempty} : {Set NontermIdent} ]--SEM Nonterminal | Nonterminal-  lhs.ntDeps            = Map.singleton @nt @prods.refNts-  lhs.ntHoDeps          = Map.singleton @nt @prods.refHoNts--  loc.closedNtDeps      = Map.findWithDefault Set.empty @nt @lhs.closedNtDeps-  loc.closedHoNtDeps    = Map.findWithDefault Set.empty @nt @lhs.closedHoNtDeps-  loc.closedHoNtRevDeps = Map.findWithDefault Set.empty @nt @lhs.closedHoNtRevDeps--  loc.recursive         = @nt `Set.member` @loc.closedNtDeps-  loc.nontrivAcyc       = @nt `Set.member` @loc.closedHoNtDeps-  loc.hoInfo            = HigherOrderInfo { hoNtDeps            = @loc.closedHoNtDeps-                                          , hoNtRevDeps         = @loc.closedHoNtRevDeps-                                          , hoAcyclic           = @loc.nontrivAcyc-                                          }--SEM Child | Child-  loc.refNts = case @tp of-                 NT nt _ _ -> Set.singleton nt-                 _         -> mempty-  loc.refHoNts = if @loc.isHigherOrder then @loc.refNts else mempty-  loc.isHigherOrder = case @kind of-                        ChildSyntax -> False-                        _           -> True--SEM Grammar | Grammar-  loc.closedNtDeps      = closeMap @nonts.ntDeps-  loc.closedHoNtDeps    = closeMap @nonts.ntHoDeps-  loc.closedHoNtRevDeps = revDeps @loc.closedHoNtDeps------------------------------------------------------------------------------------         Determine which children have an around-rule------------------------------------------------------------------------------------ Propagate the around-map downward-ATTR Nonterminals Nonterminal-  [ aroundMap : {Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))} || ]--ATTR Productions Production-  [ aroundMap : {Map ConstructorIdent (Map Identifier [Expression])} || ]--ATTR Children Child-  [ aroundMap : {Map Identifier [Expression]} | | ]--SEM Nonterminal | Nonterminal  loc.aroundMap = Map.findWithDefault Map.empty @nt @lhs.aroundMap-SEM Production | Production    loc.aroundMap = Map.findWithDefault Map.empty @con @lhs.aroundMap--SEM Grammar | Grammar-  nonts.aroundMap = @aroundsMap--SEM Child | Child-  loc.hasArounds = case Map.lookup @name @lhs.aroundMap of-                     Nothing -> False-                     Just as -> not (null as)------------------------------------------------------------------------------------         Determine which children are used by merges------------------------------------------------------------------------------------ Propagate the around-map downward-ATTR Nonterminals Nonterminal-  [ mergeMap : {Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))} || ]--ATTR Productions Production-  [ mergeMap : {Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))} || ]--ATTR Children Child-  [ mergeMap : {Map Identifier (Identifier, [Identifier], Expression)} mergedChildren : {Set Identifier} | | ]--SEM Nonterminal | Nonterminal  loc.mergeMap = Map.findWithDefault Map.empty @nt @lhs.mergeMap-SEM Production | Production    loc.mergeMap = Map.findWithDefault Map.empty @con @lhs.mergeMap--SEM Grammar | Grammar-  nonts.mergeMap = @mergeMap--SEM Production | Production-  loc.mergedChildren = Set.unions [ Set.fromList ms | (_,ms,_) <- Map.elems @loc.mergeMap ]--SEM Child | Child-  loc.merges   = maybe Nothing (\(_,ms,_) -> Just ms) $ Map.lookup @name @lhs.mergeMap-  loc.isMerged = @name `Set.member` @lhs.mergedChildren------------------------------------------------------------------------------------         Distribute the ContextMap to nonterminals----------------------------------------------------------------------------------ATTR Nonterminals Nonterminal [ classContexts : ContextMap | | ]--SEM Grammar | Grammar-  nonts.classContexts = @contextMap--SEM Nonterminal | Nonterminal-  loc.classContexts = Map.findWithDefault [] @nt @lhs.classContexts------------------------------------------------------------------------------------         Gather all rules per production for the execution plan---------------------------------------------------------------------------------ATTR Expression [ | | copy : SELF ]--ATTR Rule  [ | | erules : ERule ]-ATTR Rules [ | | erules USE {:} {[]} : ERules  ]--SEM Rule-  | Rule lhs.erules = ERule @loc.rulename-                            @pattern.copy-                            @rhs.copy-                            @owrt-                            @origin-                            @explicit-                            @pure-                            @mbError-------------------------------------------------------------------------------------         Gather all childs per production for the execution plan----------------------------------------------------------------------------------ATTR Child    [ | | echilds : EChild ]-ATTR Children [ | | echilds USE {:} {[]} : EChildren ]--SEM Child-  | Child lhs.echilds = case @tp of-                          NT _ _ _ -> EChild @name @tp @kind @loc.hasArounds @loc.merges @loc.isMerged-                          _        -> ETerm @name @tp--------------------------------------------------------------------------------- --         Dependency graph per production ------------------------------------------------------------------------------- -- Gather vertices@@ -364,26 +214,4 @@                             Right (o,d,v) -> (o,d,v,Seq.empty)                      else (lazyPlan,empty,empty,Seq.empty) -----------------------------------------------------------------------------------         Output nonterminal type mappings---------------------------------------------------------------------------------ATTR Grammar-     Nonterminals  [ | | inhmap USE {`Map.union`} {Map.empty} : {Map.Map NontermIdent Attributes}-     	                 synmap USE {`Map.union`} {Map.empty} : {Map.Map NontermIdent Attributes} ] -ATTR Nonterminal [ | | inhmap : {Map.Map NontermIdent Attributes}-     		       synmap : {Map.Map NontermIdent Attributes} ]-SEM Nonterminal-  | Nonterminal lhs.inhmap = Map.singleton @nt @inh-    		lhs.synmap = Map.singleton @nt @syn------------------------------------------------------------------------------------         Output nonterminal type mappings---------------------------------------------------------------------------------ATTR Grammar Nonterminals Nonterminal [ | | localSigMap USE {`Map.union`} {Map.empty} : {Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))} ]-ATTR Productions Production           [ | | localSigMap USE {`Map.union`} {Map.empty} : {Map.Map ConstructorIdent (Map.Map Identifier Type)} ]-ATTR TypeSigs TypeSig                 [ | | localSigMap USE {`Map.union`} {Map.empty} : {Map Identifier Type} ]--SEM Nonterminal | Nonterminal  lhs.localSigMap = Map.singleton @nt @prods.localSigMap-SEM Production | Production    lhs.localSigMap = Map.singleton @con @typeSigs.localSigMap-SEM TypeSig | TypeSig          lhs.localSigMap = Map.singleton @name @tp
+ src-ag/LOAG/Order.ag view
@@ -0,0 +1,435 @@+INCLUDE "AbstractSyntax"+INCLUDE "Patterns"+INCLUDE "CodeSyntax"+INCLUDE "Expression"+INCLUDE "HsToken"+INCLUDE "LOAG/Rep"+INCLUDE "LOAG/Prepare"+INCLUDE "ExecutionPlanCommon"++MODULE {LOAG.Order}+{}+{}+imports{+import qualified Data.Array as A+import qualified Data.Map as Map+import qualified Data.IntMap as IMap+import qualified Data.Set as Set+import qualified Data.IntSet as IS+import qualified Data.Sequence as Seq+import qualified CommonTypes as CT+import Control.Monad (forM,when)+import Control.Monad.ST+import Data.Maybe(catMaybes)+import Data.Monoid(mappend,mempty)+import Data.STRef+import AbstractSyntax+import qualified LOAG.AOAG as   AOAG+import LOAG.Common+import LOAG.Chordal+import LOAG.Rep+import LOAG.Graphs+import CodeSyntax+import Data.Maybe (isJust, fromJust)+import ExecutionPlan+import GrammarInfo+import HsToken (HsToken(..))+import Pretty+import qualified System.IO as IO+import           System.IO.Unsafe+}++{+fst' (a,_,_) = a+snd' (_,b,_) = b+trd' (_,_,c) = c+}++ATTR Grammar [ | | +    output   : ExecutionPlan+    ads      : {Maybe PP_Doc}+    errors   : {Seq.Seq Error}]++SEM Grammar | Grammar+    lhs.errors = either Seq.singleton (const Seq.empty) @loc.schedRes+    lhs.ads    = case either (const []) trd' @loc.schedRes of+                    []  -> Nothing +                    ads -> Just $ ppAds @lhs.options @nonts.pmp ads +    lhs.output = ExecutionPlan @nonts.enonts @typeSyns @wrappers @derivings++    nonts.sched   = either (const Map.empty) snd' @loc.schedRes+    nonts.tdp     = either (error "no tdp") (fromJust.fst') @loc.schedRes++    loc.schedRes =   if CT.loag @lhs.options+                        then if CT.aoag @lhs.options+                                then AOAG.schedule @smf.self @self @loc.ag @nonts.ads+                                else @loc.loagRes+                        else Right (Nothing,Map.empty,[])+    loc.loagRes = let putStrLn s = when (verbose @lhs.options) (IO.putStrLn s)+                  in  Right $ unsafePerformIO $ scheduleLOAG @loc.ag putStrLn @lhs.options+    loc.ag = repToAg @smf.self @self++    nonts.res_ads = either (const []) trd' @loc.schedRes++-- Gather the fake dependencies from the ads result of AOAG++ATTR Nonterminals Nonterminal Productions Production+    [ res_ads : {[Edge]} || ]+ATTR Nonterminals Nonterminal +    [ || fdps USE {Map.union} {Map.empty} : AttrOrderMap ]++SEM Nonterminal | Nonterminal+    lhs.fdps    = Map.singleton @nt @prods.fdps++ATTR Productions Production [ || +    fdps USE {Map.union} {Map.empty} : {Map.Map ConstructorIdent (Set Dependency)} ]++SEM Production | Production+    lhs.fdps    = +      let op d@(f,t) ds+            | fst (argsOf $ findWithErr @lhs.pmpf "fdps" f) == (@lhs.dty,getName @con)+                = Set.insert (edgeToDep @lhs.pmpf d) ds+            | otherwise                     +                = ds+      in Map.singleton @con $ foldr op Set.empty @lhs.res_ads+{+data AltAttr = AltAttr Identifier Identifier Bool+               deriving (Eq, Ord, Show)++edgeToDep :: PMP -> Edge -> Dependency+edgeToDep pmp (f,t) = +    Dependency (OccAttr (identifier f1) (identifier i1)) +               (OccAttr (identifier f2) (identifier i2))+    where (MyOccurrence (_,f1) (i1,_),MyOccurrence (_,f2) (i2,_))+            = (findWithErr pmp "edgeToDep" f, +               findWithErr pmp "edgeToDep" t) ++ppAds :: Options -> PMP -> [Edge] -> PP_Doc+ppAds opts pmp = foldr ((>-<) . ppEdge opts pmp) empty++ppEdge :: Options -> PMP -> Edge -> PP_Doc+ppEdge opts pmp (f,t) = +    text sem    >#< text (show ty) >|< " | " >|< text p >|< "   "+                >|< ppOcc pmp f >|< text " < " >|< ppOcc pmp t+ where (MyOccurrence ((ty,p),_) _) = pmp Map.! f+       sem | lcKeywords opts = "sem"+           | otherwise       = "SEM"+   +ppOcc :: PMP -> Vertex -> PP_Doc+ppOcc pmp v = text f >|< text "." >|< fst a+ where (MyOccurrence ((t,p),f) a) = findWithErr pmp "ppOcc" v++}++-- Construct Execution Plan++ATTR Nonterminals Nonterminal [ +    visMapf                         : {IMap.IntMap Int}+    tdp                             : TDPRes ||+    enonts USE {(++)} {[]}          : ENonterminals+    visMap USE {IMap.union} {IMap.empty}  : {IMap.IntMap Int}]++SEM Grammar+  | Grammar nonts.visMapf = @nonts.visMap+            nonts.visitnum = 0++SEM Nonterminal+  | Nonterminal+        loc.initial = @lhs.visitnum +        loc.vnums   = zipWith const [@loc.initial..] @segments+        loc.initialVisit = @vnums+        loc.nextVis = Map.fromList $ (@loc.initial + length @vnums, NoneVis)+                                   : [(v, OneVis v) | v <- @vnums ]+        loc.prevVis = Map.fromList $ (@loc.initial, NoneVis)+                                   : [(v+1, OneVis v) | v <- @vnums ]+        loc.visMap  = let op vnr (MySegment visnr ins syns _ _) =+                            IMap.fromList $ zip syns (repeat vnr)+                       in IMap.unions $ zipWith op [@loc.initial..] @mysegments+        lhs.enonts = [ENonterminal +                        @nt+                        @params +                        @loc.classContexts+                        @loc.initial+                        @loc.initialVisit+                        @loc.nextVis+                        @loc.prevVis+                        @prods.eprods+                        @loc.recursive+                        @loc.hoInfo ]++ATTR Productions Production [+    visMapf                 : {IMap.IntMap Int} +    tdp                     : TDPRes ||+    eprods USE {(++)} {[]}  : EProductions ]++SEM Production +  | Production+        segs.ruleMap  = @rules.ruleMap+        segs.done     = (Set.empty, Set.empty, Set.empty, Set.empty)+        loc.intros  = let intro (Child nm _ kind)+                            | kind == ChildAttr = Nothing+                            | otherwise = Just $ ChildIntro nm+                        in catMaybes $ map intro @children.self+        lhs.eprods = +            let ((Visit ident from to inh syn steps kind):vss) = @segs.evisits+                steps' = @loc.intros ++ steps+                visits | null @segs.evisits = []+                       | otherwise = +                            ((Visit ident from to inh syn steps' kind):vss)+             in [EProduction+                        @con+                        @params+                        @constraints+                        @rules.erules+                        @children.echilds+                        visits ]++ATTR Nonterminals Nonterminal Productions Production MySegments MySegment+        [ | visitnum : Int |  ]++-- Visit nums should be the same for each production, but different globally+SEM Productions+  | Cons tl.visitnum  = @lhs.visitnum+         lhs.visitnum = @hd.visitnum++SEM MySegment | MySegment +visitnum = (+1)+ATTR MySegments MySegment [+    -- maps which attribute occurrence is calculated in which visit+    visMapf : {IMap.IntMap Int} | | ]++ATTR MySegments MySegment [+    ps      : PLabel +    ruleMap : {Map.Map MyOccurrence Identifier}+    nmprf   : NMP_R+    options : {Options}+    tdp     : TDPRes+    done    : { (Set.Set MyOccurrence, Set.Set FLabel+                , Set.Set Identifier, Set.Set (FLabel,Int))}+    ||]++ATTR MySegments [|| evisits USE {:} {[]} : {Visits}]+ATTR MySegment  [|| +    evisits : {Visit}+    -- synthesized attribute occurrences of this segment+    synsO   : {[Int]}+    visnr   : Int+    done    : { (Set.Set MyOccurrence, Set.Set FLabel+                ,Set.Set Identifier, Set.Set (FLabel,Int))}]++SEM MySegments+    | Cons  hd.done = @lhs.done+            tl.done = @hd.done++SEM MySegment +  | MySegment +      loc.inhs = Map.keysSet$ Map.unions $ map (vertexToAttr @lhs.nmp) @inhAttr+      loc.syns = Map.keysSet$ Map.unions $ map (vertexToAttr @lhs.nmp) @synAttr+      loc.inhsO= maybe (error "segment not instantiated") id @inhOccs+      loc.synsO= maybe (error "segment not instantiated") id @synOccs+      lhs.visnr= @visnr+      loc.kind = if monadic @lhs.options then VisitMonadic else VisitPure True+      lhs.evisits = Visit @lhs.visitnum @lhs.visitnum (@lhs.visitnum+1)+                          @loc.inhs @loc.syns @loc.steps @loc.kind+      loc.steps   = if monadic @lhs.options+                        then [Sim @loc.vss] else [PureGroup @loc.vss True]+      (loc.vss,lhs.done) = (runST $ getVss @lhs.done @lhs.ps @lhs.tdp @synsO +                            @lhs.lfpf @lhs.nmprf @lhs.pmpf @lhs.pmprf @lhs.fty+                            @lhs.visMapf @lhs.ruleMap @lhs.hoMapf)++{+getVss (done,intros,rules,vnrs) ps tdp synsO lfp nmpr pmp pmpr fty visMap ruleMap hoMap = do+    ref   <- newSTRef done+    introed   <- newSTRef intros+    ruleref   <- newSTRef rules +    vnrsref   <- newSTRef vnrs+    lists <- forM synsO (visit ref introed ruleref vnrsref . (pmp Map.!))+    done  <- readSTRef ref+    intros  <- readSTRef introed+    rules  <- readSTRef ruleref+    vnrs  <- readSTRef vnrsref +    return (concat lists, (done, intros, rules, vnrs))+ where +    hochildren = maybe Set.empty id $ Map.lookup ps hoMap+    visit ref introed ruleref vnrsref o@(MyOccurrence (_,f) (_,d)) = do+        visited <- readSTRef ref+        if (o `Set.member` visited) +         then return [] -- already visited+         else do        -- prevent doubles+          modifySTRef ref (Set.insert o)+          if inOutput+           then do -- has to be calculated in this sequence+                rest' <- rest+                locs' <- locs+                sem'  <- sem o+                return $ (rest' ++ locs' ++ sem')+           else if "lhs" == (snd $ argsOf o)+                 then return [] -- inherited of parent, nothing todo+                 else do   -- other input occurrence, perform visit+                    locs' <- locs+                    rest' <- rest+                    visit'<- toVisit o+                    return (rest' ++ locs' ++ visit')+     where preds  = maybe [] (IS.toList . (tdp A.!)) $ Map.lookup o pmpr+           rest   = forM preds (visit ref introed ruleref vnrsref. (pmp Map.!)) +                        >>= (return . concat)+           free   = maybe [] (Set.toList) $ Map.lookup o lfp+           locs   = forM free (visit ref introed ruleref vnrsref)+                        >>= (return . concat)+           sem o  = do  rules <- readSTRef ruleref +                        if r `Set.member` rules+                          then return []+                          else do   writeSTRef ruleref (r `Set.insert` rules) +                                    return [Sem r]+            where r = maybe (error "ruleMap") id $ Map.lookup o ruleMap+           inOutput = f == "lhs" && d == Syn || f /= "lhs" && d == Inh+           toVisit o = do+             vnrs <- readSTRef vnrsref +             if (child,visnr) `Set.member` vnrs+              then return []+              else writeSTRef vnrsref ((child,visnr) `Set.insert` vnrs) >>+                   if child `Set.member` hochildren +                   then do intros <- readSTRef introed+                           case child `Set.member` intros of+                            True    -> return [cvisit]+                            False   -> do+                                writeSTRef introed (Set.insert child intros)+                                let occ = (ps,"inst") >.< (child, AnyDir)+                                    preds = Set.toList $ setConcatMap rep $ +                                                        findWithErr lfp "woot4" occ+                                    rep :: MyOccurrence -> Set.Set MyOccurrence +                                    rep occ | isLoc occ   = Set.insert occ $ +                                                setConcatMap rep $ findWithErr lfp "woot3" occ+                                            | otherwise   = Set.singleton occ+                                rest <- forM preds +                                            (visit ref introed ruleref vnrsref)+                                sem' <- sem occ+                                return $ (concat rest) +++                                         sem' +++                                         [ChildIntro (identifier child)] +++                                         [cvisit]+                   else return [cvisit]+             where  cvisit= ChildVisit (identifier child) ntid visnr+                    child = snd $ argsOf o+                    ntid  = ((\(NT name _ _ )-> name) . fromMyTy) nt +                    visnr = (\x-> findWithErr' visMap (show (inOutput,o,x)) x) (findWithErr nmpr "woot3" (nt <.> attr o))+                    nt    = findWithErr fty "woot" (ps,child)+}++ATTR Nonterminals Nonterminal [ +        sched : {InterfaceRes} ||]+SEM  Nonterminal+  |  Nonterminal  +        loc.assigned = findWithErr @lhs.sched "could not const. interfaces" +                            (getName @nt)+        loc.mx       = if Map.null @lhs.sched+                        then 0 +                        else let mx = fst $ IMap.findMax @loc.assigned in+                              if even mx then mx else mx + 1 +        loc.mysegments =  +            map (\i -> MySegment ((@loc.mx - i) `div` 2)+                        (maybe [] id $ IMap.lookup i @loc.assigned)+                        (maybe [] id $ IMap.lookup (i-1) @loc.assigned) +                            Nothing Nothing)+                 [@loc.mx,@loc.mx-2 .. 2]+        loc.segments = +            map (\(MySegment visnr is ss _ _) -> +                    CSegment (Map.unions $ map (vertexToAttr @lhs.nmp) is)+                             (Map.unions $ map (vertexToAttr @lhs.nmp) ss))+                @loc.mysegments++ATTR Productions Production [ mysegments : MySegments || ]+SEM Production+  | Production+        inst.segs : MySegments+        --translate from attribute to occurrences+        inst.segs = +            map (\(MySegment visnr inhs syns _ _) -> +                   MySegment visnr inhs syns +                             (Just $ map (@lhs.pmprf Map.!) $ +                                    handAllOut (@loc.ps,"lhs") $ +                                        map (@lhs.nmp Map.!) inhs)+                             (Just $ map (@lhs.pmprf Map.!) $ +                                    handAllOut (@loc.ps,"lhs") $ +                                        map (@lhs.nmp Map.!) syns)+                         ) @lhs.mysegments++{+repToAg :: LOAGRep -> Grammar -> Ag+repToAg sem (Grammar _ _ _ _ dats _ _ _ _ _ _ _ _ _) = +    Ag bounds_s bounds_p de (map toNt dats)+ where+    pmp  = (pmp_LOAGRep_LOAGRep  sem)+    pmpr = (pmpr_LOAGRep_LOAGRep sem)+    nmp  = (nmp_LOAGRep_LOAGRep  sem)+    nmpr = (nmpr_LOAGRep_LOAGRep sem)+    genA = gen_LOAGRep_LOAGRep sem+    fieldM  = fieldMap_LOAGRep_LOAGRep sem+    genEdge (f,t) = (gen f, gen t)+    fsInP  = map2F (fsInP_LOAGRep_LOAGRep sem)+    siblings (f, t) = ofld A.! f == ofld A.! t+    ofld = (ofld_LOAGRep_LOAGRep sem)+    sfp  = map2F' (sfp_LOAGRep_LOAGRep sem)+    afp  = filter inOutput . ap+    ap   = map (findWithErr pmpr "building ap") . map2F (ap_LOAGRep_LOAGRep  sem)+    inss = inss_LOAGRep_LOAGRep sem +    gen v = genA A.! v+    ain  = map (findWithErr nmpr "building an") . map2F (ain_LOAGRep_LOAGRep sem)+    asn  = map (findWithErr nmpr "building an") . map2F (asn_LOAGRep_LOAGRep sem)+    inOutput = not . inContext +    inContext f = (f1 == "lhs" && d1 == Inh || f1 /= "lhs" && d1 == Syn) +        where (MyOccurrence (_,f1) (_,d1)) = pmp Map.! f+    de    = [ e      | p <- ps,   e <- dpe p ]+    dpe p = [ (findWithErr pmpr "building dpe" a, b) +            | b <- ap p, a <- Set.toList $ sfp (findWithErr pmp "fetching sfp" b) ]+    ps   = ps_LOAGRep_LOAGRep   sem+    bounds_p = if Map.null pmp then (0,-1) +                else (fst $ Map.findMin pmp, fst $ Map.findMax pmp)+    bounds_s = if Map.null nmp then (0,-1) +                else (fst $ Map.findMin nmp, fst $ Map.findMax nmp)+ +++    toNt :: Nonterminal -> Nt+    toNt (Nonterminal ntid _ _ _ prods) = Nt nt dpf dpt +            (addD Inh $ ain ty) (addD Syn $ asn ty) (map (toPr ty) prods)+     where nt  = getName ntid+           ty  = TyData nt+           dpt =  [ (as, ai) | ai <- ain ty+                   , as <- nub$ [ gen s |+                                  i <- inss A.! ai+                                , s <- map (pmpr Map.!) $ +                                    Set.toList (sfp $ pmp Map.! i)+                                , siblings (s,i)]]+           dpf =  [ (ai, as) | as <- asn ty+                   , ai <- nub$ [ gen i |+                                  s <- inss A.! as+                                , i <- map (pmpr Map.!) $+                                    Set.toList (sfp $ pmp Map.! s)+                                , siblings (i,s)]]+           addD d = map (\i -> (i,inss A.! i,d))+    toPr :: MyType -> Production -> Pr+    toPr ty (Production con _ _ _ _ _ _) = +                Pr p dpp fc_occs (map toFd $ fsInP p)+     where p = (ty, getName con)+           dpp = [ (f',t)+                    | t <- afp p, f <- (Set.toList $ sfp (pmp Map.! t))+                    , let f' = pmpr Map.! f+                    , not (siblings (f',t))]+           fc_occs = foldl' match [] fss+            where fss = fsInP p+           match s fs = [ ready (inp, out) lhs | inp <- Set.toList inhs+                                           , out <- Set.toList syns] ++ s+            where ((inhs, syns), lhs)+                               | (snd fs) /= "lhs" = +                                    (swap (fieldM Map.! fs),False)+                               | otherwise = (fieldM Map.! fs, True)+                  ready e@(f,t) b = (e', genEdge e', b)+                   where e' = (pmpr Map.! f, pmpr Map.! t)+    toFd :: (PLabel, FLabel) -> Fd+    toFd fs@((TyData ty, pr), fd) = Fd fd ty inhs syns+     where (is,ss) = fieldM Map.! fs+           inhs = map (((genA A.!) &&& id).(pmpr Map.!))$ Set.toList is+           syns = map (((genA A.!) &&& id).(pmpr Map.!))$ Set.toList ss+++}
+ src-ag/LOAG/Rep.ag view
@@ -0,0 +1,49 @@+MODULE {LOAG.Rep}+{}{+import CommonTypes+import AbstractSyntax+import LOAG.Common+import qualified Data.Array as A+import qualified Data.Map   as Map+import qualified Data.Set   as Set+}+imports{+import Data.List (intercalate, foldl', nub)+import Data.Tuple (swap)+import Control.Arrow+}++DATA LOAGRep | LOAGRep+    ps   : {[PLabel]}+    ap   : A_P+    an   : A_N+    ain  : AI_N+    asn  : AS_N+    sfp  : SF_P +    pmp  : PMP+    pmpr : PMP_R+    nmp  : NMP+    nmpr : NMP_R+    gen  : {A.Array Int Int}+    inss : {A.Array Int [Int]}+    ofld : {A.Array Int Int}+    fty  : FTY+    fieldMap  : FMap +    fsInP: {Map.Map PLabel [(PLabel,FLabel)]}++TYPE FieldAtts = [FieldAtt]+-- t is the type of the attribute this occurrence belongs to+DATA FieldAtt | FieldAtt     t : {MyType} p : {PLabel} +                             f : {FLabel} a : {ALabel}++TYPE MySegments = [MySegment]+DATA MySegment | MySegment+                    visnr   : Int +                    inhAttr : {[Int]}+                    synAttr : {[Int]}+                    inhOccs : {Maybe [Int]}+                    synOccs : {Maybe [Int]}++DERIVING MySegments MySegment : Show++
src-ag/Transform.ag view
@@ -812,7 +812,7 @@                                          "nogensems"    -> o { semfuns     = False }                                          "gentypesigs"  -> o { typeSigs    = True  }                                          "nogentypesigs"-> o { typeSigs    = False }-                                         "nocycle"      -> o { withCycle   = False }+                                         "nocycle"      -> o { withCycle   = False, loag = False }                                          "cycle"        -> o { withCycle   = True  }                                          "nostrictdata" -> o { strictData  = False }                                          "strictdata"   -> o { strictData  = True  }@@ -821,7 +821,7 @@                                          "strictercase" -> o { strictCases = True, stricterCases = True }                                          "nostrictwrap" -> o { strictWrap  = False }                                          "strictwrap"   -> o { strictWrap  = True  }-                                         "novisit"      -> o { visit       = False }+                                         "novisit"      -> o { visit       = False, loag = False }                                          "visit"        -> o { visit       = True  }                                          "nocase"       -> o { cases       = False }                                          "case"         -> o { cases       = True  }
src-generated/AG2AspectAG.hs view
@@ -2,26 +2,26 @@ {-# LANGUAGE ScopedTypeVariables #-}  module AG2AspectAG where-{-# LINE 2 "./src-ag/HsToken.ag" #-}+{-# LINE 2 "src-ag/HsToken.ag" #-}  import CommonTypes import UU.Scanner.Position(Pos) {-# LINE 10 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken {-# LINE 16 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 23 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)@@ -33,7 +33,7 @@ import ErrorMessages {-# LINE 35 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 8 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 8 "src-ag/AG2AspectAG.ag" #-}  import Options @@ -55,24 +55,24 @@ {-# LINE 56 "dist/build/AG2AspectAG.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 28 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 28 "src-ag/AG2AspectAG.ag" #-}  pragmaAspectAG =  pp  "{-# LANGUAGE EmptyDataDecls, NoMonomorphismRestriction , TypeSynonymInstances, MultiParamTypeClasses, FlexibleContexts, FlexibleInstances #-}"  {-# LINE 63 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 33 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 33 "src-ag/AG2AspectAG.ag" #-}  ppName l = ppListSep "" "" "_" l {-# LINE 68 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 70 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 70 "src-ag/AG2AspectAG.ag" #-}  type FieldMap  = [(Identifier, Type)] type DataTypes = Map.Map NontermIdent (Map.Map ConstructorIdent FieldMap) {-# LINE 74 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 342 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 342 "src-ag/AG2AspectAG.ag" #-}  filterAtts newAtts = filter (\att -> Map.member (identifier att) newAtts) filterNotAtts newAtts = filter (\att -> not (Map.member (identifier att) newAtts))@@ -101,14 +101,14 @@  {-# LINE 103 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 397 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 397 "src-ag/AG2AspectAG.ag" #-}  ntsList att ppNtL = "nts_" ++ att ++ " = " >|<  ppListSep "" "" " .*. " ((map fst ppNtL) ++ [pp "hNil"])  filterNts att = filter ( Map.member (identifier att) . snd ) {-# LINE 110 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 455 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 455 "src-ag/AG2AspectAG.ag" #-}  data PPRule = PPRule Identifier Identifier Bool ([(Identifier,Type)] -> [Identifier] -> PP_Doc) @@ -120,7 +120,7 @@  {-# LINE 122 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 494 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 494 "src-ag/AG2AspectAG.ag" #-}   defInhGRule ppNt prodName newNT newProd ch rules inhNoGroup synNoGroup chids locals =@@ -345,7 +345,7 @@  {-# LINE 347 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 721 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 721 "src-ag/AG2AspectAG.ag" #-}  ppMacro (Macro con children) = "( atts_" >|< show con >|< ", " >|<  ppListSep "" "" " <.> " ppChildren  >|<")"                 where   ppChildren = map  ppChild children@@ -355,7 +355,7 @@                         chName ch = ppName [pp "ch", pp ch, pp con] {-# LINE 357 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 754 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 754 "src-ag/AG2AspectAG.ag" #-}  ppNoGroupAtts syn noGroup = let synatts = Map.keys $ Map.filterWithKey (\att _ -> elem (getName att) noGroup) syn                             in  map (flip (>|<) "_inh") noGroup ++  map (flip (>|<) "_syn") synatts@@ -365,12 +365,12 @@ elemNT a b = False {-# LINE 367 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 797 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 797 "src-ag/AG2AspectAG.ag" #-}  attTypes atts = map (\(a,t) -> "(HCons (LVPair (Proxy Att_" >|< a >|< ") " >|< ppShow t >|< ") ") $ Map.toAscList atts {-# LINE 372 "dist/build/AG2AspectAG.hs" #-} -{-# LINE 851 "./src-ag/AG2AspectAG.ag" #-}+{-# LINE 851 "src-ag/AG2AspectAG.ag" #-}  attVars atts = map (\(a,_) -> "_" >|< a >|< " ") $ Map.toAscList atts attFields atts noGroup ppNt =@@ -387,8 +387,8 @@ wrap_Child (T_Child act) (Inh_Child _lhsIext _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIppProd _lhsIsynMap _lhsIsynNoGroup) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Child_vIn1 _lhsIext _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIppProd _lhsIsynMap _lhsIsynNoGroup-        (T_Child_vOut1 _lhsOidCL _lhsOppCSF _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOprdInh) <- return (inv_Child_s2 sem arg)+        let arg1 = T_Child_vIn1 _lhsIext _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIppProd _lhsIsynMap _lhsIsynNoGroup+        (T_Child_vOut1 _lhsOidCL _lhsOppCSF _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOprdInh) <- return (inv_Child_s2 sem arg1)         return (Syn_Child _lhsOidCL _lhsOppCSF _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOprdInh)    ) @@ -441,74 +441,74 @@          in __result_ )      in C_Child_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 19 "src-ag/DistChildAttr.ag" #-}    rule0 = \ name_ tp_ ->-                       {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+                       {-# LINE 19 "src-ag/DistChildAttr.ag" #-}                        case tp_ of                          NT nt _ _ -> nt                          Self      -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")                          Haskell t -> identifier ""                        {-# LINE 452 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 23 "src-ag/DistChildAttr.ag" #-}    rule1 = \ _chnt ((_lhsIinhMap) :: Map Identifier Attributes) ->-                      {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 23 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIinhMap                       {-# LINE 458 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 24 "src-ag/DistChildAttr.ag" #-}    rule2 = \ _chnt ((_lhsIsynMap) :: Map Identifier Attributes) ->-                      {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 24 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIsynMap                       {-# LINE 464 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule3 #-}-   {-# LINE 67 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 67 "src-ag/AG2AspectAG.ag" #-}    rule3 = \ _inh ->-                              {-# LINE 67 "./src-ag/AG2AspectAG.ag" #-}+                              {-# LINE 67 "src-ag/AG2AspectAG.ag" #-}                               _inh                               {-# LINE 470 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule4 #-}-   {-# LINE 182 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 182 "src-ag/AG2AspectAG.ag" #-}    rule4 = \ name_ ->-                                                      {-# LINE 182 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 182 "src-ag/AG2AspectAG.ag" #-}                                                       pp name_                                                       {-# LINE 476 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule5 #-}-   {-# LINE 183 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 183 "src-ag/AG2AspectAG.ag" #-}    rule5 = \ tp_ ->-                                                      {-# LINE 183 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 183 "src-ag/AG2AspectAG.ag" #-}                                                       ppShow tp_                                                       {-# LINE 482 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule6 #-}-   {-# LINE 184 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 184 "src-ag/AG2AspectAG.ag" #-}    rule6 = \ ((_lhsIppNt) :: PP_Doc) ((_lhsIppProd) :: PP_Doc) _ppCh ->-                                                      {-# LINE 184 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 184 "src-ag/AG2AspectAG.ag" #-}                                                       ppName [_ppCh    , _lhsIppNt, _lhsIppProd]                                                       {-# LINE 488 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule7 #-}-   {-# LINE 242 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 242 "src-ag/AG2AspectAG.ag" #-}    rule7 = \ _chName _ppTCh kind_ ->-                                                    {-# LINE 242 "./src-ag/AG2AspectAG.ag" #-}+                                                    {-# LINE 242 "src-ag/AG2AspectAG.ag" #-}                                                     case kind_ of                                                      ChildSyntax    ->  [ _chName      >|< pp " :: " >|< _ppTCh     ]                                                      _              ->  []                                                     {-# LINE 496 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule8 #-}-   {-# LINE 285 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 285 "src-ag/AG2AspectAG.ag" #-}    rule8 = \ _chName ->-                                                     {-# LINE 285 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 285 "src-ag/AG2AspectAG.ag" #-}                                                      "ch_" >|< _chName                                                      {-# LINE 502 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule9 #-}-   {-# LINE 286 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 286 "src-ag/AG2AspectAG.ag" #-}    rule9 = \ _chName ->-                                                     {-# LINE 286 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 286 "src-ag/AG2AspectAG.ag" #-}                                                      "Ch_" >|< _chName                                                      {-# LINE 508 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule10 #-}-   {-# LINE 287 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 287 "src-ag/AG2AspectAG.ag" #-}    rule10 = \ _chLabel _chTLabel _ppTCh kind_ ->-                                                     {-# LINE 287 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 287 "src-ag/AG2AspectAG.ag" #-}                                                      "data " >|< _chTLabel     >|< "; " >|< _chLabel     >|< pp " = proxy :: " >|<                                                      case kind_ of                                                       ChildSyntax    ->  "Proxy " >|< "(" >|< _chTLabel     >|< ", " >|< _ppTCh     >|< ")"@@ -516,28 +516,28 @@                                                                          "(" >|< _chTLabel     >|< ", nt)"                                                      {-# LINE 518 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule11 #-}-   {-# LINE 293 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 293 "src-ag/AG2AspectAG.ag" #-}    rule11 = \ _chLabel _chTLabel ->-                                                     {-# LINE 293 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 293 "src-ag/AG2AspectAG.ag" #-}                                                      [ _chLabel    , _chTLabel     ]                                                      {-# LINE 524 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule12 #-}-   {-# LINE 451 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 451 "src-ag/AG2AspectAG.ag" #-}    rule12 = \ ((_lhsIppNt) :: PP_Doc) ((_lhsIppProd) :: PP_Doc) name_ ->-                                                     {-# LINE 451 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 451 "src-ag/AG2AspectAG.ag" #-}                                                      let chName = ppListSep "" "" "_" [pp name_, _lhsIppNt, _lhsIppProd]                                                      in  pp name_ >|< " <- at ch_" >|< chName                                                      {-# LINE 531 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule13 #-}-   {-# LINE 489 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 489 "src-ag/AG2AspectAG.ag" #-}    rule13 = \ name_ tp_ ->-                                                    {-# LINE 489 "./src-ag/AG2AspectAG.ag" #-}+                                                    {-# LINE 489 "src-ag/AG2AspectAG.ag" #-}                                                     [ (name_, removeDeforested tp_ ) ]                                                     {-# LINE 537 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule14 #-}-   {-# LINE 827 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 827 "src-ag/AG2AspectAG.ag" #-}    rule14 = \ _chLabel kind_ name_ tp_ ->-                                              {-# LINE 827 "./src-ag/AG2AspectAG.ag" #-}+                                              {-# LINE 827 "src-ag/AG2AspectAG.ag" #-}                                               let                                                    semC   = if (isNonterminal tp_)                                                              then "sem_" >|< ppShow tp_ >|<  " _" >|< name_@@ -557,8 +557,8 @@ wrap_Children (T_Children act) (Inh_Children _lhsIext _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIppProd _lhsIsynMap _lhsIsynNoGroup) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Children_vIn4 _lhsIext _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIppProd _lhsIsynMap _lhsIsynNoGroup-        (T_Children_vOut4 _lhsOidCL _lhsOppCSF _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOprdInh) <- return (inv_Children_s5 sem arg)+        let arg4 = T_Children_vIn4 _lhsIext _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIppProd _lhsIsynMap _lhsIsynNoGroup+        (T_Children_vOut4 _lhsOidCL _lhsOppCSF _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOprdInh) <- return (inv_Children_s5 sem arg4)         return (Syn_Children _lhsOidCL _lhsOppCSF _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOprdInh)    ) @@ -627,9 +627,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule15 #-}-   {-# LINE 238 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 238 "src-ag/AG2AspectAG.ag" #-}    rule15 = \ ((_hdIppDL) :: [PP_Doc]) ((_tlIppDL) :: [PP_Doc]) ->-                                                                                  {-# LINE 238 "./src-ag/AG2AspectAG.ag" #-}+                                                                                  {-# LINE 238 "src-ag/AG2AspectAG.ag" #-}                                                                                   _hdIppDL ++ _tlIppDL                                                                                   {-# LINE 635 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule16 #-}@@ -735,9 +735,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule42 #-}-   {-# LINE 239 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 239 "src-ag/AG2AspectAG.ag" #-}    rule42 = \  (_ :: ()) ->-                                                                                  {-# LINE 239 "./src-ag/AG2AspectAG.ag" #-}+                                                                                  {-# LINE 239 "src-ag/AG2AspectAG.ag" #-}                                                                                   []                                                                                   {-# LINE 743 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule43 #-}@@ -768,8 +768,8 @@ wrap_Expression (T_Expression act) (Inh_Expression _lhsIppNt _lhsIppProd) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Expression_vIn7 _lhsIppNt _lhsIppProd-        (T_Expression_vOut7 _lhsOppRE) <- return (inv_Expression_s8 sem arg)+        let arg7 = T_Expression_vIn7 _lhsIppNt _lhsIppProd+        (T_Expression_vOut7 _lhsOppRE) <- return (inv_Expression_s8 sem arg7)         return (Syn_Expression _lhsOppRE)    ) @@ -802,9 +802,9 @@          in __result_ )      in C_Expression_s8 v7    {-# INLINE rule49 #-}-   {-# LINE 484 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 484 "src-ag/AG2AspectAG.ag" #-}    rule49 = \ ((_lhsIppNt) :: PP_Doc) ((_lhsIppProd) :: PP_Doc) tks_ ->-                                                      {-# LINE 484 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 484 "src-ag/AG2AspectAG.ag" #-}                                                       rhsRule _lhsIppNt _lhsIppProd tks_                                                       {-# LINE 810 "dist/build/AG2AspectAG.hs"#-} @@ -817,8 +817,8 @@ wrap_Grammar (T_Grammar act) (Inh_Grammar _lhsIagi _lhsIext _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Grammar_vIn10 _lhsIagi _lhsIext _lhsIoptions-        (T_Grammar_vOut10 _lhsOimp _lhsOpp) <- return (inv_Grammar_s11 sem arg)+        let arg10 = T_Grammar_vIn10 _lhsIagi _lhsIext _lhsIoptions+        (T_Grammar_vOut10 _lhsOimp _lhsOpp) <- return (inv_Grammar_s11 sem arg10)         return (Syn_Grammar _lhsOimp _lhsOpp)    ) @@ -873,72 +873,72 @@          in __result_ )      in C_Grammar_s11 v10    {-# INLINE rule50 #-}-   {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 15 "src-ag/DistChildAttr.ag" #-}    rule50 = \ ((_nontsIinhMap') :: Map Identifier Attributes) ->-                             {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 15 "src-ag/DistChildAttr.ag" #-}                              _nontsIinhMap'                              {-# LINE 881 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule51 #-}-   {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 16 "src-ag/DistChildAttr.ag" #-}    rule51 = \ ((_nontsIsynMap') :: Map Identifier Attributes) ->-                             {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 16 "src-ag/DistChildAttr.ag" #-}                              _nontsIsynMap'                              {-# LINE 887 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule52 #-}-   {-# LINE 43 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 43 "src-ag/AG2AspectAG.ag" #-}    rule52 = \ ((_lhsIoptions) :: Options) ->-                                   {-# LINE 43 "./src-ag/AG2AspectAG.ag" #-}+                                   {-# LINE 43 "src-ag/AG2AspectAG.ag" #-}                                    rename    _lhsIoptions                                    {-# LINE 893 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule53 #-}-   {-# LINE 47 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 47 "src-ag/AG2AspectAG.ag" #-}    rule53 = \ ((_lhsIoptions) :: Options) ->-                                   {-# LINE 47 "./src-ag/AG2AspectAG.ag" #-}+                                   {-# LINE 47 "src-ag/AG2AspectAG.ag" #-}                                    sort $ noGroup    _lhsIoptions                                    {-# LINE 899 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule54 #-}-   {-# LINE 48 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 48 "src-ag/AG2AspectAG.ag" #-}    rule54 = \ _o_noGroup ->-                                   {-# LINE 48 "./src-ag/AG2AspectAG.ag" #-}+                                   {-# LINE 48 "src-ag/AG2AspectAG.ag" #-}                                    _o_noGroup                                    {-# LINE 905 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule55 #-}-   {-# LINE 80 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 80 "src-ag/AG2AspectAG.ag" #-}    rule55 = \ ((_lhsIagi) :: (Set NontermIdent, DataTypes, Map NontermIdent (Attributes, Attributes))) ->-                                          {-# LINE 80 "./src-ag/AG2AspectAG.ag" #-}+                                          {-# LINE 80 "src-ag/AG2AspectAG.ag" #-}                                           case _lhsIagi of                                                   (_,_,atts) -> ( Map.unions . (\(a,b) -> a++b) . unzip . Map.elems) atts                                           {-# LINE 912 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule56 #-}-   {-# LINE 82 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 82 "src-ag/AG2AspectAG.ag" #-}    rule56 = \ _newAtts ->-                                          {-# LINE 82 "./src-ag/AG2AspectAG.ag" #-}+                                          {-# LINE 82 "src-ag/AG2AspectAG.ag" #-}                                           _newAtts                                           {-# LINE 918 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule57 #-}-   {-# LINE 88 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 88 "src-ag/AG2AspectAG.ag" #-}    rule57 = \ ((_lhsIagi) :: (Set NontermIdent, DataTypes, Map NontermIdent (Attributes, Attributes))) ->-                                           {-# LINE 88 "./src-ag/AG2AspectAG.ag" #-}+                                           {-# LINE 88 "src-ag/AG2AspectAG.ag" #-}                                            case _lhsIagi of                                                   (_,prods,_) -> prods                                            {-# LINE 925 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule58 #-}-   {-# LINE 90 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 90 "src-ag/AG2AspectAG.ag" #-}    rule58 = \ _newProds ->-                                           {-# LINE 90 "./src-ag/AG2AspectAG.ag" #-}+                                           {-# LINE 90 "src-ag/AG2AspectAG.ag" #-}                                            _newProds                                            {-# LINE 931 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule59 #-}-   {-# LINE 112 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 112 "src-ag/AG2AspectAG.ag" #-}    rule59 = \ ((_lhsIagi) :: (Set NontermIdent, DataTypes, Map NontermIdent (Attributes, Attributes))) ((_nontsIextendedNTs) :: Set NontermIdent) ->-                                          {-# LINE 112 "./src-ag/AG2AspectAG.ag" #-}+                                          {-# LINE 112 "src-ag/AG2AspectAG.ag" #-}                                           case _lhsIagi of                                                   (newNTs,_,_) -> Set.difference newNTs _nontsIextendedNTs                                           {-# LINE 938 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule60 #-}-   {-# LINE 127 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 127 "src-ag/AG2AspectAG.ag" #-}    rule60 = \ ((_lhsIext) :: Maybe String) ((_nontsIppDI) :: [PP_Doc]) ((_nontsIppLI) :: [PP_Doc]) _ppAI _ppANT ->-                                                     {-# LINE 127 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 127 "src-ag/AG2AspectAG.ag" #-}                                                      "import Language.Grammars.AspectAG" >-<                                                      "import Language.Grammars.AspectAG.Derive" >-<                                                      "import Data.HList.Label4" >-<@@ -948,9 +948,9 @@                                                      maybe empty (\ext -> "import" >#< ext >#< ppListSep "(" ")" "," (_nontsIppDI ++ _nontsIppLI ++ _ppAI     ++ _ppANT    )) _lhsIext                                                      {-# LINE 950 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule61 #-}-   {-# LINE 140 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 140 "src-ag/AG2AspectAG.ag" #-}    rule61 = \ ((_lhsIoptions) :: Options) ((_nontsIppCata) :: PP_Doc) ((_nontsIppD) :: PP_Doc) ((_nontsIppL) :: PP_Doc) ((_nontsIppSF) :: PP_Doc) ((_nontsIppW) :: PP_Doc) _ppA _ppR ->-                                                     {-# LINE 140 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 140 "src-ag/AG2AspectAG.ag" #-}                                                      (if dataTypes _lhsIoptions                                                      then  "-- datatypes"               >-< _nontsIppD >-<                                                            "-- labels"                  >-< _nontsIppL@@ -971,21 +971,21 @@                                                      else  empty)                                                      {-# LINE 973 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule62 #-}-   {-# LINE 202 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 202 "src-ag/AG2AspectAG.ag" #-}    rule62 = \ derivings_ ->-                                                     {-# LINE 202 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 202 "src-ag/AG2AspectAG.ag" #-}                                                      derivings_                                                      {-# LINE 979 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule63 #-}-   {-# LINE 251 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 251 "src-ag/AG2AspectAG.ag" #-}    rule63 = \ typeSyns_ ->-                                                                                  {-# LINE 251 "./src-ag/AG2AspectAG.ag" #-}+                                                                                  {-# LINE 251 "src-ag/AG2AspectAG.ag" #-}                                                                                   typeSyns_                                                                                   {-# LINE 985 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule64 #-}-   {-# LINE 300 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 300 "src-ag/AG2AspectAG.ag" #-}    rule64 = \ ((_lhsIext) :: Maybe String) _newAtts ((_nontsIppA) :: PP_Doc) _o_noGroup ->-                                                     {-# LINE 300 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 300 "src-ag/AG2AspectAG.ag" #-}                                                      vlist (map defAtt (filterAtts _newAtts     _o_noGroup    )) >-<                                                      defAtt "loc" >-<                                                      (case _lhsIext of@@ -994,9 +994,9 @@                                                      _nontsIppA                                                      {-# LINE 996 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule65 #-}-   {-# LINE 308 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 308 "src-ag/AG2AspectAG.ag" #-}    rule65 = \ ((_lhsIext) :: Maybe String) _newAtts ((_nontsIppAI) :: [PP_Doc]) _o_noGroup ->-                                                  {-# LINE 308 "./src-ag/AG2AspectAG.ag" #-}+                                                  {-# LINE 308 "src-ag/AG2AspectAG.ag" #-}                                                   let atts =  filterNotAtts _newAtts     _o_noGroup                                                   in  (foldr (\a as -> attName a : as) [] atts) ++                                                       (foldr (\a as -> attTName a : as) [] atts) ++@@ -1006,22 +1006,22 @@                                                       _nontsIppAI                                                   {-# LINE 1008 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule66 #-}-   {-# LINE 318 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 318 "src-ag/AG2AspectAG.ag" #-}    rule66 = \ _newAtts _o_noGroup ->-                                                  {-# LINE 318 "./src-ag/AG2AspectAG.ag" #-}+                                                  {-# LINE 318 "src-ag/AG2AspectAG.ag" #-}                                                   let atts =  filterNotAtts _newAtts     _o_noGroup                                                   in  (foldr (\a as -> ("nts_" >|< a) : as) [] atts)                                                   {-# LINE 1015 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule67 #-}-   {-# LINE 392 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 392 "src-ag/AG2AspectAG.ag" #-}    rule67 = \ ((_nontsIppNtL) :: [(PP_Doc, Attributes)]) ->-                                                     {-# LINE 392 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 392 "src-ag/AG2AspectAG.ag" #-}                                                      _nontsIppNtL                                                      {-# LINE 1021 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule68 #-}-   {-# LINE 393 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 393 "src-ag/AG2AspectAG.ag" #-}    rule68 = \ _newAtts ((_nontsIppR) :: PP_Doc) _o_noGroup _ppNtL ->-                                                     {-# LINE 393 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 393 "src-ag/AG2AspectAG.ag" #-}                                                      ntsList "group" _ppNtL      >-<                                                      vlist (map (\att -> ntsList att (filterNts att _ppNtL    )) (filterAtts _newAtts _o_noGroup    ))  >-<                                                      _nontsIppR@@ -1039,8 +1039,8 @@ wrap_HsToken (T_HsToken act) (Inh_HsToken ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsToken_vIn13 -        (T_HsToken_vOut13 ) <- return (inv_HsToken_s14 sem arg)+        let arg13 = T_HsToken_vIn13 +        (T_HsToken_vOut13 ) <- return (inv_HsToken_s14 sem arg13)         return (Syn_HsToken )    ) @@ -1135,8 +1135,8 @@ wrap_HsTokens (T_HsTokens act) (Inh_HsTokens ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsTokens_vIn16 -        (T_HsTokens_vOut16 ) <- return (inv_HsTokens_s17 sem arg)+        let arg16 = T_HsTokens_vIn16 +        (T_HsTokens_vOut16 ) <- return (inv_HsTokens_s17 sem arg16)         return (Syn_HsTokens )    ) @@ -1190,8 +1190,8 @@ wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsTokensRoot_vIn19 -        (T_HsTokensRoot_vOut19 ) <- return (inv_HsTokensRoot_s20 sem arg)+        let arg19 = T_HsTokensRoot_vIn19 +        (T_HsTokensRoot_vOut19 ) <- return (inv_HsTokensRoot_s20 sem arg19)         return (Syn_HsTokensRoot )    ) @@ -1233,8 +1233,8 @@ wrap_Nonterminal (T_Nonterminal act) (Inh_Nonterminal _lhsIderivs _lhsIext _lhsIinhMap _lhsInewAtts _lhsInewNTs _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIsynMap _lhsItSyns) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminal_vIn22 _lhsIderivs _lhsIext _lhsIinhMap _lhsInewAtts _lhsInewNTs _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIsynMap _lhsItSyns-        (T_Nonterminal_vOut22 _lhsOextendedNTs _lhsOinhMap' _lhsOppA _lhsOppAI _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppNtL _lhsOppR _lhsOppSF _lhsOppW _lhsOsynMap') <- return (inv_Nonterminal_s23 sem arg)+        let arg22 = T_Nonterminal_vIn22 _lhsIderivs _lhsIext _lhsIinhMap _lhsInewAtts _lhsInewNTs _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIsynMap _lhsItSyns+        (T_Nonterminal_vOut22 _lhsOextendedNTs _lhsOinhMap' _lhsOppA _lhsOppAI _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppNtL _lhsOppR _lhsOppSF _lhsOppW _lhsOsynMap') <- return (inv_Nonterminal_s23 sem arg22)         return (Syn_Nonterminal _lhsOextendedNTs _lhsOinhMap' _lhsOppA _lhsOppAI _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppNtL _lhsOppR _lhsOppSF _lhsOppW _lhsOsynMap')    ) @@ -1312,73 +1312,73 @@          in __result_ )      in C_Nonterminal_s23 v22    {-# INLINE rule70 #-}-   {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 7 "src-ag/DistChildAttr.ag" #-}    rule70 = \ inh_ nt_ ->-                                 {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 7 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ inh_                                  {-# LINE 1320 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule71 #-}-   {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 8 "src-ag/DistChildAttr.ag" #-}    rule71 = \ nt_ syn_ ->-                                 {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 8 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ syn_                                  {-# LINE 1326 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule72 #-}-   {-# LINE 51 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 51 "src-ag/AG2AspectAG.ag" #-}    rule72 = \ ((_lhsIo_noGroup) :: [String]) ((_prodsIprdInh) :: Attributes) ->-                                        {-# LINE 51 "./src-ag/AG2AspectAG.ag" #-}+                                        {-# LINE 51 "src-ag/AG2AspectAG.ag" #-}                                         Map.filterWithKey (\att _ -> elem (getName att) _lhsIo_noGroup) _prodsIprdInh                                         {-# LINE 1332 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule73 #-}-   {-# LINE 52 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 52 "src-ag/AG2AspectAG.ag" #-}    rule73 = \ ((_lhsIo_noGroup) :: [String]) syn_ ->-                                        {-# LINE 52 "./src-ag/AG2AspectAG.ag" #-}+                                        {-# LINE 52 "src-ag/AG2AspectAG.ag" #-}                                         Map.filterWithKey (\att _ -> elem (getName att) _lhsIo_noGroup) syn_                                         {-# LINE 1338 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule74 #-}-   {-# LINE 57 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 57 "src-ag/AG2AspectAG.ag" #-}    rule74 = \ _inhNoGroup ->-                                          {-# LINE 57 "./src-ag/AG2AspectAG.ag" #-}+                                          {-# LINE 57 "src-ag/AG2AspectAG.ag" #-}                                           map show $ Map.keys _inhNoGroup                                           {-# LINE 1344 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule75 #-}-   {-# LINE 58 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 58 "src-ag/AG2AspectAG.ag" #-}    rule75 = \ _synNoGroup ->-                                          {-# LINE 58 "./src-ag/AG2AspectAG.ag" #-}+                                          {-# LINE 58 "src-ag/AG2AspectAG.ag" #-}                                           map show $ Map.keys _synNoGroup                                           {-# LINE 1350 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule76 #-}-   {-# LINE 94 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 94 "src-ag/AG2AspectAG.ag" #-}    rule76 = \ ((_lhsInewProds) ::  DataTypes ) nt_ ->-                                   {-# LINE 94 "./src-ag/AG2AspectAG.ag" #-}+                                   {-# LINE 94 "src-ag/AG2AspectAG.ag" #-}                                    case Map.lookup nt_ _lhsInewProds of                                           Just prds -> prds                                           Nothing   -> Map.empty                                    {-# LINE 1358 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule77 #-}-   {-# LINE 107 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 107 "src-ag/AG2AspectAG.ag" #-}    rule77 = \ ((_prodsIhasMoreProds) ::  Bool ) nt_ ->-                                                  {-# LINE 107 "./src-ag/AG2AspectAG.ag" #-}+                                                  {-# LINE 107 "src-ag/AG2AspectAG.ag" #-}                                                   if _prodsIhasMoreProds                                                   then Set.singleton nt_                                                   else Set.empty                                                   {-# LINE 1366 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule78 #-}-   {-# LINE 173 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 173 "src-ag/AG2AspectAG.ag" #-}    rule78 = \ nt_ ->-                                                      {-# LINE 173 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 173 "src-ag/AG2AspectAG.ag" #-}                                                       pp nt_                                                       {-# LINE 1372 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule79 #-}-   {-# LINE 190 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 190 "src-ag/AG2AspectAG.ag" #-}    rule79 = \ _ppNt ->-                                                     {-# LINE 190 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 190 "src-ag/AG2AspectAG.ag" #-}                                                      _ppNt                                                      {-# LINE 1378 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule80 #-}-   {-# LINE 209 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 209 "src-ag/AG2AspectAG.ag" #-}    rule80 = \ ((_lhsIderivs) :: Derivings) ((_lhsInewNTs) :: Set NontermIdent) ((_lhsItSyns) :: TypeSyns) _ppNt ((_prodsIppDL) :: [PP_Doc]) nt_ ->-                                       {-# LINE 209 "./src-ag/AG2AspectAG.ag" #-}+                                       {-# LINE 209 "src-ag/AG2AspectAG.ag" #-}                                        if (Set.member nt_ _lhsInewNTs)                                        then  case (lookup nt_ _lhsItSyns) of                                                       Nothing ->  "data " >|< _ppNt@@ -1390,41 +1390,41 @@                                        else  empty                                        {-# LINE 1392 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule81 #-}-   {-# LINE 222 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 222 "src-ag/AG2AspectAG.ag" #-}    rule81 = \ ((_lhsInewNTs) :: Set NontermIdent) _ppNt nt_ ->-                                       {-# LINE 222 "./src-ag/AG2AspectAG.ag" #-}+                                       {-# LINE 222 "src-ag/AG2AspectAG.ag" #-}                                        if (not $ Set.member nt_ _lhsInewNTs)                                        then  [ _ppNt     ]                                        else  [ ]                                        {-# LINE 1400 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule82 #-}-   {-# LINE 262 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 262 "src-ag/AG2AspectAG.ag" #-}    rule82 = \ _ppNt ->-                                                    {-# LINE 262 "./src-ag/AG2AspectAG.ag" #-}+                                                    {-# LINE 262 "src-ag/AG2AspectAG.ag" #-}                                                     "nt_" >|< _ppNt                                                     {-# LINE 1406 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule83 #-}-   {-# LINE 264 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 264 "src-ag/AG2AspectAG.ag" #-}    rule83 = \ ((_lhsInewNTs) :: Set NontermIdent) _ntLabel _ppNt ((_prodsIppL) :: PP_Doc) nt_ ->-                                                     {-# LINE 264 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 264 "src-ag/AG2AspectAG.ag" #-}                                                      ( if (Set.member nt_ _lhsInewNTs)                                                        then _ntLabel     >|< " = proxy :: Proxy " >|< _ppNt                                                        else empty)  >-<                                                      _prodsIppL                                                      {-# LINE 1415 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule84 #-}-   {-# LINE 269 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 269 "src-ag/AG2AspectAG.ag" #-}    rule84 = \ ((_lhsInewNTs) :: Set NontermIdent) _ntLabel ((_prodsIppLI) :: [PP_Doc]) nt_ ->-                                                     {-# LINE 269 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 269 "src-ag/AG2AspectAG.ag" #-}                                                      ( if (not $ Set.member nt_ _lhsInewNTs)                                                        then [ _ntLabel     ]                                                        else [ ])  ++                                                      _prodsIppLI                                                      {-# LINE 1424 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule85 #-}-   {-# LINE 324 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 324 "src-ag/AG2AspectAG.ag" #-}    rule85 = \ _inhNoGroup ((_lhsInewNTs) :: Set NontermIdent) _ppNt ((_prodsIppA) :: PP_Doc) _synNoGroup inh_ nt_ syn_ ->-                                                     {-# LINE 324 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 324 "src-ag/AG2AspectAG.ag" #-}                                                      ( if (Set.member nt_ _lhsInewNTs)                                                        then                                                               defAttRec (pp "InhG") _ppNt     inh_ _inhNoGroup     >-<@@ -1433,53 +1433,53 @@                                                      _prodsIppA                                                      {-# LINE 1435 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule86 #-}-   {-# LINE 338 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 338 "src-ag/AG2AspectAG.ag" #-}    rule86 = \ ((_lhsInewNTs) :: Set NontermIdent) _ppNt nt_ ->-                                                     {-# LINE 338 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 338 "src-ag/AG2AspectAG.ag" #-}                                                      if (not $ Set.member nt_ _lhsInewNTs)                                                      then [ ppName [(pp "InhG"), _ppNt     ] >#< pp "(..)", ppName [(pp "SynG"), _ppNt     ] >#< pp "(..)" ]                                                      else [ ]                                                      {-# LINE 1443 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule87 #-}-   {-# LINE 406 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 406 "src-ag/AG2AspectAG.ag" #-}    rule87 = \ inh_ nt_ syn_ ->-                                                     {-# LINE 406 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 406 "src-ag/AG2AspectAG.ag" #-}                                                      [ ("nt_" >|< nt_, Map.union inh_ syn_) ]                                                      {-# LINE 1449 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule88 #-}-   {-# LINE 415 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 415 "src-ag/AG2AspectAG.ag" #-}    rule88 = \ ((_lhsInewNTs) :: Set NontermIdent) nt_ ->-                                                         {-# LINE 415 "./src-ag/AG2AspectAG.ag" #-}+                                                         {-# LINE 415 "src-ag/AG2AspectAG.ag" #-}                                                          Set.member nt_ _lhsInewNTs                                                          {-# LINE 1455 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule89 #-}-   {-# LINE 425 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 425 "src-ag/AG2AspectAG.ag" #-}    rule89 = \ ((_prodsIppR) :: PP_Doc) nt_ ->-                                                     {-# LINE 425 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 425 "src-ag/AG2AspectAG.ag" #-}                                                      pp "----" >|< pp nt_ >-< _prodsIppR                                                      {-# LINE 1461 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule90 #-}-   {-# LINE 735 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 735 "src-ag/AG2AspectAG.ag" #-}    rule90 = \ _ppNt ((_prodsIppCata) :: PP_Doc) ->-                                                      {-# LINE 735 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 735 "src-ag/AG2AspectAG.ag" #-}                                                       "----" >|< _ppNt     >-< _prodsIppCata                                                       {-# LINE 1467 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule91 #-}-   {-# LINE 766 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 766 "src-ag/AG2AspectAG.ag" #-}    rule91 = \ syn_ ->-                                                     {-# LINE 766 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 766 "src-ag/AG2AspectAG.ag" #-}                                                      syn_                                                      {-# LINE 1473 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule92 #-}-   {-# LINE 767 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 767 "src-ag/AG2AspectAG.ag" #-}    rule92 = \ inh_ ->-                                                     {-# LINE 767 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 767 "src-ag/AG2AspectAG.ag" #-}                                                      inh_                                                      {-# LINE 1479 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule93 #-}-   {-# LINE 779 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 779 "src-ag/AG2AspectAG.ag" #-}    rule93 = \ _inhNoGroup _ppNt ((_prodsIppSPF) :: PP_Doc) _synNoGroup ->-                                           {-# LINE 779 "./src-ag/AG2AspectAG.ag" #-}+                                           {-# LINE 779 "src-ag/AG2AspectAG.ag" #-}                                            let      inhAtts = attTypes _inhNoGroup                                                     synAtts = attTypes _synNoGroup                                            in@@ -1498,9 +1498,9 @@                                                     _prodsIppSPF                                            {-# LINE 1500 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule94 #-}-   {-# LINE 847 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 847 "src-ag/AG2AspectAG.ag" #-}    rule94 = \ _inhNoGroup _ppNt inh_ ->-                                              {-# LINE 847 "./src-ag/AG2AspectAG.ag" #-}+                                              {-# LINE 847 "src-ag/AG2AspectAG.ag" #-}                                               ppName [pp "wrap", _ppNt    ] >|< " sem " >|< attVars inh_ >|< " = " >-<                                               "   sem " >|< attFields inh_ _inhNoGroup     _ppNt                                               {-# LINE 1507 "dist/build/AG2AspectAG.hs"#-}@@ -1532,8 +1532,8 @@ wrap_Nonterminals (T_Nonterminals act) (Inh_Nonterminals _lhsIderivs _lhsIext _lhsIinhMap _lhsInewAtts _lhsInewNTs _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIsynMap _lhsItSyns) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminals_vIn25 _lhsIderivs _lhsIext _lhsIinhMap _lhsInewAtts _lhsInewNTs _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIsynMap _lhsItSyns-        (T_Nonterminals_vOut25 _lhsOextendedNTs _lhsOinhMap' _lhsOppA _lhsOppAI _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppNtL _lhsOppR _lhsOppSF _lhsOppW _lhsOsynMap') <- return (inv_Nonterminals_s26 sem arg)+        let arg25 = T_Nonterminals_vIn25 _lhsIderivs _lhsIext _lhsIinhMap _lhsInewAtts _lhsInewNTs _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIsynMap _lhsItSyns+        (T_Nonterminals_vOut25 _lhsOextendedNTs _lhsOinhMap' _lhsOppA _lhsOppAI _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppNtL _lhsOppR _lhsOppSF _lhsOppW _lhsOsynMap') <- return (inv_Nonterminals_s26 sem arg25)         return (Syn_Nonterminals _lhsOextendedNTs _lhsOinhMap' _lhsOppA _lhsOppAI _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppNtL _lhsOppR _lhsOppSF _lhsOppW _lhsOsynMap')    ) @@ -1807,8 +1807,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn28 -        (T_Pattern_vOut28 _lhsOcopy _lhsOinfo) <- return (inv_Pattern_s29 sem arg)+        let arg28 = T_Pattern_vIn28 +        (T_Pattern_vOut28 _lhsOcopy _lhsOinfo) <- return (inv_Pattern_s29 sem arg28)         return (Syn_Pattern _lhsOcopy _lhsOinfo)    ) @@ -1850,9 +1850,9 @@          in __result_ )      in C_Pattern_s29 v28    {-# INLINE rule149 #-}-   {-# LINE 383 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 383 "src-ag/AG2AspectAG.ag" #-}    rule149 = \  (_ :: ()) ->-                                                    {-# LINE 383 "./src-ag/AG2AspectAG.ag" #-}+                                                    {-# LINE 383 "src-ag/AG2AspectAG.ag" #-}                                                     error "Pattern Constr undefined!!"                                                     {-# LINE 1858 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule150 #-}@@ -1879,9 +1879,9 @@          in __result_ )      in C_Pattern_s29 v28    {-# INLINE rule152 #-}-   {-# LINE 384 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 384 "src-ag/AG2AspectAG.ag" #-}    rule152 = \  (_ :: ()) ->-                                                    {-# LINE 384 "./src-ag/AG2AspectAG.ag" #-}+                                                    {-# LINE 384 "src-ag/AG2AspectAG.ag" #-}                                                     error "Pattern Product undefined!!"                                                     {-# LINE 1887 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule153 #-}@@ -1908,9 +1908,9 @@          in __result_ )      in C_Pattern_s29 v28    {-# INLINE rule155 #-}-   {-# LINE 382 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 382 "src-ag/AG2AspectAG.ag" #-}    rule155 = \ attr_ field_ ->-                                                    {-# LINE 382 "./src-ag/AG2AspectAG.ag" #-}+                                                    {-# LINE 382 "src-ag/AG2AspectAG.ag" #-}                                                     (field_, attr_)                                                     {-# LINE 1916 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule156 #-}@@ -1961,9 +1961,9 @@          in __result_ )      in C_Pattern_s29 v28    {-# INLINE rule161 #-}-   {-# LINE 385 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 385 "src-ag/AG2AspectAG.ag" #-}    rule161 = \  (_ :: ()) ->-                                                    {-# LINE 385 "./src-ag/AG2AspectAG.ag" #-}+                                                    {-# LINE 385 "src-ag/AG2AspectAG.ag" #-}                                                     error "Pattern Underscore undefined!!"                                                     {-# LINE 1969 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule162 #-}@@ -1982,8 +1982,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn31 -        (T_Patterns_vOut31 _lhsOcopy) <- return (inv_Patterns_s32 sem arg)+        let arg31 = T_Patterns_vIn31 +        (T_Patterns_vOut31 _lhsOcopy) <- return (inv_Patterns_s32 sem arg31)         return (Syn_Patterns _lhsOcopy)    ) @@ -2055,8 +2055,8 @@ wrap_Production (T_Production act) (Inh_Production _lhsIext _lhsIinh _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsInewNT _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIsyn _lhsIsynMap _lhsIsynNoGroup) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Production_vIn34 _lhsIext _lhsIinh _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsInewNT _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIsyn _lhsIsynMap _lhsIsynNoGroup-        (T_Production_vOut34 _lhsOhasMoreProds _lhsOppA _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppR _lhsOppRA _lhsOppSF _lhsOppSPF _lhsOprdInh) <- return (inv_Production_s35 sem arg)+        let arg34 = T_Production_vIn34 _lhsIext _lhsIinh _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsInewNT _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIsyn _lhsIsynMap _lhsIsynNoGroup+        (T_Production_vOut34 _lhsOhasMoreProds _lhsOppA _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppR _lhsOppRA _lhsOppSF _lhsOppSPF _lhsOprdInh) <- return (inv_Production_s35 sem arg34)         return (Syn_Production _lhsOhasMoreProds _lhsOppA _lhsOppCata _lhsOppD _lhsOppDI _lhsOppL _lhsOppLI _lhsOppR _lhsOppRA _lhsOppSF _lhsOppSPF _lhsOprdInh)    ) @@ -2140,81 +2140,81 @@          in __result_ )      in C_Production_s35 v34    {-# INLINE rule168 #-}-   {-# LINE 103 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 103 "src-ag/AG2AspectAG.ag" #-}    rule168 = \ ((_lhsInewProds) ::  Map.Map ConstructorIdent FieldMap ) con_ ->-                                                 {-# LINE 103 "./src-ag/AG2AspectAG.ag" #-}+                                                 {-# LINE 103 "src-ag/AG2AspectAG.ag" #-}                                                  not $ Map.member con_ _lhsInewProds                                                  {-# LINE 2148 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule169 #-}-   {-# LINE 176 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 176 "src-ag/AG2AspectAG.ag" #-}    rule169 = \ con_ ->-                                                      {-# LINE 176 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 176 "src-ag/AG2AspectAG.ag" #-}                                                       pp con_                                                       {-# LINE 2154 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule170 #-}-   {-# LINE 177 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 177 "src-ag/AG2AspectAG.ag" #-}    rule170 = \ ((_lhsIppNt) :: PP_Doc) _ppProd ->-                                                      {-# LINE 177 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 177 "src-ag/AG2AspectAG.ag" #-}                                                       ppName [_lhsIppNt, _ppProd    ]                                                       {-# LINE 2160 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule171 #-}-   {-# LINE 178 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 178 "src-ag/AG2AspectAG.ag" #-}    rule171 = \ ((_lhsIo_rename) :: Bool) _ppProd _prodName ->-                                                      {-# LINE 178 "./src-ag/AG2AspectAG.ag" #-}+                                                      {-# LINE 178 "src-ag/AG2AspectAG.ag" #-}                                                       if _lhsIo_rename                                                       then _prodName                                                       else _ppProd                                                       {-# LINE 2168 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule172 #-}-   {-# LINE 195 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 195 "src-ag/AG2AspectAG.ag" #-}    rule172 = \ _ppProd ->-                                                     {-# LINE 195 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 195 "src-ag/AG2AspectAG.ag" #-}                                                      _ppProd                                                      {-# LINE 2174 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule173 #-}-   {-# LINE 196 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 196 "src-ag/AG2AspectAG.ag" #-}    rule173 = \ _ppProd ->-                                                     {-# LINE 196 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 196 "src-ag/AG2AspectAG.ag" #-}                                                      _ppProd                                                      {-# LINE 2180 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule174 #-}-   {-# LINE 228 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 228 "src-ag/AG2AspectAG.ag" #-}    rule174 = \ ((_childrenIppDL) :: [PP_Doc]) _conName ->-                                                    {-# LINE 228 "./src-ag/AG2AspectAG.ag" #-}+                                                    {-# LINE 228 "src-ag/AG2AspectAG.ag" #-}                                                     _conName     >|< ppListSep " {" "}" ", " _childrenIppDL                                                     {-# LINE 2186 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule175 #-}-   {-# LINE 275 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 275 "src-ag/AG2AspectAG.ag" #-}    rule175 = \ ((_childrenIppL) :: PP_Doc) ((_lhsInewProds) ::  Map.Map ConstructorIdent FieldMap ) con_ ->-                                                     {-# LINE 275 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 275 "src-ag/AG2AspectAG.ag" #-}                                                      if (Map.member con_ _lhsInewProds)                                                        then _childrenIppL                                                        else empty                                                      {-# LINE 2194 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule176 #-}-   {-# LINE 279 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 279 "src-ag/AG2AspectAG.ag" #-}    rule176 = \ ((_childrenIppLI) :: [PP_Doc]) ((_lhsInewProds) ::  Map.Map ConstructorIdent FieldMap ) con_ ->-                                                     {-# LINE 279 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 279 "src-ag/AG2AspectAG.ag" #-}                                                      if (not $ Map.member con_ _lhsInewProds)                                                        then _childrenIppLI                                                        else []                                                      {-# LINE 2202 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule177 #-}-   {-# LINE 332 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 332 "src-ag/AG2AspectAG.ag" #-}    rule177 = \ _prodName ((_rulesIlocals) :: [Identifier]) ->-                                                     {-# LINE 332 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 332 "src-ag/AG2AspectAG.ag" #-}                                                      defLocalAtts _prodName     (length _rulesIlocals) 1 $ sort _rulesIlocals                                                      {-# LINE 2208 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule178 #-}-   {-# LINE 428 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 428 "src-ag/AG2AspectAG.ag" #-}    rule178 = \ ((_lhsInewProds) ::  Map.Map ConstructorIdent FieldMap ) con_ ->-                                                     {-# LINE 428 "./src-ag/AG2AspectAG.ag" #-}+                                                     {-# LINE 428 "src-ag/AG2AspectAG.ag" #-}                                                      Map.member con_ _lhsInewProds                                                      {-# LINE 2214 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule179 #-}-   {-# LINE 430 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 430 "src-ag/AG2AspectAG.ag" #-}    rule179 = \ ((_childrenIidCL) :: [(Identifier,Type)]) ((_childrenIppR) :: PP_Doc) ((_lhsIinhNoGroup) :: [String]) ((_lhsInewAtts) ::  Attributes ) ((_lhsInewNT) :: Bool) ((_lhsIppNt) :: PP_Doc) ((_lhsIsynNoGroup) :: [String]) _newProd _prodName ((_rulesIlocals) :: [Identifier]) ((_rulesIppRL) :: [ PPRule ]) con_ ->-                                {-# LINE 430 "./src-ag/AG2AspectAG.ag" #-}+                                {-# LINE 430 "src-ag/AG2AspectAG.ag" #-}                                 let  (instR, instRA)  = defInstRules  _lhsIppNt con_ _lhsInewNT _newProd                                                                       _childrenIppR _rulesIppRL _childrenIidCL _rulesIlocals                                      (locR,  locRA)   = defLocRule    _lhsIppNt con_ _lhsInewNT _newProd@@ -2235,9 +2235,9 @@                                      , instRA ++ locRA ++ inhGRA ++ synGRA ++ inhMRA ++ synMRA ++ inhRA ++ synRA)                                 {-# LINE 2237 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule180 #-}-   {-# LINE 740 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 740 "src-ag/AG2AspectAG.ag" #-}    rule180 = \ ((_lhsIext) :: Maybe String) ((_lhsInewNT) :: Bool) _newProd _ppRA _prodName macro_ ->-                                              {-# LINE 740 "./src-ag/AG2AspectAG.ag" #-}+                                              {-# LINE 740 "src-ag/AG2AspectAG.ag" #-}                                               let  extend = maybe  []                                                                    (  \ext ->  if (_lhsInewNT || (not _lhsInewNT && _newProd    ))                                                                                then []@@ -2253,9 +2253,9 @@                                                    "semP_" >|< _prodName     >|< pp " = knit atts_" >|< _prodName                                               {-# LINE 2255 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule181 #-}-   {-# LINE 804 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 804 "src-ag/AG2AspectAG.ag" #-}    rule181 = \ ((_childrenIppCSF) :: [(Identifier,(PP_Doc,PP_Doc))]) _conName ((_lhsIppNt) :: PP_Doc) _prodName con_ ->-                                              {-# LINE 804 "./src-ag/AG2AspectAG.ag" #-}+                                              {-# LINE 804 "src-ag/AG2AspectAG.ag" #-}                                               let  chi = _childrenIppCSF                                                    ppPattern = case (show con_) of                                                                 "Cons"    -> ppParams (ppListSep "" "" " : ")@@ -2266,9 +2266,9 @@                                                    " (" >|< map (fst . snd) chi >|< "emptyRecord)"                                               {-# LINE 2268 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule182 #-}-   {-# LINE 816 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 816 "src-ag/AG2AspectAG.ag" #-}    rule182 = \ ((_childrenIppCSF) :: [(Identifier,(PP_Doc,PP_Doc))]) ((_lhsIppNt) :: PP_Doc) _prodName con_ ->-                                              {-# LINE 816 "./src-ag/AG2AspectAG.ag" #-}+                                              {-# LINE 816 "src-ag/AG2AspectAG.ag" #-}                                               let  chi = _childrenIppCSF                                                    ppParams f =   f $ map (((>|<) (pp "_")) . fst) chi                                               in   "sem_" >|< _lhsIppNt >|< "_" >|< con_ >#< ppParams ppSpaced >|< " = semP_" >|< _prodName     >|<@@ -2344,8 +2344,8 @@ wrap_Productions (T_Productions act) (Inh_Productions _lhsIext _lhsIinh _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsInewNT _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIsyn _lhsIsynMap _lhsIsynNoGroup) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Productions_vIn37 _lhsIext _lhsIinh _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsInewNT _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIsyn _lhsIsynMap _lhsIsynNoGroup-        (T_Productions_vOut37 _lhsOhasMoreProds _lhsOppA _lhsOppCata _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOppRA _lhsOppSF _lhsOppSPF _lhsOprdInh) <- return (inv_Productions_s38 sem arg)+        let arg37 = T_Productions_vIn37 _lhsIext _lhsIinh _lhsIinhMap _lhsIinhNoGroup _lhsInewAtts _lhsInewNT _lhsInewProds _lhsIo_noGroup _lhsIo_rename _lhsIppNt _lhsIsyn _lhsIsynMap _lhsIsynNoGroup+        (T_Productions_vOut37 _lhsOhasMoreProds _lhsOppA _lhsOppCata _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOppRA _lhsOppSF _lhsOppSPF _lhsOprdInh) <- return (inv_Productions_s38 sem arg37)         return (Syn_Productions _lhsOhasMoreProds _lhsOppA _lhsOppCata _lhsOppDL _lhsOppL _lhsOppLI _lhsOppR _lhsOppRA _lhsOppSF _lhsOppSPF _lhsOprdInh)    ) @@ -2428,15 +2428,15 @@          in __result_ )      in C_Productions_s38 v37    {-# INLINE rule203 #-}-   {-# LINE 62 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 62 "src-ag/AG2AspectAG.ag" #-}    rule203 = \ ((_hdIprdInh) :: Attributes) ((_lhsIinhNoGroup) :: [String]) ->-                                {-# LINE 62 "./src-ag/AG2AspectAG.ag" #-}+                                {-# LINE 62 "src-ag/AG2AspectAG.ag" #-}                                 filter (flip Map.member _hdIprdInh . identifier) _lhsIinhNoGroup                                 {-# LINE 2436 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule204 #-}-   {-# LINE 234 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 234 "src-ag/AG2AspectAG.ag" #-}    rule204 = \ ((_hdIppD) :: PP_Doc) ((_tlIppDL) :: [PP_Doc]) ->-                                                                                  {-# LINE 234 "./src-ag/AG2AspectAG.ag" #-}+                                                                                  {-# LINE 234 "src-ag/AG2AspectAG.ag" #-}                                                                                   _hdIppD : _tlIppDL                                                                                   {-# LINE 2442 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule205 #-}@@ -2577,9 +2577,9 @@          in __result_ )      in C_Productions_s38 v37    {-# INLINE rule240 #-}-   {-# LINE 235 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 235 "src-ag/AG2AspectAG.ag" #-}    rule240 = \  (_ :: ()) ->-                                                                                  {-# LINE 235 "./src-ag/AG2AspectAG.ag" #-}+                                                                                  {-# LINE 235 "src-ag/AG2AspectAG.ag" #-}                                                                                   []                                                                                   {-# LINE 2585 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule241 #-}@@ -2622,8 +2622,8 @@ wrap_Rule (T_Rule act) (Inh_Rule _lhsIext _lhsIinhNoGroup _lhsInewAtts _lhsInewProd _lhsIo_noGroup _lhsIppNt _lhsIppProd _lhsIsynNoGroup) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rule_vIn40 _lhsIext _lhsIinhNoGroup _lhsInewAtts _lhsInewProd _lhsIo_noGroup _lhsIppNt _lhsIppProd _lhsIsynNoGroup-        (T_Rule_vOut40 _lhsOlocals _lhsOppRL) <- return (inv_Rule_s41 sem arg)+        let arg40 = T_Rule_vIn40 _lhsIext _lhsIinhNoGroup _lhsInewAtts _lhsInewProd _lhsIo_noGroup _lhsIppNt _lhsIppProd _lhsIsynNoGroup+        (T_Rule_vOut40 _lhsOlocals _lhsOppRL) <- return (inv_Rule_s41 sem arg40)         return (Syn_Rule _lhsOlocals _lhsOppRL)    ) @@ -2664,17 +2664,17 @@          in __result_ )      in C_Rule_s41 v40    {-# INLINE rule251 #-}-   {-# LINE 375 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 375 "src-ag/AG2AspectAG.ag" #-}    rule251 = \ ((_patternIinfo) :: (Identifier, Identifier)) ->-                                                       {-# LINE 375 "./src-ag/AG2AspectAG.ag" #-}+                                                       {-# LINE 375 "src-ag/AG2AspectAG.ag" #-}                                                        if (show (fst _patternIinfo) == "loc")                                                         then [ snd _patternIinfo ]                                                         else [ ]                                                        {-# LINE 2674 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule252 #-}-   {-# LINE 472 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 472 "src-ag/AG2AspectAG.ag" #-}    rule252 = \ ((_lhsInewAtts) ::  Attributes ) ((_lhsInewProd) :: Bool) ((_lhsIo_noGroup) :: [String]) ((_lhsIppNt) :: PP_Doc) ((_patternIinfo) :: (Identifier, Identifier)) ((_rhsIppRE) :: [String] -> Identifier -> [(Identifier,Type)] -> [Identifier] -> PP_Doc) explicit_ owrt_ ->-                                                                             {-# LINE 472 "./src-ag/AG2AspectAG.ag" #-}+                                                                             {-# LINE 472 "src-ag/AG2AspectAG.ag" #-}                                                                              if (not explicit_ &&  not _lhsInewProd && not (Map.member (snd _patternIinfo) _lhsInewAtts) )                                                                              then []                                                                              else [ ppRule _patternIinfo owrt_ (defRule _lhsIppNt _patternIinfo _lhsIo_noGroup _rhsIppRE) ]@@ -2695,8 +2695,8 @@ wrap_Rules (T_Rules act) (Inh_Rules _lhsIext _lhsIinhNoGroup _lhsInewAtts _lhsInewProd _lhsIo_noGroup _lhsIppNt _lhsIppProd _lhsIsynNoGroup) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rules_vIn43 _lhsIext _lhsIinhNoGroup _lhsInewAtts _lhsInewProd _lhsIo_noGroup _lhsIppNt _lhsIppProd _lhsIsynNoGroup-        (T_Rules_vOut43 _lhsOlocals _lhsOppRL) <- return (inv_Rules_s44 sem arg)+        let arg43 = T_Rules_vIn43 _lhsIext _lhsIinhNoGroup _lhsInewAtts _lhsInewProd _lhsIo_noGroup _lhsIppNt _lhsIppProd _lhsIsynNoGroup+        (T_Rules_vOut43 _lhsOlocals _lhsOppRL) <- return (inv_Rules_s44 sem arg43)         return (Syn_Rules _lhsOlocals _lhsOppRL)    ) @@ -2751,9 +2751,9 @@          in __result_ )      in C_Rules_s44 v43    {-# INLINE rule255 #-}-   {-# LINE 468 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 468 "src-ag/AG2AspectAG.ag" #-}    rule255 = \ ((_hdIppRL) :: [ PPRule ]) ((_tlIppRL) :: [ PPRule ]) ->-                                                                                  {-# LINE 468 "./src-ag/AG2AspectAG.ag" #-}+                                                                                  {-# LINE 468 "src-ag/AG2AspectAG.ag" #-}                                                                                   _hdIppRL ++ _tlIppRL                                                                                   {-# LINE 2759 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule256 #-}@@ -2822,9 +2822,9 @@          in __result_ )      in C_Rules_s44 v43    {-# INLINE rule273 #-}-   {-# LINE 469 "./src-ag/AG2AspectAG.ag" #-}+   {-# LINE 469 "src-ag/AG2AspectAG.ag" #-}    rule273 = \  (_ :: ()) ->-                                                                                  {-# LINE 469 "./src-ag/AG2AspectAG.ag" #-}+                                                                                  {-# LINE 469 "src-ag/AG2AspectAG.ag" #-}                                                                                   []                                                                                   {-# LINE 2830 "dist/build/AG2AspectAG.hs"#-}    {-# INLINE rule274 #-}@@ -2840,8 +2840,8 @@ wrap_TypeSig (T_TypeSig act) (Inh_TypeSig ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSig_vIn46 -        (T_TypeSig_vOut46 ) <- return (inv_TypeSig_s47 sem arg)+        let arg46 = T_TypeSig_vIn46 +        (T_TypeSig_vOut46 ) <- return (inv_TypeSig_s47 sem arg46)         return (Syn_TypeSig )    ) @@ -2881,8 +2881,8 @@ wrap_TypeSigs (T_TypeSigs act) (Inh_TypeSigs ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSigs_vIn49 -        (T_TypeSigs_vOut49 ) <- return (inv_TypeSigs_s50 sem arg)+        let arg49 = T_TypeSigs_vIn49 +        (T_TypeSigs_vOut49 ) <- return (inv_TypeSigs_s50 sem arg49)         return (Syn_TypeSigs )    ) 
src-generated/AbstractSyntax.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/AbstractSyntax.ag)+-- UUAGC 0.9.51 (src-ag/AbstractSyntax.ag) module AbstractSyntax where-{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)
src-generated/AbstractSyntaxDump.hs view
@@ -2,20 +2,20 @@ {-# LANGUAGE ScopedTypeVariables #-}  module AbstractSyntaxDump where-{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken {-# LINE 10 "dist/build/AbstractSyntaxDump.hs" #-} -{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 17 "dist/build/AbstractSyntaxDump.hs" #-} -{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)@@ -27,7 +27,7 @@ import ErrorMessages {-# LINE 29 "dist/build/AbstractSyntaxDump.hs" #-} -{-# LINE 6 "./src-ag/AbstractSyntaxDump.ag" #-}+{-# LINE 6 "src-ag/AbstractSyntaxDump.ag" #-}  import Data.List import qualified Data.Map as Map@@ -49,8 +49,8 @@ wrap_Child (T_Child act) (Inh_Child ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Child_vIn1 -        (T_Child_vOut1 _lhsOpp) <- return (inv_Child_s2 sem arg)+        let arg1 = T_Child_vIn1 +        (T_Child_vOut1 _lhsOpp) <- return (inv_Child_s2 sem arg1)         return (Syn_Child _lhsOpp)    ) @@ -83,9 +83,9 @@          in __result_ )      in C_Child_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 35 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 35 "src-ag/AbstractSyntaxDump.ag" #-}    rule0 = \ kind_ name_ tp_ ->-                                                              {-# LINE 35 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                              {-# LINE 35 "src-ag/AbstractSyntaxDump.ag" #-}                                                               ppNestInfo ["Child","Child"] [pp name_, ppShow tp_] [ppF "kind" $ ppShow kind_] []                                                               {-# LINE 91 "dist/build/AbstractSyntaxDump.hs"#-} @@ -98,8 +98,8 @@ wrap_Children (T_Children act) (Inh_Children ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Children_vIn4 -        (T_Children_vOut4 _lhsOpp _lhsOppL) <- return (inv_Children_s5 sem arg)+        let arg4 = T_Children_vIn4 +        (T_Children_vOut4 _lhsOpp _lhsOppL) <- return (inv_Children_s5 sem arg4)         return (Syn_Children _lhsOpp _lhsOppL)    ) @@ -138,9 +138,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule1 #-}-   {-# LINE 67 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 67 "src-ag/AbstractSyntaxDump.ag" #-}    rule1 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 67 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 67 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 146 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule2 #-}@@ -161,9 +161,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule3 #-}-   {-# LINE 68 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 68 "src-ag/AbstractSyntaxDump.ag" #-}    rule3 = \  (_ :: ()) ->-                                                                                  {-# LINE 68 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 68 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 169 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule4 #-}@@ -179,8 +179,8 @@ wrap_Expression (T_Expression act) (Inh_Expression ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Expression_vIn7 -        (T_Expression_vOut7 _lhsOpp) <- return (inv_Expression_s8 sem arg)+        let arg7 = T_Expression_vIn7 +        (T_Expression_vOut7 _lhsOpp) <- return (inv_Expression_s8 sem arg7)         return (Syn_Expression _lhsOpp)    ) @@ -213,9 +213,9 @@          in __result_ )      in C_Expression_s8 v7    {-# INLINE rule5 #-}-   {-# LINE 50 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 50 "src-ag/AbstractSyntaxDump.ag" #-}    rule5 = \ pos_ tks_ ->-                                                      {-# LINE 50 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                      {-# LINE 50 "src-ag/AbstractSyntaxDump.ag" #-}                                                       ppNestInfo ["Expression","Expression"] [ppShow pos_] [ppF "txt" $ vlist . showTokens . tokensToStrings $ tks_] []                                                       {-# LINE 221 "dist/build/AbstractSyntaxDump.hs"#-} @@ -228,8 +228,8 @@ wrap_Grammar (T_Grammar act) (Inh_Grammar ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Grammar_vIn10 -        (T_Grammar_vOut10 _lhsOpp) <- return (inv_Grammar_s11 sem arg)+        let arg10 = T_Grammar_vIn10 +        (T_Grammar_vOut10 _lhsOpp) <- return (inv_Grammar_s11 sem arg10)         return (Syn_Grammar _lhsOpp)    ) @@ -264,9 +264,9 @@          in __result_ )      in C_Grammar_s11 v10    {-# INLINE rule6 #-}-   {-# LINE 20 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 20 "src-ag/AbstractSyntaxDump.ag" #-}    rule6 = \ ((_nontsIppL) :: [PP_Doc]) derivings_ typeSyns_ useMap_ wrappers_ ->-                                                      {-# LINE 20 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                      {-# LINE 20 "src-ag/AbstractSyntaxDump.ag" #-}                                                       ppNestInfo ["Grammar","Grammar"] []                                                          [ ppF "typeSyns" $ ppAssocL typeSyns_                                                          , ppF "useMap" $ ppMap $ Map.map ppMap $ useMap_@@ -285,8 +285,8 @@ wrap_Nonterminal (T_Nonterminal act) (Inh_Nonterminal ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminal_vIn13 -        (T_Nonterminal_vOut13 _lhsOpp) <- return (inv_Nonterminal_s14 sem arg)+        let arg13 = T_Nonterminal_vIn13 +        (T_Nonterminal_vOut13 _lhsOpp) <- return (inv_Nonterminal_s14 sem arg13)         return (Syn_Nonterminal _lhsOpp)    ) @@ -321,9 +321,9 @@          in __result_ )      in C_Nonterminal_s14 v13    {-# INLINE rule7 #-}-   {-# LINE 29 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 29 "src-ag/AbstractSyntaxDump.ag" #-}    rule7 = \ ((_prodsIppL) :: [PP_Doc]) inh_ nt_ params_ syn_ ->-                                                      {-# LINE 29 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                      {-# LINE 29 "src-ag/AbstractSyntaxDump.ag" #-}                                                       ppNestInfo ["Nonterminal","Nonterminal"] (pp nt_ : map pp params_) [ppF "inh" $ ppMap inh_, ppF "syn" $ ppMap syn_, ppF "prods" $ ppVList _prodsIppL] []                                                       {-# LINE 329 "dist/build/AbstractSyntaxDump.hs"#-} @@ -336,8 +336,8 @@ wrap_Nonterminals (T_Nonterminals act) (Inh_Nonterminals ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminals_vIn16 -        (T_Nonterminals_vOut16 _lhsOpp _lhsOppL) <- return (inv_Nonterminals_s17 sem arg)+        let arg16 = T_Nonterminals_vIn16 +        (T_Nonterminals_vOut16 _lhsOpp _lhsOppL) <- return (inv_Nonterminals_s17 sem arg16)         return (Syn_Nonterminals _lhsOpp _lhsOppL)    ) @@ -376,9 +376,9 @@          in __result_ )      in C_Nonterminals_s17 v16    {-# INLINE rule8 #-}-   {-# LINE 75 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 75 "src-ag/AbstractSyntaxDump.ag" #-}    rule8 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 75 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 75 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 384 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule9 #-}@@ -399,9 +399,9 @@          in __result_ )      in C_Nonterminals_s17 v16    {-# INLINE rule10 #-}-   {-# LINE 76 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 76 "src-ag/AbstractSyntaxDump.ag" #-}    rule10 = \  (_ :: ()) ->-                                                                                  {-# LINE 76 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 76 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 407 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule11 #-}@@ -417,8 +417,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn19 -        (T_Pattern_vOut19 _lhsOcopy _lhsOpp) <- return (inv_Pattern_s20 sem arg)+        let arg19 = T_Pattern_vIn19 +        (T_Pattern_vOut19 _lhsOcopy _lhsOpp) <- return (inv_Pattern_s20 sem arg19)         return (Syn_Pattern _lhsOcopy _lhsOpp)    ) @@ -460,9 +460,9 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule12 #-}-   {-# LINE 44 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 44 "src-ag/AbstractSyntaxDump.ag" #-}    rule12 = \ ((_patsIppL) :: [PP_Doc]) name_ ->-                                                              {-# LINE 44 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                              {-# LINE 44 "src-ag/AbstractSyntaxDump.ag" #-}                                                               ppNestInfo ["Pattern","Constr"] [pp name_] [ppF "pats" $ ppVList _patsIppL] []                                                               {-# LINE 468 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule13 #-}@@ -489,9 +489,9 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule15 #-}-   {-# LINE 45 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 45 "src-ag/AbstractSyntaxDump.ag" #-}    rule15 = \ ((_patsIppL) :: [PP_Doc]) pos_ ->-                                                              {-# LINE 45 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                              {-# LINE 45 "src-ag/AbstractSyntaxDump.ag" #-}                                                               ppNestInfo ["Pattern","Product"] [ppShow pos_] [ppF "pats" $ ppVList _patsIppL] []                                                               {-# LINE 497 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule16 #-}@@ -518,9 +518,9 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule18 #-}-   {-# LINE 46 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 46 "src-ag/AbstractSyntaxDump.ag" #-}    rule18 = \ ((_patIpp) :: PP_Doc) attr_ field_ ->-                                                              {-# LINE 46 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                              {-# LINE 46 "src-ag/AbstractSyntaxDump.ag" #-}                                                               ppNestInfo ["Pattern","Alias"] [pp field_, pp attr_] [ppF "pat" $ _patIpp] []                                                               {-# LINE 526 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule19 #-}@@ -571,9 +571,9 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule24 #-}-   {-# LINE 47 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 47 "src-ag/AbstractSyntaxDump.ag" #-}    rule24 = \ pos_ ->-                                                      {-# LINE 47 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                      {-# LINE 47 "src-ag/AbstractSyntaxDump.ag" #-}                                                       ppNestInfo ["Pattern","Underscore"] [ppShow pos_] [] []                                                       {-# LINE 579 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule25 #-}@@ -592,8 +592,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn22 -        (T_Patterns_vOut22 _lhsOcopy _lhsOpp _lhsOppL) <- return (inv_Patterns_s23 sem arg)+        let arg22 = T_Patterns_vIn22 +        (T_Patterns_vOut22 _lhsOcopy _lhsOpp _lhsOppL) <- return (inv_Patterns_s23 sem arg22)         return (Syn_Patterns _lhsOcopy _lhsOpp _lhsOppL)    ) @@ -635,9 +635,9 @@          in __result_ )      in C_Patterns_s23 v22    {-# INLINE rule27 #-}-   {-# LINE 55 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 55 "src-ag/AbstractSyntaxDump.ag" #-}    rule27 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 55 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 55 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 643 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule28 #-}@@ -667,9 +667,9 @@          in __result_ )      in C_Patterns_s23 v22    {-# INLINE rule31 #-}-   {-# LINE 56 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 56 "src-ag/AbstractSyntaxDump.ag" #-}    rule31 = \  (_ :: ()) ->-                                                                                  {-# LINE 56 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 56 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 675 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule32 #-}@@ -691,8 +691,8 @@ wrap_Production (T_Production act) (Inh_Production ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Production_vIn25 -        (T_Production_vOut25 _lhsOpp) <- return (inv_Production_s26 sem arg)+        let arg25 = T_Production_vIn25 +        (T_Production_vOut25 _lhsOpp) <- return (inv_Production_s26 sem arg25)         return (Syn_Production _lhsOpp)    ) @@ -731,9 +731,9 @@          in __result_ )      in C_Production_s26 v25    {-# INLINE rule35 #-}-   {-# LINE 32 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 32 "src-ag/AbstractSyntaxDump.ag" #-}    rule35 = \ ((_childrenIppL) :: [PP_Doc]) ((_rulesIppL) :: [PP_Doc]) ((_typeSigsIppL) :: [PP_Doc]) con_ ->-                                                      {-# LINE 32 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                      {-# LINE 32 "src-ag/AbstractSyntaxDump.ag" #-}                                                       ppNestInfo ["Production","Production"] [pp con_] [ppF "children" $ ppVList _childrenIppL,ppF "rules" $ ppVList _rulesIppL,ppF "typeSigs" $ ppVList _typeSigsIppL] []                                                       {-# LINE 739 "dist/build/AbstractSyntaxDump.hs"#-} @@ -746,8 +746,8 @@ wrap_Productions (T_Productions act) (Inh_Productions ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Productions_vIn28 -        (T_Productions_vOut28 _lhsOpp _lhsOppL) <- return (inv_Productions_s29 sem arg)+        let arg28 = T_Productions_vIn28 +        (T_Productions_vOut28 _lhsOpp _lhsOppL) <- return (inv_Productions_s29 sem arg28)         return (Syn_Productions _lhsOpp _lhsOppL)    ) @@ -786,9 +786,9 @@          in __result_ )      in C_Productions_s29 v28    {-# INLINE rule36 #-}-   {-# LINE 71 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 71 "src-ag/AbstractSyntaxDump.ag" #-}    rule36 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 71 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 71 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 794 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule37 #-}@@ -809,9 +809,9 @@          in __result_ )      in C_Productions_s29 v28    {-# INLINE rule38 #-}-   {-# LINE 72 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 72 "src-ag/AbstractSyntaxDump.ag" #-}    rule38 = \  (_ :: ()) ->-                                                                                  {-# LINE 72 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 72 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 817 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule39 #-}@@ -827,8 +827,8 @@ wrap_Rule (T_Rule act) (Inh_Rule ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rule_vIn31 -        (T_Rule_vOut31 _lhsOpp) <- return (inv_Rule_s32 sem arg)+        let arg31 = T_Rule_vIn31 +        (T_Rule_vOut31 _lhsOpp) <- return (inv_Rule_s32 sem arg31)         return (Syn_Rule _lhsOpp)    ) @@ -865,9 +865,9 @@          in __result_ )      in C_Rule_s32 v31    {-# INLINE rule40 #-}-   {-# LINE 38 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 38 "src-ag/AbstractSyntaxDump.ag" #-}    rule40 = \ ((_patternIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) origin_ owrt_ ->-                                                              {-# LINE 38 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                              {-# LINE 38 "src-ag/AbstractSyntaxDump.ag" #-}                                                               ppNestInfo ["Rule","Rule"] [ppShow owrt_, pp origin_] [ppF "pattern" $ _patternIpp, ppF "rhs" $ _rhsIpp] []                                                               {-# LINE 873 "dist/build/AbstractSyntaxDump.hs"#-} @@ -880,8 +880,8 @@ wrap_Rules (T_Rules act) (Inh_Rules ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rules_vIn34 -        (T_Rules_vOut34 _lhsOpp _lhsOppL) <- return (inv_Rules_s35 sem arg)+        let arg34 = T_Rules_vIn34 +        (T_Rules_vOut34 _lhsOpp _lhsOppL) <- return (inv_Rules_s35 sem arg34)         return (Syn_Rules _lhsOpp _lhsOppL)    ) @@ -920,9 +920,9 @@          in __result_ )      in C_Rules_s35 v34    {-# INLINE rule41 #-}-   {-# LINE 63 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 63 "src-ag/AbstractSyntaxDump.ag" #-}    rule41 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 63 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 63 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 928 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule42 #-}@@ -943,9 +943,9 @@          in __result_ )      in C_Rules_s35 v34    {-# INLINE rule43 #-}-   {-# LINE 64 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 64 "src-ag/AbstractSyntaxDump.ag" #-}    rule43 = \  (_ :: ()) ->-                                                                                  {-# LINE 64 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 64 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 951 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule44 #-}@@ -961,8 +961,8 @@ wrap_TypeSig (T_TypeSig act) (Inh_TypeSig ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSig_vIn37 -        (T_TypeSig_vOut37 _lhsOpp) <- return (inv_TypeSig_s38 sem arg)+        let arg37 = T_TypeSig_vIn37 +        (T_TypeSig_vOut37 _lhsOpp) <- return (inv_TypeSig_s38 sem arg37)         return (Syn_TypeSig _lhsOpp)    ) @@ -995,9 +995,9 @@          in __result_ )      in C_TypeSig_s38 v37    {-# INLINE rule45 #-}-   {-# LINE 41 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 41 "src-ag/AbstractSyntaxDump.ag" #-}    rule45 = \ name_ tp_ ->-                                                              {-# LINE 41 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                              {-# LINE 41 "src-ag/AbstractSyntaxDump.ag" #-}                                                               ppNestInfo ["TypeSig","TypeSig"] [pp name_, ppShow tp_] [] []                                                               {-# LINE 1003 "dist/build/AbstractSyntaxDump.hs"#-} @@ -1010,8 +1010,8 @@ wrap_TypeSigs (T_TypeSigs act) (Inh_TypeSigs ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSigs_vIn40 -        (T_TypeSigs_vOut40 _lhsOpp _lhsOppL) <- return (inv_TypeSigs_s41 sem arg)+        let arg40 = T_TypeSigs_vIn40 +        (T_TypeSigs_vOut40 _lhsOpp _lhsOppL) <- return (inv_TypeSigs_s41 sem arg40)         return (Syn_TypeSigs _lhsOpp _lhsOppL)    ) @@ -1050,9 +1050,9 @@          in __result_ )      in C_TypeSigs_s41 v40    {-# INLINE rule46 #-}-   {-# LINE 59 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 59 "src-ag/AbstractSyntaxDump.ag" #-}    rule46 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 59 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 59 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 1058 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule47 #-}@@ -1073,9 +1073,9 @@          in __result_ )      in C_TypeSigs_s41 v40    {-# INLINE rule48 #-}-   {-# LINE 60 "./src-ag/AbstractSyntaxDump.ag" #-}+   {-# LINE 60 "src-ag/AbstractSyntaxDump.ag" #-}    rule48 = \  (_ :: ()) ->-                                                                                  {-# LINE 60 "./src-ag/AbstractSyntaxDump.ag" #-}+                                                                                  {-# LINE 60 "src-ag/AbstractSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 1081 "dist/build/AbstractSyntaxDump.hs"#-}    {-# INLINE rule49 #-}
src-generated/Code.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/Code.ag)+-- UUAGC 0.9.51 (src-ag/Code.ag) module Code where-{-# LINE 2 "./src-ag/Code.ag" #-}+{-# LINE 2 "src-ag/Code.ag" #-}  import Patterns import Data.Set(Set)@@ -10,7 +10,7 @@ import Data.Map(Map) import qualified Data.Map as Map {-# LINE 13 "dist/build/Code.hs" #-}-{-# LINE 146 "./src-ag/Code.ag" #-}+{-# LINE 146 "src-ag/Code.ag" #-}  -- Unboxed tuples --   unbox  Whether unboxed tuples are wanted or not
src-generated/CodeSyntax.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/CodeSyntax.ag)+-- UUAGC 0.9.51 (src-ag/CodeSyntax.ag) module CodeSyntax where-{-# LINE 2 "./src-ag/CodeSyntax.ag" #-}+{-# LINE 2 "src-ag/CodeSyntax.ag" #-}  import Patterns import CommonTypes
src-generated/CodeSyntaxDump.hs view
@@ -2,14 +2,14 @@ {-# LANGUAGE ScopedTypeVariables #-}  module CodeSyntaxDump where-{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 11 "dist/build/CodeSyntaxDump.hs" #-} -{-# LINE 2 "./src-ag/CodeSyntax.ag" #-}+{-# LINE 2 "src-ag/CodeSyntax.ag" #-}  import Patterns import CommonTypes@@ -17,7 +17,7 @@ import Data.Set(Set) {-# LINE 19 "dist/build/CodeSyntaxDump.hs" #-} -{-# LINE 5 "./src-ag/CodeSyntaxDump.ag" #-}+{-# LINE 5 "src-ag/CodeSyntaxDump.ag" #-}  import Data.List import qualified Data.Map as Map@@ -29,7 +29,7 @@ {-# LINE 30 "dist/build/CodeSyntaxDump.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 15 "./src-ag/CodeSyntaxDump.ag" #-}+{-# LINE 15 "src-ag/CodeSyntaxDump.ag" #-}  ppChild :: (Identifier,Type,ChildKind) -> PP_Doc ppChild (nm,tp,_)@@ -66,8 +66,8 @@ wrap_CGrammar (T_CGrammar act) (Inh_CGrammar ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CGrammar_vIn1 -        (T_CGrammar_vOut1 _lhsOpp) <- return (inv_CGrammar_s2 sem arg)+        let arg1 = T_CGrammar_vIn1 +        (T_CGrammar_vOut1 _lhsOpp) <- return (inv_CGrammar_s2 sem arg1)         return (Syn_CGrammar _lhsOpp)    ) @@ -102,9 +102,9 @@          in __result_ )      in C_CGrammar_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 47 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 47 "src-ag/CodeSyntaxDump.ag" #-}    rule0 = \ ((_nontsIppL) :: [PP_Doc]) derivings_ typeSyns_ ->-                                              {-# LINE 47 "./src-ag/CodeSyntaxDump.ag" #-}+                                              {-# LINE 47 "src-ag/CodeSyntaxDump.ag" #-}                                               ppNestInfo ["CGrammar","CGrammar"] []                                                          [ ppF "typeSyns"  $ ppAssocL typeSyns_                                                          , ppF "derivings" $ ppMap $ derivings_@@ -121,8 +121,8 @@ wrap_CInterface (T_CInterface act) (Inh_CInterface ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CInterface_vIn4 -        (T_CInterface_vOut4 _lhsOpp) <- return (inv_CInterface_s5 sem arg)+        let arg4 = T_CInterface_vIn4 +        (T_CInterface_vOut4 _lhsOpp) <- return (inv_CInterface_s5 sem arg4)         return (Syn_CInterface _lhsOpp)    ) @@ -157,9 +157,9 @@          in __result_ )      in C_CInterface_s5 v4    {-# INLINE rule1 #-}-   {-# LINE 57 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 57 "src-ag/CodeSyntaxDump.ag" #-}    rule1 = \ ((_segIppL) :: [PP_Doc]) ->-                                              {-# LINE 57 "./src-ag/CodeSyntaxDump.ag" #-}+                                              {-# LINE 57 "src-ag/CodeSyntaxDump.ag" #-}                                               ppNestInfo ["CInterface","CInterface"] [] [ppF "seg" $ ppVList _segIppL] []                                               {-# LINE 165 "dist/build/CodeSyntaxDump.hs"#-} @@ -172,8 +172,8 @@ wrap_CNonterminal (T_CNonterminal act) (Inh_CNonterminal ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CNonterminal_vIn7 -        (T_CNonterminal_vOut7 _lhsOpp) <- return (inv_CNonterminal_s8 sem arg)+        let arg7 = T_CNonterminal_vIn7 +        (T_CNonterminal_vOut7 _lhsOpp) <- return (inv_CNonterminal_s8 sem arg7)         return (Syn_CNonterminal _lhsOpp)    ) @@ -210,9 +210,9 @@          in __result_ )      in C_CNonterminal_s8 v7    {-# INLINE rule2 #-}-   {-# LINE 54 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 54 "src-ag/CodeSyntaxDump.ag" #-}    rule2 = \ ((_interIpp) :: PP_Doc) ((_prodsIppL) :: [PP_Doc]) inh_ nt_ params_ syn_ ->-                                                              {-# LINE 54 "./src-ag/CodeSyntaxDump.ag" #-}+                                                              {-# LINE 54 "src-ag/CodeSyntaxDump.ag" #-}                                                               ppNestInfo ["CNonterminal","CNonterminal"] (pp nt_ : map pp params_) [ppF "inh" $ ppMap inh_, ppF "syn" $ ppMap syn_, ppF "prods" $ ppVList _prodsIppL, ppF "inter" _interIpp] []                                                               {-# LINE 218 "dist/build/CodeSyntaxDump.hs"#-} @@ -225,8 +225,8 @@ wrap_CNonterminals (T_CNonterminals act) (Inh_CNonterminals ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CNonterminals_vIn10 -        (T_CNonterminals_vOut10 _lhsOpp _lhsOppL) <- return (inv_CNonterminals_s11 sem arg)+        let arg10 = T_CNonterminals_vIn10 +        (T_CNonterminals_vOut10 _lhsOpp _lhsOppL) <- return (inv_CNonterminals_s11 sem arg10)         return (Syn_CNonterminals _lhsOpp _lhsOppL)    ) @@ -265,9 +265,9 @@          in __result_ )      in C_CNonterminals_s11 v10    {-# INLINE rule3 #-}-   {-# LINE 102 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 102 "src-ag/CodeSyntaxDump.ag" #-}    rule3 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 102 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 102 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 273 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule4 #-}@@ -288,9 +288,9 @@          in __result_ )      in C_CNonterminals_s11 v10    {-# INLINE rule5 #-}-   {-# LINE 103 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 103 "src-ag/CodeSyntaxDump.ag" #-}    rule5 = \  (_ :: ()) ->-                                                                                  {-# LINE 103 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 103 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 296 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule6 #-}@@ -306,8 +306,8 @@ wrap_CProduction (T_CProduction act) (Inh_CProduction ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CProduction_vIn13 -        (T_CProduction_vOut13 _lhsOpp) <- return (inv_CProduction_s14 sem arg)+        let arg13 = T_CProduction_vIn13 +        (T_CProduction_vOut13 _lhsOpp) <- return (inv_CProduction_s14 sem arg13)         return (Syn_CProduction _lhsOpp)    ) @@ -342,9 +342,9 @@          in __result_ )      in C_CProduction_s14 v13    {-# INLINE rule7 #-}-   {-# LINE 63 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 63 "src-ag/CodeSyntaxDump.ag" #-}    rule7 = \ ((_visitsIppL) :: [PP_Doc]) children_ con_ terminals_ ->-                                              {-# LINE 63 "./src-ag/CodeSyntaxDump.ag" #-}+                                              {-# LINE 63 "src-ag/CodeSyntaxDump.ag" #-}                                               ppNestInfo ["CProduction","CProduction"] [pp con_] [ppF "visits" $ ppVList _visitsIppL, ppF "children" $ ppVList (map ppChild children_),ppF "terminals" $ ppVList (map ppShow terminals_)] []                                               {-# LINE 350 "dist/build/CodeSyntaxDump.hs"#-} @@ -357,8 +357,8 @@ wrap_CProductions (T_CProductions act) (Inh_CProductions ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CProductions_vIn16 -        (T_CProductions_vOut16 _lhsOpp _lhsOppL) <- return (inv_CProductions_s17 sem arg)+        let arg16 = T_CProductions_vIn16 +        (T_CProductions_vOut16 _lhsOpp _lhsOppL) <- return (inv_CProductions_s17 sem arg16)         return (Syn_CProductions _lhsOpp _lhsOppL)    ) @@ -397,9 +397,9 @@          in __result_ )      in C_CProductions_s17 v16    {-# INLINE rule8 #-}-   {-# LINE 94 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 94 "src-ag/CodeSyntaxDump.ag" #-}    rule8 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 94 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 94 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 405 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule9 #-}@@ -420,9 +420,9 @@          in __result_ )      in C_CProductions_s17 v16    {-# INLINE rule10 #-}-   {-# LINE 95 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 95 "src-ag/CodeSyntaxDump.ag" #-}    rule10 = \  (_ :: ()) ->-                                                                                  {-# LINE 95 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 95 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 428 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule11 #-}@@ -438,8 +438,8 @@ wrap_CRule (T_CRule act) (Inh_CRule ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CRule_vIn19 -        (T_CRule_vOut19 _lhsOpp) <- return (inv_CRule_s20 sem arg)+        let arg19 = T_CRule_vIn19 +        (T_CRule_vOut19 _lhsOpp) <- return (inv_CRule_s20 sem arg19)         return (Syn_CRule _lhsOpp)    ) @@ -475,9 +475,9 @@          in __result_ )      in C_CRule_s20 v19    {-# INLINE rule12 #-}-   {-# LINE 69 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 69 "src-ag/CodeSyntaxDump.ag" #-}    rule12 = \ ((_patternIpp) :: PP_Doc) childnt_ con_ defines_ field_ hasCode_ isIn_ name_ nt_ origin_ owrt_ rhs_ tp_ ->-                                                              {-# LINE 69 "./src-ag/CodeSyntaxDump.ag" #-}+                                                              {-# LINE 69 "src-ag/CodeSyntaxDump.ag" #-}                                                               ppNestInfo ["CRule","CRule"] [pp name_] [ppF "isIn" $ ppBool isIn_, ppF "hasCode" $ ppBool hasCode_, ppF "nt" $ pp nt_, ppF "con" $ pp con_, ppF "field" $ pp field_, ppF "childnt" $ ppMaybeShow childnt_, ppF "tp" $ ppMaybeShow tp_, ppF "pattern" $ if isIn_ then pp "<no pat because In>" else _patternIpp, ppF "rhs" $ ppStrings rhs_, ppF "defines" $ ppVertexMap defines_, ppF "owrt" $ ppBool owrt_, ppF "origin" $ pp origin_] []                                                               {-# LINE 483 "dist/build/CodeSyntaxDump.hs"#-} {-# NOINLINE sem_CRule_CChildVisit #-}@@ -493,9 +493,9 @@          in __result_ )      in C_CRule_s20 v19    {-# INLINE rule13 #-}-   {-# LINE 70 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 70 "src-ag/CodeSyntaxDump.ag" #-}    rule13 = \ inh_ isLast_ name_ nr_ nt_ syn_ ->-                                              {-# LINE 70 "./src-ag/CodeSyntaxDump.ag" #-}+                                              {-# LINE 70 "src-ag/CodeSyntaxDump.ag" #-}                                               ppNestInfo ["CRule","CChildVisit"] [pp name_] [ppF "nt" $ pp nt_, ppF "nr" $ ppShow nr_, ppF "inh" $ ppMap inh_, ppF "syn" $ ppMap syn_, ppF "last" $ ppBool isLast_] []                                               {-# LINE 501 "dist/build/CodeSyntaxDump.hs"#-} @@ -508,8 +508,8 @@ wrap_CSegment (T_CSegment act) (Inh_CSegment ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CSegment_vIn22 -        (T_CSegment_vOut22 _lhsOpp) <- return (inv_CSegment_s23 sem arg)+        let arg22 = T_CSegment_vIn22 +        (T_CSegment_vOut22 _lhsOpp) <- return (inv_CSegment_s23 sem arg22)         return (Syn_CSegment _lhsOpp)    ) @@ -542,9 +542,9 @@          in __result_ )      in C_CSegment_s23 v22    {-# INLINE rule14 #-}-   {-# LINE 60 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 60 "src-ag/CodeSyntaxDump.ag" #-}    rule14 = \ inh_ syn_ ->-                                              {-# LINE 60 "./src-ag/CodeSyntaxDump.ag" #-}+                                              {-# LINE 60 "src-ag/CodeSyntaxDump.ag" #-}                                               ppNestInfo ["CSegment","CSegment"] [] [ppF "inh" $ ppMap inh_, ppF "syn" $ ppMap syn_] []                                               {-# LINE 550 "dist/build/CodeSyntaxDump.hs"#-} @@ -557,8 +557,8 @@ wrap_CSegments (T_CSegments act) (Inh_CSegments ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CSegments_vIn25 -        (T_CSegments_vOut25 _lhsOpp _lhsOppL) <- return (inv_CSegments_s26 sem arg)+        let arg25 = T_CSegments_vIn25 +        (T_CSegments_vOut25 _lhsOpp _lhsOppL) <- return (inv_CSegments_s26 sem arg25)         return (Syn_CSegments _lhsOpp _lhsOppL)    ) @@ -597,9 +597,9 @@          in __result_ )      in C_CSegments_s26 v25    {-# INLINE rule15 #-}-   {-# LINE 98 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 98 "src-ag/CodeSyntaxDump.ag" #-}    rule15 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 98 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 98 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 605 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule16 #-}@@ -620,9 +620,9 @@          in __result_ )      in C_CSegments_s26 v25    {-# INLINE rule17 #-}-   {-# LINE 99 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 99 "src-ag/CodeSyntaxDump.ag" #-}    rule17 = \  (_ :: ()) ->-                                                                                  {-# LINE 99 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 99 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 628 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule18 #-}@@ -638,8 +638,8 @@ wrap_CVisit (T_CVisit act) (Inh_CVisit ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CVisit_vIn28 -        (T_CVisit_vOut28 _lhsOpp) <- return (inv_CVisit_s29 sem arg)+        let arg28 = T_CVisit_vIn28 +        (T_CVisit_vOut28 _lhsOpp) <- return (inv_CVisit_s29 sem arg28)         return (Syn_CVisit _lhsOpp)    ) @@ -676,9 +676,9 @@          in __result_ )      in C_CVisit_s29 v28    {-# INLINE rule19 #-}-   {-# LINE 66 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 66 "src-ag/CodeSyntaxDump.ag" #-}    rule19 = \ ((_intraIppL) :: [PP_Doc]) ((_vssIppL) :: [PP_Doc]) inh_ ordered_ syn_ ->-                                              {-# LINE 66 "./src-ag/CodeSyntaxDump.ag" #-}+                                              {-# LINE 66 "src-ag/CodeSyntaxDump.ag" #-}                                               ppNestInfo ["CVisit","CVisit"] [] [ppF "inh" $ ppMap inh_, ppF "syn" $ ppMap syn_, ppF "sequence" $ ppVList _vssIppL, ppF "intra" $ ppVList _intraIppL, ppF "ordered" $ ppBool ordered_] []                                               {-# LINE 684 "dist/build/CodeSyntaxDump.hs"#-} @@ -691,8 +691,8 @@ wrap_CVisits (T_CVisits act) (Inh_CVisits ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CVisits_vIn31 -        (T_CVisits_vOut31 _lhsOpp _lhsOppL) <- return (inv_CVisits_s32 sem arg)+        let arg31 = T_CVisits_vIn31 +        (T_CVisits_vOut31 _lhsOpp _lhsOppL) <- return (inv_CVisits_s32 sem arg31)         return (Syn_CVisits _lhsOpp _lhsOppL)    ) @@ -731,9 +731,9 @@          in __result_ )      in C_CVisits_s32 v31    {-# INLINE rule20 #-}-   {-# LINE 90 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 90 "src-ag/CodeSyntaxDump.ag" #-}    rule20 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 90 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 90 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 739 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule21 #-}@@ -754,9 +754,9 @@          in __result_ )      in C_CVisits_s32 v31    {-# INLINE rule22 #-}-   {-# LINE 91 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 91 "src-ag/CodeSyntaxDump.ag" #-}    rule22 = \  (_ :: ()) ->-                                                                                  {-# LINE 91 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 91 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 762 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule23 #-}@@ -772,8 +772,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn34 -        (T_Pattern_vOut34 _lhsOcopy _lhsOpp) <- return (inv_Pattern_s35 sem arg)+        let arg34 = T_Pattern_vIn34 +        (T_Pattern_vOut34 _lhsOcopy _lhsOpp) <- return (inv_Pattern_s35 sem arg34)         return (Syn_Pattern _lhsOcopy _lhsOpp)    ) @@ -815,9 +815,9 @@          in __result_ )      in C_Pattern_s35 v34    {-# INLINE rule24 #-}-   {-# LINE 73 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 73 "src-ag/CodeSyntaxDump.ag" #-}    rule24 = \ ((_patsIppL) :: [PP_Doc]) name_ ->-                                                              {-# LINE 73 "./src-ag/CodeSyntaxDump.ag" #-}+                                                              {-# LINE 73 "src-ag/CodeSyntaxDump.ag" #-}                                                               ppNestInfo ["Pattern","Constr"] [pp name_] [ppF "pats" $ ppVList _patsIppL] []                                                               {-# LINE 823 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule25 #-}@@ -844,9 +844,9 @@          in __result_ )      in C_Pattern_s35 v34    {-# INLINE rule27 #-}-   {-# LINE 74 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 74 "src-ag/CodeSyntaxDump.ag" #-}    rule27 = \ ((_patsIppL) :: [PP_Doc]) pos_ ->-                                                              {-# LINE 74 "./src-ag/CodeSyntaxDump.ag" #-}+                                                              {-# LINE 74 "src-ag/CodeSyntaxDump.ag" #-}                                                               ppNestInfo ["Pattern","Product"] [ppShow pos_] [ppF "pats" $ ppVList _patsIppL] []                                                               {-# LINE 852 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule28 #-}@@ -873,9 +873,9 @@          in __result_ )      in C_Pattern_s35 v34    {-# INLINE rule30 #-}-   {-# LINE 75 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 75 "src-ag/CodeSyntaxDump.ag" #-}    rule30 = \ ((_patIpp) :: PP_Doc) attr_ field_ ->-                                                              {-# LINE 75 "./src-ag/CodeSyntaxDump.ag" #-}+                                                              {-# LINE 75 "src-ag/CodeSyntaxDump.ag" #-}                                                               ppNestInfo ["Pattern","Alias"] [pp field_, pp attr_] [ppF "pat" $ _patIpp] []                                                               {-# LINE 881 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule31 #-}@@ -926,9 +926,9 @@          in __result_ )      in C_Pattern_s35 v34    {-# INLINE rule36 #-}-   {-# LINE 76 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 76 "src-ag/CodeSyntaxDump.ag" #-}    rule36 = \ pos_ ->-                                                      {-# LINE 76 "./src-ag/CodeSyntaxDump.ag" #-}+                                                      {-# LINE 76 "src-ag/CodeSyntaxDump.ag" #-}                                                       ppNestInfo ["Pattern","Underscore"] [ppShow pos_] [] []                                                       {-# LINE 934 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule37 #-}@@ -947,8 +947,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn37 -        (T_Patterns_vOut37 _lhsOcopy _lhsOpp _lhsOppL) <- return (inv_Patterns_s38 sem arg)+        let arg37 = T_Patterns_vIn37 +        (T_Patterns_vOut37 _lhsOcopy _lhsOpp _lhsOppL) <- return (inv_Patterns_s38 sem arg37)         return (Syn_Patterns _lhsOcopy _lhsOpp _lhsOppL)    ) @@ -990,9 +990,9 @@          in __result_ )      in C_Patterns_s38 v37    {-# INLINE rule39 #-}-   {-# LINE 82 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 82 "src-ag/CodeSyntaxDump.ag" #-}    rule39 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 82 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 82 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 998 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule40 #-}@@ -1022,9 +1022,9 @@          in __result_ )      in C_Patterns_s38 v37    {-# INLINE rule43 #-}-   {-# LINE 83 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 83 "src-ag/CodeSyntaxDump.ag" #-}    rule43 = \  (_ :: ()) ->-                                                                                  {-# LINE 83 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 83 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 1030 "dist/build/CodeSyntaxDump.hs"#-}    {-# INLINE rule44 #-}@@ -1046,8 +1046,8 @@ wrap_Sequence (T_Sequence act) (Inh_Sequence ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Sequence_vIn40 -        (T_Sequence_vOut40 _lhsOppL) <- return (inv_Sequence_s41 sem arg)+        let arg40 = T_Sequence_vIn40 +        (T_Sequence_vOut40 _lhsOppL) <- return (inv_Sequence_s41 sem arg40)         return (Syn_Sequence _lhsOppL)    ) @@ -1084,9 +1084,9 @@          in __result_ )      in C_Sequence_s41 v40    {-# INLINE rule47 #-}-   {-# LINE 86 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 86 "src-ag/CodeSyntaxDump.ag" #-}    rule47 = \ ((_hdIpp) :: PP_Doc) ((_tlIppL) :: [PP_Doc]) ->-                                                                                  {-# LINE 86 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 86 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   _hdIpp : _tlIppL                                                                                   {-# LINE 1092 "dist/build/CodeSyntaxDump.hs"#-} {-# NOINLINE sem_Sequence_Nil #-}@@ -1102,8 +1102,8 @@          in __result_ )      in C_Sequence_s41 v40    {-# INLINE rule48 #-}-   {-# LINE 87 "./src-ag/CodeSyntaxDump.ag" #-}+   {-# LINE 87 "src-ag/CodeSyntaxDump.ag" #-}    rule48 = \  (_ :: ()) ->-                                                                                  {-# LINE 87 "./src-ag/CodeSyntaxDump.ag" #-}+                                                                                  {-# LINE 87 "src-ag/CodeSyntaxDump.ag" #-}                                                                                   []                                                                                   {-# LINE 1110 "dist/build/CodeSyntaxDump.hs"#-}
src-generated/ConcreteSyntax.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/ConcreteSyntax.ag)+-- UUAGC 0.9.51 (src-ag/ConcreteSyntax.ag) module ConcreteSyntax where-{-# LINE 2 "./src-ag/ConcreteSyntax.ag" #-}+{-# LINE 2 "src-ag/ConcreteSyntax.ag" #-}  import UU.Scanner.Position (Pos) import Patterns   (Pattern)
src-generated/DeclBlocks.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/DeclBlocks.ag)+-- UUAGC 0.9.51 (src-ag/DeclBlocks.ag) module DeclBlocks where-{-# LINE 2 "./src-ag/DeclBlocks.ag" #-}+{-# LINE 2 "src-ag/DeclBlocks.ag" #-}  import Code (Decl,Expr) {-# LINE 9 "dist/build/DeclBlocks.hs" #-}
src-generated/DefaultRules.hs view
@@ -3,14 +3,14 @@ {-# LANGUAGE ScopedTypeVariables #-}  module DefaultRules where-{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 12 "dist/build/DefaultRules.hs" #-} -{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)@@ -22,7 +22,7 @@ import ErrorMessages {-# LINE 24 "dist/build/DefaultRules.hs" #-} -{-# LINE 15 "./src-ag/DefaultRules.ag" #-}+{-# LINE 15 "src-ag/DefaultRules.ag" #-}  import qualified Data.List import qualified Data.Set as Set@@ -45,7 +45,7 @@ {-# LINE 46 "dist/build/DefaultRules.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 80 "./src-ag/DefaultRules.ag" #-}+{-# LINE 80 "src-ag/DefaultRules.ag" #-}  fieldName n       = '@' : getName n @@ -157,7 +157,7 @@  {-# LINE 159 "dist/build/DefaultRules.hs" #-} -{-# LINE 255 "./src-ag/DefaultRules.ag" #-}+{-# LINE 255 "src-ag/DefaultRules.ag" #-}   @@ -309,7 +309,7 @@                       deprChild =  maybe False (== _ACHILD) sel {-# LINE 311 "dist/build/DefaultRules.hs" #-} -{-# LINE 488 "./src-ag/DefaultRules.ag" #-}+{-# LINE 488 "src-ag/DefaultRules.ag" #-}  buildTuple fs = "(" ++ concat (intersperse "," fs) ++ ")" @@ -378,7 +378,7 @@     childLoc = Ident (show target ++ "_merge") (getPos target) {-# LINE 380 "dist/build/DefaultRules.hs" #-} -{-# LINE 606 "./src-ag/DefaultRules.ag" #-}+{-# LINE 606 "src-ag/DefaultRules.ag" #-}  elimSelfId :: NontermIdent -> [Identifier] -> Type -> Type elimSelfId nt args Self = NT nt (map getName args) False@@ -389,7 +389,7 @@ elimSelfStr _ _ tp = tp {-# LINE 391 "dist/build/DefaultRules.hs" #-} -{-# LINE 658 "./src-ag/DefaultRules.ag" #-}+{-# LINE 658 "src-ag/DefaultRules.ag" #-}  -- When a rule has a name, create an alias for a rule -- and a modified rule that refers to the alias@@ -404,13 +404,13 @@   r'    = Rule Nothing pat expr' owrt origin False True identity Nothing False {-# LINE 406 "dist/build/DefaultRules.hs" #-} -{-# LINE 675 "./src-ag/DefaultRules.ag" #-}+{-# LINE 675 "src-ag/DefaultRules.ag" #-}  needsMultiRules :: Options -> Bool needsMultiRules opts = (visit opts || withCycle opts) && not (kennedyWarren opts) {-# LINE 412 "dist/build/DefaultRules.hs" #-} -{-# LINE 680 "./src-ag/DefaultRules.ag" #-}+{-# LINE 680 "src-ag/DefaultRules.ag" #-}  {- multiRule replaces@@ -468,8 +468,8 @@ wrap_Child !(T_Child act) !(Inh_Child _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Child_vIn0 _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap-        !(T_Child_vOut0 _lhsOerrors _lhsOfield _lhsOinherited _lhsOname _lhsOoutput _lhsOsynthesized) <- return (inv_Child_s0 sem K_Child_v0 arg)+        let arg0 = T_Child_vIn0 _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap+        !(T_Child_vOut0 _lhsOerrors _lhsOfield _lhsOinherited _lhsOname _lhsOoutput _lhsOsynthesized) <- return (inv_Child_s0 sem K_Child_v0 arg0)         return (Syn_Child _lhsOerrors _lhsOfield _lhsOinherited _lhsOname _lhsOoutput _lhsOsynthesized)    ) @@ -591,77 +591,77 @@           in __result_ )      in C_Child_s56 v53    {-# NOINLINE[1] rule0 #-}-   {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 19 "src-ag/DistChildAttr.ag" #-}    rule0 = \ !name_ !tp_ ->-                       {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+                       {-# LINE 19 "src-ag/DistChildAttr.ag" #-}                        case tp_ of                          NT nt _ _ -> nt                          Self      -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")                          Haskell t -> identifier ""                        {-# LINE 602 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule1 #-}-   {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 23 "src-ag/DistChildAttr.ag" #-}    rule1 = \ !_chnt ((!_lhsIinhMap) :: Map Identifier Attributes) ->-                      {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 23 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIinhMap                       {-# LINE 608 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule2 #-}-   {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 24 "src-ag/DistChildAttr.ag" #-}    rule2 = \ !_chnt ((!_lhsIsynMap) :: Map Identifier Attributes) ->-                      {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 24 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIsynMap                       {-# LINE 614 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule3 #-}-   {-# LINE 229 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 229 "src-ag/DefaultRules.ag" #-}    rule3 = \ !name_ ->-                         {-# LINE 229 "./src-ag/DefaultRules.ag" #-}+                         {-# LINE 229 "src-ag/DefaultRules.ag" #-}                          name_                          {-# LINE 620 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule4 #-}-   {-# LINE 238 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 238 "src-ag/DefaultRules.ag" #-}    rule4 = \ !_inh1 ->-                            {-# LINE 238 "./src-ag/DefaultRules.ag" #-}+                            {-# LINE 238 "src-ag/DefaultRules.ag" #-}                             _inh1                             {-# LINE 626 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule5 #-}-   {-# LINE 239 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 239 "src-ag/DefaultRules.ag" #-}    rule5 = \ ((!_lhsImerged) :: Set Identifier) !_syn1 !name_ ->-                              {-# LINE 239 "./src-ag/DefaultRules.ag" #-}+                              {-# LINE 239 "src-ag/DefaultRules.ag" #-}                               if name_ `Set.member` _lhsImerged                               then Map.empty                               else _syn1                               {-# LINE 634 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule6 #-}-   {-# LINE 574 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 574 "src-ag/DefaultRules.ag" #-}    rule6 = \ !kind_ !name_ !tp_ ->-                        {-# LINE 574 "./src-ag/DefaultRules.ag" #-}+                        {-# LINE 574 "src-ag/DefaultRules.ag" #-}                         (name_,tp_,kind_)                         {-# LINE 640 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule7 #-}-   {-# LINE 596 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 596 "src-ag/DefaultRules.ag" #-}    rule7 = \ !name_ !tp_ ->-                           {-# LINE 596 "./src-ag/DefaultRules.ag" #-}+                           {-# LINE 596 "src-ag/DefaultRules.ag" #-}                            case tp_ of                              NT nt params _ -> (nt, params)                              Self           -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")                              Haskell t      -> (identifier t, [])                            {-# LINE 649 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule8 #-}-   {-# LINE 600 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 600 "src-ag/DefaultRules.ag" #-}    rule8 = \ !_inh !_nt !_params ->-               {-# LINE 600 "./src-ag/DefaultRules.ag" #-}+               {-# LINE 600 "src-ag/DefaultRules.ag" #-}                Map.map (elimSelfStr _nt     _params    ) _inh                {-# LINE 655 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule9 #-}-   {-# LINE 601 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 601 "src-ag/DefaultRules.ag" #-}    rule9 = \ !_nt !_params !_syn ->-               {-# LINE 601 "./src-ag/DefaultRules.ag" #-}+               {-# LINE 601 "src-ag/DefaultRules.ag" #-}                Map.map (elimSelfStr _nt     _params    ) _syn                {-# LINE 661 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule10 #-}-   {-# LINE 642 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 642 "src-ag/DefaultRules.ag" #-}    rule10 = \ !kind_ !name_ !tp_ ->-                 {-# LINE 642 "./src-ag/DefaultRules.ag" #-}+                 {-# LINE 642 "src-ag/DefaultRules.ag" #-}                  Child name_ tp_ kind_                  {-# LINE 667 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule11 #-}@@ -677,8 +677,8 @@ wrap_Children !(T_Children act) !(Inh_Children _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Children_vIn1 _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap-        !(T_Children_vOut1 _lhsOerrors _lhsOfields _lhsOinputs _lhsOoutput _lhsOoutputs) <- return (inv_Children_s2 sem K_Children_v1 arg)+        let arg1 = T_Children_vIn1 _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap+        !(T_Children_vOut1 _lhsOerrors _lhsOfields _lhsOinputs _lhsOoutput _lhsOoutputs) <- return (inv_Children_s2 sem K_Children_v1 arg1)         return (Syn_Children _lhsOerrors _lhsOfields _lhsOinputs _lhsOoutput _lhsOoutputs)    ) @@ -811,21 +811,21 @@           in __result_ )      in C_Children_s53 v48    {-# NOINLINE[1] rule13 #-}-   {-# LINE 244 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 244 "src-ag/DefaultRules.ag" #-}    rule13 = \ ((!_hdIinherited) :: Attributes) ((!_hdIname) :: Identifier) ((!_tlIinputs) :: [(Identifier, Attributes)]) ->-                         {-# LINE 244 "./src-ag/DefaultRules.ag" #-}+                         {-# LINE 244 "src-ag/DefaultRules.ag" #-}                          (_hdIname, _hdIinherited) : _tlIinputs                          {-# LINE 819 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule14 #-}-   {-# LINE 245 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 245 "src-ag/DefaultRules.ag" #-}    rule14 = \ ((!_hdIname) :: Identifier) ((!_hdIsynthesized) :: Attributes) ((!_tlIoutputs) :: [(Identifier, Attributes)]) ->-                         {-# LINE 245 "./src-ag/DefaultRules.ag" #-}+                         {-# LINE 245 "src-ag/DefaultRules.ag" #-}                          (_hdIname, _hdIsynthesized) : _tlIoutputs                          {-# LINE 825 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule15 #-}-   {-# LINE 570 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 570 "src-ag/DefaultRules.ag" #-}    rule15 = \ ((!_hdIfield) ::  (Identifier,Type,ChildKind) ) ((!_tlIfields) :: [(Identifier,Type,ChildKind)]) ->-                        {-# LINE 570 "./src-ag/DefaultRules.ag" #-}+                        {-# LINE 570 "src-ag/DefaultRules.ag" #-}                         _hdIfield : _tlIfields                         {-# LINE 831 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule16 #-}@@ -919,21 +919,21 @@           in __result_ )      in C_Children_s53 v48    {-# NOINLINE[1] rule33 #-}-   {-# LINE 246 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 246 "src-ag/DefaultRules.ag" #-}    rule33 = \  (_ :: ()) ->-                         {-# LINE 246 "./src-ag/DefaultRules.ag" #-}+                         {-# LINE 246 "src-ag/DefaultRules.ag" #-}                          []                          {-# LINE 927 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule34 #-}-   {-# LINE 247 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 247 "src-ag/DefaultRules.ag" #-}    rule34 = \  (_ :: ()) ->-                         {-# LINE 247 "./src-ag/DefaultRules.ag" #-}+                         {-# LINE 247 "src-ag/DefaultRules.ag" #-}                          []                          {-# LINE 933 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule35 #-}-   {-# LINE 571 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 571 "src-ag/DefaultRules.ag" #-}    rule35 = \  (_ :: ()) ->-                        {-# LINE 571 "./src-ag/DefaultRules.ag" #-}+                        {-# LINE 571 "src-ag/DefaultRules.ag" #-}                         []                         {-# LINE 939 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule36 #-}@@ -955,8 +955,8 @@ wrap_Grammar !(T_Grammar act) !(Inh_Grammar _lhsIconstructorTypeMap _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Grammar_vIn2 _lhsIconstructorTypeMap _lhsIoptions-        !(T_Grammar_vOut2 _lhsOerrors _lhsOoutput) <- return (inv_Grammar_s4 sem arg)+        let arg2 = T_Grammar_vIn2 _lhsIconstructorTypeMap _lhsIoptions+        !(T_Grammar_vOut2 _lhsOerrors _lhsOoutput) <- return (inv_Grammar_s4 sem arg2)         return (Syn_Grammar _lhsOerrors _lhsOoutput)    ) @@ -1009,75 +1009,75 @@           in __result_ )      in C_Grammar_s4 v2    {-# INLINE rule39 #-}-   {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 15 "src-ag/DistChildAttr.ag" #-}    rule39 = \ ((!_nontsIinhMap') :: Map Identifier Attributes) ->-                             {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 15 "src-ag/DistChildAttr.ag" #-}                              _nontsIinhMap'                              {-# LINE 1017 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule40 #-}-   {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 16 "src-ag/DistChildAttr.ag" #-}    rule40 = \ ((!_nontsIsynMap') :: Map Identifier Attributes) ->-                             {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 16 "src-ag/DistChildAttr.ag" #-}                              _nontsIsynMap'                              {-# LINE 1023 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule41 #-}-   {-# LINE 60 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 60 "src-ag/DefaultRules.ag" #-}    rule41 = \ ((!_lhsIoptions) :: Options) ->-                                    {-# LINE 60 "./src-ag/DefaultRules.ag" #-}+                                    {-# LINE 60 "src-ag/DefaultRules.ag" #-}                                     rename    _lhsIoptions                                     {-# LINE 1029 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule42 #-}-   {-# LINE 61 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 61 "src-ag/DefaultRules.ag" #-}    rule42 = \ ((!_lhsIoptions) :: Options) ->-                                    {-# LINE 61 "./src-ag/DefaultRules.ag" #-}+                                    {-# LINE 61 "src-ag/DefaultRules.ag" #-}                                     modcopy   _lhsIoptions                                     {-# LINE 1035 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule43 #-}-   {-# LINE 69 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 69 "src-ag/DefaultRules.ag" #-}    rule43 = \ !wrappers_ ->-                     {-# LINE 69 "./src-ag/DefaultRules.ag" #-}+                     {-# LINE 69 "src-ag/DefaultRules.ag" #-}                      wrappers_                      {-# LINE 1041 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule45 #-}-   {-# LINE 231 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 231 "src-ag/DefaultRules.ag" #-}    rule45 = \ !useMap_ ->-                               {-# LINE 231 "./src-ag/DefaultRules.ag" #-}+                               {-# LINE 231 "src-ag/DefaultRules.ag" #-}                                useMap_                                {-# LINE 1047 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule46 #-}-   {-# LINE 233 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 233 "src-ag/DefaultRules.ag" #-}    rule46 = \ !typeSyns_ ->-                                 {-# LINE 233 "./src-ag/DefaultRules.ag" #-}+                                 {-# LINE 233 "src-ag/DefaultRules.ag" #-}                                  typeSyns_                                  {-# LINE 1053 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule47 #-}-   {-# LINE 623 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 623 "src-ag/DefaultRules.ag" #-}    rule47 = \  (_ :: ()) ->-                           {-# LINE 623 "./src-ag/DefaultRules.ag" #-}+                           {-# LINE 623 "src-ag/DefaultRules.ag" #-}                            1                            {-# LINE 1059 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule48 #-}-   {-# LINE 737 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 737 "src-ag/DefaultRules.ag" #-}    rule48 = \ !manualAttrOrderMap_ ->-                                   {-# LINE 737 "./src-ag/DefaultRules.ag" #-}+                                   {-# LINE 737 "src-ag/DefaultRules.ag" #-}                                    manualAttrOrderMap_                                    {-# LINE 1065 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule49 #-}-   {-# LINE 803 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 803 "src-ag/DefaultRules.ag" #-}    rule49 = \ !augmentsMap_ ->-                                                    {-# LINE 803 "./src-ag/DefaultRules.ag" #-}+                                                    {-# LINE 803 "src-ag/DefaultRules.ag" #-}                                                     augmentsMap_                                                     {-# LINE 1071 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule50 #-}-   {-# LINE 810 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 810 "src-ag/DefaultRules.ag" #-}    rule50 = \ !aroundsMap_ ->-                                                   {-# LINE 810 "./src-ag/DefaultRules.ag" #-}+                                                   {-# LINE 810 "src-ag/DefaultRules.ag" #-}                                                    aroundsMap_                                                    {-# LINE 1077 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule51 #-}-   {-# LINE 818 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 818 "src-ag/DefaultRules.ag" #-}    rule51 = \ !mergeMap_ ->-                                                  {-# LINE 818 "./src-ag/DefaultRules.ag" #-}+                                                  {-# LINE 818 "src-ag/DefaultRules.ag" #-}                                                   mergeMap_                                                   {-# LINE 1083 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule52 #-}@@ -1105,8 +1105,8 @@ wrap_Nonterminal !(T_Nonterminal act) !(Inh_Nonterminal _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Nonterminal_vIn3 _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers-        !(T_Nonterminal_vOut3 _lhsOcollect_nts _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap' _lhsOuniq) <- return (inv_Nonterminal_s6 sem K_Nonterminal_v3 arg)+        let arg3 = T_Nonterminal_vIn3 _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers+        !(T_Nonterminal_vOut3 _lhsOcollect_nts _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap' _lhsOuniq) <- return (inv_Nonterminal_s6 sem K_Nonterminal_v3 arg3)         return (Syn_Nonterminal _lhsOcollect_nts _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap' _lhsOuniq)    ) @@ -1409,93 +1409,93 @@           in __result_ )      in C_Nonterminal_s52 v46    {-# NOINLINE rule57 #-}-   {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 7 "src-ag/DistChildAttr.ag" #-}    rule57 = \ !inh_ !nt_ ->-                                 {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 7 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ inh_                                  {-# LINE 1417 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule58 #-}-   {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 8 "src-ag/DistChildAttr.ag" #-}    rule58 = \ !nt_ !syn_ ->-                                 {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 8 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ syn_                                  {-# LINE 1423 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule59 #-}-   {-# LINE 44 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 44 "src-ag/DefaultRules.ag" #-}    rule59 = \ !params_ ->-                   {-# LINE 44 "./src-ag/DefaultRules.ag" #-}+                   {-# LINE 44 "src-ag/DefaultRules.ag" #-}                    params_                    {-# LINE 1429 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule60 #-}-   {-# LINE 205 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 205 "src-ag/DefaultRules.ag" #-}    rule60 = \ !nt_ ->-                                    {-# LINE 205 "./src-ag/DefaultRules.ag" #-}+                                    {-# LINE 205 "src-ag/DefaultRules.ag" #-}                                     Set.singleton nt_                                     {-# LINE 1435 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule61 #-}-   {-# LINE 219 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 219 "src-ag/DefaultRules.ag" #-}    rule61 = \ !_inh1 ->-                                   {-# LINE 219 "./src-ag/DefaultRules.ag" #-}+                                   {-# LINE 219 "src-ag/DefaultRules.ag" #-}                                    _inh1                                    {-# LINE 1441 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule62 #-}-   {-# LINE 220 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 220 "src-ag/DefaultRules.ag" #-}    rule62 = \ !_syn1 ->-                                   {-# LINE 220 "./src-ag/DefaultRules.ag" #-}+                                   {-# LINE 220 "src-ag/DefaultRules.ag" #-}                                    _syn1                                    {-# LINE 1447 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule64 #-}-   {-# LINE 222 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 222 "src-ag/DefaultRules.ag" #-}    rule64 = \ !syn_ ->-                                   {-# LINE 222 "./src-ag/DefaultRules.ag" #-}+                                   {-# LINE 222 "src-ag/DefaultRules.ag" #-}                                    syn_                                    {-# LINE 1453 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule65 #-}-   {-# LINE 223 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 223 "src-ag/DefaultRules.ag" #-}    rule65 = \ ((!_lhsIuseMap) :: UseMap) !nt_ ->-                                   {-# LINE 223 "./src-ag/DefaultRules.ag" #-}+                                   {-# LINE 223 "src-ag/DefaultRules.ag" #-}                                    Map.findWithDefault Map.empty nt_ _lhsIuseMap                                    {-# LINE 1459 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule66 #-}-   {-# LINE 235 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 235 "src-ag/DefaultRules.ag" #-}    rule66 = \ !nt_ ->-                               {-# LINE 235 "./src-ag/DefaultRules.ag" #-}+                               {-# LINE 235 "src-ag/DefaultRules.ag" #-}                                nt_                                {-# LINE 1465 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule67 #-}-   {-# LINE 592 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 592 "src-ag/DefaultRules.ag" #-}    rule67 = \ !inh_ !nt_ !params_ ->-               {-# LINE 592 "./src-ag/DefaultRules.ag" #-}+               {-# LINE 592 "src-ag/DefaultRules.ag" #-}                Map.map (elimSelfId nt_ params_) inh_                {-# LINE 1471 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule68 #-}-   {-# LINE 593 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 593 "src-ag/DefaultRules.ag" #-}    rule68 = \ !nt_ !params_ !syn_ ->-               {-# LINE 593 "./src-ag/DefaultRules.ag" #-}+               {-# LINE 593 "src-ag/DefaultRules.ag" #-}                Map.map (elimSelfId nt_ params_) syn_                {-# LINE 1477 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule69 #-}-   {-# LINE 632 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 632 "src-ag/DefaultRules.ag" #-}    rule69 = \ !_inh1 ((!_prodsIoutput) :: Productions) !_syn1 !nt_ !params_ ->-                 {-# LINE 632 "./src-ag/DefaultRules.ag" #-}+                 {-# LINE 632 "src-ag/DefaultRules.ag" #-}                  Nonterminal nt_ params_ _inh1     _syn1     _prodsIoutput                  {-# LINE 1483 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule70 #-}-   {-# LINE 804 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 804 "src-ag/DefaultRules.ag" #-}    rule70 = \ ((!_lhsIaugmentsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !nt_ ->-                                                  {-# LINE 804 "./src-ag/DefaultRules.ag" #-}+                                                  {-# LINE 804 "src-ag/DefaultRules.ag" #-}                                                   Map.findWithDefault Map.empty nt_ _lhsIaugmentsIn                                                   {-# LINE 1489 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule71 #-}-   {-# LINE 811 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 811 "src-ag/DefaultRules.ag" #-}    rule71 = \ ((!_lhsIaroundsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !nt_ ->-                                                   {-# LINE 811 "./src-ag/DefaultRules.ag" #-}+                                                   {-# LINE 811 "src-ag/DefaultRules.ag" #-}                                                    Map.findWithDefault Map.empty nt_ _lhsIaroundsIn                                                    {-# LINE 1495 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule72 #-}-   {-# LINE 819 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 819 "src-ag/DefaultRules.ag" #-}    rule72 = \ ((!_lhsImergesIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !nt_ ->-                                                  {-# LINE 819 "./src-ag/DefaultRules.ag" #-}+                                                  {-# LINE 819 "src-ag/DefaultRules.ag" #-}                                                   Map.findWithDefault Map.empty nt_ _lhsImergesIn                                                   {-# LINE 1501 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule73 #-}@@ -1553,8 +1553,8 @@ wrap_Nonterminals !(T_Nonterminals act) !(Inh_Nonterminals _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Nonterminals_vIn4 _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers-        !(T_Nonterminals_vOut4 _lhsOcollect_nts _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap' _lhsOuniq) <- return (inv_Nonterminals_s8 sem K_Nonterminals_v4 arg)+        let arg4 = T_Nonterminals_vIn4 _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers+        !(T_Nonterminals_vOut4 _lhsOcollect_nts _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap' _lhsOuniq) <- return (inv_Nonterminals_s8 sem K_Nonterminals_v4 arg4)         return (Syn_Nonterminals _lhsOcollect_nts _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap' _lhsOuniq)    ) @@ -2074,8 +2074,8 @@ wrap_Pattern !(T_Pattern act) !(Inh_Pattern _lhsIcon _lhsInt) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Pattern_vIn5 _lhsIcon _lhsInt-        !(T_Pattern_vOut5 _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput) <- return (inv_Pattern_s10 sem K_Pattern_v5 arg)+        let arg5 = T_Pattern_vIn5 _lhsIcon _lhsInt+        !(T_Pattern_vOut5 _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput) <- return (inv_Pattern_s10 sem K_Pattern_v5 arg5)         return (Syn_Pattern _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput)    ) @@ -2606,23 +2606,23 @@           in __result_ )      in C_Pattern_s55 k55    {-# NOINLINE rule154 #-}-   {-# LINE 564 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 564 "src-ag/DefaultRules.ag" #-}    rule154 = \ ((!_patIdefinedAttrs) :: Set (Identifier,Identifier)) !attr_ !field_ ->-                               {-# LINE 564 "./src-ag/DefaultRules.ag" #-}+                               {-# LINE 564 "src-ag/DefaultRules.ag" #-}                                Set.insert (field_,attr_) _patIdefinedAttrs                                {-# LINE 2614 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule155 #-}-   {-# LINE 565 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 565 "src-ag/DefaultRules.ag" #-}    rule155 = \ ((!_patIlocals) :: Set Identifier) !attr_ !field_ ->-                               {-# LINE 565 "./src-ag/DefaultRules.ag" #-}+                               {-# LINE 565 "src-ag/DefaultRules.ag" #-}                                if field_ == _LOC                                   then Set.insert attr_ _patIlocals                                   else _patIlocals                                {-# LINE 2622 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE rule156 #-}-   {-# LINE 582 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 582 "src-ag/DefaultRules.ag" #-}    rule156 = \  (_ :: ()) ->-                                    {-# LINE 582 "./src-ag/DefaultRules.ag" #-}+                                    {-# LINE 582 "src-ag/DefaultRules.ag" #-}                                     True                                     {-# LINE 2628 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule157 #-}@@ -2964,8 +2964,8 @@ wrap_Patterns !(T_Patterns act) !(Inh_Patterns _lhsIcon _lhsInt) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Patterns_vIn6 _lhsIcon _lhsInt-        !(T_Patterns_vOut6 _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput) <- return (inv_Patterns_s12 sem K_Patterns_v6 arg)+        let arg6 = T_Patterns_vIn6 _lhsIcon _lhsInt+        !(T_Patterns_vOut6 _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput) <- return (inv_Patterns_s12 sem K_Patterns_v6 arg6)         return (Syn_Patterns _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput)    ) @@ -3361,8 +3361,8 @@ wrap_Production !(T_Production act) !(Inh_Production _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Production_vIn7 _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers-        !(T_Production_vOut7 _lhsOerrors _lhsOoutput _lhsOuniq) <- return (inv_Production_s14 sem K_Production_v7 arg)+        let arg7 = T_Production_vIn7 _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers+        !(T_Production_vOut7 _lhsOerrors _lhsOoutput _lhsOuniq) <- return (inv_Production_s14 sem K_Production_v7 arg7)         return (Syn_Production _lhsOerrors _lhsOoutput _lhsOuniq)    ) @@ -3519,15 +3519,15 @@           in __result_ )      in C_Production_s48 v40    {-# NOINLINE[1] rule204 #-}-   {-# LINE 412 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 412 "src-ag/DefaultRules.ag" #-}    rule204 = \ ((!_childrenIerrors) :: Seq Error) !_errs !_orderErrs ((!_rulesIerrors) :: Seq Error) ->-                  {-# LINE 412 "./src-ag/DefaultRules.ag" #-}+                  {-# LINE 412 "src-ag/DefaultRules.ag" #-}                   _childrenIerrors >< _errs >< _rulesIerrors >< _orderErrs                   {-# LINE 3527 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule205 #-}-   {-# LINE 416 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 416 "src-ag/DefaultRules.ag" #-}    rule205 = \ ((!_childrenIfields) :: [(Identifier,Type,ChildKind)]) ((!_childrenIinputs) :: [(Identifier, Attributes)]) ((!_childrenIoutputs) :: [(Identifier, Attributes)]) ((!_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ((!_lhsIcr) :: Bool) ((!_lhsIinh) :: Attributes) ((!_lhsInt) :: NontermIdent) ((!_lhsIo_rename) :: Bool) ((!_lhsIoptions) :: Options) ((!_lhsIsyn) :: Attributes) ((!_lhsIsynOrig) :: Attributes) ((!_lhsItypeSyns) :: TypeSyns) ((!_lhsIuseMap) :: Map Identifier (String,String,String)) ((!_lhsIwrappers) :: Set NontermIdent) ((!_rulesIdefinedAttrs) :: Set (Identifier,Identifier)) ((!_rulesIlocals) :: Set Identifier) !con_ ->-      {-# LINE 416 "./src-ag/DefaultRules.ag" #-}+      {-# LINE 416 "src-ag/DefaultRules.ag" #-}       let locals       = _rulesIlocals           initenv      = Map.fromList (  [ (a,_ACHILD)                                          | (a,_,_) <- _childrenIfields@@ -3586,39 +3586,39 @@       in (uRules++selfLocRules++selfRules++rules5++rules1, errors1><errs5)       {-# LINE 3588 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule206 #-}-   {-# LINE 636 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 636 "src-ag/DefaultRules.ag" #-}    rule206 = \ !_augmentsIn !_newRls ((!_rulesIoutput) :: Rules) ->-                     {-# LINE 636 "./src-ag/DefaultRules.ag" #-}+                     {-# LINE 636 "src-ag/DefaultRules.ag" #-}                      foldr addAugments (_rulesIoutput ++ _newRls) (Map.assocs _augmentsIn    )                      {-# LINE 3594 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule207 #-}-   {-# LINE 637 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 637 "src-ag/DefaultRules.ag" #-}    rule207 = \ !_aroundsIn !_extra1 ->-                     {-# LINE 637 "./src-ag/DefaultRules.ag" #-}+                     {-# LINE 637 "src-ag/DefaultRules.ag" #-}                      foldr addArounds _extra1     (Map.assocs _aroundsIn    )                      {-# LINE 3600 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule208 #-}-   {-# LINE 638 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 638 "src-ag/DefaultRules.ag" #-}    rule208 = \ !_extra2 !_mergesIn ->-                     {-# LINE 638 "./src-ag/DefaultRules.ag" #-}+                     {-# LINE 638 "src-ag/DefaultRules.ag" #-}                      foldr addMerges _extra2     (Map.assocs _mergesIn    )                      {-# LINE 3606 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule209 #-}-   {-# LINE 639 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 639 "src-ag/DefaultRules.ag" #-}    rule209 = \ ((!_childrenIoutput) :: Children) !_extra3 ((!_typeSigsIoutput) :: TypeSigs) !con_ !constraints_ !macro_ !params_ ->-                     {-# LINE 639 "./src-ag/DefaultRules.ag" #-}+                     {-# LINE 639 "src-ag/DefaultRules.ag" #-}                      Production con_ params_ constraints_ _childrenIoutput _extra3     _typeSigsIoutput macro_                      {-# LINE 3612 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule210 #-}-   {-# LINE 747 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 747 "src-ag/DefaultRules.ag" #-}    rule210 = \ ((!_lhsImanualAttrOrderMap) :: AttrOrderMap) ((!_lhsInt) :: NontermIdent) !con_ ->-                        {-# LINE 747 "./src-ag/DefaultRules.ag" #-}+                        {-# LINE 747 "src-ag/DefaultRules.ag" #-}                         Set.toList $ Map.findWithDefault Set.empty con_ $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrOrderMap                         {-# LINE 3618 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule211 #-}-   {-# LINE 750 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 750 "src-ag/DefaultRules.ag" #-}    rule211 = \ ((!_childrenIinputs) :: [(Identifier, Attributes)]) ((!_childrenIoutputs) :: [(Identifier, Attributes)]) ((!_lhsIinh) :: Attributes) ((!_lhsInt) :: NontermIdent) ((!_lhsIsyn) :: Attributes) !_orderDeps ((!_rulesIlocals) :: Set Identifier) ((!_rulesIruleNames) :: Set Identifier) !con_ ->-            {-# LINE 750 "./src-ag/DefaultRules.ag" #-}+            {-# LINE 750 "src-ag/DefaultRules.ag" #-}             let chldOutMap = Map.fromList [ (k, Map.keysSet s) | (k,s) <- _childrenIoutputs ]                 chldInMap  = Map.fromList [ (k, Map.keysSet s) | (k,s) <- _childrenIinputs ]                 isInAttribute :: Identifier -> Identifier -> [Error]@@ -3656,27 +3656,27 @@                ]             {-# LINE 3658 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule212 #-}-   {-# LINE 805 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 805 "src-ag/DefaultRules.ag" #-}    rule212 = \ ((!_lhsIaugmentsIn) :: Map ConstructorIdent (Map Identifier [Expression])) !con_ ->-                                                  {-# LINE 805 "./src-ag/DefaultRules.ag" #-}+                                                  {-# LINE 805 "src-ag/DefaultRules.ag" #-}                                                   Map.findWithDefault Map.empty con_ _lhsIaugmentsIn                                                   {-# LINE 3664 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule213 #-}-   {-# LINE 812 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 812 "src-ag/DefaultRules.ag" #-}    rule213 = \ ((!_lhsIaroundsIn) :: Map ConstructorIdent (Map Identifier [Expression])) !con_ ->-                                                   {-# LINE 812 "./src-ag/DefaultRules.ag" #-}+                                                   {-# LINE 812 "src-ag/DefaultRules.ag" #-}                                                    Map.findWithDefault Map.empty con_ _lhsIaroundsIn                                                    {-# LINE 3670 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule214 #-}-   {-# LINE 820 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 820 "src-ag/DefaultRules.ag" #-}    rule214 = \ ((!_lhsImergesIn) :: Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) !con_ ->-                                                  {-# LINE 820 "./src-ag/DefaultRules.ag" #-}+                                                  {-# LINE 820 "src-ag/DefaultRules.ag" #-}                                                   Map.findWithDefault Map.empty con_ _lhsImergesIn                                                   {-# LINE 3676 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule215 #-}-   {-# LINE 821 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 821 "src-ag/DefaultRules.ag" #-}    rule215 = \ !_mergesIn ->-                                                  {-# LINE 821 "./src-ag/DefaultRules.ag" #-}+                                                  {-# LINE 821 "src-ag/DefaultRules.ag" #-}                                                   Set.fromList [ c | (_,cs,_) <- Map.elems _mergesIn    , c <- cs ]                                                   {-# LINE 3682 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule217 #-}@@ -3713,8 +3713,8 @@ wrap_Productions !(T_Productions act) !(Inh_Productions _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Productions_vIn8 _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers-        !(T_Productions_vOut8 _lhsOerrors _lhsOoutput _lhsOuniq) <- return (inv_Productions_s16 sem K_Productions_v8 arg)+        let arg8 = T_Productions_vIn8 _lhsIaroundsIn _lhsIaugmentsIn _lhsIconstructorTypeMap _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers+        !(T_Productions_vOut8 _lhsOerrors _lhsOoutput _lhsOuniq) <- return (inv_Productions_s16 sem K_Productions_v8 arg8)         return (Syn_Productions _lhsOerrors _lhsOoutput _lhsOuniq)    ) @@ -4131,8 +4131,8 @@ wrap_Rule !(T_Rule act) !(Inh_Rule _lhsIcon _lhsIconstructorTypeMap _lhsInt _lhsIoptions _lhsIuniq) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Rule_vIn9 _lhsIcon _lhsIconstructorTypeMap _lhsInt _lhsIoptions _lhsIuniq-        !(T_Rule_vOut9 _lhsOcontainsVars _lhsOdefinedAttrs _lhsOerrors _lhsOisPure _lhsOlocals _lhsOoutput _lhsOoutputs _lhsOruleNames _lhsOuniq) <- return (inv_Rule_s18 sem K_Rule_v9 arg)+        let arg9 = T_Rule_vIn9 _lhsIcon _lhsIconstructorTypeMap _lhsInt _lhsIoptions _lhsIuniq+        !(T_Rule_vOut9 _lhsOcontainsVars _lhsOdefinedAttrs _lhsOerrors _lhsOisPure _lhsOlocals _lhsOoutput _lhsOoutputs _lhsOruleNames _lhsOuniq) <- return (inv_Rule_s18 sem K_Rule_v9 arg9)         return (Syn_Rule _lhsOcontainsVars _lhsOdefinedAttrs _lhsOerrors _lhsOisPure _lhsOlocals _lhsOoutput _lhsOoutputs _lhsOruleNames _lhsOuniq)    ) @@ -4263,35 +4263,35 @@           in __result_ )      in C_Rule_s51 v44    {-# NOINLINE[1] rule280 #-}-   {-# LINE 585 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 585 "src-ag/DefaultRules.ag" #-}    rule280 = \ !pure_ ->-                                {-# LINE 585 "./src-ag/DefaultRules.ag" #-}+                                {-# LINE 585 "src-ag/DefaultRules.ag" #-}                                 pure_                                 {-# LINE 4271 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule281 #-}-   {-# LINE 652 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 652 "src-ag/DefaultRules.ag" #-}    rule281 = \ !_output ->-                                         {-# LINE 652 "./src-ag/DefaultRules.ag" #-}+                                         {-# LINE 652 "src-ag/DefaultRules.ag" #-}                                          mkRuleAlias _output                                          {-# LINE 4277 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule282 #-}-   {-# LINE 653 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 653 "src-ag/DefaultRules.ag" #-}    rule282 = \ ((!_lhsIoptions) :: Options) ((!_lhsIuniq) :: Int) !_output1 ->-                                      {-# LINE 653 "./src-ag/DefaultRules.ag" #-}+                                      {-# LINE 653 "src-ag/DefaultRules.ag" #-}                                       if needsMultiRules _lhsIoptions                                       then multiRule _output1     _lhsIuniq                                       else ([_output1    ], _lhsIuniq)                                       {-# LINE 4285 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule283 #-}-   {-# LINE 656 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 656 "src-ag/DefaultRules.ag" #-}    rule283 = \ !_mbAlias !_outputs ->-                          {-# LINE 656 "./src-ag/DefaultRules.ag" #-}+                          {-# LINE 656 "src-ag/DefaultRules.ag" #-}                           maybe [] return _mbAlias     ++ _outputs                           {-# LINE 4291 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule284 #-}-   {-# LINE 741 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 741 "src-ag/DefaultRules.ag" #-}    rule284 = \ !mbName_ ->-                                   {-# LINE 741 "./src-ag/DefaultRules.ag" #-}+                                   {-# LINE 741 "src-ag/DefaultRules.ag" #-}                                    case mbName_ of                                      Nothing -> Set.empty                                      Just nm -> Set.singleton nm@@ -4324,8 +4324,8 @@ wrap_Rules !(T_Rules act) !(Inh_Rules _lhsIcon _lhsIconstructorTypeMap _lhsInt _lhsIoptions _lhsIuniq) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Rules_vIn10 _lhsIcon _lhsIconstructorTypeMap _lhsInt _lhsIoptions _lhsIuniq-        !(T_Rules_vOut10 _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOruleNames _lhsOuniq) <- return (inv_Rules_s20 sem K_Rules_v10 arg)+        let arg10 = T_Rules_vIn10 _lhsIcon _lhsIconstructorTypeMap _lhsInt _lhsIoptions _lhsIuniq+        !(T_Rules_vOut10 _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOruleNames _lhsOuniq) <- return (inv_Rules_s20 sem K_Rules_v10 arg10)         return (Syn_Rules _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOruleNames _lhsOuniq)    ) @@ -4457,9 +4457,9 @@           in __result_ )      in C_Rules_s42 v31    {-# NOINLINE[1] rule293 #-}-   {-# LINE 648 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 648 "src-ag/DefaultRules.ag" #-}    rule293 = \ ((!_hdIcontainsVars) :: Bool) ((!_hdIisPure) :: Bool) ((!_hdIoutputs) :: Rules) ((!_tlIoutput) :: Rules) ->-                        {-# LINE 648 "./src-ag/DefaultRules.ag" #-}+                        {-# LINE 648 "src-ag/DefaultRules.ag" #-}                         if _hdIcontainsVars && _hdIisPure then _hdIoutputs ++ _tlIoutput else _tlIoutput                         {-# LINE 4465 "dist/build/DefaultRules.hs"#-}    {-# NOINLINE[1] rule294 #-}@@ -4589,8 +4589,8 @@ wrap_TypeSig !(T_TypeSig act) !(Inh_TypeSig _lhsInt _lhsIparams) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_TypeSig_vIn11 _lhsInt _lhsIparams-        !(T_TypeSig_vOut11 _lhsOoutput) <- return (inv_TypeSig_s22 sem arg)+        let arg11 = T_TypeSig_vIn11 _lhsInt _lhsIparams+        !(T_TypeSig_vOut11 _lhsOoutput) <- return (inv_TypeSig_s22 sem arg11)         return (Syn_TypeSig _lhsOoutput)    ) @@ -4624,15 +4624,15 @@           in __result_ )      in C_TypeSig_s22 v11    {-# INLINE rule317 #-}-   {-# LINE 604 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 604 "src-ag/DefaultRules.ag" #-}    rule317 = \ ((!_lhsInt) :: NontermIdent) ((!_lhsIparams) :: [Identifier]) !tp_ ->-              {-# LINE 604 "./src-ag/DefaultRules.ag" #-}+              {-# LINE 604 "src-ag/DefaultRules.ag" #-}               elimSelfId _lhsInt _lhsIparams tp_               {-# LINE 4632 "dist/build/DefaultRules.hs"#-}    {-# INLINE rule318 #-}-   {-# LINE 645 "./src-ag/DefaultRules.ag" #-}+   {-# LINE 645 "src-ag/DefaultRules.ag" #-}    rule318 = \ !_tp1 !name_ ->-                 {-# LINE 645 "./src-ag/DefaultRules.ag" #-}+                 {-# LINE 645 "src-ag/DefaultRules.ag" #-}                  TypeSig name_ _tp1                  {-# LINE 4638 "dist/build/DefaultRules.hs"#-} @@ -4645,8 +4645,8 @@ wrap_TypeSigs !(T_TypeSigs act) !(Inh_TypeSigs _lhsInt _lhsIparams) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_TypeSigs_vIn12 _lhsInt _lhsIparams-        !(T_TypeSigs_vOut12 _lhsOoutput) <- return (inv_TypeSigs_s24 sem arg)+        let arg12 = T_TypeSigs_vIn12 _lhsInt _lhsIparams+        !(T_TypeSigs_vOut12 _lhsOoutput) <- return (inv_TypeSigs_s24 sem arg12)         return (Syn_TypeSigs _lhsOoutput)    ) 
src-generated/Desugar.hs view
@@ -3,26 +3,26 @@ {-# LANGUAGE ScopedTypeVariables #-}  module Desugar where-{-# LINE 2 "./src-ag/HsToken.ag" #-}+{-# LINE 2 "src-ag/HsToken.ag" #-}  import CommonTypes import UU.Scanner.Position(Pos) {-# LINE 11 "dist/build/Desugar.hs" #-} -{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken {-# LINE 17 "dist/build/Desugar.hs" #-} -{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 24 "dist/build/Desugar.hs" #-} -{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)@@ -34,7 +34,7 @@ import ErrorMessages {-# LINE 36 "dist/build/Desugar.hs" #-} -{-# LINE 14 "./src-ag/Desugar.ag" #-}+{-# LINE 14 "src-ag/Desugar.ag" #-}  import qualified Data.Set as Set import qualified Data.Map as Map@@ -55,13 +55,13 @@ {-# LINE 56 "dist/build/Desugar.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 98 "./src-ag/Desugar.ag" #-}+{-# LINE 98 "src-ag/Desugar.ag" #-}  addl :: Int -> Pos -> Pos addl n (Pos l c f) = Pos (l+n) c f {-# LINE 63 "dist/build/Desugar.hs" #-} -{-# LINE 133 "./src-ag/Desugar.ag" #-}+{-# LINE 133 "src-ag/Desugar.ag" #-}  maybeError :: a -> Error -> Maybe a -> (a, Seq Error) maybeError def err mb@@ -76,13 +76,13 @@     f = lookup attr {-# LINE 78 "dist/build/Desugar.hs" #-} -{-# LINE 204 "./src-ag/Desugar.ag" #-}+{-# LINE 204 "src-ag/Desugar.ag" #-}  mergeAttributes :: AttrMap -> AttrMap -> AttrMap mergeAttributes = Map.unionWith $ Map.unionWith $ Set.union {-# LINE 84 "dist/build/Desugar.hs" #-} -{-# LINE 251 "./src-ag/Desugar.ag" #-}+{-# LINE 251 "src-ag/Desugar.ag" #-}  desugarExprs :: Options -> NontermIdent -> ConstructorIdent ->                 [(Identifier, Identifier)] -> [(Identifier, Identifier)] ->@@ -108,7 +108,7 @@     syn = wrap_Expression sem inh {-# LINE 110 "dist/build/Desugar.hs" #-} -{-# LINE 294 "./src-ag/Desugar.ag" #-}+{-# LINE 294 "src-ag/Desugar.ag" #-}  addLateAttr :: Options -> String -> Attributes addLateAttr options mainName@@ -126,8 +126,8 @@ wrap_Child !(T_Child act) !(Inh_Child _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Child_vIn0 _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap-        !(T_Child_vOut0 _lhsOchildInhs _lhsOchildSyns _lhsOoutput) <- return (inv_Child_s0 sem K_Child_v0 arg)+        let arg0 = T_Child_vIn0 _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap+        !(T_Child_vOut0 _lhsOchildInhs _lhsOchildSyns _lhsOoutput) <- return (inv_Child_s0 sem K_Child_v0 arg0)         return (Syn_Child _lhsOchildInhs _lhsOchildSyns _lhsOoutput)    ) @@ -190,42 +190,42 @@           in __result_ )      in C_Child_s0 k0    {-# NOINLINE[1] rule0 #-}-   {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 19 "src-ag/DistChildAttr.ag" #-}    rule0 = \ !name_ !tp_ ->-                       {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+                       {-# LINE 19 "src-ag/DistChildAttr.ag" #-}                        case tp_ of                          NT nt _ _ -> nt                          Self      -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")                          Haskell t -> identifier ""                        {-# LINE 201 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule1 #-}-   {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 23 "src-ag/DistChildAttr.ag" #-}    rule1 = \ !_chnt ((!_lhsIinhMap) :: Map Identifier Attributes) ->-                      {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 23 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIinhMap                       {-# LINE 207 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule2 #-}-   {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 24 "src-ag/DistChildAttr.ag" #-}    rule2 = \ !_chnt ((!_lhsIsynMap) :: Map Identifier Attributes) ->-                      {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 24 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIsynMap                       {-# LINE 213 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule3 #-}-   {-# LINE 130 "./src-ag/Desugar.ag" #-}+   {-# LINE 130 "src-ag/Desugar.ag" #-}    rule3 = \ !_inh !name_ ->-                        {-# LINE 130 "./src-ag/Desugar.ag" #-}+                        {-# LINE 130 "src-ag/Desugar.ag" #-}                         [(i, name_) | i <- Map.keys _inh     ]                         {-# LINE 219 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule4 #-}-   {-# LINE 131 "./src-ag/Desugar.ag" #-}+   {-# LINE 131 "src-ag/Desugar.ag" #-}    rule4 = \ !_syn !name_ ->-                        {-# LINE 131 "./src-ag/Desugar.ag" #-}+                        {-# LINE 131 "src-ag/Desugar.ag" #-}                         [(s, name_) | s <- Map.keys _syn     ]                         {-# LINE 225 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule5 #-}-   {-# LINE 315 "./src-ag/Desugar.ag" #-}+   {-# LINE 315 "src-ag/Desugar.ag" #-}    rule5 = \ !kind_ !name_ !tp_ ->-                 {-# LINE 315 "./src-ag/Desugar.ag" #-}+                 {-# LINE 315 "src-ag/Desugar.ag" #-}                  Child name_ tp_ kind_                  {-# LINE 231 "dist/build/Desugar.hs"#-} @@ -238,8 +238,8 @@ wrap_Children !(T_Children act) !(Inh_Children _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Children_vIn1 _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap-        !(T_Children_vOut1 _lhsOchildInhs _lhsOchildSyns _lhsOoutput) <- return (inv_Children_s2 sem K_Children_v1 arg)+        let arg1 = T_Children_vIn1 _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap+        !(T_Children_vOut1 _lhsOchildInhs _lhsOchildSyns _lhsOoutput) <- return (inv_Children_s2 sem K_Children_v1 arg1)         return (Syn_Children _lhsOchildInhs _lhsOchildSyns _lhsOoutput)    ) @@ -390,8 +390,8 @@ wrap_Expression !(T_Expression act) !(Inh_Expression _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIoptions _lhsIruleDescr) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Expression_vIn2 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIoptions _lhsIruleDescr-        !(T_Expression_vOut2 _lhsOerrors _lhsOoutput) <- return (inv_Expression_s4 sem arg)+        let arg2 = T_Expression_vIn2 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIoptions _lhsIruleDescr+        !(T_Expression_vOut2 _lhsOerrors _lhsOoutput) <- return (inv_Expression_s4 sem arg2)         return (Syn_Expression _lhsOerrors _lhsOoutput)    ) @@ -426,9 +426,9 @@           in __result_ )      in C_Expression_s4 v2    {-# INLINE rule23 #-}-   {-# LINE 49 "./src-ag/Desugar.ag" #-}+   {-# LINE 49 "src-ag/Desugar.ag" #-}    rule23 = \ ((!_lhsIchildInhs) :: [(Identifier, Identifier)]) ((!_lhsIchildSyns) :: [(Identifier, Identifier)]) ((!_lhsIcon) :: ConstructorIdent) ((!_lhsInt) :: NontermIdent) ((!_lhsIoptions) :: Options) ((!_lhsIruleDescr) :: String) !tks_ ->-                                 {-# LINE 49 "./src-ag/Desugar.ag" #-}+                                 {-# LINE 49 "src-ag/Desugar.ag" #-}                                  let inh = Inh_HsTokensRoot { childInhs_Inh_HsTokensRoot     = _lhsIchildInhs                                                             , childSyns_Inh_HsTokensRoot     = _lhsIchildSyns                                                             , nt_Inh_HsTokensRoot            = _lhsInt@@ -441,9 +441,9 @@                                  in (tks_Syn_HsTokensRoot syn, errors_Syn_HsTokensRoot syn)                                  {-# LINE 443 "dist/build/Desugar.hs"#-}    {-# INLINE rule24 #-}-   {-# LINE 59 "./src-ag/Desugar.ag" #-}+   {-# LINE 59 "src-ag/Desugar.ag" #-}    rule24 = \ !_tks' !pos_ ->-                     {-# LINE 59 "./src-ag/Desugar.ag" #-}+                     {-# LINE 59 "src-ag/Desugar.ag" #-}                      Expression pos_ _tks'                      {-# LINE 449 "dist/build/Desugar.hs"#-} @@ -456,8 +456,8 @@ wrap_Grammar !(T_Grammar act) !(Inh_Grammar _lhsIforcedIrrefutables _lhsImainName _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Grammar_vIn3 _lhsIforcedIrrefutables _lhsImainName _lhsIoptions-        !(T_Grammar_vOut3 _lhsOallAttributes _lhsOerrors _lhsOoutput) <- return (inv_Grammar_s6 sem arg)+        let arg3 = T_Grammar_vIn3 _lhsIforcedIrrefutables _lhsImainName _lhsIoptions+        !(T_Grammar_vOut3 _lhsOallAttributes _lhsOerrors _lhsOoutput) <- return (inv_Grammar_s6 sem arg3)         return (Syn_Grammar _lhsOallAttributes _lhsOerrors _lhsOoutput)    ) @@ -503,27 +503,27 @@           in __result_ )      in C_Grammar_s6 v3    {-# INLINE rule26 #-}-   {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 15 "src-ag/DistChildAttr.ag" #-}    rule26 = \ ((!_nontsIinhMap') :: Map Identifier Attributes) ->-                             {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 15 "src-ag/DistChildAttr.ag" #-}                              _nontsIinhMap'                              {-# LINE 511 "dist/build/Desugar.hs"#-}    {-# INLINE rule27 #-}-   {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 16 "src-ag/DistChildAttr.ag" #-}    rule27 = \ ((!_nontsIsynMap') :: Map Identifier Attributes) ->-                             {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 16 "src-ag/DistChildAttr.ag" #-}                              _nontsIsynMap'                              {-# LINE 517 "dist/build/Desugar.hs"#-}    {-# INLINE rule28 #-}-   {-# LINE 235 "./src-ag/Desugar.ag" #-}+   {-# LINE 235 "src-ag/Desugar.ag" #-}    rule28 = \ !augmentsMap_ ->-                           {-# LINE 235 "./src-ag/Desugar.ag" #-}+                           {-# LINE 235 "src-ag/Desugar.ag" #-}                            augmentsMap_                            {-# LINE 523 "dist/build/Desugar.hs"#-}    {-# INLINE rule29 #-}-   {-# LINE 319 "./src-ag/Desugar.ag" #-}+   {-# LINE 319 "src-ag/Desugar.ag" #-}    rule29 = \ ((!_nontsIaugmentsOut) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ((!_nontsIoutput) :: Nonterminals) !aroundsMap_ !contextMap_ !derivings_ !manualAttrOrderMap_ !mergeMap_ !paramMap_ !pragmas_ !quantMap_ !typeSyns_ !uniqueMap_ !useMap_ !wrappers_ ->-                     {-# LINE 319 "./src-ag/Desugar.ag" #-}+                     {-# LINE 319 "src-ag/Desugar.ag" #-}                      Grammar typeSyns_                              useMap_                              derivings_@@ -564,8 +564,8 @@ wrap_HsToken !(T_HsToken act) !(Inh_HsToken _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_HsToken_vIn4 _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent-        !(T_HsToken_vOut4 _lhsOaddLines _lhsOerrors _lhsOtks) <- return (inv_HsToken_s8 sem K_HsToken_v4 arg)+        let arg4 = T_HsToken_vIn4 _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent+        !(T_HsToken_vOut4 _lhsOaddLines _lhsOerrors _lhsOtks) <- return (inv_HsToken_s8 sem K_HsToken_v4 arg4)         return (Syn_HsToken _lhsOaddLines _lhsOerrors _lhsOtks)    ) @@ -659,17 +659,17 @@           in __result_ )      in C_HsToken_s47 v35    {-# NOINLINE[1] rule36 #-}-   {-# LINE 74 "./src-ag/Desugar.ag" #-}+   {-# LINE 74 "src-ag/Desugar.ag" #-}    rule36 = \ ((!_lhsIaddLines) :: Int) ((!_lhsIuseFieldIdent) :: Bool) ->-                       {-# LINE 74 "./src-ag/Desugar.ag" #-}+                       {-# LINE 74 "src-ag/Desugar.ag" #-}                        if _lhsIuseFieldIdent                        then _lhsIaddLines + 1                        else _lhsIaddLines                        {-# LINE 669 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule37 #-}-   {-# LINE 77 "./src-ag/Desugar.ag" #-}+   {-# LINE 77 "src-ag/Desugar.ag" #-}    rule37 = \ ((!_lhsIaddLines) :: Int) ((!_lhsIruleDescr) :: String) ((!_lhsIuseFieldIdent) :: Bool) !pos_ !var_ ->-                  {-# LINE 77 "./src-ag/Desugar.ag" #-}+                  {-# LINE 77 "src-ag/Desugar.ag" #-}                   AGLocal var_ (addl _lhsIaddLines pos_) (if _lhsIuseFieldIdent then Just _lhsIruleDescr else Nothing)                   {-# LINE 675 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule38 #-}@@ -736,35 +736,35 @@           in __result_ )      in C_HsToken_s47 v35    {-# NOINLINE[1] rule40 #-}-   {-# LINE 79 "./src-ag/Desugar.ag" #-}+   {-# LINE 79 "src-ag/Desugar.ag" #-}    rule40 = \ ((!_lhsIchildSyns) :: [(Identifier, Identifier)]) !attr_ !field_ ->-                     {-# LINE 79 "./src-ag/Desugar.ag" #-}+                     {-# LINE 79 "src-ag/Desugar.ag" #-}                      findField field_ attr_ _lhsIchildSyns                      {-# LINE 744 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule41 #-}-   {-# LINE 81 "./src-ag/Desugar.ag" #-}+   {-# LINE 81 "src-ag/Desugar.ag" #-}    rule41 = \ !_mField !field_ ->-                     {-# LINE 81 "./src-ag/Desugar.ag" #-}+                     {-# LINE 81 "src-ag/Desugar.ag" #-}                      maybe field_ id _mField                      {-# LINE 750 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule42 #-}-   {-# LINE 82 "./src-ag/Desugar.ag" #-}+   {-# LINE 82 "src-ag/Desugar.ag" #-}    rule42 = \ ((!_lhsIcon) :: ConstructorIdent) ((!_lhsInt) :: NontermIdent) !_mField !field_ ->-                     {-# LINE 82 "./src-ag/Desugar.ag" #-}+                     {-# LINE 82 "src-ag/Desugar.ag" #-}                      maybe (Seq.singleton (UndefAttr _lhsInt _lhsIcon field_ (Ident "<ANY>" (getPos field_)) False)) (const Seq.empty) _mField                      {-# LINE 756 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule43 #-}-   {-# LINE 84 "./src-ag/Desugar.ag" #-}+   {-# LINE 84 "src-ag/Desugar.ag" #-}    rule43 = \ !_field' ((!_lhsIaddLines) :: Int) ((!_lhsIuseFieldIdent) :: Bool) !field_ ->-                       {-# LINE 84 "./src-ag/Desugar.ag" #-}+                       {-# LINE 84 "src-ag/Desugar.ag" #-}                        if _lhsIuseFieldIdent || length (getName field_) < length (getName _field'    )                        then _lhsIaddLines + 1                        else _lhsIaddLines                        {-# LINE 764 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule44 #-}-   {-# LINE 88 "./src-ag/Desugar.ag" #-}+   {-# LINE 88 "src-ag/Desugar.ag" #-}    rule44 = \ !_field' ((!_lhsIaddLines) :: Int) ((!_lhsIruleDescr) :: String) ((!_lhsIuseFieldIdent) :: Bool) !attr_ !pos_ ->-                  {-# LINE 88 "./src-ag/Desugar.ag" #-}+                  {-# LINE 88 "src-ag/Desugar.ag" #-}                   AGField _field'     attr_ (addl _lhsIaddLines pos_) (if _lhsIuseFieldIdent then Just _lhsIruleDescr else Nothing)                   {-# LINE 770 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule45 #-}@@ -822,9 +822,9 @@           in __result_ )      in C_HsToken_s47 v35    {-# NOINLINE[1] rule46 #-}-   {-# LINE 90 "./src-ag/Desugar.ag" #-}+   {-# LINE 90 "src-ag/Desugar.ag" #-}    rule46 = \ ((!_lhsIaddLines) :: Int) !pos_ !value_ ->-                  {-# LINE 90 "./src-ag/Desugar.ag" #-}+                  {-# LINE 90 "src-ag/Desugar.ag" #-}                   HsToken value_ (addl _lhsIaddLines pos_)                   {-# LINE 830 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule47 #-}@@ -888,9 +888,9 @@           in __result_ )      in C_HsToken_s47 v35    {-# NOINLINE[1] rule50 #-}-   {-# LINE 92 "./src-ag/Desugar.ag" #-}+   {-# LINE 92 "src-ag/Desugar.ag" #-}    rule50 = \ ((!_lhsIaddLines) :: Int) !pos_ !value_ ->-                  {-# LINE 92 "./src-ag/Desugar.ag" #-}+                  {-# LINE 92 "src-ag/Desugar.ag" #-}                   CharToken value_ (addl _lhsIaddLines pos_)                   {-# LINE 896 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule51 #-}@@ -954,9 +954,9 @@           in __result_ )      in C_HsToken_s47 v35    {-# NOINLINE[1] rule54 #-}-   {-# LINE 94 "./src-ag/Desugar.ag" #-}+   {-# LINE 94 "src-ag/Desugar.ag" #-}    rule54 = \ ((!_lhsIaddLines) :: Int) !pos_ !value_ ->-                  {-# LINE 94 "./src-ag/Desugar.ag" #-}+                  {-# LINE 94 "src-ag/Desugar.ag" #-}                   StrToken value_ (addl _lhsIaddLines pos_)                   {-# LINE 962 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule55 #-}@@ -1020,9 +1020,9 @@           in __result_ )      in C_HsToken_s47 v35    {-# NOINLINE[1] rule58 #-}-   {-# LINE 96 "./src-ag/Desugar.ag" #-}+   {-# LINE 96 "src-ag/Desugar.ag" #-}    rule58 = \ ((!_lhsIaddLines) :: Int) !mesg_ !pos_ ->-                  {-# LINE 96 "./src-ag/Desugar.ag" #-}+                  {-# LINE 96 "src-ag/Desugar.ag" #-}                   Err mesg_ (addl _lhsIaddLines pos_)                   {-# LINE 1028 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule59 #-}@@ -1044,8 +1044,8 @@ wrap_HsTokens !(T_HsTokens act) !(Inh_HsTokens _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_HsTokens_vIn5 _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent-        !(T_HsTokens_vOut5 _lhsOaddLines _lhsOerrors _lhsOtks) <- return (inv_HsTokens_s10 sem K_HsTokens_v5 arg)+        let arg5 = T_HsTokens_vIn5 _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent+        !(T_HsTokens_vOut5 _lhsOaddLines _lhsOerrors _lhsOtks) <- return (inv_HsTokens_s10 sem K_HsTokens_v5 arg5)         return (Syn_HsTokens _lhsOaddLines _lhsOerrors _lhsOtks)    ) @@ -1306,8 +1306,8 @@ wrap_HsTokensRoot !(T_HsTokensRoot act) !(Inh_HsTokensRoot _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_HsTokensRoot_vIn6 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent-        !(T_HsTokensRoot_vOut6 _lhsOerrors _lhsOtks) <- return (inv_HsTokensRoot_s12 sem arg)+        let arg6 = T_HsTokensRoot_vIn6 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent+        !(T_HsTokensRoot_vOut6 _lhsOerrors _lhsOtks) <- return (inv_HsTokensRoot_s12 sem arg6)         return (Syn_HsTokensRoot _lhsOerrors _lhsOtks)    ) @@ -1350,9 +1350,9 @@           in __result_ )      in C_HsTokensRoot_s12 v6    {-# INLINE rule84 #-}-   {-# LINE 67 "./src-ag/Desugar.ag" #-}+   {-# LINE 67 "src-ag/Desugar.ag" #-}    rule84 = \  (_ :: ()) ->-                          {-# LINE 67 "./src-ag/Desugar.ag" #-}+                          {-# LINE 67 "src-ag/Desugar.ag" #-}                           0                           {-# LINE 1358 "dist/build/Desugar.hs"#-}    {-# INLINE rule85 #-}@@ -1386,8 +1386,8 @@ wrap_Nonterminal !(T_Nonterminal act) !(Inh_Nonterminal _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Nonterminal_vIn7 _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap-        !(T_Nonterminal_vOut7 _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap') <- return (inv_Nonterminal_s14 sem K_Nonterminal_v7 arg)+        let arg7 = T_Nonterminal_vIn7 _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap+        !(T_Nonterminal_vOut7 _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap') <- return (inv_Nonterminal_s14 sem K_Nonterminal_v7 arg7)         return (Syn_Nonterminal _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap')    ) @@ -1492,45 +1492,45 @@           in __result_ )      in C_Nonterminal_s46 v33    {-# NOINLINE[1] rule93 #-}-   {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 7 "src-ag/DistChildAttr.ag" #-}    rule93 = \ !inh_ !nt_ ->-                                 {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 7 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ inh_                                  {-# LINE 1500 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule94 #-}-   {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 8 "src-ag/DistChildAttr.ag" #-}    rule94 = \ !nt_ !syn_ ->-                                 {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 8 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ syn_                                  {-# LINE 1506 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule95 #-}-   {-# LINE 157 "./src-ag/Desugar.ag" #-}+   {-# LINE 157 "src-ag/Desugar.ag" #-}    rule95 = \ !nt_ ->-                   {-# LINE 157 "./src-ag/Desugar.ag" #-}+                   {-# LINE 157 "src-ag/Desugar.ag" #-}                    nt_                    {-# LINE 1512 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule96 #-}-   {-# LINE 239 "./src-ag/Desugar.ag" #-}+   {-# LINE 239 "src-ag/Desugar.ag" #-}    rule96 = \ ((!_lhsIaugmentsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !nt_ ->-                         {-# LINE 239 "./src-ag/Desugar.ag" #-}+                         {-# LINE 239 "src-ag/Desugar.ag" #-}                          Map.findWithDefault Map.empty nt_ _lhsIaugmentsIn                          {-# LINE 1518 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule97 #-}-   {-# LINE 240 "./src-ag/Desugar.ag" #-}+   {-# LINE 240 "src-ag/Desugar.ag" #-}    rule97 = \ ((!_prodsIaugmentsOut) :: Map ConstructorIdent (Map Identifier [Expression])) !nt_ ->-                          {-# LINE 240 "./src-ag/Desugar.ag" #-}+                          {-# LINE 240 "src-ag/Desugar.ag" #-}                           Map.singleton nt_ _prodsIaugmentsOut                           {-# LINE 1524 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule98 #-}-   {-# LINE 292 "./src-ag/Desugar.ag" #-}+   {-# LINE 292 "src-ag/Desugar.ag" #-}    rule98 = \ ((!_lhsImainName) :: String) ((!_lhsIoptions) :: Options) ->-                   {-# LINE 292 "./src-ag/Desugar.ag" #-}+                   {-# LINE 292 "src-ag/Desugar.ag" #-}                    addLateAttr _lhsIoptions _lhsImainName                    {-# LINE 1530 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule99 #-}-   {-# LINE 308 "./src-ag/Desugar.ag" #-}+   {-# LINE 308 "src-ag/Desugar.ag" #-}    rule99 = \ !_extraInh ((!_prodsIoutput) :: Productions) !inh_ !nt_ !params_ !syn_ ->-                 {-# LINE 308 "./src-ag/Desugar.ag" #-}+                 {-# LINE 308 "src-ag/Desugar.ag" #-}                  Nonterminal                    nt_ params_                    (_extraInh     `Map.union` inh_)@@ -1571,8 +1571,8 @@ wrap_Nonterminals !(T_Nonterminals act) !(Inh_Nonterminals _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Nonterminals_vIn8 _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap-        !(T_Nonterminals_vOut8 _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap') <- return (inv_Nonterminals_s16 sem K_Nonterminals_v8 arg)+        let arg8 = T_Nonterminals_vIn8 _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsIoptions _lhsIsynMap+        !(T_Nonterminals_vOut8 _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap') <- return (inv_Nonterminals_s16 sem K_Nonterminals_v8 arg8)         return (Syn_Nonterminals _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap')    ) @@ -1828,8 +1828,8 @@ wrap_Pattern !(T_Pattern act) !(Inh_Pattern _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Pattern_vIn9 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt-        !(T_Pattern_vOut9 _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput) <- return (inv_Pattern_s18 sem K_Pattern_v9 arg)+        let arg9 = T_Pattern_vIn9 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt+        !(T_Pattern_vOut9 _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput) <- return (inv_Pattern_s18 sem K_Pattern_v9 arg9)         return (Syn_Pattern _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput)    ) @@ -2461,16 +2461,16 @@           in __result_ )      in C_Pattern_s58 v56    {-# NOINLINE rule162 #-}-   {-# LINE 110 "./src-ag/Desugar.ag" #-}+   {-# LINE 110 "src-ag/Desugar.ag" #-}    rule162 = \ ((!_lhsIchildInhs) :: [(Identifier, Identifier)]) ((!_lhsIcon) :: ConstructorIdent) ((!_lhsInt) :: NontermIdent) !attr_ !field_ ->-                                 {-# LINE 110 "./src-ag/Desugar.ag" #-}+                                 {-# LINE 110 "src-ag/Desugar.ag" #-}                                  maybeError field_ (UndefAttr _lhsInt _lhsIcon (Ident "<ANY>" (getPos field_)) attr_ True) $                                    findField field_ attr_ _lhsIchildInhs                                  {-# LINE 2470 "dist/build/Desugar.hs"#-}    {-# NOINLINE rule163 #-}-   {-# LINE 112 "./src-ag/Desugar.ag" #-}+   {-# LINE 112 "src-ag/Desugar.ag" #-}    rule163 = \ !_field' ((!_lhsIcon) :: ConstructorIdent) ((!_lhsIdefs) :: Set (Identifier, Identifier)) ((!_lhsInt) :: NontermIdent) !attr_ !field_ ->-                   {-# LINE 112 "./src-ag/Desugar.ag" #-}+                   {-# LINE 112 "src-ag/Desugar.ag" #-}                    if _field'     == field_                    then Seq.empty                    else if (_field'    , attr_) `Set.member` _lhsIdefs@@ -2478,39 +2478,39 @@                         else Seq.empty                    {-# LINE 2480 "dist/build/Desugar.hs"#-}    {-# NOINLINE rule164 #-}-   {-# LINE 117 "./src-ag/Desugar.ag" #-}+   {-# LINE 117 "src-ag/Desugar.ag" #-}    rule164 = \ !_err1 !_err2 ((!_patIerrors) :: Seq Error) ->-                     {-# LINE 117 "./src-ag/Desugar.ag" #-}+                     {-# LINE 117 "src-ag/Desugar.ag" #-}                      _err1     Seq.>< _err2     Seq.>< _patIerrors                      {-# LINE 2486 "dist/build/Desugar.hs"#-}    {-# NOINLINE rule165 #-}-   {-# LINE 118 "./src-ag/Desugar.ag" #-}+   {-# LINE 118 "src-ag/Desugar.ag" #-}    rule165 = \ !_field' ((!_patIoutput) :: Pattern) !attr_ ->-                     {-# LINE 118 "./src-ag/Desugar.ag" #-}+                     {-# LINE 118 "src-ag/Desugar.ag" #-}                      Alias _field'     attr_ _patIoutput                      {-# LINE 2492 "dist/build/Desugar.hs"#-}    {-# NOINLINE rule166 #-}-   {-# LINE 182 "./src-ag/Desugar.ag" #-}+   {-# LINE 182 "src-ag/Desugar.ag" #-}    rule166 = \ !attr_ !field_ ->-                  {-# LINE 182 "./src-ag/Desugar.ag" #-}+                  {-# LINE 182 "src-ag/Desugar.ag" #-}                   Set.singleton (field_, attr_)                   {-# LINE 2498 "dist/build/Desugar.hs"#-}    {-# NOINLINE rule167 #-}-   {-# LINE 183 "./src-ag/Desugar.ag" #-}+   {-# LINE 183 "src-ag/Desugar.ag" #-}    rule167 = \ !_def ((!_patIdefsCollect) :: Set (Identifier, Identifier)) ->-                          {-# LINE 183 "./src-ag/Desugar.ag" #-}+                          {-# LINE 183 "src-ag/Desugar.ag" #-}                           _def     `Set.union` _patIdefsCollect                           {-# LINE 2504 "dist/build/Desugar.hs"#-}    {-# NOINLINE rule168 #-}-   {-# LINE 200 "./src-ag/Desugar.ag" #-}+   {-# LINE 200 "src-ag/Desugar.ag" #-}    rule168 = \ ((!_lhsIcon) :: ConstructorIdent) ((!_lhsInt) :: NontermIdent) ((!_patIallAttributes) :: AttrMap) !attr_ !field_ ->-                            {-# LINE 200 "./src-ag/Desugar.ag" #-}+                            {-# LINE 200 "src-ag/Desugar.ag" #-}                             (Map.singleton _lhsInt $ Map.singleton _lhsIcon $ Set.singleton (field_, attr_)) `mergeAttributes` _patIallAttributes                             {-# LINE 2510 "dist/build/Desugar.hs"#-}    {-# NOINLINE rule169 #-}-   {-# LINE 219 "./src-ag/Desugar.ag" #-}+   {-# LINE 219 "src-ag/Desugar.ag" #-}    rule169 = \ ((!_lhsIcon) :: ConstructorIdent) ((!_lhsIforcedIrrefutables) :: AttrMap) ((!_lhsInt) :: NontermIdent) !_output !attr_ !field_ ->-                     {-# LINE 219 "./src-ag/Desugar.ag" #-}+                     {-# LINE 219 "src-ag/Desugar.ag" #-}                      if Set.member (field_, attr_) $ Map.findWithDefault Set.empty _lhsIcon $ Map.findWithDefault Map.empty _lhsInt $ _lhsIforcedIrrefutables                      then Irrefutable _output                      else _output@@ -2693,9 +2693,9 @@           in __result_ )      in C_Pattern_s58 v56    {-# NOINLINE rule178 #-}-   {-# LINE 202 "./src-ag/Desugar.ag" #-}+   {-# LINE 202 "src-ag/Desugar.ag" #-}    rule178 = \  (_ :: ()) ->-                            {-# LINE 202 "./src-ag/Desugar.ag" #-}+                            {-# LINE 202 "src-ag/Desugar.ag" #-}                             Map.empty                             {-# LINE 2701 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule179 #-}@@ -2879,8 +2879,8 @@ wrap_Patterns !(T_Patterns act) !(Inh_Patterns _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Patterns_vIn10 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt-        !(T_Patterns_vOut10 _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput) <- return (inv_Patterns_s20 sem K_Patterns_v10 arg)+        let arg10 = T_Patterns_vIn10 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt+        !(T_Patterns_vOut10 _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput) <- return (inv_Patterns_s20 sem K_Patterns_v10 arg10)         return (Syn_Patterns _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput)    ) @@ -3342,8 +3342,8 @@ wrap_Production !(T_Production act) !(Inh_Production _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsInt _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Production_vIn11 _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsInt _lhsIoptions _lhsIsynMap-        !(T_Production_vOut11 _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOoutput) <- return (inv_Production_s22 sem K_Production_v11 arg)+        let arg11 = T_Production_vIn11 _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsInt _lhsIoptions _lhsIsynMap+        !(T_Production_vOut11 _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOoutput) <- return (inv_Production_s22 sem K_Production_v11 arg11)         return (Syn_Production _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOoutput)    ) @@ -3496,39 +3496,39 @@           in __result_ )      in C_Production_s52 v44    {-# NOINLINE[1] rule224 #-}-   {-# LINE 161 "./src-ag/Desugar.ag" #-}+   {-# LINE 161 "src-ag/Desugar.ag" #-}    rule224 = \ !con_ ->-                    {-# LINE 161 "./src-ag/Desugar.ag" #-}+                    {-# LINE 161 "src-ag/Desugar.ag" #-}                     con_                     {-# LINE 3504 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule225 #-}-   {-# LINE 188 "./src-ag/Desugar.ag" #-}+   {-# LINE 188 "src-ag/Desugar.ag" #-}    rule225 = \ ((!_rulesIdefsCollect) :: Set (Identifier, Identifier)) ->-                     {-# LINE 188 "./src-ag/Desugar.ag" #-}+                     {-# LINE 188 "src-ag/Desugar.ag" #-}                      _rulesIdefsCollect                      {-# LINE 3510 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule226 #-}-   {-# LINE 244 "./src-ag/Desugar.ag" #-}+   {-# LINE 244 "src-ag/Desugar.ag" #-}    rule226 = \ ((!_lhsIaugmentsIn) :: Map ConstructorIdent (Map Identifier [Expression])) !con_ ->-                         {-# LINE 244 "./src-ag/Desugar.ag" #-}+                         {-# LINE 244 "src-ag/Desugar.ag" #-}                          Map.findWithDefault Map.empty con_ _lhsIaugmentsIn                          {-# LINE 3516 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule227 #-}-   {-# LINE 245 "./src-ag/Desugar.ag" #-}+   {-# LINE 245 "src-ag/Desugar.ag" #-}    rule227 = \ !_augmentsOut1 !con_ ->-                          {-# LINE 245 "./src-ag/Desugar.ag" #-}+                          {-# LINE 245 "src-ag/Desugar.ag" #-}                           Map.singleton con_ _augmentsOut1                           {-# LINE 3522 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule228 #-}-   {-# LINE 247 "./src-ag/Desugar.ag" #-}+   {-# LINE 247 "src-ag/Desugar.ag" #-}    rule228 = \ !_augmentsIn ((!_childrenIchildInhs) :: [(Identifier, Identifier)]) ((!_childrenIchildSyns) :: [(Identifier, Identifier)]) ((!_lhsInt) :: NontermIdent) ((!_lhsIoptions) :: Options) !con_ ->-                                              {-# LINE 247 "./src-ag/Desugar.ag" #-}+                                              {-# LINE 247 "src-ag/Desugar.ag" #-}                                               Map.mapAccum (desugarExprs _lhsIoptions _lhsInt con_ _childrenIchildInhs _childrenIchildSyns) Seq.empty _augmentsIn                                               {-# LINE 3528 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule229 #-}-   {-# LINE 283 "./src-ag/Desugar.ag" #-}+   {-# LINE 283 "src-ag/Desugar.ag" #-}    rule229 = \ !_augmentErrs ((!_rulesIerrors) :: Seq Error) ->-                     {-# LINE 283 "./src-ag/Desugar.ag" #-}+                     {-# LINE 283 "src-ag/Desugar.ag" #-}                      _rulesIerrors Seq.>< _augmentErrs                      {-# LINE 3534 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule230 #-}@@ -3574,8 +3574,8 @@ wrap_Productions !(T_Productions act) !(Inh_Productions _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsInt _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Productions_vIn12 _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsInt _lhsIoptions _lhsIsynMap-        !(T_Productions_vOut12 _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOoutput) <- return (inv_Productions_s24 sem K_Productions_v12 arg)+        let arg12 = T_Productions_vIn12 _lhsIaugmentsIn _lhsIforcedIrrefutables _lhsIinhMap _lhsImainName _lhsInt _lhsIoptions _lhsIsynMap+        !(T_Productions_vOut12 _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOoutput) <- return (inv_Productions_s24 sem K_Productions_v12 arg12)         return (Syn_Productions _lhsOallAttributes _lhsOaugmentsOut _lhsOerrors _lhsOoutput)    ) @@ -3852,8 +3852,8 @@ wrap_Rule !(T_Rule act) !(Inh_Rule _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Rule_vIn13 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions-        !(T_Rule_vOut13 _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput) <- return (inv_Rule_s26 sem K_Rule_v13 arg)+        let arg13 = T_Rule_vIn13 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions+        !(T_Rule_vOut13 _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput) <- return (inv_Rule_s26 sem K_Rule_v13 arg13)         return (Syn_Rule _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput)    ) @@ -3995,9 +3995,9 @@           in __result_ )      in C_Rule_s57 v54    {-# NOINLINE[1] rule267 #-}-   {-# LINE 172 "./src-ag/Desugar.ag" #-}+   {-# LINE 172 "src-ag/Desugar.ag" #-}    rule267 = \ ((!_lhsIcon) :: ConstructorIdent) ((!_lhsInt) :: NontermIdent) ((!_patternIdefsCollect) :: Set (Identifier, Identifier)) ->-                        {-# LINE 172 "./src-ag/Desugar.ag" #-}+                        {-# LINE 172 "src-ag/Desugar.ag" #-}                         show _lhsInt ++ " :: " ++ show _lhsIcon ++ " :: " ++ (concat $ intersperse "," $ map (\(f,a) -> show f ++ "." ++ show a) $ Set.toList _patternIdefsCollect)                         {-# LINE 4003 "dist/build/Desugar.hs"#-}    {-# NOINLINE[1] rule268 #-}@@ -4058,8 +4058,8 @@ wrap_Rules !(T_Rules act) !(Inh_Rules _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Rules_vIn14 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions-        !(T_Rules_vOut14 _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput) <- return (inv_Rules_s28 sem K_Rules_v14 arg)+        let arg14 = T_Rules_vIn14 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions+        !(T_Rules_vOut14 _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput) <- return (inv_Rules_s28 sem K_Rules_v14 arg14)         return (Syn_Rules _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput)    ) @@ -4353,8 +4353,8 @@ wrap_TypeSig !(T_TypeSig act) !(Inh_TypeSig ) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_TypeSig_vIn15 -        !(T_TypeSig_vOut15 _lhsOoutput) <- return (inv_TypeSig_s30 sem arg)+        let arg15 = T_TypeSig_vIn15 +        !(T_TypeSig_vOut15 _lhsOoutput) <- return (inv_TypeSig_s30 sem arg15)         return (Syn_TypeSig _lhsOoutput)    ) @@ -4403,8 +4403,8 @@ wrap_TypeSigs !(T_TypeSigs act) !(Inh_TypeSigs ) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_TypeSigs_vIn16 -        !(T_TypeSigs_vOut16 _lhsOoutput) <- return (inv_TypeSigs_s32 sem arg)+        let arg16 = T_TypeSigs_vIn16 +        !(T_TypeSigs_vOut16 _lhsOoutput) <- return (inv_TypeSigs_s32 sem arg16)         return (Syn_TypeSigs _lhsOoutput)    ) 
src-generated/ErrorMessages.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/ErrorMessages.ag)+-- UUAGC 0.9.51 (src-ag/ErrorMessages.ag) module ErrorMessages where-{-# LINE 2 "./src-ag/ErrorMessages.ag" #-}+{-# LINE 2 "src-ag/ErrorMessages.ag" #-}  import UU.Scanner.Position(Pos) import Pretty
src-generated/ExecutionPlan.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/ExecutionPlan.ag)+-- UUAGC 0.9.51 (src-ag/ExecutionPlan.ag) module ExecutionPlan where-{-# LINE 2 "./src-ag/ExecutionPlan.ag" #-}+{-# LINE 2 "src-ag/ExecutionPlan.ag" #-}  -- VisitSyntax.ag imports import Patterns    (Pattern(..),Patterns)@@ -48,14 +48,14 @@          child params         : {[Identifier]}          child classCtxs      : {ClassContext}          child initial        : {StateIdentifier}-         child initialv       : {Maybe VisitIdentifier}+         child initialv       : {[VisitIdentifier]}          child nextVisits     : {Map StateIdentifier StateCtx}          child prevVisits     : {Map StateIdentifier StateCtx}          child prods          : EProductions           child recursive      : {Bool}          child hoInfo         : {HigherOrderInfo} -}-data ENonterminal = ENonterminal (NontermIdent) (([Identifier])) (ClassContext) (StateIdentifier) ((Maybe VisitIdentifier)) ((Map StateIdentifier StateCtx)) ((Map StateIdentifier StateCtx)) (EProductions) (Bool) (HigherOrderInfo)+data ENonterminal = ENonterminal (NontermIdent) (([Identifier])) (ClassContext) (StateIdentifier) (([VisitIdentifier])) ((Map StateIdentifier StateCtx)) ((Map StateIdentifier StateCtx)) (EProductions) (Bool) (HigherOrderInfo) -- ENonterminals ----------------------------------------------- {-    alternatives:
src-generated/ExecutionPlan2Caml.hs view
@@ -2,5792 +2,5792 @@ {-# LANGUAGE ScopedTypeVariables #-}  module ExecutionPlan2Caml where-{-# LINE 2 "./src-ag/HsToken.ag" #-}--import CommonTypes-import UU.Scanner.Position(Pos)-{-# LINE 10 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 2 "./src-ag/Expression.ag" #-}--import UU.Scanner.Position(Pos)-import HsToken-{-# LINE 16 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 2 "./src-ag/Patterns.ag" #-}---- Patterns.ag imports-import UU.Scanner.Position(Pos)-import CommonTypes (ConstructorIdent,Identifier)-{-# LINE 23 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 2 "./src-ag/ExecutionPlan.ag" #-}---- VisitSyntax.ag imports-import Patterns    (Pattern(..),Patterns)-import Expression  (Expression(..))-import CommonTypes-import ErrorMessages--import qualified Data.Set as Set-import Data.Set(Set)-import qualified Data.Map as Map-import Data.Map(Map)-{-# LINE 37 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 32 "./src-ag/ExecutionPlan2Caml.ag" #-}--import ExecutionPlan-import Pretty-import PPUtil-import Options-import Data.Monoid(mappend,mempty)-import Data.Maybe-import Data.Graph-import Debug.Trace-import System.IO-import System.Directory-import System.FilePath-import UU.Scanner.Position--import TokenDef-import HsToken-import ErrorMessages--import Data.Set (Set)-import qualified Data.Set as Set-import Data.Map (Map)-import qualified Data.Map as Map-import Data.Sequence(Seq)-import qualified Data.Sequence as Seq-import Data.Foldable(toList)-{-# LINE 65 "dist/build/ExecutionPlan2Caml.hs" #-}-import Control.Monad.Identity (Identity)-import qualified Control.Monad.Identity-{-# LINE 175 "./src-ag/ExecutionPlan2Caml.ag" #-}--ppRecordTp :: PP a => [a] -> PP_Doc-ppRecordTp es-  | null es   = text "unit"-  | otherwise = pp_block "{" "}" "; " (map pp es)--ppRecordVal :: PP a => [a] -> PP_Doc-ppRecordVal es-  | null es   = text "()"-  | otherwise = pp_block "{" "}" "; " (map pp es)--ppFieldsVal :: Bool -> [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)] -> PP_Doc-ppFieldsVal record fields-  | null fields = text "()"-  | record      = ppRecordVal [ r >#< "=" >#< x | (r,x,_,_) <- fields ]-  | otherwise   = pp_block "(" ")" "," [ x | (_,x,_,_) <- fields ]--ppFieldsType :: Bool -> Bool -> [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)] -> PP_Doc-ppFieldsType record defor fields-  | null fields = text "unit"-  | record      = ppRecordTp [ r >#< ":" >#< (if defor then d else f) | (r,_,d,f) <- fields ]-  | otherwise   = pp_block "(" ")" "*" [ if defor then d else f | (_,_,d,f) <- fields ]-{-# LINE 91 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 288 "./src-ag/ExecutionPlan2Caml.ag" #-}--ppTp :: Type -> PP_Doc-ppTp tp = case tp of-  Haskell t -> pp t   -- ocaml type-  NT nt tps deforested-    | nt == _SELF -> pp "?SELF?"-    | null tps    -> ppNontTp nt deforested-    | otherwise   -> pp_parens (ppSpaced (map pp_parens tps) >#< ppNontTp nt deforested)-  Self -> pp "?SELF?"--ppNontTp :: NontermIdent -> Bool -> PP_Doc-ppNontTp nt True  = pp "t_" >|< pp nt-ppNontTp nt False = pp nt---- multiple type parameters go into a tuple-ppTypeParams :: PP a => [a] -> PP_Doc-ppTypeParams []  = empty-ppTypeParams [x] = pp x-ppTypeParams xs  = pp_block "(" ")" "," (map pp xs)-{-# LINE 113 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 361 "./src-ag/ExecutionPlan2Caml.ag" #-}---- convention for nonterminals to module names-modName :: NontermIdent -> PP_Doc-modName nt = pp "M_" >|< pp nt--ppFunDecl :: Bool -> PP_Doc -> [(PP_Doc,PP_Doc)] -> PP_Doc -> PP_Doc -> PP_Doc-ppFunDecl gensigs nm args resSig expr = body where-  body = nm >#< ppSpaced (map arg args) >#< ppRes >#< "="-         >-< indent 2 expr-  arg (arg,tp) = ppArg gensigs arg tp-  ppRes-    | gensigs  = ":" >#< resSig-    | otherwise = empty--ppArg :: Bool -> PP_Doc -> PP_Doc -> PP_Doc-ppArg gensigs arg tp-  | gensigs   = pp_parens (arg >#< ":" >#< tp)-  | otherwise = arg--{-# LINE 135 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 428 "./src-ag/ExecutionPlan2Caml.ag" #-}-type VisitStateState = (VisitIdentifier,StateIdentifier, StateIdentifier)-{-# LINE 139 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 464 "./src-ag/ExecutionPlan2Caml.ag" #-}------- conventions------- type of the state of a node: a closure containing the children states and attributes,--- with code of type 'type_nt_sem' that represents the subsequent visits to successor states.-type_nt_state nt st = "s_" >|< nt >|< "_" >|< st---- type of a visit to a node (the initial, and when in a given state)--- an instance of this type is called the "semantics"-type_nt_sem_top nt = "t_" >|< nt-type_nt_sem nt st = type_nt_sem_top nt >|< "_s" >|< st---- type of a caller (contains visit selection + inputs + continuation)-type_caller nt st = "c_" >|< nt >|< "_s" >|< st---- names of records-nm_attach nt = "attach_">|< nt-nm_invoke nt st = "inv_" >|< nt >|< "_s" >|< st---- name of the type variable representing the result type of the continuation-cont_tvar = text "'cont__"----- order states in reverse topological order so that successor states are--- earlier in the resulting list.-orderStates :: StateIdentifier -> [VisitStateState] -> [StateIdentifier]-orderStates initial edges = res where-  source  = Map.singleton initial Set.empty  -- ensures that the initial state is in graph even when there are no edges-  targets = [ Map.singleton t Set.empty | (_,_,t) <- edges ]-  deps    = [ Map.singleton f (Set.singleton t) | (_,f,t) <- edges ]--  mp  = Map.unionsWith Set.union (source : (targets ++ deps))-  es  = [ (f,f,Set.toList ts) | (f,ts) <- Map.toList mp ]-  cps = stronglyConnComp es-  res = flattenSCCs cps-{-# LINE 179 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 521 "./src-ag/ExecutionPlan2Caml.ag" #-}--type_caller_visit nt v = "c_" >|< nt >|< "_v" >|< v-con_visit nt v = "C_" >|< nt >|< "_v" >|< v---- field names-nm_inh nt v  = "inh_" >|< nt >|< "_v" >|< v-nm_cont nt v = "cont_" >|< nt >|< "_v" >|< v-{-# LINE 189 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 567 "./src-ag/ExecutionPlan2Caml.ag" #-}---- more naming conventions-nm_inarg nm nt v = "i_" >|< nm >|< "_" >|< nt >|< "_v" >|< v-nm_outarg nm nt v = "o_" >|< nm >|< "_" >|< nt >|< "_v" >|< v-nm_outarg_cont = nm_outarg "_cont"--conNmTVisit nt vId      = "t_" >|< nt >|< "_v"    >|< vId-conNmTVisitIn nt vId    = "t_" >|< nt >|< "_vIn"  >|< vId-conNmTVisitOut nt vId   = "t_" >|< nt >|< "_vOut" >|< vId---- todo: remove ppMonadType-ppMonadType :: Options -> PP_Doc-ppMonadType opts-  | parallelInvoke opts = text "IO"-  | otherwise           = text "Identity"-{-# LINE 207 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 780 "./src-ag/ExecutionPlan2Caml.ag" #-}--nm_visit v = "__v" >|< v-nm_k st = "__k" >|< st-nm_st st = "__st" >|< st--mklets :: (PP b, PP c) => [b] -> c -> PP_Doc-mklets defs body = res where-  ppLet def = "let" >#< def >#< "in"-  res = vlist (map ppLet defs) >-< body-{-# LINE 219 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 822 "./src-ag/ExecutionPlan2Caml.ag" #-}--resultValName :: String-resultValName = "__result_"--nextStName :: String-nextStName = "__st_"-{-# LINE 228 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 963 "./src-ag/ExecutionPlan2Caml.ag" #-}--stname :: Identifier -> Int -> String-stname child st = "_" ++ getName child ++ "X" ++ show st---- should actually return some conversion info-compatibleAttach :: VisitKind -> NontermIdent -> Options -> Bool-compatibleAttach _ _ _ = True-{-# LINE 238 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 1030 "./src-ag/ExecutionPlan2Caml.ag" #-}--dummyPat :: Options -> Bool -> PP_Doc-dummyPat opts noArgs-  | not noArgs            = empty-  | strictDummyToken opts = text "()"-  | otherwise             = text "(_ : unit)"--dummyArg :: Options -> Bool -> PP_Doc-dummyArg opts noArgs-  | not noArgs            = empty-  | otherwise             = text "()"--dummyType :: Options -> Bool -> PP_Doc-dummyType opts noArgs-  | not noArgs            = empty-  | otherwise             = text "unit"-{-# LINE 257 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 1106 "./src-ag/ExecutionPlan2Caml.ag" #-}--data NonLocalAttr-  = AttrInh Identifier Identifier-  | AttrSyn Identifier Identifier deriving Show--mkNonLocalAttr :: Bool -> Identifier -> Identifier -> NonLocalAttr-mkNonLocalAttr True  = AttrInh  -- True: inherited attr-mkNonLocalAttr False = AttrSyn--lookupAttrType :: NonLocalAttr -> Map Identifier Attributes -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc-lookupAttrType (AttrInh child name) inhs _ = lookupType child name inhs-lookupAttrType (AttrSyn child name) _ syns = lookupType child name syns---- Note: if the child takes type parameters, the type of an attribute of this child may refer to these parameters. This means that--- the actual type of the attribute needs to have its type parameters substituted with the actual type argument of the child.--- However, for now we simply decide to return Nothing in this case, which skips the type annotation.-lookupType :: Identifier -> Identifier -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc-lookupType child name attrMp childMp-  | noParameters childTp = Just ppDoc-  | otherwise            = Nothing-  where-    attrTp     = Map.findWithDefault (error "lookupType: the attribute is not in the attrs of the child") name childAttrs-    childAttrs = Map.findWithDefault (error "lookupType: the attributes of the nonterm are not in the map") nonterm attrMp-    nonterm    = extractNonterminal childTp-    childTp    = Map.findWithDefault (error ("lookupType: the child " ++ show child ++ "is not in the appropriate map")) child childMp-    ppDoc      = ppTp attrTp--noParameters :: Type -> Bool-noParameters (Haskell _)   = True-noParameters (NT _ args _) = null args-{-# LINE 290 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 1204 "./src-ag/ExecutionPlan2Caml.ag" #-}--contNm = text "__cont_"-inpsNm = text "__inps_"---- a `compatibleKind` b  means: can kind b be invoked from a-compatibleKind :: VisitKind -> VisitKind -> Bool-compatibleKind _              _             = True--compatibleRule :: VisitKind -> Bool -> Bool-compatibleRule (VisitPure _) False = False-compatibleRule _             _     = True-{-# LINE 304 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 1229 "./src-ag/ExecutionPlan2Caml.ag" #-}--unionWithSum = Map.unionWith (+)-{-# LINE 309 "dist/build/ExecutionPlan2Caml.hs" #-}--{-# LINE 1252 "./src-ag/ExecutionPlan2Caml.ag" #-}--uwSetUnion :: (Ord a, Ord b) => Map a (Set b) -> Map a (Set b) -> Map a (Set b)-uwSetUnion = Map.unionWith Set.union--uwMapUnion :: (Ord a, Ord b) => Map a (Map b c) -> Map a (Map b c) -> Map a (Map b c)-uwMapUnion = Map.unionWith Map.union-{-# LINE 318 "dist/build/ExecutionPlan2Caml.hs" #-}--- EChild --------------------------------------------------------- wrapper-data Inh_EChild  = Inh_EChild { allInitStates_Inh_EChild :: (Map NontermIdent Int), con_Inh_EChild :: (ConstructorIdent), mainFile_Inh_EChild :: (String), mainName_Inh_EChild :: (String), nt_Inh_EChild :: (NontermIdent), options_Inh_EChild :: (Options) }-data Syn_EChild  = Syn_EChild { argnamesw_Syn_EChild :: ( PP_Doc ), childTypes_Syn_EChild :: (Map Identifier Type), childintros_Syn_EChild :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), sigs_Syn_EChild :: ([(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]), terminaldefs_Syn_EChild :: (Set String) }-{-# INLINABLE wrap_EChild #-}-wrap_EChild :: T_EChild  -> Inh_EChild  -> (Syn_EChild )-wrap_EChild (T_EChild act) (Inh_EChild _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions-        (T_EChild_vOut1 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs) <- return (inv_EChild_s2 sem arg)-        return (Syn_EChild _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs)-   )---- cata-{-# NOINLINE sem_EChild #-}-sem_EChild :: EChild  -> T_EChild -sem_EChild ( EChild name_ tp_ kind_ hasAround_ merges_ isMerged_ ) = sem_EChild_EChild name_ tp_ kind_ hasAround_ merges_ isMerged_-sem_EChild ( ETerm name_ tp_ ) = sem_EChild_ETerm name_ tp_---- semantic domain-newtype T_EChild  = T_EChild {-                             attach_T_EChild :: Identity (T_EChild_s2 )-                             }-newtype T_EChild_s2  = C_EChild_s2 {-                                   inv_EChild_s2 :: (T_EChild_v1 )-                                   }-data T_EChild_s3  = C_EChild_s3-type T_EChild_v1  = (T_EChild_vIn1 ) -> (T_EChild_vOut1 )-data T_EChild_vIn1  = T_EChild_vIn1 (Map NontermIdent Int) (ConstructorIdent) (String) (String) (NontermIdent) (Options)-data T_EChild_vOut1  = T_EChild_vOut1 ( PP_Doc ) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ([(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) (Set String)-{-# NOINLINE sem_EChild_EChild #-}-sem_EChild_EChild :: (Identifier) -> (Type) -> (ChildKind) -> (Bool) -> (Maybe [Identifier]) -> (Bool) -> T_EChild -sem_EChild_EChild arg_name_ arg_tp_ arg_kind_ arg_hasAround_ _ _ = T_EChild (return st2) where-   {-# NOINLINE st2 #-}-   st2 = let-      v1 :: T_EChild_v1 -      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) -> ( let-         _tpDocFor = rule0 arg_tp_-         _tpDocDefor = rule1 arg_tp_-         _fieldNm = rule2 _lhsIcon _lhsInt arg_name_-         _childNm = rule3 arg_name_-         _field = rule4 _childNm _fieldNm _tpDocDefor _tpDocFor-         _lhsOsigs :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]-         _lhsOsigs = rule5 _field arg_kind_-         _lhsOargnamesw ::  PP_Doc -         _lhsOargnamesw = rule6 _lhsIoptions _nt arg_kind_ arg_name_-         _lhsOchildintros :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule7 _introcode arg_name_-         _isDefor = rule8 arg_tp_-         _valcode = rule9 _isDefor _lhsIoptions _nt arg_kind_ arg_name_-         _aroundcode = rule10 _lhsIoptions arg_hasAround_ arg_name_-         _introcode = rule11 _aroundcode _initSt _isDefor _lhsIoptions _nt _valcode arg_hasAround_ arg_kind_ arg_name_-         _nt = rule12 arg_tp_-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule13 arg_name_ arg_tp_-         _initSt = rule14 _lhsIallInitStates _nt-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule15  ()-         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs-         in __result_ )-     in C_EChild_s2 v1-   {-# INLINE rule0 #-}-   {-# LINE 278 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule0 = \ tp_ ->-                         {-# LINE 278 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         ppTp $ removeDeforested tp_-                         {-# LINE 386 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule1 #-}-   {-# LINE 279 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule1 = \ tp_ ->-                         {-# LINE 279 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         ppTp $ forceDeforested tp_-                         {-# LINE 392 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule2 #-}-   {-# LINE 280 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule2 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->-                         {-# LINE 280 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         text $ recordFieldname _lhsInt _lhsIcon name_-                         {-# LINE 398 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule3 #-}-   {-# LINE 281 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule3 = \ name_ ->-                         {-# LINE 281 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         text (fieldname name_)-                         {-# LINE 404 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule4 #-}-   {-# LINE 282 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule4 = \ _childNm _fieldNm _tpDocDefor _tpDocFor ->-                     {-# LINE 282 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     (_fieldNm    , _childNm    , _tpDocDefor    , _tpDocFor    )-                     {-# LINE 410 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule5 #-}-   {-# LINE 283 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule5 = \ _field kind_ ->-                         {-# LINE 283 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         case kind_ of-                           ChildAttr -> []-                           _         -> [_field    ]-                         {-# LINE 418 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule6 #-}-   {-# LINE 396 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule6 = \ ((_lhsIoptions) :: Options) _nt kind_ name_ ->-                             {-# LINE 396 "./src-ag/ExecutionPlan2Caml.ag" #-}-                             case kind_ of-                               ChildSyntax     -> "(" >#< prefix _lhsIoptions >|< _nt     >#< name_ >|< "_" >#< ")"-                               ChildAttr       -> empty-                               ChildReplace tp -> "(" >#< prefix _lhsIoptions >|< extractNonterminal tp >#< name_ >|< "_" >#< ")"-                             {-# LINE 427 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule7 #-}-   {-# LINE 923 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule7 = \ _introcode name_ ->-                               {-# LINE 923 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               Map.singleton name_ _introcode-                               {-# LINE 433 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule8 #-}-   {-# LINE 924 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule8 = \ tp_ ->-                               {-# LINE 924 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               case tp_ of-                                 NT _ _ defor -> defor-                                 _            -> False-                               {-# LINE 441 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule9 #-}-   {-# LINE 927 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule9 = \ _isDefor ((_lhsIoptions) :: Options) _nt kind_ name_ ->-                               {-# LINE 927 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               case kind_ of-                                 ChildSyntax -> name_ >|< "_"-                                 ChildAttr   ->-                                                let head | not _isDefor     = if lateHigherOrderBinding _lhsIoptions-                                                                              then lateSemNtLabel _nt     >#< lhsname _lhsIoptions True idLateBindingAttr-                                                                              else prefix _lhsIoptions >|< _nt-                                                         | otherwise        = empty-                                                in pp_parens (head >#< instname name_)-                                 ChildReplace _ ->-                                                   pp_parens (instname name_ >#< name_ >|< "_")-                               {-# LINE 456 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule10 #-}-   {-# LINE 938 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule10 = \ ((_lhsIoptions) :: Options) hasAround_ name_ ->-                               {-# LINE 938 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               if hasAround_-                               then locname _lhsIoptions name_ >|< "_around"-                               else empty-                               {-# LINE 464 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule11 #-}-   {-# LINE 941 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule11 = \ _aroundcode _initSt _isDefor ((_lhsIoptions) :: Options) _nt _valcode hasAround_ kind_ name_ ->-                               {-# LINE 941 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               \kind -> let pat    = text $ stname name_ _initSt-                                            attach = pp_parens (_aroundcode     >#< _valcode    ) >|< "." >|< nm_attach _nt     >#< "()"-                                            decl   = pat >#< "=" >#< attach-                                        in if compatibleAttach kind _nt     _lhsIoptions-                                           then Right ( "let" >#< decl >#< "in"-                                                      , Set.singleton (stname name_ _initSt    )-                                                      , case kind_ of-                                                          ChildAttr   -> Map.insert (instname name_) Nothing $-                                                                           ( if _isDefor     || not (lateHigherOrderBinding _lhsIoptions)-                                                                             then id-                                                                             else Map.insert (lhsname _lhsIoptions True idLateBindingAttr) (Just $ AttrInh _LHS idLateBindingAttr)-                                                                           ) $-                                                                           ( if hasAround_-                                                                             then Map.insert (locname _lhsIoptions (name_) ++ "_around") Nothing-                                                                             else id-                                                                           ) $ Map.empty-                                                          ChildReplace _ -> Map.singleton (instname name_) Nothing-                                                          ChildSyntax    -> Map.empty-                                                      )-                                           else Left $ IncompatibleAttachKind name_ kind-                               {-# LINE 489 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule12 #-}-   {-# LINE 961 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule12 = \ tp_ ->-                      {-# LINE 961 "./src-ag/ExecutionPlan2Caml.ag" #-}-                      extractNonterminal tp_-                      {-# LINE 495 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule13 #-}-   {-# LINE 1424 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule13 = \ name_ tp_ ->-                     {-# LINE 1424 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     Map.singleton name_ tp_-                     {-# LINE 501 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule14 #-}-   {-# LINE 1468 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule14 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) _nt ->-                 {-# LINE 1468 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 Map.findWithDefault (error "nonterminal not in allInitStates map") _nt     _lhsIallInitStates-                 {-# LINE 507 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule15 #-}-   rule15 = \  (_ :: ()) ->-     Set.empty-{-# NOINLINE sem_EChild_ETerm #-}-sem_EChild_ETerm :: (Identifier) -> (Type) -> T_EChild -sem_EChild_ETerm arg_name_ arg_tp_ = T_EChild (return st2) where-   {-# NOINLINE st2 #-}-   st2 = let-      v1 :: T_EChild_v1 -      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) -> ( let-         _tpDocFor = rule16 arg_tp_-         _tpDocDefor = rule17 arg_tp_-         _fieldNm = rule18 _lhsIcon _lhsInt arg_name_-         _childNm = rule19 arg_name_-         _field = rule20 _childNm _fieldNm _tpDocDefor _tpDocFor-         _lhsOsigs :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]-         _lhsOsigs = rule21 _field-         _lhsOargnamesw ::  PP_Doc -         _lhsOargnamesw = rule22 arg_name_-         _lhsOchildintros :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule23 arg_name_-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule24 arg_name_-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule25 arg_name_ arg_tp_-         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs-         in __result_ )-     in C_EChild_s2 v1-   {-# INLINE rule16 #-}-   {-# LINE 278 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule16 = \ tp_ ->-                         {-# LINE 278 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         ppTp $ removeDeforested tp_-                         {-# LINE 541 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule17 #-}-   {-# LINE 279 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule17 = \ tp_ ->-                         {-# LINE 279 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         ppTp $ forceDeforested tp_-                         {-# LINE 547 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule18 #-}-   {-# LINE 280 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule18 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->-                         {-# LINE 280 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         text $ recordFieldname _lhsInt _lhsIcon name_-                         {-# LINE 553 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule19 #-}-   {-# LINE 281 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule19 = \ name_ ->-                         {-# LINE 281 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         text (fieldname name_)-                         {-# LINE 559 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule20 #-}-   {-# LINE 282 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule20 = \ _childNm _fieldNm _tpDocDefor _tpDocFor ->-                     {-# LINE 282 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     (_fieldNm    , _childNm    , _tpDocDefor    , _tpDocFor    )-                     {-# LINE 565 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule21 #-}-   {-# LINE 286 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule21 = \ _field ->-                         {-# LINE 286 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         [_field    ]-                         {-# LINE 571 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule22 #-}-   {-# LINE 400 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule22 = \ name_ ->-                             {-# LINE 400 "./src-ag/ExecutionPlan2Caml.ag" #-}-                             text $ fieldname name_-                             {-# LINE 577 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule23 #-}-   {-# LINE 922 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule23 = \ name_ ->-                               {-# LINE 922 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               Map.singleton name_ (\_ -> Right (empty, Set.empty, Map.empty))-                               {-# LINE 583 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule24 #-}-   {-# LINE 1266 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule24 = \ name_ ->-                       {-# LINE 1266 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       Set.singleton $ fieldname name_-                       {-# LINE 589 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule25 #-}-   {-# LINE 1424 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule25 = \ name_ tp_ ->-                     {-# LINE 1424 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     Map.singleton name_ tp_-                     {-# LINE 595 "dist/build/ExecutionPlan2Caml.hs"#-}---- EChildren ------------------------------------------------------ wrapper-data Inh_EChildren  = Inh_EChildren { allInitStates_Inh_EChildren :: (Map NontermIdent Int), con_Inh_EChildren :: (ConstructorIdent), mainFile_Inh_EChildren :: (String), mainName_Inh_EChildren :: (String), nt_Inh_EChildren :: (NontermIdent), options_Inh_EChildren :: (Options) }-data Syn_EChildren  = Syn_EChildren { argnamesw_Syn_EChildren :: ([PP_Doc]), childTypes_Syn_EChildren :: (Map Identifier Type), childintros_Syn_EChildren :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), sigs_Syn_EChildren :: ([(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]), terminaldefs_Syn_EChildren :: (Set String) }-{-# INLINABLE wrap_EChildren #-}-wrap_EChildren :: T_EChildren  -> Inh_EChildren  -> (Syn_EChildren )-wrap_EChildren (T_EChildren act) (Inh_EChildren _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions-        (T_EChildren_vOut4 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs) <- return (inv_EChildren_s5 sem arg)-        return (Syn_EChildren _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs)-   )---- cata-{-# NOINLINE sem_EChildren #-}-sem_EChildren :: EChildren  -> T_EChildren -sem_EChildren list = Prelude.foldr sem_EChildren_Cons sem_EChildren_Nil (Prelude.map sem_EChild list)---- semantic domain-newtype T_EChildren  = T_EChildren {-                                   attach_T_EChildren :: Identity (T_EChildren_s5 )-                                   }-newtype T_EChildren_s5  = C_EChildren_s5 {-                                         inv_EChildren_s5 :: (T_EChildren_v4 )-                                         }-data T_EChildren_s6  = C_EChildren_s6-type T_EChildren_v4  = (T_EChildren_vIn4 ) -> (T_EChildren_vOut4 )-data T_EChildren_vIn4  = T_EChildren_vIn4 (Map NontermIdent Int) (ConstructorIdent) (String) (String) (NontermIdent) (Options)-data T_EChildren_vOut4  = T_EChildren_vOut4 ([PP_Doc]) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ([(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) (Set String)-{-# NOINLINE sem_EChildren_Cons #-}-sem_EChildren_Cons :: T_EChild  -> T_EChildren  -> T_EChildren -sem_EChildren_Cons arg_hd_ arg_tl_ = T_EChildren (return st5) where-   {-# NOINLINE st5 #-}-   st5 = let-      v4 :: T_EChildren_v4 -      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) -> ( let-         _hdX2 = Control.Monad.Identity.runIdentity (attach_T_EChild (arg_hd_))-         _tlX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_tl_))-         (T_EChild_vOut1 _hdIargnamesw _hdIchildTypes _hdIchildintros _hdIsigs _hdIterminaldefs) = inv_EChild_s2 _hdX2 (T_EChild_vIn1 _hdOallInitStates _hdOcon _hdOmainFile _hdOmainName _hdOnt _hdOoptions)-         (T_EChildren_vOut4 _tlIargnamesw _tlIchildTypes _tlIchildintros _tlIsigs _tlIterminaldefs) = inv_EChildren_s5 _tlX5 (T_EChildren_vIn4 _tlOallInitStates _tlOcon _tlOmainFile _tlOmainName _tlOnt _tlOoptions)-         _lhsOargnamesw :: [PP_Doc]-         _lhsOargnamesw = rule26 _hdIargnamesw _tlIargnamesw-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule27 _hdIchildTypes _tlIchildTypes-         _lhsOchildintros :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule28 _hdIchildintros _tlIchildintros-         _lhsOsigs :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]-         _lhsOsigs = rule29 _hdIsigs _tlIsigs-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule30 _hdIterminaldefs _tlIterminaldefs-         _hdOallInitStates = rule31 _lhsIallInitStates-         _hdOcon = rule32 _lhsIcon-         _hdOmainFile = rule33 _lhsImainFile-         _hdOmainName = rule34 _lhsImainName-         _hdOnt = rule35 _lhsInt-         _hdOoptions = rule36 _lhsIoptions-         _tlOallInitStates = rule37 _lhsIallInitStates-         _tlOcon = rule38 _lhsIcon-         _tlOmainFile = rule39 _lhsImainFile-         _tlOmainName = rule40 _lhsImainName-         _tlOnt = rule41 _lhsInt-         _tlOoptions = rule42 _lhsIoptions-         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs-         in __result_ )-     in C_EChildren_s5 v4-   {-# INLINE rule26 #-}-   rule26 = \ ((_hdIargnamesw) ::  PP_Doc ) ((_tlIargnamesw) :: [PP_Doc]) ->-     _hdIargnamesw : _tlIargnamesw-   {-# INLINE rule27 #-}-   rule27 = \ ((_hdIchildTypes) :: Map Identifier Type) ((_tlIchildTypes) :: Map Identifier Type) ->-     _hdIchildTypes `mappend` _tlIchildTypes-   {-# INLINE rule28 #-}-   rule28 = \ ((_hdIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ((_tlIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _hdIchildintros `Map.union` _tlIchildintros-   {-# INLINE rule29 #-}-   rule29 = \ ((_hdIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) ((_tlIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) ->-     _hdIsigs ++ _tlIsigs-   {-# INLINE rule30 #-}-   rule30 = \ ((_hdIterminaldefs) :: Set String) ((_tlIterminaldefs) :: Set String) ->-     _hdIterminaldefs `Set.union` _tlIterminaldefs-   {-# INLINE rule31 #-}-   rule31 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule32 #-}-   rule32 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule33 #-}-   rule33 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule34 #-}-   rule34 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule35 #-}-   rule35 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule36 #-}-   rule36 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule37 #-}-   rule37 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule38 #-}-   rule38 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule39 #-}-   rule39 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule40 #-}-   rule40 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule41 #-}-   rule41 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule42 #-}-   rule42 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-{-# NOINLINE sem_EChildren_Nil #-}-sem_EChildren_Nil ::  T_EChildren -sem_EChildren_Nil  = T_EChildren (return st5) where-   {-# NOINLINE st5 #-}-   st5 = let-      v4 :: T_EChildren_v4 -      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) -> ( let-         _lhsOargnamesw :: [PP_Doc]-         _lhsOargnamesw = rule43  ()-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule44  ()-         _lhsOchildintros :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule45  ()-         _lhsOsigs :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]-         _lhsOsigs = rule46  ()-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule47  ()-         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs-         in __result_ )-     in C_EChildren_s5 v4-   {-# INLINE rule43 #-}-   rule43 = \  (_ :: ()) ->-     []-   {-# INLINE rule44 #-}-   rule44 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule45 #-}-   rule45 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule46 #-}-   rule46 = \  (_ :: ()) ->-     []-   {-# INLINE rule47 #-}-   rule47 = \  (_ :: ()) ->-     Set.empty---- ENonterminal --------------------------------------------------- wrapper-data Inh_ENonterminal  = Inh_ENonterminal { allFromToStates_Inh_ENonterminal :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminal :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminal :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminal :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), avisitdefs_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), inhmap_Inh_ENonterminal :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminal :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminal :: (String), mainName_Inh_ENonterminal :: (String), options_Inh_ENonterminal :: (Options), synmap_Inh_ENonterminal :: (Map NontermIdent Attributes), typeSyns_Inh_ENonterminal :: (TypeSyns), wrappers_Inh_ENonterminal :: (Set NontermIdent) }-data Syn_ENonterminal  = Syn_ENonterminal { childvisit_Syn_ENonterminal :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), code_Syn_ENonterminal :: (PP_Doc), datas_Syn_ENonterminal :: (PP_Doc), errors_Syn_ENonterminal :: (Seq Error), fromToStates_Syn_ENonterminal :: (Map VisitIdentifier (Int,Int)), initStates_Syn_ENonterminal :: (Map NontermIdent Int), modules_Syn_ENonterminal :: (PP_Doc), semFunBndDefs_Syn_ENonterminal :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminal :: (Seq PP_Doc), visitKinds_Syn_ENonterminal :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_ENonterminal #-}-wrap_ENonterminal :: T_ENonterminal  -> Inh_ENonterminal  -> (Syn_ENonterminal )-wrap_ENonterminal (T_ENonterminal act) (Inh_ENonterminal _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers-        (T_ENonterminal_vOut7 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminal_s8 sem arg)-        return (Syn_ENonterminal _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_ENonterminal #-}-sem_ENonterminal :: ENonterminal  -> T_ENonterminal -sem_ENonterminal ( ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ prods_ recursive_ hoInfo_ ) = sem_ENonterminal_ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ ( sem_EProductions prods_ ) recursive_ hoInfo_---- semantic domain-newtype T_ENonterminal  = T_ENonterminal {-                                         attach_T_ENonterminal :: Identity (T_ENonterminal_s8 )-                                         }-newtype T_ENonterminal_s8  = C_ENonterminal_s8 {-                                               inv_ENonterminal_s8 :: (T_ENonterminal_v7 )-                                               }-data T_ENonterminal_s9  = C_ENonterminal_s9-type T_ENonterminal_v7  = (T_ENonterminal_vIn7 ) -> (T_ENonterminal_vOut7 )-data T_ENonterminal_vIn7  = T_ENonterminal_vIn7 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes) (TypeSyns) (Set NontermIdent)-data T_ENonterminal_vOut7  = T_ENonterminal_vOut7 (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (PP_Doc) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_ENonterminal_ENonterminal #-}-sem_ENonterminal_ENonterminal :: (NontermIdent) -> ([Identifier]) -> (ClassContext) -> (StateIdentifier) -> (Maybe VisitIdentifier) -> (Map StateIdentifier StateCtx) -> (Map StateIdentifier StateCtx) -> T_EProductions  -> (Bool) -> (HigherOrderInfo) -> T_ENonterminal -sem_ENonterminal_ENonterminal arg_nt_ arg_params_ _ arg_initial_ arg_initialv_ arg_nextVisits_ arg_prevVisits_ arg_prods_ _ _ = T_ENonterminal (return st8) where-   {-# NOINLINE st8 #-}-   st8 = let-      v7 :: T_ENonterminal_v7 -      v7 = \ (T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) -> ( let-         _prodsX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_prods_))-         (T_EProductions_vOut16 _prodsIallvisits _prodsIchildvisit _prodsIcount _prodsIdatatype _prodsIdatatype_call _prodsIdatatype_con _prodsIerrors _prodsIfromToStates _prodsIsemFunBndDefs _prodsIsemFunBndTps _prodsIsem_nt _prodsIsem_prod _prodsIt_visits _prodsIvisitKinds _prodsIvisitdefs _prodsIvisituses) = inv_EProductions_s17 _prodsX17 (T_EProductions_vIn16 _prodsOallFromToStates _prodsOallInhmap _prodsOallInitStates _prodsOallSynmap _prodsOallVisitKinds _prodsOallchildvisit _prodsOallstates _prodsOavisitdefs _prodsOavisituses _prodsOinhmap _prodsOinitial _prodsOlocalAttrTypes _prodsOmainFile _prodsOmainName _prodsOnextVisits _prodsOnt _prodsOntType _prodsOoptions _prodsOparams _prodsOprevVisits _prodsOrename _prodsOsynmap)-         _prodsOrename = rule48 _lhsIoptions-         _prodsOnt = rule49 arg_nt_-         _prodsOparams = rule50 arg_params_-         _lhsOdatas :: PP_Doc-         _lhsOdatas = rule51 _c_states _datatypeNt _datatypeProds _hasWrapper _lhsIoptions _prodsIt_visits _t_init _t_states _wr_inh _wr_syn arg_nt_-         _lhsOcode :: PP_Doc-         _lhsOcode = rule52 _datatypeCon _hasWrapper _lhsIoptions _prodsIsem_prod _sem_nt _wrapper arg_nt_-         _lhsOmodules :: PP_Doc-         _lhsOmodules = rule53 _moduleDecl-         _hasWrapper = rule54 _lhsIwrappers arg_nt_-         _t_params = rule55 arg_params_-         _aliasPre = rule56 _t_params arg_nt_-         _aliasMod = rule57 _aliasPre arg_nt_-         _datatypeNt = rule58 _aliasMod _aliasPre _lhsItypeSyns _prodsIdatatype _prodsIdatatype_call _t_params arg_nt_-         _datatypeCon = rule59 _lhsItypeSyns _prodsIdatatype_con arg_nt_-         _moduleDecl = rule60 _lhsItypeSyns arg_nt_-         _datatypeProds = rule61 _prodsIdatatype-         _fsemname = rule62 _lhsIoptions-         _semname = rule63 _fsemname arg_nt_-         _frecarg = rule64 _fsemname-         _sem_param_tp = rule65 _t_params arg_nt_-         _sem_res_tp = rule66 _t_params _t_type-         _sem_tp = rule67 _sem_param_tp _sem_res_tp-         _o_sigs = rule68 _lhsIoptions-         _sem_nt_body = rule69 _prodsIsem_nt-         _sem_nt = rule70 _frecarg _fsemname _lhsItypeSyns _o_sigs _sem_nt_body _sem_param_tp _sem_res_tp _semname arg_nt_-         (Just _prodsOinhmap) = rule71 _lhsIinhmap arg_nt_-         (Just _prodsOsynmap) = rule72 _lhsIsynmap arg_nt_-         _prodsOallInhmap = rule73 _lhsIinhmap-         _prodsOallSynmap = rule74 _lhsIsynmap-         _allstates = rule75 _prodsIallvisits arg_initial_-         _stvisits = rule76 _prodsIallvisits-         _t_type = rule77 arg_nt_-         _t_c_params = rule78 arg_params_-         _t_init = rule79 _t_params _t_type arg_initial_ arg_nt_-         _t_states = rule80 _allstates _t_c_params _t_params arg_nextVisits_ arg_nt_-         _c_states = rule81 _allstates _prodsIallvisits _t_c_params arg_nextVisits_ arg_nt_-         _wr_inh = rule82 _genwrap _wr_inhs1-         _wr_syn = rule83 _genwrap _wr_syns-         _genwrap = rule84 _t_params arg_nt_-         _inhAttrs = rule85 _lhsIinhmap arg_nt_-         _wr_inhs = rule86 _inhAttrs _wr_filter-         _wr_inhs1 = rule87 _inhAttrs-         _wr_filter = rule88 _lhsIoptions-         _wr_syns = rule89 _lhsIsynmap arg_nt_-         _wrapname = rule90 arg_nt_-         _inhname = rule91 arg_nt_-         _synname = rule92 arg_nt_-         _firstVisitInfo = rule93 arg_initial_ arg_nextVisits_-         _wrapArgSemTp = rule94 _t_params _t_type-         _wrapArgInhTp = rule95 _inhname _t_params-         _wrapArgPats = rule96 _lhsIoptions _wr_inhs1 arg_nt_-         _wrapResTp = rule97 _synname _t_params-         _wrapper = rule98 _o_sigs _wrapArgInhTp _wrapArgPats _wrapArgSemTp _wrapResTp _wrapname _wrapperPreamble-         _wrapperPreamble = rule99 _lhsImainName _lhsIoptions _wrapperBody-         _wrapperBody = rule100 _firstVisitInfo _lhsIoptions _wr_inhs _wr_syns arg_initial_ arg_initialv_ arg_nt_-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule101 _prodsIsemFunBndDefs _semFunBndDef-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule102 _prodsIsemFunBndTps _semFunBndTp-         _semFunBndDef = rule103 _semFunBndNm _semname-         _semFunBndTp = rule104 _semFunBndNm _sem_tp-         _semFunBndNm = rule105 arg_nt_-         _prodsOinitial = rule106 arg_initial_-         _prodsOallstates = rule107 _allstates-         _prodsOnextVisits = rule108 arg_nextVisits_-         _prodsOprevVisits = rule109 arg_prevVisits_-         _prodsOlocalAttrTypes = rule110 _lhsIlocalAttrTypes arg_nt_-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule111 arg_initial_ arg_nt_-         _ntType = rule112 arg_nt_ arg_params_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)-         _lhsOchildvisit = rule113 _prodsIchildvisit-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule114 _prodsIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule115 _prodsIfromToStates-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule116 _prodsIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule117 _prodsIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule118 _prodsIvisituses-         _prodsOallFromToStates = rule119 _lhsIallFromToStates-         _prodsOallInitStates = rule120 _lhsIallInitStates-         _prodsOallVisitKinds = rule121 _lhsIallVisitKinds-         _prodsOallchildvisit = rule122 _lhsIallchildvisit-         _prodsOavisitdefs = rule123 _lhsIavisitdefs-         _prodsOavisituses = rule124 _lhsIavisituses-         _prodsOmainFile = rule125 _lhsImainFile-         _prodsOmainName = rule126 _lhsImainName-         _prodsOntType = rule127 _ntType-         _prodsOoptions = rule128 _lhsIoptions-         __result_ = T_ENonterminal_vOut7 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminal_s8 v7-   {-# INLINE rule48 #-}-   {-# LINE 78 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule48 = \ ((_lhsIoptions) :: Options) ->-                   {-# LINE 78 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   rename _lhsIoptions-                   {-# LINE 890 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule49 #-}-   {-# LINE 86 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule49 = \ nt_ ->-               {-# LINE 86 "./src-ag/ExecutionPlan2Caml.ag" #-}-               nt_-               {-# LINE 896 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule50 #-}-   {-# LINE 96 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule50 = \ params_ ->-                   {-# LINE 96 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   params_-                   {-# LINE 902 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule51 #-}-   {-# LINE 115 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule51 = \ _c_states _datatypeNt _datatypeProds _hasWrapper ((_lhsIoptions) :: Options) ((_prodsIt_visits) :: PP_Doc) _t_init _t_states _wr_inh _wr_syn nt_ ->-                {-# LINE 115 "./src-ag/ExecutionPlan2Caml.ag" #-}-                (    text ""-                 >-< "(* *** " ++ getName nt_ ++ " *** [data] *)")-                 >-< (if dataTypes _lhsIoptions-                      then pp "(* data *)"-                           >-< _datatypeNt-                           >-< _datatypeProds-                           >-< ""-                      else empty)-                 >-< (if _hasWrapper-                       then pp "(* wrapper *)"-                            >-< _wr_inh-                            >-< _wr_syn-                            >-< ""-                       else empty)-                 >-< (if semfuns _lhsIoptions-                      then pp "(* semantic domain *)"-                           >-< _t_init-                           >-< _t_states-                           >-< _c_states-                           >-< _prodsIt_visits-                           >-< ""-                      else empty)-                {-# LINE 929 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule52 #-}-   {-# LINE 138 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule52 = \ _datatypeCon _hasWrapper ((_lhsIoptions) :: Options) ((_prodsIsem_prod) :: PP_Doc) _sem_nt _wrapper nt_ ->-                 {-# LINE 138 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 (    text ""-                  >-< "(* *** " ++ getName nt_ ++ " *** [code] *)")-                  >-< (if dataTypes _lhsIoptions-                      then pp "(* constructor functions *)"-                           >-< _datatypeCon-                      else empty)-                  >-< (if _hasWrapper-                       then pp "(* wrapper *)"-                            >-< _wrapper-                            >-< ""-                       else empty)-                  >-< (if folds _lhsIoptions-                       then "(* cata *)"-                            >-< _sem_nt-                            >-< ""-                       else empty)-                  >-< (if semfuns _lhsIoptions-                       then "(* semantic domain *)"-                            >-< _prodsIsem_prod-                            >-< ""-                       else empty)-                 {-# LINE 955 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule53 #-}-   {-# LINE 163 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule53 = \ _moduleDecl ->-                  {-# LINE 163 "./src-ag/ExecutionPlan2Caml.ag" #-}-                  _moduleDecl-                  {-# LINE 961 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule54 #-}-   {-# LINE 165 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule54 = \ ((_lhsIwrappers) :: Set NontermIdent) nt_ ->-                     {-# LINE 165 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     nt_ `Set.member` _lhsIwrappers-                     {-# LINE 967 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule55 #-}-   {-# LINE 216 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule55 = \ params_ ->-                   {-# LINE 216 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   ppTypeParams params_-                   {-# LINE 973 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule56 #-}-   {-# LINE 217 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule56 = \ _t_params nt_ ->-                   {-# LINE 217 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   "and" >#< _t_params     >#< nt_ >#< "="-                   {-# LINE 979 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule57 #-}-   {-# LINE 218 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule57 = \ _aliasPre nt_ ->-                   {-# LINE 218 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   _aliasPre     >#< modName nt_ >|< ".t"-                   {-# LINE 985 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule58 #-}-   {-# LINE 220 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule58 = \ _aliasMod _aliasPre ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdatatype) :: [PP_Doc]) ((_prodsIdatatype_call) :: [PP_Doc]) _t_params nt_ ->-        {-# LINE 220 "./src-ag/ExecutionPlan2Caml.ag" #-}-        case lookup nt_ _lhsItypeSyns of-          Just (List t)     -> _aliasPre     >#< ppTp t >#< "list"-          Just (Maybe t)    -> _aliasPre     >#< ppTp t >#< "option"-          Just (Tuple ts)   -> _aliasPre     >#< (pp_block "(" ")" " * " $ map (ppTp . snd) ts)-          Just (Map k v)    -> _aliasMod-          Just (IntMap t)   -> _aliasMod-          Just (OrdSet t)   -> _aliasMod-          Just IntSet       -> _aliasMod-          _ -> "and" >#< _t_params     >#< nt_ >#< "="-               >-< ( if null _prodsIdatatype-                     then pp "unit"-                     else indent 2 $ vlist _prodsIdatatype_call-                   )-        {-# LINE 1003 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule59 #-}-   {-# LINE 239 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule59 = \ ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdatatype_con) :: [PP_Doc]) nt_ ->-        {-# LINE 239 "./src-ag/ExecutionPlan2Caml.ag" #-}-        case lookup nt_ _lhsItypeSyns of-          Just _  -> empty-          Nothing -> vlist _prodsIdatatype_con-        {-# LINE 1011 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule60 #-}-   {-# LINE 244 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule60 = \ ((_lhsItypeSyns) :: TypeSyns) nt_ ->-        {-# LINE 244 "./src-ag/ExecutionPlan2Caml.ag" #-}-        let ppModule :: PP a => a -> PP_Doc-            ppModule expr = "module" >#< modName nt_ >#< "="-        in case lookup nt_ _lhsItypeSyns of-             Just (Map k _)  -> ppModule ("Map.Make" >#< pp_parens (ppTp k))-             Just (IntMap _) -> ppModule ("Map.Make ()")-             Just (OrdSet t) -> ppModule ("Set.Make" >#< pp_parens (ppTp t))-             Just IntSet     -> ppModule ("Set.Make (struct  type t = int  let compare = Pervasives.compare  end)")-             _               -> empty-        {-# LINE 1024 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule61 #-}-   {-# LINE 253 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule61 = \ ((_prodsIdatatype) :: [PP_Doc]) ->-                        {-# LINE 253 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        vlist _prodsIdatatype-                        {-# LINE 1030 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule62 #-}-   {-# LINE 313 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule62 = \ ((_lhsIoptions) :: Options) ->-                   {-# LINE 313 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   \x -> prefix _lhsIoptions ++ show x-                   {-# LINE 1036 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule63 #-}-   {-# LINE 314 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule63 = \ _fsemname nt_ ->-                  {-# LINE 314 "./src-ag/ExecutionPlan2Caml.ag" #-}-                  _fsemname     nt_-                  {-# LINE 1042 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule64 #-}-   {-# LINE 315 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule64 = \ _fsemname ->-                  {-# LINE 315 "./src-ag/ExecutionPlan2Caml.ag" #-}-                  \t x -> case t of-                    NT nt _ _ -> pp_parens (_fsemname nt >#< x)-                    _         -> x-                  {-# LINE 1050 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule65 #-}-   {-# LINE 319 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule65 = \ _t_params nt_ ->-                       {-# LINE 319 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       _t_params     >#< nt_-                       {-# LINE 1056 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule66 #-}-   {-# LINE 320 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule66 = \ _t_params _t_type ->-                       {-# LINE 320 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       _t_params     >#< _t_type-                       {-# LINE 1062 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule67 #-}-   {-# LINE 321 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule67 = \ _sem_param_tp _sem_res_tp ->-                       {-# LINE 321 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       _sem_param_tp     >#< "->" >#< _sem_res_tp-                       {-# LINE 1068 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule68 #-}-   {-# LINE 323 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule68 = \ ((_lhsIoptions) :: Options) ->-                  {-# LINE 323 "./src-ag/ExecutionPlan2Caml.ag" #-}-                  typeSigs _lhsIoptions-                  {-# LINE 1074 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule69 #-}-   {-# LINE 324 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule69 = \ ((_prodsIsem_nt) :: PP_Doc) ->-                      {-# LINE 324 "./src-ag/ExecutionPlan2Caml.ag" #-}-                      "match arg with" >-< (indent 2 $ _prodsIsem_nt)-                      {-# LINE 1080 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule70 #-}-   {-# LINE 325 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule70 = \ _frecarg _fsemname ((_lhsItypeSyns) :: TypeSyns) _o_sigs _sem_nt_body _sem_param_tp _sem_res_tp _semname nt_ ->-                  {-# LINE 325 "./src-ag/ExecutionPlan2Caml.ag" #-}-                  let genSem :: PP a => a -> PP_Doc -> PP_Doc-                      genSem nm body = "and" >#< ppFunDecl _o_sigs     (pp _semname    ) [(pp nm, _sem_param_tp    )] _sem_res_tp     body-                      genAlias alts = genSem (pp "arg") (pp "match arg with" >-< (indent 2 $ vlist $ map (pp "|" >#<) alts))-                      genMap v = let body = modName nt_ >|< ".fold" >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil" >#< els-                                     els  = case v of-                                       NT nt _ _ -> pp_parens (modName nt_ >|< ".map" >#< _fsemname     nt >#< "m")-                                       _         -> pp "m"-                                 in genSem "m" body-                      genSet mbNt = let body = "List.fold_right" >#< _semname     >|< "_Entry" >#<-                                                els (pp_parens (modName nt_ >|< ".elements" >#< "s")) >#< _semname     >|< "_Nil"-                                        els r = maybe r (\nt -> pp_parens ("List.map" >#< _fsemname     nt >#< r)) mbNt-                                    in genSem "s" body-                  in case lookup nt_ _lhsItypeSyns of-                       Just (List t) -> let body = "List.fold_right" >#< _semname     >|< "_Cons" >#< els >#< _semname     >|< "_Nil"-                                            els  = case t of-                                              NT nt _ _ -> pp_parens ("List.map" >#< _fsemname     nt >#< "list")-                                              _         -> pp "list"-                                        in genSem "list" body-                       Just (Tuple ts) -> let pat = pp_parens (ppCommas $ map fst ts)-                                              body = _semname     >|< "_Tuple" >#< ppSpaced (map (\t -> _frecarg     (snd t) (pp $ fst t)) ts)-                                          in genSem pat body-                       Just (Map _ v) -> genMap v-                       Just (IntMap v) -> genMap v-                       Just (Maybe t) -> genAlias-                           [ "None" >#< "->" >#< "=" >#< _semname     >|< "_Nothing"-                           , "Some" >#< "just" >#< "->" >#< _semname     >|< "_Just" >#< _frecarg t (pp "just")-                           ]-                       Just (OrdSet t) -> genSet $ case t of-                                            NT nt _ _ -> Just nt-                                            _         -> Nothing-                       Just (IntSet) -> genSet Nothing-                       _ -> genSem "arg" _sem_nt_body-                  {-# LINE 1117 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule71 #-}-   {-# LINE 420 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule71 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->-                                         {-# LINE 420 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                         Map.lookup nt_ _lhsIinhmap-                                         {-# LINE 1123 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule72 #-}-   {-# LINE 421 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule72 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->-                                         {-# LINE 421 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                         Map.lookup nt_ _lhsIsynmap-                                         {-# LINE 1129 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule73 #-}-   {-# LINE 422 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule73 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-                                     {-# LINE 422 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                     _lhsIinhmap-                                     {-# LINE 1135 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule74 #-}-   {-# LINE 423 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule74 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-                                     {-# LINE 423 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                     _lhsIsynmap-                                     {-# LINE 1141 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule75 #-}-   {-# LINE 444 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule75 = \ ((_prodsIallvisits) :: [VisitStateState]) initial_ ->-                    {-# LINE 444 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    orderStates initial_ _prodsIallvisits-                    {-# LINE 1147 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule76 #-}-   {-# LINE 445 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule76 = \ ((_prodsIallvisits) :: [VisitStateState]) ->-                    {-# LINE 445 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    \st -> filter (\(v,f,t) -> f == st) _prodsIallvisits-                    {-# LINE 1153 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule77 #-}-   {-# LINE 446 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule77 = \ nt_ ->-                    {-# LINE 446 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    type_nt_sem_top nt_-                    {-# LINE 1159 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule78 #-}-   {-# LINE 447 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule78 = \ params_ ->-                     {-# LINE 447 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     ppTypeParams (cont_tvar : map pp params_)-                     {-# LINE 1165 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule79 #-}-   {-# LINE 450 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule79 = \ _t_params _t_type initial_ nt_ ->-                    {-# LINE 450 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    "and" >#< _t_params     >#< _t_type     >#< "=" >#< pp_braces ( nm_attach nt_ >#< ":" >#< "unit" >#< "->" >#< _t_params     >#< type_nt_sem nt_ initial_)-                    {-# LINE 1171 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule80 #-}-   {-# LINE 453 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule80 = \ _allstates _t_c_params _t_params nextVisits_ nt_ ->-                    {-# LINE 453 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    vlist $ map (\st ->-                      let s_st = type_nt_state nt_ st-                          t_st  = type_nt_sem nt_ st-                          c_st  = type_caller nt_ st-                          nextVisits = Map.findWithDefault ManyVis st nextVisits_-                          decl = "and" >#< _t_params     >#< t_st >#< "="-                      in case nextVisits of-                           NoneVis    -> decl >#< "unit"-                           _          -> decl >#< ppRecordVal [ nm_invoke nt_ st >#< ":" >#< cont_tvar >#< "." >#< _t_c_params     >#< c_st >#< "->" >#< cont_tvar ]-                     ) _allstates-                    {-# LINE 1186 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule81 #-}-   {-# LINE 506 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule81 = \ _allstates ((_prodsIallvisits) :: [VisitStateState]) _t_c_params nextVisits_ nt_ ->-                   {-# LINE 506 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   vlist $ map (\st ->-                     let nt_st = type_nt_state nt_ st-                         c_st  = type_caller nt_ st-                         outg  = filter (\(_,f,_) -> f == st) _prodsIallvisits-                         nextVisits = Map.findWithDefault ManyVis st nextVisits_-                         declHead = "and" >#< _t_c_params     >#< c_st >#< "="-                         visitcons = vlist $ map (\(v,_,_) ->-                           "|" >#< con_visit nt_ v >#< "of" >#< _t_c_params     >#< type_caller_visit nt_ v-                          ) outg-                     in case nextVisits of-                          NoneVis  -> empty-                          OneVis v -> declHead >#< _t_c_params     >#< type_caller_visit nt_ v-                          ManyVis  -> declHead >-< indent 3 visitcons-                    ) _allstates-                   {-# LINE 1205 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule82 #-}-   {-# LINE 588 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule82 = \ _genwrap _wr_inhs1 ->-                   {-# LINE 588 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   _genwrap     "inh" _wr_inhs1-                   {-# LINE 1211 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule83 #-}-   {-# LINE 589 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule83 = \ _genwrap _wr_syns ->-                   {-# LINE 589 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   _genwrap     "syn" _wr_syns-                   {-# LINE 1217 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule84 #-}-   {-# LINE 590 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule84 = \ _t_params nt_ ->-                   {-# LINE 590 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   \nm attrs ->-                     "and" >#< _t_params     >#< nm >|< "_" >|< nt_ >#< "=" >#< ppRecordTp-                       [ i >|< "_" >|< nm >|< "_" >|< nt_ >#< ":" >#< ppTp t | (i,t) <- attrs ]-                   {-# LINE 1225 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule85 #-}-   {-# LINE 594 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule85 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->-                   {-# LINE 594 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   fromJust $ Map.lookup nt_ _lhsIinhmap-                   {-# LINE 1231 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule86 #-}-   {-# LINE 595 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule86 = \ _inhAttrs _wr_filter ->-                   {-# LINE 595 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   Map.toList $ _wr_filter     $ _inhAttrs-                   {-# LINE 1237 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule87 #-}-   {-# LINE 596 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule87 = \ _inhAttrs ->-                   {-# LINE 596 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   Map.toList _inhAttrs-                   {-# LINE 1243 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule88 #-}-   {-# LINE 597 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule88 = \ ((_lhsIoptions) :: Options) ->-                    {-# LINE 597 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    if kennedyWarren _lhsIoptions && lateHigherOrderBinding _lhsIoptions-                    then Map.delete idLateBindingAttr-                    else id-                    {-# LINE 1251 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule89 #-}-   {-# LINE 600 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule89 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->-                   {-# LINE 600 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   Map.toList $ fromJust $ Map.lookup nt_ _lhsIsynmap-                   {-# LINE 1257 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule90 #-}-   {-# LINE 602 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule90 = \ nt_ ->-                   {-# LINE 602 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   text ("wrap_" ++ show nt_)-                   {-# LINE 1263 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule91 #-}-   {-# LINE 603 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule91 = \ nt_ ->-                   {-# LINE 603 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   text ("inh_" ++ show nt_)-                   {-# LINE 1269 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule92 #-}-   {-# LINE 604 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule92 = \ nt_ ->-                   {-# LINE 604 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   text ("syn_" ++ show nt_)-                   {-# LINE 1275 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule93 #-}-   {-# LINE 605 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule93 = \ initial_ nextVisits_ ->-                         {-# LINE 605 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         Map.findWithDefault ManyVis initial_ nextVisits_-                         {-# LINE 1281 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule94 #-}-   {-# LINE 607 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule94 = \ _t_params _t_type ->-                       {-# LINE 607 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       _t_params     >#< _t_type-                       {-# LINE 1287 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule95 #-}-   {-# LINE 608 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule95 = \ _inhname _t_params ->-                       {-# LINE 608 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       _t_params     >#< _inhname-                       {-# LINE 1293 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule96 #-}-   {-# LINE 609 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule96 = \ ((_lhsIoptions) :: Options) _wr_inhs1 nt_ ->-                       {-# LINE 609 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       ppRecordVal [ i >|< "_inh_" >|< nt_ >#< "=" >#< lhsname _lhsIoptions True i | (i,_) <- _wr_inhs1     ]-                       {-# LINE 1299 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule97 #-}-   {-# LINE 610 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule97 = \ _synname _t_params ->-                    {-# LINE 610 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    _t_params     >#< _synname-                    {-# LINE 1305 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule98 #-}-   {-# LINE 611 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule98 = \ _o_sigs _wrapArgInhTp _wrapArgPats _wrapArgSemTp _wrapResTp _wrapname _wrapperPreamble ->-                   {-# LINE 611 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   "and" >#< ppFunDecl _o_sigs     _wrapname     [(pp "act", _wrapArgSemTp    ), (_wrapArgPats    , _wrapArgInhTp    )] _wrapResTp     _wrapperPreamble-                   {-# LINE 1311 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule99 #-}-   {-# LINE 613 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule99 = \ ((_lhsImainName) :: String) ((_lhsIoptions) :: Options) _wrapperBody ->-        {-# LINE 613 "./src-ag/ExecutionPlan2Caml.ag" #-}-        ( if lateHigherOrderBinding _lhsIoptions-          then "let" >#< lhsname _lhsIoptions True idLateBindingAttr >#< "=" >#< lateBindingFieldNm _lhsImainName >#< "in"-          else empty-        )-        >-< _wrapperBody-        {-# LINE 1321 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule100 #-}-   {-# LINE 619 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule100 = \ _firstVisitInfo ((_lhsIoptions) :: Options) _wr_inhs _wr_syns initial_ initialv_ nt_ ->-        {-# LINE 619 "./src-ag/ExecutionPlan2Caml.ag" #-}-        case initialv_ of-          Nothing -> text "{ }"-          Just initv ->-            let attach  = "let" >#< "sem" >#< "=" >#< "act." >|< nm_attach nt_ >#< "()" >#< "in"-                pat     = ppRecordVal [ nm_outarg i nt_ initv >#< "=" >#< lhsname _lhsIoptions False i | (i,_) <- _wr_syns     ]-                bld     = ppRecordVal [ i >|< "_syn_" >|< nt_ >#< "=" >#< lhsname _lhsIoptions False i | (i,_) <- _wr_syns     ]-                res     = "let res = function" >#< pat >#< "->" >#< bld >#< "in"-                inps    = "let" >#< "inps" >#< "=" >#< ppRecordVal [ nm_inarg i nt_ initv >#< "=" >#< lhsname _lhsIoptions True i | (i,_) <- _wr_inhs     ] >#< "in"-                arg     = "let" >#< "arg" >#< "=" >#< argcon >#< argrec >#< "in"-                argcon  = case _firstVisitInfo     of-                            ManyVis -> con_visit nt_ initv-                            _       -> empty-                argrec  = ppRecordVal-                            [ nm_inh nt_ initv >#< "=" >#<  "inps"-                            , nm_cont nt_ initv >#< "=" >#< "res"-                            ]-                invoke  = "sem." >|< nm_invoke nt_ initial_ >#< "arg"-            in attach >-< res >-< inps >-< arg >-< invoke-        {-# LINE 1344 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule101 #-}-   {-# LINE 648 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule101 = \ ((_prodsIsemFunBndDefs) :: Seq PP_Doc) _semFunBndDef ->-                        {-# LINE 648 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        _semFunBndDef     Seq.<| _prodsIsemFunBndDefs-                        {-# LINE 1350 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule102 #-}-   {-# LINE 649 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule102 = \ ((_prodsIsemFunBndTps) :: Seq PP_Doc) _semFunBndTp ->-                        {-# LINE 649 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        _semFunBndTp     Seq.<| _prodsIsemFunBndTps-                        {-# LINE 1356 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule103 #-}-   {-# LINE 650 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule103 = \ _semFunBndNm _semname ->-                        {-# LINE 650 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        _semFunBndNm     >#< "=" >#< _semname-                        {-# LINE 1362 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule104 #-}-   {-# LINE 651 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule104 = \ _semFunBndNm _sem_tp ->-                        {-# LINE 651 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        _semFunBndNm     >#< ":" >#< _sem_tp-                        {-# LINE 1368 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule105 #-}-   {-# LINE 652 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule105 = \ nt_ ->-                        {-# LINE 652 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        lateSemNtLabel nt_-                        {-# LINE 1374 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule106 #-}-   {-# LINE 682 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule106 = \ initial_ ->-                      {-# LINE 682 "./src-ag/ExecutionPlan2Caml.ag" #-}-                      initial_-                      {-# LINE 1380 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule107 #-}-   {-# LINE 683 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule107 = \ _allstates ->-                      {-# LINE 683 "./src-ag/ExecutionPlan2Caml.ag" #-}-                      _allstates-                      {-# LINE 1386 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule108 #-}-   {-# LINE 1390 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule108 = \ nextVisits_ ->-                       {-# LINE 1390 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       nextVisits_-                       {-# LINE 1392 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule109 #-}-   {-# LINE 1391 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule109 = \ prevVisits_ ->-                       {-# LINE 1391 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       prevVisits_-                       {-# LINE 1398 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule110 #-}-   {-# LINE 1435 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule110 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) nt_ ->-                           {-# LINE 1435 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           Map.findWithDefault Map.empty nt_ _lhsIlocalAttrTypes-                           {-# LINE 1404 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule111 #-}-   {-# LINE 1462 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule111 = \ initial_ nt_ ->-                     {-# LINE 1462 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     Map.singleton nt_ initial_-                     {-# LINE 1410 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule112 #-}-   {-# LINE 1476 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule112 = \ nt_ params_ ->-                 {-# LINE 1476 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 NT nt_ (map show params_) False-                 {-# LINE 1416 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule113 #-}-   rule113 = \ ((_prodsIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _prodsIchildvisit-   {-# INLINE rule114 #-}-   rule114 = \ ((_prodsIerrors) :: Seq Error) ->-     _prodsIerrors-   {-# INLINE rule115 #-}-   rule115 = \ ((_prodsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _prodsIfromToStates-   {-# INLINE rule116 #-}-   rule116 = \ ((_prodsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _prodsIvisitKinds-   {-# INLINE rule117 #-}-   rule117 = \ ((_prodsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _prodsIvisitdefs-   {-# INLINE rule118 #-}-   rule118 = \ ((_prodsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _prodsIvisituses-   {-# INLINE rule119 #-}-   rule119 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule120 #-}-   rule120 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule121 #-}-   rule121 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule122 #-}-   rule122 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule123 #-}-   rule123 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule124 #-}-   rule124 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule125 #-}-   rule125 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule126 #-}-   rule126 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule127 #-}-   rule127 = \ _ntType ->-     _ntType-   {-# INLINE rule128 #-}-   rule128 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions---- ENonterminals -------------------------------------------------- wrapper-data Inh_ENonterminals  = Inh_ENonterminals { allFromToStates_Inh_ENonterminals :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminals :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminals :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminals :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), avisitdefs_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), inhmap_Inh_ENonterminals :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminals :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminals :: (String), mainName_Inh_ENonterminals :: (String), options_Inh_ENonterminals :: (Options), synmap_Inh_ENonterminals :: (Map NontermIdent Attributes), typeSyns_Inh_ENonterminals :: (TypeSyns), wrappers_Inh_ENonterminals :: (Set NontermIdent) }-data Syn_ENonterminals  = Syn_ENonterminals { childvisit_Syn_ENonterminals :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), code_Syn_ENonterminals :: (PP_Doc), datas_Syn_ENonterminals :: (PP_Doc), errors_Syn_ENonterminals :: (Seq Error), fromToStates_Syn_ENonterminals :: (Map VisitIdentifier (Int,Int)), initStates_Syn_ENonterminals :: (Map NontermIdent Int), modules_Syn_ENonterminals :: (PP_Doc), semFunBndDefs_Syn_ENonterminals :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminals :: (Seq PP_Doc), visitKinds_Syn_ENonterminals :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_ENonterminals #-}-wrap_ENonterminals :: T_ENonterminals  -> Inh_ENonterminals  -> (Syn_ENonterminals )-wrap_ENonterminals (T_ENonterminals act) (Inh_ENonterminals _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers-        (T_ENonterminals_vOut10 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminals_s11 sem arg)-        return (Syn_ENonterminals _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# NOINLINE sem_ENonterminals #-}-sem_ENonterminals :: ENonterminals  -> T_ENonterminals -sem_ENonterminals list = Prelude.foldr sem_ENonterminals_Cons sem_ENonterminals_Nil (Prelude.map sem_ENonterminal list)---- semantic domain-newtype T_ENonterminals  = T_ENonterminals {-                                           attach_T_ENonterminals :: Identity (T_ENonterminals_s11 )-                                           }-newtype T_ENonterminals_s11  = C_ENonterminals_s11 {-                                                   inv_ENonterminals_s11 :: (T_ENonterminals_v10 )-                                                   }-data T_ENonterminals_s12  = C_ENonterminals_s12-type T_ENonterminals_v10  = (T_ENonterminals_vIn10 ) -> (T_ENonterminals_vOut10 )-data T_ENonterminals_vIn10  = T_ENonterminals_vIn10 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes) (TypeSyns) (Set NontermIdent)-data T_ENonterminals_vOut10  = T_ENonterminals_vOut10 (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (PP_Doc) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_ENonterminals_Cons #-}-sem_ENonterminals_Cons :: T_ENonterminal  -> T_ENonterminals  -> T_ENonterminals -sem_ENonterminals_Cons arg_hd_ arg_tl_ = T_ENonterminals (return st11) where-   {-# NOINLINE st11 #-}-   st11 = let-      v10 :: T_ENonterminals_v10 -      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) -> ( let-         _hdX8 = Control.Monad.Identity.runIdentity (attach_T_ENonterminal (arg_hd_))-         _tlX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_tl_))-         (T_ENonterminal_vOut7 _hdIchildvisit _hdIcode _hdIdatas _hdIerrors _hdIfromToStates _hdIinitStates _hdImodules _hdIsemFunBndDefs _hdIsemFunBndTps _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_ENonterminal_s8 _hdX8 (T_ENonterminal_vIn7 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOinhmap _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOoptions _hdOsynmap _hdOtypeSyns _hdOwrappers)-         (T_ENonterminals_vOut10 _tlIchildvisit _tlIcode _tlIdatas _tlIerrors _tlIfromToStates _tlIinitStates _tlImodules _tlIsemFunBndDefs _tlIsemFunBndTps _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_ENonterminals_s11 _tlX11 (T_ENonterminals_vIn10 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOinhmap _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOoptions _tlOsynmap _tlOtypeSyns _tlOwrappers)-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)-         _lhsOchildvisit = rule129 _hdIchildvisit _tlIchildvisit-         _lhsOcode :: PP_Doc-         _lhsOcode = rule130 _hdIcode _tlIcode-         _lhsOdatas :: PP_Doc-         _lhsOdatas = rule131 _hdIdatas _tlIdatas-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule132 _hdIerrors _tlIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule133 _hdIfromToStates _tlIfromToStates-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule134 _hdIinitStates _tlIinitStates-         _lhsOmodules :: PP_Doc-         _lhsOmodules = rule135 _hdImodules _tlImodules-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule136 _hdIsemFunBndDefs _tlIsemFunBndDefs-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule137 _hdIsemFunBndTps _tlIsemFunBndTps-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule138 _hdIvisitKinds _tlIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule139 _hdIvisitdefs _tlIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule140 _hdIvisituses _tlIvisituses-         _hdOallFromToStates = rule141 _lhsIallFromToStates-         _hdOallInitStates = rule142 _lhsIallInitStates-         _hdOallVisitKinds = rule143 _lhsIallVisitKinds-         _hdOallchildvisit = rule144 _lhsIallchildvisit-         _hdOavisitdefs = rule145 _lhsIavisitdefs-         _hdOavisituses = rule146 _lhsIavisituses-         _hdOinhmap = rule147 _lhsIinhmap-         _hdOlocalAttrTypes = rule148 _lhsIlocalAttrTypes-         _hdOmainFile = rule149 _lhsImainFile-         _hdOmainName = rule150 _lhsImainName-         _hdOoptions = rule151 _lhsIoptions-         _hdOsynmap = rule152 _lhsIsynmap-         _hdOtypeSyns = rule153 _lhsItypeSyns-         _hdOwrappers = rule154 _lhsIwrappers-         _tlOallFromToStates = rule155 _lhsIallFromToStates-         _tlOallInitStates = rule156 _lhsIallInitStates-         _tlOallVisitKinds = rule157 _lhsIallVisitKinds-         _tlOallchildvisit = rule158 _lhsIallchildvisit-         _tlOavisitdefs = rule159 _lhsIavisitdefs-         _tlOavisituses = rule160 _lhsIavisituses-         _tlOinhmap = rule161 _lhsIinhmap-         _tlOlocalAttrTypes = rule162 _lhsIlocalAttrTypes-         _tlOmainFile = rule163 _lhsImainFile-         _tlOmainName = rule164 _lhsImainName-         _tlOoptions = rule165 _lhsIoptions-         _tlOsynmap = rule166 _lhsIsynmap-         _tlOtypeSyns = rule167 _lhsItypeSyns-         _tlOwrappers = rule168 _lhsIwrappers-         __result_ = T_ENonterminals_vOut10 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminals_s11 v10-   {-# INLINE rule129 #-}-   rule129 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _hdIchildvisit `Map.union` _tlIchildvisit-   {-# INLINE rule130 #-}-   rule130 = \ ((_hdIcode) :: PP_Doc) ((_tlIcode) :: PP_Doc) ->-     _hdIcode >-< _tlIcode-   {-# INLINE rule131 #-}-   rule131 = \ ((_hdIdatas) :: PP_Doc) ((_tlIdatas) :: PP_Doc) ->-     _hdIdatas >-< _tlIdatas-   {-# INLINE rule132 #-}-   rule132 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule133 #-}-   rule133 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _hdIfromToStates `mappend` _tlIfromToStates-   {-# INLINE rule134 #-}-   rule134 = \ ((_hdIinitStates) :: Map NontermIdent Int) ((_tlIinitStates) :: Map NontermIdent Int) ->-     _hdIinitStates `mappend` _tlIinitStates-   {-# INLINE rule135 #-}-   rule135 = \ ((_hdImodules) :: PP_Doc) ((_tlImodules) :: PP_Doc) ->-     _hdImodules >-< _tlImodules-   {-# INLINE rule136 #-}-   rule136 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->-     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs-   {-# INLINE rule137 #-}-   rule137 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->-     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps-   {-# INLINE rule138 #-}-   rule138 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule139 #-}-   rule139 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs-   {-# INLINE rule140 #-}-   rule140 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisituses `uwSetUnion` _tlIvisituses-   {-# INLINE rule141 #-}-   rule141 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule142 #-}-   rule142 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule143 #-}-   rule143 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule144 #-}-   rule144 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule145 #-}-   rule145 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule146 #-}-   rule146 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule147 #-}-   rule147 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule148 #-}-   rule148 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule149 #-}-   rule149 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule150 #-}-   rule150 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule151 #-}-   rule151 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule152 #-}-   rule152 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap-   {-# INLINE rule153 #-}-   rule153 = \ ((_lhsItypeSyns) :: TypeSyns) ->-     _lhsItypeSyns-   {-# INLINE rule154 #-}-   rule154 = \ ((_lhsIwrappers) :: Set NontermIdent) ->-     _lhsIwrappers-   {-# INLINE rule155 #-}-   rule155 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule156 #-}-   rule156 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule157 #-}-   rule157 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule158 #-}-   rule158 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule159 #-}-   rule159 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule160 #-}-   rule160 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule161 #-}-   rule161 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule162 #-}-   rule162 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule163 #-}-   rule163 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule164 #-}-   rule164 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule165 #-}-   rule165 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule166 #-}-   rule166 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap-   {-# INLINE rule167 #-}-   rule167 = \ ((_lhsItypeSyns) :: TypeSyns) ->-     _lhsItypeSyns-   {-# INLINE rule168 #-}-   rule168 = \ ((_lhsIwrappers) :: Set NontermIdent) ->-     _lhsIwrappers-{-# NOINLINE sem_ENonterminals_Nil #-}-sem_ENonterminals_Nil ::  T_ENonterminals -sem_ENonterminals_Nil  = T_ENonterminals (return st11) where-   {-# NOINLINE st11 #-}-   st11 = let-      v10 :: T_ENonterminals_v10 -      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) -> ( let-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)-         _lhsOchildvisit = rule169  ()-         _lhsOcode :: PP_Doc-         _lhsOcode = rule170  ()-         _lhsOdatas :: PP_Doc-         _lhsOdatas = rule171  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule172  ()-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule173  ()-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule174  ()-         _lhsOmodules :: PP_Doc-         _lhsOmodules = rule175  ()-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule176  ()-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule177  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule178  ()-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule179  ()-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule180  ()-         __result_ = T_ENonterminals_vOut10 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminals_s11 v10-   {-# INLINE rule169 #-}-   rule169 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule170 #-}-   rule170 = \  (_ :: ()) ->-     empty-   {-# INLINE rule171 #-}-   rule171 = \  (_ :: ()) ->-     empty-   {-# INLINE rule172 #-}-   rule172 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule173 #-}-   rule173 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule174 #-}-   rule174 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule175 #-}-   rule175 = \  (_ :: ()) ->-     empty-   {-# INLINE rule176 #-}-   rule176 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule177 #-}-   rule177 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule178 #-}-   rule178 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule179 #-}-   rule179 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule180 #-}-   rule180 = \  (_ :: ()) ->-     Map.empty---- EProduction ---------------------------------------------------- wrapper-data Inh_EProduction  = Inh_EProduction { allFromToStates_Inh_EProduction :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProduction :: (Map NontermIdent Attributes), allInitStates_Inh_EProduction :: (Map NontermIdent Int), allSynmap_Inh_EProduction :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProduction :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProduction :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), allstates_Inh_EProduction :: ([StateIdentifier]), avisitdefs_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), inhmap_Inh_EProduction :: (Attributes), initial_Inh_EProduction :: (StateIdentifier), localAttrTypes_Inh_EProduction :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProduction :: (String), mainName_Inh_EProduction :: (String), nextVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), nt_Inh_EProduction :: (NontermIdent), ntType_Inh_EProduction :: (Type), options_Inh_EProduction :: (Options), params_Inh_EProduction :: ([Identifier]), prevVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), rename_Inh_EProduction :: (Bool), synmap_Inh_EProduction :: (Attributes) }-data Syn_EProduction  = Syn_EProduction { allvisits_Syn_EProduction :: ([VisitStateState]), childvisit_Syn_EProduction :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), count_Syn_EProduction :: (Int), datatype_Syn_EProduction :: (PP_Doc), datatype_call_Syn_EProduction :: (PP_Doc), datatype_con_Syn_EProduction :: (PP_Doc), errors_Syn_EProduction :: (Seq Error), fromToStates_Syn_EProduction :: (Map VisitIdentifier (Int,Int)), semFunBndDefs_Syn_EProduction :: (Seq PP_Doc), semFunBndTps_Syn_EProduction :: (Seq PP_Doc), sem_nt_Syn_EProduction :: (PP_Doc), sem_prod_Syn_EProduction :: (PP_Doc), t_visits_Syn_EProduction :: (PP_Doc), visitKinds_Syn_EProduction :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_EProduction #-}-wrap_EProduction :: T_EProduction  -> Inh_EProduction  -> (Syn_EProduction )-wrap_EProduction (T_EProduction act) (Inh_EProduction _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap-        (T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProduction_s14 sem arg)-        return (Syn_EProduction _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_EProduction #-}-sem_EProduction :: EProduction  -> T_EProduction -sem_EProduction ( EProduction con_ params_ constraints_ rules_ children_ visits_ ) = sem_EProduction_EProduction con_ params_ constraints_ ( sem_ERules rules_ ) ( sem_EChildren children_ ) ( sem_Visits visits_ )---- semantic domain-newtype T_EProduction  = T_EProduction {-                                       attach_T_EProduction :: Identity (T_EProduction_s14 )-                                       }-newtype T_EProduction_s14  = C_EProduction_s14 {-                                               inv_EProduction_s14 :: (T_EProduction_v13 )-                                               }-data T_EProduction_s15  = C_EProduction_s15-type T_EProduction_v13  = (T_EProduction_vIn13 ) -> (T_EProduction_vOut13 )-data T_EProduction_vIn13  = T_EProduction_vIn13 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ([StateIdentifier]) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Bool) (Attributes)-data T_EProduction_vOut13  = T_EProduction_vOut13 ([VisitStateState]) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Int) (PP_Doc) (PP_Doc) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_EProduction_EProduction #-}-sem_EProduction_EProduction :: (ConstructorIdent) -> ([Identifier]) -> ([Type]) -> T_ERules  -> T_EChildren  -> T_Visits  -> T_EProduction -sem_EProduction_EProduction arg_con_ arg_params_ _ arg_rules_ arg_children_ arg_visits_ = T_EProduction (return st14) where-   {-# NOINLINE st14 #-}-   st14 = let-      v13 :: T_EProduction_v13 -      v13 = \ (T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) -> ( let-         _rulesX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_rules_))-         _childrenX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_children_))-         _visitsX56 = Control.Monad.Identity.runIdentity (attach_T_Visits (arg_visits_))-         (T_ERules_vOut22 _rulesIerrors _rulesImrules _rulesIruledefs _rulesIruleuses _rulesIsem_rules) = inv_ERules_s23 _rulesX23 (T_ERules_vIn22 _rulesOallInhmap _rulesOallSynmap _rulesOchildTypes _rulesOcon _rulesOinhmap _rulesOlazyIntras _rulesOlocalAttrTypes _rulesOmainFile _rulesOmainName _rulesOnt _rulesOoptions _rulesOruleKinds _rulesOsynmap _rulesOusageInfo)-         (T_EChildren_vOut4 _childrenIargnamesw _childrenIchildTypes _childrenIchildintros _childrenIsigs _childrenIterminaldefs) = inv_EChildren_s5 _childrenX5 (T_EChildren_vIn4 _childrenOallInitStates _childrenOcon _childrenOmainFile _childrenOmainName _childrenOnt _childrenOoptions)-         (T_Visits_vOut55 _visitsIallvisits _visitsIchildvisit _visitsIerrors _visitsIfromToStates _visitsIintramap _visitsIlazyIntras _visitsIruleKinds _visitsIruleUsage _visitsIsem_visit _visitsIt_visits _visitsIvisitKinds _visitsIvisitdefs _visitsIvisituses) = inv_Visits_s56 _visitsX56 (T_Visits_vIn55 _visitsOallFromToStates _visitsOallInhmap _visitsOallInitStates _visitsOallSynmap _visitsOallVisitKinds _visitsOallchildvisit _visitsOallintramap _visitsOavisitdefs _visitsOavisituses _visitsOchildTypes _visitsOchildintros _visitsOcon _visitsOinhmap _visitsOmrules _visitsOnextVisits _visitsOnt _visitsOoptions _visitsOparams _visitsOprevVisits _visitsOruledefs _visitsOruleuses _visitsOsynmap _visitsOterminaldefs)-         _childrenOcon = rule181 arg_con_-         _rulesOcon = rule182 arg_con_-         _visitsOcon = rule183 arg_con_-         _o_records = rule184 _lhsIoptions-         _t_params = rule185 _lhsIparams-         _t_c_params = rule186 arg_params_-         _conname = rule187 _lhsInt _lhsIrename arg_con_-         _recname = rule188 _conname-         _lhsOdatatype :: PP_Doc-         _lhsOdatatype = rule189 _childrenIsigs _o_records _recname _t_params-         _lhsOdatatype_call :: PP_Doc-         _lhsOdatatype_call = rule190 _conname _recname _t_params-         _lhsOdatatype_con :: PP_Doc-         _lhsOdatatype_con = rule191 _childrenIsigs _conname _lhsInt _o_records _o_sigs _t_params arg_con_-         _lhsOcount :: Int-         _lhsOcount = rule192  ()-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule193 _childrenIargnamesw _childrenIsigs _lhsInt _lhsIoptions _lhsIrename _o_records arg_con_-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule194 _semFunBndDef-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule195 _semFunBndTp-         _semFunBndDef = rule196 _semFunBndNm _semname-         _semFunBndTp = rule197 _semFunBndNm _sem_tp-         _semFunBndNm = rule198 _lhsInt arg_con_-         _o_sigs = rule199 _lhsIoptions-         _t_type = rule200 _lhsInt-         _semname = rule201 _lhsInt _lhsIoptions arg_con_-         _sem_res_tp = rule202 _t_params _t_type-         _sem_tp = rule203 _childrenIsigs _sem_res_tp-         _initializer = rule204  ()-         _sem_prod = rule205 _childrenIsigs _o_sigs _prod_body _sem_res_tp _semname-         _prod_body = rule206 _initializer _lhsIinitial _lhsInt _rulesIsem_rules _statefuns arg_con_-         _statefuns = rule207 _genstfn _lhsIallstates-         _genstfn = rule208 _lhsIinitial _lhsInextVisits _lhsInt _stargs _stks _stvs-         _stargs = rule209 _childTypes _lhsIallInhmap _lhsIallSynmap _lhsIoptions _localAttrTypes _visitsIintramap-         _stvisits = rule210 _visitsIallvisits-         _stks = rule211 _lhsInextVisits _lhsInt _stvisits _t_c_params arg_con_-         _stvs = rule212 _visitsIsem_visit-         _visitsOmrules = rule213 _rulesImrules-         _visitsOchildintros = rule214 _childrenIchildintros-         _rulesOusageInfo = rule215 _visitsIruleUsage-         _rulesOruleKinds = rule216 _visitsIruleKinds-         _visitsOallintramap = rule217 _visitsIintramap-         _visitsOterminaldefs = rule218 _childrenIterminaldefs-         _visitsOruledefs = rule219 _rulesIruledefs-         _visitsOruleuses = rule220 _rulesIruleuses-         _lazyIntras = rule221 _visitsIlazyIntras-         _childTypes = rule222 _childrenIchildTypes _lhsIntType-         _localAttrTypes = rule223 _lhsIlocalAttrTypes arg_con_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)-         _lhsOchildvisit = rule224 _visitsIchildvisit-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule225 _rulesIerrors _visitsIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule226 _visitsIfromToStates-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule227 _visitsIt_visits-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule228 _visitsIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule229 _visitsIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule230 _visitsIvisituses-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule231 _visitsIallvisits-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule232 _sem_prod-         _rulesOallInhmap = rule233 _lhsIallInhmap-         _rulesOallSynmap = rule234 _lhsIallSynmap-         _rulesOchildTypes = rule235 _childTypes-         _rulesOinhmap = rule236 _lhsIinhmap-         _rulesOlazyIntras = rule237 _lazyIntras-         _rulesOlocalAttrTypes = rule238 _localAttrTypes-         _rulesOmainFile = rule239 _lhsImainFile-         _rulesOmainName = rule240 _lhsImainName-         _rulesOnt = rule241 _lhsInt-         _rulesOoptions = rule242 _lhsIoptions-         _rulesOsynmap = rule243 _lhsIsynmap-         _childrenOallInitStates = rule244 _lhsIallInitStates-         _childrenOmainFile = rule245 _lhsImainFile-         _childrenOmainName = rule246 _lhsImainName-         _childrenOnt = rule247 _lhsInt-         _childrenOoptions = rule248 _lhsIoptions-         _visitsOallFromToStates = rule249 _lhsIallFromToStates-         _visitsOallInhmap = rule250 _lhsIallInhmap-         _visitsOallInitStates = rule251 _lhsIallInitStates-         _visitsOallSynmap = rule252 _lhsIallSynmap-         _visitsOallVisitKinds = rule253 _lhsIallVisitKinds-         _visitsOallchildvisit = rule254 _lhsIallchildvisit-         _visitsOavisitdefs = rule255 _lhsIavisitdefs-         _visitsOavisituses = rule256 _lhsIavisituses-         _visitsOchildTypes = rule257 _childTypes-         _visitsOinhmap = rule258 _lhsIinhmap-         _visitsOnextVisits = rule259 _lhsInextVisits-         _visitsOnt = rule260 _lhsInt-         _visitsOoptions = rule261 _lhsIoptions-         _visitsOparams = rule262 _lhsIparams-         _visitsOprevVisits = rule263 _lhsIprevVisits-         _visitsOsynmap = rule264 _lhsIsynmap-         __result_ = T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProduction_s14 v13-   {-# INLINE rule181 #-}-   {-# LINE 90 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule181 = \ con_ ->-                                               {-# LINE 90 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                               con_-                                               {-# LINE 1904 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule182 #-}-   {-# LINE 91 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule182 = \ con_ ->-                   {-# LINE 91 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   con_-                   {-# LINE 1910 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule183 #-}-   {-# LINE 92 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule183 = \ con_ ->-                   {-# LINE 92 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   con_-                   {-# LINE 1916 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule184 #-}-   {-# LINE 259 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule184 = \ ((_lhsIoptions) :: Options) ->-                    {-# LINE 259 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    dataRecords _lhsIoptions-                    {-# LINE 1922 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule185 #-}-   {-# LINE 260 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule185 = \ ((_lhsIparams) :: [Identifier]) ->-                   {-# LINE 260 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   ppTypeParams _lhsIparams-                   {-# LINE 1928 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule186 #-}-   {-# LINE 261 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule186 = \ params_ ->-                     {-# LINE 261 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     ppTypeParams (cont_tvar : map pp params_)-                     {-# LINE 1934 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule187 #-}-   {-# LINE 262 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule187 = \ ((_lhsInt) :: NontermIdent) ((_lhsIrename) :: Bool) con_ ->-                  {-# LINE 262 "./src-ag/ExecutionPlan2Caml.ag" #-}-                  conname _lhsIrename _lhsInt con_-                  {-# LINE 1940 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule188 #-}-   {-# LINE 263 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule188 = \ _conname ->-                  {-# LINE 263 "./src-ag/ExecutionPlan2Caml.ag" #-}-                  pp "fields_" >|< _conname-                  {-# LINE 1946 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule189 #-}-   {-# LINE 264 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule189 = \ ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) _o_records _recname _t_params ->-                   {-# LINE 264 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   "and" >#< _t_params     >#< _recname     >#< "="-                   >#< ppFieldsType _o_records     False _childrenIsigs-                   {-# LINE 1953 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule190 #-}-   {-# LINE 266 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule190 = \ _conname _recname _t_params ->-                        {-# LINE 266 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        pp "|" >#< _conname     >#< "of" >#< pp_parens (_t_params     >#< _recname    )-                        {-# LINE 1959 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule191 #-}-   {-# LINE 268 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule191 = \ ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) _conname ((_lhsInt) :: NontermIdent) _o_records _o_sigs _t_params con_ ->-        {-# LINE 268 "./src-ag/ExecutionPlan2Caml.ag" #-}-        let funNm  = _lhsInt >|< "_" >|< con_-            decl   = "and" >#< ppFunDecl _o_sigs     funNm params (_t_params     >#< _lhsInt) body-            params = [ (x, t) | (_,x,_,t) <- _childrenIsigs ]-            body   = _conname     >#< ppFieldsVal _o_records     _childrenIsigs-        in decl-        {-# LINE 1969 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule192 #-}-   {-# LINE 384 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule192 = \  (_ :: ()) ->-                                              {-# LINE 384 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                              1-                                              {-# LINE 1975 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule193 #-}-   {-# LINE 389 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule193 = \ ((_childrenIargnamesw) :: [PP_Doc]) ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIrename) :: Bool) _o_records con_ ->-                 {-# LINE 389 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 "|" >#< conname _lhsIrename _lhsInt con_ >#< ppFieldsVal _o_records     _childrenIsigs >#< "->" >#<-                   prefix _lhsIoptions >|< _lhsInt >|< "_" >|< con_ >#< ppSpaced _childrenIargnamesw-                 {-# LINE 1982 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule194 #-}-   {-# LINE 655 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule194 = \ _semFunBndDef ->-                        {-# LINE 655 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        Seq.singleton _semFunBndDef-                        {-# LINE 1988 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule195 #-}-   {-# LINE 656 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule195 = \ _semFunBndTp ->-                        {-# LINE 656 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        Seq.singleton _semFunBndTp-                        {-# LINE 1994 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule196 #-}-   {-# LINE 657 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule196 = \ _semFunBndNm _semname ->-                        {-# LINE 657 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        _semFunBndNm     >#< "=" >#< _semname-                        {-# LINE 2000 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule197 #-}-   {-# LINE 658 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule197 = \ _semFunBndNm _sem_tp ->-                        {-# LINE 658 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        _semFunBndNm     >#< ":" >#< _sem_tp-                        {-# LINE 2006 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule198 #-}-   {-# LINE 659 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule198 = \ ((_lhsInt) :: NontermIdent) con_ ->-                        {-# LINE 659 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        lateSemConLabel _lhsInt con_-                        {-# LINE 2012 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule199 #-}-   {-# LINE 686 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule199 = \ ((_lhsIoptions) :: Options) ->-                     {-# LINE 686 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     typeSigs _lhsIoptions-                     {-# LINE 2018 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule200 #-}-   {-# LINE 687 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule200 = \ ((_lhsInt) :: NontermIdent) ->-                     {-# LINE 687 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     type_nt_sem_top _lhsInt-                     {-# LINE 2024 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule201 #-}-   {-# LINE 688 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule201 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) con_ ->-                     {-# LINE 688 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     prefix _lhsIoptions >|< _lhsInt >|< "_" >|< con_-                     {-# LINE 2030 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule202 #-}-   {-# LINE 689 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule202 = \ _t_params _t_type ->-                     {-# LINE 689 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     _t_params     >#< _t_type-                     {-# LINE 2036 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule203 #-}-   {-# LINE 690 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule203 = \ ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) _sem_res_tp ->-                     {-# LINE 690 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     pp_block "" "" "->" [ d | (_,_,d,_) <- _childrenIsigs ] >#< "->" >#< _sem_res_tp-                     {-# LINE 2042 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule204 #-}-   {-# LINE 693 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule204 = \  (_ :: ()) ->-        {-# LINE 693 "./src-ag/ExecutionPlan2Caml.ag" #-}-        empty-        {-# LINE 2048 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule205 #-}-   {-# LINE 699 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule205 = \ ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) _o_sigs _prod_body _sem_res_tp _semname ->-                    {-# LINE 699 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    "and" >#< ppFunDecl _o_sigs     _semname     [ (x,d) | (_,x,d,_) <- _childrenIsigs ] _sem_res_tp     _prod_body-                    {-# LINE 2054 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule206 #-}-   {-# LINE 701 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule206 = \ _initializer ((_lhsIinitial) :: StateIdentifier) ((_lhsInt) :: NontermIdent) ((_rulesIsem_rules) :: PP_Doc) _statefuns con_ ->-        {-# LINE 701 "./src-ag/ExecutionPlan2Caml.ag" #-}-        _initializer-        >-< "{" >#< nm_attach _lhsInt >#< "=" >#< "function () ->"-        >-< indent 2-            (   "(* rules of production" >#< con_ >#< "*)"-            >-< _rulesIsem_rules-            >-< "(* states of production" >#< con_ >#< "*)"-            >-< vlist _statefuns-            >-< nm_st _lhsIinitial-            )-        >#< "}"-        {-# LINE 2069 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule207 #-}-   {-# LINE 717 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule207 = \ _genstfn ((_lhsIallstates) :: [StateIdentifier]) ->-                    {-# LINE 717 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    map _genstfn     _lhsIallstates-                    {-# LINE 2075 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule208 #-}-   {-# LINE 719 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule208 = \ ((_lhsIinitial) :: StateIdentifier) ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ((_lhsInt) :: NontermIdent) _stargs _stks _stvs ->-        {-# LINE 719 "./src-ag/ExecutionPlan2Caml.ag" #-}-        \st -> let nextVisitInfo = Map.findWithDefault ManyVis st _lhsInextVisits-                   stNm = nm_st st-                   stDef body = "let" >#< stNm >#< (if st == _lhsIinitial then empty else _stargs     st) >#< "="-                                >-< indent 2 body >#< "in"-               in case nextVisitInfo of-                    NoneVis ->-                               if st == _lhsIinitial-                               then stDef (pp "unit")-                               else empty-                    _       -> stDef $ mklets (_stvs     st ++ _stks     st) $ ppRecordVal-                                 [ nm_invoke _lhsInt st >#< "=" >#< nm_k st ]-        {-# LINE 2091 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule209 #-}-   {-# LINE 739 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule209 = \ _childTypes ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIoptions) :: Options) _localAttrTypes ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->-        {-# LINE 739 "./src-ag/ExecutionPlan2Caml.ag" #-}-        \st -> let attrs = maybe Map.empty id $ Map.lookup st _visitsIintramap in ppSpaced-                 [ case mbAttr of-                     Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->-                       case Map.lookup nm _localAttrTypes     of-                         Just tp -> pp_parens (strNm >#< ":" >#< ppTp tp)-                         Nothing -> pp strNm-                     Just attr | not (noPerStateTypeSigs _lhsIoptions) ->-                       case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _childTypes     of-                         Just tpDoc -> pp_parens (strNm >#< ":" >#< tpDoc)-                         Nothing    -> pp strNm-                     _ -> pp strNm-                 | (strNm, mbAttr) <- Map.assocs attrs-                 ] >#< dummyPat _lhsIoptions (Map.null attrs)-        {-# LINE 2109 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule210 #-}-   {-# LINE 754 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule210 = \ ((_visitsIallvisits) :: [VisitStateState]) ->-                   {-# LINE 754 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   \st -> filter (\(_,f,_) -> f == st) _visitsIallvisits-                   {-# LINE 2115 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule211 #-}-   {-# LINE 756 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule211 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ((_lhsInt) :: NontermIdent) _stvisits _t_c_params con_ ->-        {-# LINE 756 "./src-ag/ExecutionPlan2Caml.ag" #-}-        \st -> let stvisits = _stvisits     st-                   def = ppFunDecl False                   (pp $ nm_k st)-                           [(pp "arg", _t_c_params     >#< type_caller _lhsInt st)] (pp cont_tvar) body-                   nextVisitInfo = Map.findWithDefault ManyVis st _lhsInextVisits-                   body = case nextVisitInfo of-                     NoneVis  -> text "?no next visit?"-                     OneVis v -> dispatch "arg" v-                     ManyVis  -> let alt (v,_,_) = "|" >#< con_visit _lhsInt v >#< "chosen" >#< "->" >-< indent 2 (dispatch "chosen" v)-                                 in "match arg with" >-< (indent 2 $ vlist $ map alt stvisits)-                   dispatch nm v = "let" >#< ppRecordVal-                                     [ nm_inh _lhsInt v >#< "=" >#< "inp"-                                     , nm_cont _lhsInt v >#< "=" >#< "cont" ]-                                   >#< "=" >#< pp nm-                                   >-< "in" >#< "cont" >#< pp_parens (nm_visit v >#< "inp")-               in if null stvisits-                  then []-                  else [ "(* k-function for production" >#< con_ >#< " *)" >-< def ]-        {-# LINE 2137 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule212 #-}-   {-# LINE 777 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule212 = \ ((_visitsIsem_visit) ::  [(StateIdentifier,PP_Doc)] ) ->-               {-# LINE 777 "./src-ag/ExecutionPlan2Caml.ag" #-}-               \st -> [ppf | (f,ppf) <- _visitsIsem_visit, f == st]-               {-# LINE 2143 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule213 #-}-   {-# LINE 778 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule213 = \ ((_rulesImrules) :: Map Identifier (VisitKind -> Either Error PP_Doc)) ->-                    {-# LINE 778 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    _rulesImrules-                    {-# LINE 2149 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule214 #-}-   {-# LINE 919 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule214 = \ ((_childrenIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-                         {-# LINE 919 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         _childrenIchildintros-                         {-# LINE 2155 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule215 #-}-   {-# LINE 1225 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule215 = \ ((_visitsIruleUsage) :: Map Identifier Int) ->-                                                   {-# LINE 1225 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                                   _visitsIruleUsage-                                                   {-# LINE 2161 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule216 #-}-   {-# LINE 1240 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule216 = \ ((_visitsIruleKinds) :: Map Identifier (Set VisitKind)) ->-                      {-# LINE 1240 "./src-ag/ExecutionPlan2Caml.ag" #-}-                      _visitsIruleKinds-                      {-# LINE 2167 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule217 #-}-   {-# LINE 1269 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule217 = \ ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->-                          {-# LINE 1269 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          _visitsIintramap-                          {-# LINE 2173 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule218 #-}-   {-# LINE 1270 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule218 = \ ((_childrenIterminaldefs) :: Set String) ->-                          {-# LINE 1270 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          _childrenIterminaldefs-                          {-# LINE 2179 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule219 #-}-   {-# LINE 1294 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule219 = \ ((_rulesIruledefs) :: Map Identifier (Set String)) ->-                                    {-# LINE 1294 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                    _rulesIruledefs-                                    {-# LINE 2185 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule220 #-}-   {-# LINE 1295 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule220 = \ ((_rulesIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-                                    {-# LINE 1295 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                    _rulesIruleuses-                                    {-# LINE 2191 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule221 #-}-   {-# LINE 1349 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule221 = \ ((_visitsIlazyIntras) :: Set String) ->-                     {-# LINE 1349 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     _visitsIlazyIntras-                     {-# LINE 2197 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule222 #-}-   {-# LINE 1421 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule222 = \ ((_childrenIchildTypes) :: Map Identifier Type) ((_lhsIntType) :: Type) ->-                     {-# LINE 1421 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     Map.singleton _LHS _lhsIntType `Map.union` _childrenIchildTypes-                     {-# LINE 2203 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule223 #-}-   {-# LINE 1438 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule223 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) con_ ->-                           {-# LINE 1438 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           Map.findWithDefault Map.empty con_ _lhsIlocalAttrTypes-                           {-# LINE 2209 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule224 #-}-   rule224 = \ ((_visitsIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _visitsIchildvisit-   {-# INLINE rule225 #-}-   rule225 = \ ((_rulesIerrors) :: Seq Error) ((_visitsIerrors) :: Seq Error) ->-     _rulesIerrors Seq.>< _visitsIerrors-   {-# INLINE rule226 #-}-   rule226 = \ ((_visitsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _visitsIfromToStates-   {-# INLINE rule227 #-}-   rule227 = \ ((_visitsIt_visits) :: PP_Doc) ->-     _visitsIt_visits-   {-# INLINE rule228 #-}-   rule228 = \ ((_visitsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _visitsIvisitKinds-   {-# INLINE rule229 #-}-   rule229 = \ ((_visitsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _visitsIvisitdefs-   {-# INLINE rule230 #-}-   rule230 = \ ((_visitsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _visitsIvisituses-   {-# INLINE rule231 #-}-   rule231 = \ ((_visitsIallvisits) :: [VisitStateState]) ->-     _visitsIallvisits-   {-# INLINE rule232 #-}-   rule232 = \ _sem_prod ->-     _sem_prod-   {-# INLINE rule233 #-}-   rule233 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule234 #-}-   rule234 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule235 #-}-   rule235 = \ _childTypes ->-     _childTypes-   {-# INLINE rule236 #-}-   rule236 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule237 #-}-   rule237 = \ _lazyIntras ->-     _lazyIntras-   {-# INLINE rule238 #-}-   rule238 = \ _localAttrTypes ->-     _localAttrTypes-   {-# INLINE rule239 #-}-   rule239 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule240 #-}-   rule240 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule241 #-}-   rule241 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule242 #-}-   rule242 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule243 #-}-   rule243 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule244 #-}-   rule244 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule245 #-}-   rule245 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule246 #-}-   rule246 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule247 #-}-   rule247 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule248 #-}-   rule248 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule249 #-}-   rule249 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule250 #-}-   rule250 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule251 #-}-   rule251 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule252 #-}-   rule252 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule253 #-}-   rule253 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule254 #-}-   rule254 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule255 #-}-   rule255 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule256 #-}-   rule256 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule257 #-}-   rule257 = \ _childTypes ->-     _childTypes-   {-# INLINE rule258 #-}-   rule258 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule259 #-}-   rule259 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule260 #-}-   rule260 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule261 #-}-   rule261 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule262 #-}-   rule262 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule263 #-}-   rule263 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule264 #-}-   rule264 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap---- EProductions --------------------------------------------------- wrapper-data Inh_EProductions  = Inh_EProductions { allFromToStates_Inh_EProductions :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProductions :: (Map NontermIdent Attributes), allInitStates_Inh_EProductions :: (Map NontermIdent Int), allSynmap_Inh_EProductions :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProductions :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProductions :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), allstates_Inh_EProductions :: ([StateIdentifier]), avisitdefs_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), inhmap_Inh_EProductions :: (Attributes), initial_Inh_EProductions :: (StateIdentifier), localAttrTypes_Inh_EProductions :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProductions :: (String), mainName_Inh_EProductions :: (String), nextVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), nt_Inh_EProductions :: (NontermIdent), ntType_Inh_EProductions :: (Type), options_Inh_EProductions :: (Options), params_Inh_EProductions :: ([Identifier]), prevVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), rename_Inh_EProductions :: (Bool), synmap_Inh_EProductions :: (Attributes) }-data Syn_EProductions  = Syn_EProductions { allvisits_Syn_EProductions :: ([VisitStateState]), childvisit_Syn_EProductions :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), count_Syn_EProductions :: (Int), datatype_Syn_EProductions :: ([PP_Doc]), datatype_call_Syn_EProductions :: ([PP_Doc]), datatype_con_Syn_EProductions :: ([PP_Doc]), errors_Syn_EProductions :: (Seq Error), fromToStates_Syn_EProductions :: (Map VisitIdentifier (Int,Int)), semFunBndDefs_Syn_EProductions :: (Seq PP_Doc), semFunBndTps_Syn_EProductions :: (Seq PP_Doc), sem_nt_Syn_EProductions :: (PP_Doc), sem_prod_Syn_EProductions :: (PP_Doc), t_visits_Syn_EProductions :: (PP_Doc), visitKinds_Syn_EProductions :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_EProductions #-}-wrap_EProductions :: T_EProductions  -> Inh_EProductions  -> (Syn_EProductions )-wrap_EProductions (T_EProductions act) (Inh_EProductions _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap-        (T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProductions_s17 sem arg)-        return (Syn_EProductions _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# NOINLINE sem_EProductions #-}-sem_EProductions :: EProductions  -> T_EProductions -sem_EProductions list = Prelude.foldr sem_EProductions_Cons sem_EProductions_Nil (Prelude.map sem_EProduction list)---- semantic domain-newtype T_EProductions  = T_EProductions {-                                         attach_T_EProductions :: Identity (T_EProductions_s17 )-                                         }-newtype T_EProductions_s17  = C_EProductions_s17 {-                                                 inv_EProductions_s17 :: (T_EProductions_v16 )-                                                 }-data T_EProductions_s18  = C_EProductions_s18-type T_EProductions_v16  = (T_EProductions_vIn16 ) -> (T_EProductions_vOut16 )-data T_EProductions_vIn16  = T_EProductions_vIn16 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ([StateIdentifier]) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Bool) (Attributes)-data T_EProductions_vOut16  = T_EProductions_vOut16 ([VisitStateState]) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Int) ([PP_Doc]) ([PP_Doc]) ([PP_Doc]) (Seq Error) (Map VisitIdentifier (Int,Int)) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_EProductions_Cons #-}-sem_EProductions_Cons :: T_EProduction  -> T_EProductions  -> T_EProductions -sem_EProductions_Cons arg_hd_ arg_tl_ = T_EProductions (return st17) where-   {-# NOINLINE st17 #-}-   st17 = let-      v16 :: T_EProductions_v16 -      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) -> ( let-         _hdX14 = Control.Monad.Identity.runIdentity (attach_T_EProduction (arg_hd_))-         _tlX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_tl_))-         (T_EProduction_vOut13 _hdIallvisits _hdIchildvisit _hdIcount _hdIdatatype _hdIdatatype_call _hdIdatatype_con _hdIerrors _hdIfromToStates _hdIsemFunBndDefs _hdIsemFunBndTps _hdIsem_nt _hdIsem_prod _hdIt_visits _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_EProduction_s14 _hdX14 (T_EProduction_vIn13 _hdOallFromToStates _hdOallInhmap _hdOallInitStates _hdOallSynmap _hdOallVisitKinds _hdOallchildvisit _hdOallstates _hdOavisitdefs _hdOavisituses _hdOinhmap _hdOinitial _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOnextVisits _hdOnt _hdOntType _hdOoptions _hdOparams _hdOprevVisits _hdOrename _hdOsynmap)-         (T_EProductions_vOut16 _tlIallvisits _tlIchildvisit _tlIcount _tlIdatatype _tlIdatatype_call _tlIdatatype_con _tlIerrors _tlIfromToStates _tlIsemFunBndDefs _tlIsemFunBndTps _tlIsem_nt _tlIsem_prod _tlIt_visits _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_EProductions_s17 _tlX17 (T_EProductions_vIn16 _tlOallFromToStates _tlOallInhmap _tlOallInitStates _tlOallSynmap _tlOallVisitKinds _tlOallchildvisit _tlOallstates _tlOavisitdefs _tlOavisituses _tlOinhmap _tlOinitial _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOnextVisits _tlOnt _tlOntType _tlOoptions _tlOparams _tlOprevVisits _tlOrename _tlOsynmap)-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule265 _hdIallvisits-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule266 _hdIt_visits-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)-         _lhsOchildvisit = rule267 _hdIchildvisit _tlIchildvisit-         _lhsOcount :: Int-         _lhsOcount = rule268 _hdIcount _tlIcount-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule269 _hdIdatatype _tlIdatatype-         _lhsOdatatype_call :: [PP_Doc]-         _lhsOdatatype_call = rule270 _hdIdatatype_call _tlIdatatype_call-         _lhsOdatatype_con :: [PP_Doc]-         _lhsOdatatype_con = rule271 _hdIdatatype_con _tlIdatatype_con-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule272 _hdIerrors _tlIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule273 _hdIfromToStates _tlIfromToStates-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule274 _hdIsemFunBndDefs _tlIsemFunBndDefs-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule275 _hdIsemFunBndTps _tlIsemFunBndTps-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule276 _hdIsem_nt _tlIsem_nt-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule277 _hdIsem_prod _tlIsem_prod-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule278 _hdIvisitKinds _tlIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule279 _hdIvisitdefs _tlIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule280 _hdIvisituses _tlIvisituses-         _hdOallFromToStates = rule281 _lhsIallFromToStates-         _hdOallInhmap = rule282 _lhsIallInhmap-         _hdOallInitStates = rule283 _lhsIallInitStates-         _hdOallSynmap = rule284 _lhsIallSynmap-         _hdOallVisitKinds = rule285 _lhsIallVisitKinds-         _hdOallchildvisit = rule286 _lhsIallchildvisit-         _hdOallstates = rule287 _lhsIallstates-         _hdOavisitdefs = rule288 _lhsIavisitdefs-         _hdOavisituses = rule289 _lhsIavisituses-         _hdOinhmap = rule290 _lhsIinhmap-         _hdOinitial = rule291 _lhsIinitial-         _hdOlocalAttrTypes = rule292 _lhsIlocalAttrTypes-         _hdOmainFile = rule293 _lhsImainFile-         _hdOmainName = rule294 _lhsImainName-         _hdOnextVisits = rule295 _lhsInextVisits-         _hdOnt = rule296 _lhsInt-         _hdOntType = rule297 _lhsIntType-         _hdOoptions = rule298 _lhsIoptions-         _hdOparams = rule299 _lhsIparams-         _hdOprevVisits = rule300 _lhsIprevVisits-         _hdOrename = rule301 _lhsIrename-         _hdOsynmap = rule302 _lhsIsynmap-         _tlOallFromToStates = rule303 _lhsIallFromToStates-         _tlOallInhmap = rule304 _lhsIallInhmap-         _tlOallInitStates = rule305 _lhsIallInitStates-         _tlOallSynmap = rule306 _lhsIallSynmap-         _tlOallVisitKinds = rule307 _lhsIallVisitKinds-         _tlOallchildvisit = rule308 _lhsIallchildvisit-         _tlOallstates = rule309 _lhsIallstates-         _tlOavisitdefs = rule310 _lhsIavisitdefs-         _tlOavisituses = rule311 _lhsIavisituses-         _tlOinhmap = rule312 _lhsIinhmap-         _tlOinitial = rule313 _lhsIinitial-         _tlOlocalAttrTypes = rule314 _lhsIlocalAttrTypes-         _tlOmainFile = rule315 _lhsImainFile-         _tlOmainName = rule316 _lhsImainName-         _tlOnextVisits = rule317 _lhsInextVisits-         _tlOnt = rule318 _lhsInt-         _tlOntType = rule319 _lhsIntType-         _tlOoptions = rule320 _lhsIoptions-         _tlOparams = rule321 _lhsIparams-         _tlOprevVisits = rule322 _lhsIprevVisits-         _tlOrename = rule323 _lhsIrename-         _tlOsynmap = rule324 _lhsIsynmap-         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProductions_s17 v16-   {-# INLINE rule265 #-}-   {-# LINE 439 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule265 = \ ((_hdIallvisits) :: [VisitStateState]) ->-                           {-# LINE 439 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           _hdIallvisits-                           {-# LINE 2459 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule266 #-}-   {-# LINE 534 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule266 = \ ((_hdIt_visits) :: PP_Doc) ->-                   {-# LINE 534 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   _hdIt_visits-                   {-# LINE 2465 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule267 #-}-   rule267 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _hdIchildvisit `Map.union` _tlIchildvisit-   {-# INLINE rule268 #-}-   rule268 = \ ((_hdIcount) :: Int) ((_tlIcount) :: Int) ->-     _hdIcount + _tlIcount-   {-# INLINE rule269 #-}-   rule269 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->-     _hdIdatatype : _tlIdatatype-   {-# INLINE rule270 #-}-   rule270 = \ ((_hdIdatatype_call) :: PP_Doc) ((_tlIdatatype_call) :: [PP_Doc]) ->-     _hdIdatatype_call : _tlIdatatype_call-   {-# INLINE rule271 #-}-   rule271 = \ ((_hdIdatatype_con) :: PP_Doc) ((_tlIdatatype_con) :: [PP_Doc]) ->-     _hdIdatatype_con : _tlIdatatype_con-   {-# INLINE rule272 #-}-   rule272 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule273 #-}-   rule273 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _hdIfromToStates `mappend` _tlIfromToStates-   {-# INLINE rule274 #-}-   rule274 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->-     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs-   {-# INLINE rule275 #-}-   rule275 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->-     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps-   {-# INLINE rule276 #-}-   rule276 = \ ((_hdIsem_nt) :: PP_Doc) ((_tlIsem_nt) :: PP_Doc) ->-     _hdIsem_nt >-< _tlIsem_nt-   {-# INLINE rule277 #-}-   rule277 = \ ((_hdIsem_prod) :: PP_Doc) ((_tlIsem_prod) :: PP_Doc) ->-     _hdIsem_prod >-< _tlIsem_prod-   {-# INLINE rule278 #-}-   rule278 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule279 #-}-   rule279 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs-   {-# INLINE rule280 #-}-   rule280 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisituses `uwSetUnion` _tlIvisituses-   {-# INLINE rule281 #-}-   rule281 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule282 #-}-   rule282 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule283 #-}-   rule283 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule284 #-}-   rule284 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule285 #-}-   rule285 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule286 #-}-   rule286 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule287 #-}-   rule287 = \ ((_lhsIallstates) :: [StateIdentifier]) ->-     _lhsIallstates-   {-# INLINE rule288 #-}-   rule288 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule289 #-}-   rule289 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule290 #-}-   rule290 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule291 #-}-   rule291 = \ ((_lhsIinitial) :: StateIdentifier) ->-     _lhsIinitial-   {-# INLINE rule292 #-}-   rule292 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule293 #-}-   rule293 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule294 #-}-   rule294 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule295 #-}-   rule295 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule296 #-}-   rule296 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule297 #-}-   rule297 = \ ((_lhsIntType) :: Type) ->-     _lhsIntType-   {-# INLINE rule298 #-}-   rule298 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule299 #-}-   rule299 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule300 #-}-   rule300 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule301 #-}-   rule301 = \ ((_lhsIrename) :: Bool) ->-     _lhsIrename-   {-# INLINE rule302 #-}-   rule302 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule303 #-}-   rule303 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule304 #-}-   rule304 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule305 #-}-   rule305 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule306 #-}-   rule306 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule307 #-}-   rule307 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule308 #-}-   rule308 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule309 #-}-   rule309 = \ ((_lhsIallstates) :: [StateIdentifier]) ->-     _lhsIallstates-   {-# INLINE rule310 #-}-   rule310 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule311 #-}-   rule311 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule312 #-}-   rule312 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule313 #-}-   rule313 = \ ((_lhsIinitial) :: StateIdentifier) ->-     _lhsIinitial-   {-# INLINE rule314 #-}-   rule314 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule315 #-}-   rule315 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule316 #-}-   rule316 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule317 #-}-   rule317 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule318 #-}-   rule318 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule319 #-}-   rule319 = \ ((_lhsIntType) :: Type) ->-     _lhsIntType-   {-# INLINE rule320 #-}-   rule320 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule321 #-}-   rule321 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule322 #-}-   rule322 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule323 #-}-   rule323 = \ ((_lhsIrename) :: Bool) ->-     _lhsIrename-   {-# INLINE rule324 #-}-   rule324 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_EProductions_Nil #-}-sem_EProductions_Nil ::  T_EProductions -sem_EProductions_Nil  = T_EProductions (return st17) where-   {-# NOINLINE st17 #-}-   st17 = let-      v16 :: T_EProductions_v16 -      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) -> ( let-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule325  ()-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)-         _lhsOchildvisit = rule326  ()-         _lhsOcount :: Int-         _lhsOcount = rule327  ()-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule328  ()-         _lhsOdatatype_call :: [PP_Doc]-         _lhsOdatatype_call = rule329  ()-         _lhsOdatatype_con :: [PP_Doc]-         _lhsOdatatype_con = rule330  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule331  ()-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule332  ()-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule333  ()-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule334  ()-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule335  ()-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule336  ()-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule337  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule338  ()-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule339  ()-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule340  ()-         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProductions_s17 v16-   {-# INLINE rule325 #-}-   {-# LINE 440 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule325 = \  (_ :: ()) ->-                           {-# LINE 440 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           error "Every nonterminal should have at least 1 production"-                           {-# LINE 2687 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule326 #-}-   rule326 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule327 #-}-   rule327 = \  (_ :: ()) ->-     0-   {-# INLINE rule328 #-}-   rule328 = \  (_ :: ()) ->-     []-   {-# INLINE rule329 #-}-   rule329 = \  (_ :: ()) ->-     []-   {-# INLINE rule330 #-}-   rule330 = \  (_ :: ()) ->-     []-   {-# INLINE rule331 #-}-   rule331 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule332 #-}-   rule332 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule333 #-}-   rule333 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule334 #-}-   rule334 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule335 #-}-   rule335 = \  (_ :: ()) ->-     empty-   {-# INLINE rule336 #-}-   rule336 = \  (_ :: ()) ->-     empty-   {-# INLINE rule337 #-}-   rule337 = \  (_ :: ()) ->-     empty-   {-# INLINE rule338 #-}-   rule338 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule339 #-}-   rule339 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule340 #-}-   rule340 = \  (_ :: ()) ->-     Map.empty---- ERule ---------------------------------------------------------- wrapper-data Inh_ERule  = Inh_ERule { allInhmap_Inh_ERule :: (Map NontermIdent Attributes), allSynmap_Inh_ERule :: (Map NontermIdent Attributes), childTypes_Inh_ERule :: (Map Identifier Type), con_Inh_ERule :: (ConstructorIdent), inhmap_Inh_ERule :: (Attributes), lazyIntras_Inh_ERule :: (Set String), localAttrTypes_Inh_ERule :: (Map Identifier Type), mainFile_Inh_ERule :: (String), mainName_Inh_ERule :: (String), nt_Inh_ERule :: (NontermIdent), options_Inh_ERule :: (Options), ruleKinds_Inh_ERule :: (Map Identifier (Set VisitKind)), synmap_Inh_ERule :: (Attributes), usageInfo_Inh_ERule :: (Map Identifier Int) }-data Syn_ERule  = Syn_ERule { errors_Syn_ERule :: (Seq Error), mrules_Syn_ERule :: (Map Identifier (VisitKind -> Either Error PP_Doc)), ruledefs_Syn_ERule :: (Map Identifier (Set String)), ruleuses_Syn_ERule :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERule :: (PP_Doc) }-{-# INLINABLE wrap_ERule #-}-wrap_ERule :: T_ERule  -> Inh_ERule  -> (Syn_ERule )-wrap_ERule (T_ERule act) (Inh_ERule _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo-        (T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules) <- return (inv_ERule_s20 sem arg)-        return (Syn_ERule _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules)-   )---- cata-{-# INLINE sem_ERule #-}-sem_ERule :: ERule  -> T_ERule -sem_ERule ( ERule name_ pattern_ rhs_ owrt_ origin_ explicit_ pure_ mbError_ ) = sem_ERule_ERule name_ ( sem_Pattern pattern_ ) ( sem_Expression rhs_ ) owrt_ origin_ explicit_ pure_ mbError_---- semantic domain-newtype T_ERule  = T_ERule {-                           attach_T_ERule :: Identity (T_ERule_s20 )-                           }-newtype T_ERule_s20  = C_ERule_s20 {-                                   inv_ERule_s20 :: (T_ERule_v19 )-                                   }-data T_ERule_s21  = C_ERule_s21-type T_ERule_v19  = (T_ERule_vIn19 ) -> (T_ERule_vOut19 )-data T_ERule_vIn19  = T_ERule_vIn19 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (Attributes) (Set String) (Map Identifier Type) (String) (String) (NontermIdent) (Options) (Map Identifier (Set VisitKind)) (Attributes) (Map Identifier Int)-data T_ERule_vOut19  = T_ERule_vOut19 (Seq Error) (Map Identifier (VisitKind -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc)-{-# NOINLINE sem_ERule_ERule #-}-sem_ERule_ERule :: (Identifier) -> T_Pattern  -> T_Expression  -> (Bool) -> (String) -> (Bool) -> (Bool) -> (Maybe Error) -> T_ERule -sem_ERule_ERule arg_name_ arg_pattern_ arg_rhs_ _ _ arg_explicit_ arg_pure_ arg_mbError_ = T_ERule (return st20) where-   {-# NOINLINE st20 #-}-   st20 = let-      v19 :: T_ERule_v19 -      v19 = \ (T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) -> ( let-         _patternX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pattern_))-         _rhsX29 = Control.Monad.Identity.runIdentity (attach_T_Expression (arg_rhs_))-         (T_Pattern_vOut40 _patternIattrTypes _patternIattrs _patternIcopy _patternIextraDefs _patternIisUnderscore _patternIsem_lhs) = inv_Pattern_s41 _patternX41 (T_Pattern_vIn40 _patternOallInhmap _patternOallSynmap _patternOanyLazyKind _patternOinhmap _patternOlocalAttrTypes _patternOoptions _patternOsynmap)-         (T_Expression_vOut28 _rhsIattrs _rhsIpos _rhsIsemfunc _rhsItks) = inv_Expression_s29 _rhsX29 (T_Expression_vIn28 _rhsOoptions)-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule341 _rulecode _used-         _rulecode = rule342 _declHead _endpragma _genpragma _pragma _rhsIpos _rhsIsemfunc-         _pragma = rule343 _lhsIoptions _rhsIpos-         _endpragma = rule344 _lhsImainFile _lhsIoptions-         _genpragma = rule345 _haspos _lhsIoptions arg_explicit_-         _haspos = rule346 _rhsIpos-         _declHead = rule347 _argPats _lhsIoptions _rhsIattrs arg_name_-         _argPats = rule348 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIlocalAttrTypes _lhsIoptions _rhsIattrs-         _argExprs = rule349 _rhsIattrs-         _stepcode = rule350 _argExprs _lhsIoptions _patternIextraDefs _patternIsem_lhs _rhsIattrs arg_name_ arg_pure_-         _lhsOmrules :: Map Identifier (VisitKind -> Either Error PP_Doc)-         _lhsOmrules = rule351 _stepcode arg_name_-         _used = rule352 _lhsIusageInfo arg_name_-         _kinds = rule353 _lhsIruleKinds arg_name_-         _anyLazyKind = rule354 _kinds-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule355 _patternIattrs arg_name_-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule356 _rhsIattrs arg_name_-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule357 _used arg_mbError_-         _patternOallInhmap = rule358 _lhsIallInhmap-         _patternOallSynmap = rule359 _lhsIallSynmap-         _patternOanyLazyKind = rule360 _anyLazyKind-         _patternOinhmap = rule361 _lhsIinhmap-         _patternOlocalAttrTypes = rule362 _lhsIlocalAttrTypes-         _patternOoptions = rule363 _lhsIoptions-         _patternOsynmap = rule364 _lhsIsynmap-         _rhsOoptions = rule365 _lhsIoptions-         __result_ = T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules-         in __result_ )-     in C_ERule_s20 v19-   {-# INLINE rule341 #-}-   {-# LINE 977 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule341 = \ _rulecode _used ->-                          {-# LINE 977 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          if _used     == 0-                          then empty-                          else _rulecode-                          {-# LINE 2815 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule342 #-}-   {-# LINE 980 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule342 = \ _declHead _endpragma _genpragma _pragma ((_rhsIpos) :: Pos) ((_rhsIsemfunc) :: PP_Doc) ->-                          {-# LINE 980 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          ( if _genpragma-                            then _pragma-                            else empty-                          )-                          >-< _declHead-                          >-< indent ((column _rhsIpos - 2) `max` 2)-                                ( if _genpragma-                                  then _pragma     >-< _rhsIsemfunc >-< _endpragma-                                  else _rhsIsemfunc-                                )-                          >#< "in"-                          {-# LINE 2831 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule343 #-}-   {-# LINE 993 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule343 = \ ((_lhsIoptions) :: Options) ((_rhsIpos) :: Pos) ->-                           {-# LINE 993 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           ppLinePragma _lhsIoptions (line _rhsIpos) (file _rhsIpos)-                           {-# LINE 2837 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule344 #-}-   {-# LINE 994 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule344 = \ ((_lhsImainFile) :: String) ((_lhsIoptions) :: Options) ->-                           {-# LINE 994 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           ppWithLineNr (\ln -> ppLinePragma _lhsIoptions (ln+1) _lhsImainFile)-                           {-# LINE 2843 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule345 #-}-   {-# LINE 995 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule345 = \ _haspos ((_lhsIoptions) :: Options) explicit_ ->-                           {-# LINE 995 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           genLinePragmas _lhsIoptions && explicit_ && _haspos-                           {-# LINE 2849 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule346 #-}-   {-# LINE 996 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule346 = \ ((_rhsIpos) :: Pos) ->-                           {-# LINE 996 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           line _rhsIpos > 0 && column _rhsIpos >= 0 && not (null (file _rhsIpos))-                           {-# LINE 2855 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule347 #-}-   {-# LINE 1000 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule347 = \ _argPats ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->-                       {-# LINE 1000 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       "let" >#< name_ >#< _argPats     >#< dummyPat _lhsIoptions (Map.null _rhsIattrs) >#< "="-                       {-# LINE 2861 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule348 #-}-   {-# LINE 1002 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule348 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIchildTypes) :: Map Identifier Type) ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->-            {-# LINE 1002 "./src-ag/ExecutionPlan2Caml.ag" #-}-            ppSpaced-              [ case mbAttr of-                  Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->-                    case Map.lookup nm _lhsIlocalAttrTypes of-                      Just tp -> pp_parens (strNm >#< ":" >#< ppTp tp)-                      Nothing -> pp strNm-                  Just attr | not (noPerStateTypeSigs _lhsIoptions) ->-                    case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes of-                      Just tpDoc -> pp_parens (strNm >#< ":" >#< tpDoc)-                      Nothing    -> pp strNm-                  _ -> pp strNm-              | (strNm, mbAttr) <- Map.assocs _rhsIattrs-              ]-            {-# LINE 2879 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule349 #-}-   {-# LINE 1016 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule349 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->-                       {-# LINE 1016 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       ppSpaced $ Map.keys _rhsIattrs-                       {-# LINE 2885 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule350 #-}-   {-# LINE 1017 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule350 = \ _argExprs ((_lhsIoptions) :: Options) ((_patternIextraDefs) :: [(PP_Doc,PP_Doc)]) ((_patternIsem_lhs) ::  PP_Doc ) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ pure_ ->-                       {-# LINE 1017 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       \kind ->-                         let mkBind (pat,expr) = "let" >#< pat >#< "=" >#< expr >#< "in"-                         in if kind `compatibleRule` pure_-                            then Right $ mkBind (_patternIsem_lhs, name_ >#< _argExprs     >#< dummyArg _lhsIoptions (Map.null _rhsIattrs))-                                         >-< vlist (map mkBind _patternIextraDefs)-                            else Left $ IncompatibleRuleKind name_ kind-                       {-# LINE 2896 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule351 #-}-   {-# LINE 1024 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule351 = \ _stepcode name_ ->-                       {-# LINE 1024 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       Map.singleton name_ _stepcode-                       {-# LINE 2902 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule352 #-}-   {-# LINE 1227 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule352 = \ ((_lhsIusageInfo) :: Map Identifier Int) name_ ->-                                                 {-# LINE 1227 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                                 Map.findWithDefault 0 name_ _lhsIusageInfo-                                                 {-# LINE 2908 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule353 #-}-   {-# LINE 1243 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule353 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) name_ ->-                {-# LINE 1243 "./src-ag/ExecutionPlan2Caml.ag" #-}-                Map.findWithDefault Set.empty name_ _lhsIruleKinds-                {-# LINE 2914 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule354 #-}-   {-# LINE 1244 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule354 = \ _kinds ->-                      {-# LINE 1244 "./src-ag/ExecutionPlan2Caml.ag" #-}-                      Set.fold (\k r -> isLazyKind k || r) False _kinds-                      {-# LINE 2920 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule355 #-}-   {-# LINE 1290 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule355 = \ ((_patternIattrs) :: Set String) name_ ->-                           {-# LINE 1290 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           Map.singleton name_ _patternIattrs-                           {-# LINE 2926 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule356 #-}-   {-# LINE 1291 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule356 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->-                           {-# LINE 1291 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           Map.singleton name_ _rhsIattrs-                           {-# LINE 2932 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule357 #-}-   {-# LINE 1485 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule357 = \ _used mbError_ ->-                 {-# LINE 1485 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 case mbError_ of-                   Just e | _used     > 0 -> Seq.singleton e-                   _                      -> Seq.empty-                 {-# LINE 2940 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule358 #-}-   rule358 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule359 #-}-   rule359 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule360 #-}-   rule360 = \ _anyLazyKind ->-     _anyLazyKind-   {-# INLINE rule361 #-}-   rule361 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule362 #-}-   rule362 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule363 #-}-   rule363 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule364 #-}-   rule364 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule365 #-}-   rule365 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions---- ERules --------------------------------------------------------- wrapper-data Inh_ERules  = Inh_ERules { allInhmap_Inh_ERules :: (Map NontermIdent Attributes), allSynmap_Inh_ERules :: (Map NontermIdent Attributes), childTypes_Inh_ERules :: (Map Identifier Type), con_Inh_ERules :: (ConstructorIdent), inhmap_Inh_ERules :: (Attributes), lazyIntras_Inh_ERules :: (Set String), localAttrTypes_Inh_ERules :: (Map Identifier Type), mainFile_Inh_ERules :: (String), mainName_Inh_ERules :: (String), nt_Inh_ERules :: (NontermIdent), options_Inh_ERules :: (Options), ruleKinds_Inh_ERules :: (Map Identifier (Set VisitKind)), synmap_Inh_ERules :: (Attributes), usageInfo_Inh_ERules :: (Map Identifier Int) }-data Syn_ERules  = Syn_ERules { errors_Syn_ERules :: (Seq Error), mrules_Syn_ERules :: (Map Identifier (VisitKind -> Either Error PP_Doc)), ruledefs_Syn_ERules :: (Map Identifier (Set String)), ruleuses_Syn_ERules :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERules :: (PP_Doc) }-{-# INLINABLE wrap_ERules #-}-wrap_ERules :: T_ERules  -> Inh_ERules  -> (Syn_ERules )-wrap_ERules (T_ERules act) (Inh_ERules _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo-        (T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules) <- return (inv_ERules_s23 sem arg)-        return (Syn_ERules _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules)-   )---- cata-{-# NOINLINE sem_ERules #-}-sem_ERules :: ERules  -> T_ERules -sem_ERules list = Prelude.foldr sem_ERules_Cons sem_ERules_Nil (Prelude.map sem_ERule list)---- semantic domain-newtype T_ERules  = T_ERules {-                             attach_T_ERules :: Identity (T_ERules_s23 )-                             }-newtype T_ERules_s23  = C_ERules_s23 {-                                     inv_ERules_s23 :: (T_ERules_v22 )-                                     }-data T_ERules_s24  = C_ERules_s24-type T_ERules_v22  = (T_ERules_vIn22 ) -> (T_ERules_vOut22 )-data T_ERules_vIn22  = T_ERules_vIn22 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (Attributes) (Set String) (Map Identifier Type) (String) (String) (NontermIdent) (Options) (Map Identifier (Set VisitKind)) (Attributes) (Map Identifier Int)-data T_ERules_vOut22  = T_ERules_vOut22 (Seq Error) (Map Identifier (VisitKind -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc)-{-# NOINLINE sem_ERules_Cons #-}-sem_ERules_Cons :: T_ERule  -> T_ERules  -> T_ERules -sem_ERules_Cons arg_hd_ arg_tl_ = T_ERules (return st23) where-   {-# NOINLINE st23 #-}-   st23 = let-      v22 :: T_ERules_v22 -      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) -> ( let-         _hdX20 = Control.Monad.Identity.runIdentity (attach_T_ERule (arg_hd_))-         _tlX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_tl_))-         (T_ERule_vOut19 _hdIerrors _hdImrules _hdIruledefs _hdIruleuses _hdIsem_rules) = inv_ERule_s20 _hdX20 (T_ERule_vIn19 _hdOallInhmap _hdOallSynmap _hdOchildTypes _hdOcon _hdOinhmap _hdOlazyIntras _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOnt _hdOoptions _hdOruleKinds _hdOsynmap _hdOusageInfo)-         (T_ERules_vOut22 _tlIerrors _tlImrules _tlIruledefs _tlIruleuses _tlIsem_rules) = inv_ERules_s23 _tlX23 (T_ERules_vIn22 _tlOallInhmap _tlOallSynmap _tlOchildTypes _tlOcon _tlOinhmap _tlOlazyIntras _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOnt _tlOoptions _tlOruleKinds _tlOsynmap _tlOusageInfo)-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule366 _hdIerrors _tlIerrors-         _lhsOmrules :: Map Identifier (VisitKind -> Either Error PP_Doc)-         _lhsOmrules = rule367 _hdImrules _tlImrules-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule368 _hdIruledefs _tlIruledefs-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule369 _hdIruleuses _tlIruleuses-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule370 _hdIsem_rules _tlIsem_rules-         _hdOallInhmap = rule371 _lhsIallInhmap-         _hdOallSynmap = rule372 _lhsIallSynmap-         _hdOchildTypes = rule373 _lhsIchildTypes-         _hdOcon = rule374 _lhsIcon-         _hdOinhmap = rule375 _lhsIinhmap-         _hdOlazyIntras = rule376 _lhsIlazyIntras-         _hdOlocalAttrTypes = rule377 _lhsIlocalAttrTypes-         _hdOmainFile = rule378 _lhsImainFile-         _hdOmainName = rule379 _lhsImainName-         _hdOnt = rule380 _lhsInt-         _hdOoptions = rule381 _lhsIoptions-         _hdOruleKinds = rule382 _lhsIruleKinds-         _hdOsynmap = rule383 _lhsIsynmap-         _hdOusageInfo = rule384 _lhsIusageInfo-         _tlOallInhmap = rule385 _lhsIallInhmap-         _tlOallSynmap = rule386 _lhsIallSynmap-         _tlOchildTypes = rule387 _lhsIchildTypes-         _tlOcon = rule388 _lhsIcon-         _tlOinhmap = rule389 _lhsIinhmap-         _tlOlazyIntras = rule390 _lhsIlazyIntras-         _tlOlocalAttrTypes = rule391 _lhsIlocalAttrTypes-         _tlOmainFile = rule392 _lhsImainFile-         _tlOmainName = rule393 _lhsImainName-         _tlOnt = rule394 _lhsInt-         _tlOoptions = rule395 _lhsIoptions-         _tlOruleKinds = rule396 _lhsIruleKinds-         _tlOsynmap = rule397 _lhsIsynmap-         _tlOusageInfo = rule398 _lhsIusageInfo-         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules-         in __result_ )-     in C_ERules_s23 v22-   {-# INLINE rule366 #-}-   rule366 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule367 #-}-   rule367 = \ ((_hdImrules) :: Map Identifier (VisitKind -> Either Error PP_Doc)) ((_tlImrules) :: Map Identifier (VisitKind -> Either Error PP_Doc)) ->-     _hdImrules `Map.union` _tlImrules-   {-# INLINE rule368 #-}-   rule368 = \ ((_hdIruledefs) :: Map Identifier (Set String)) ((_tlIruledefs) :: Map Identifier (Set String)) ->-     _hdIruledefs `uwSetUnion` _tlIruledefs-   {-# INLINE rule369 #-}-   rule369 = \ ((_hdIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ((_tlIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _hdIruleuses `uwMapUnion` _tlIruleuses-   {-# INLINE rule370 #-}-   rule370 = \ ((_hdIsem_rules) :: PP_Doc) ((_tlIsem_rules) :: PP_Doc) ->-     _hdIsem_rules >-< _tlIsem_rules-   {-# INLINE rule371 #-}-   rule371 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule372 #-}-   rule372 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule373 #-}-   rule373 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule374 #-}-   rule374 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule375 #-}-   rule375 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule376 #-}-   rule376 = \ ((_lhsIlazyIntras) :: Set String) ->-     _lhsIlazyIntras-   {-# INLINE rule377 #-}-   rule377 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule378 #-}-   rule378 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule379 #-}-   rule379 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule380 #-}-   rule380 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule381 #-}-   rule381 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule382 #-}-   rule382 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _lhsIruleKinds-   {-# INLINE rule383 #-}-   rule383 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule384 #-}-   rule384 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->-     _lhsIusageInfo-   {-# INLINE rule385 #-}-   rule385 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule386 #-}-   rule386 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule387 #-}-   rule387 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule388 #-}-   rule388 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule389 #-}-   rule389 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule390 #-}-   rule390 = \ ((_lhsIlazyIntras) :: Set String) ->-     _lhsIlazyIntras-   {-# INLINE rule391 #-}-   rule391 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule392 #-}-   rule392 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule393 #-}-   rule393 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule394 #-}-   rule394 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule395 #-}-   rule395 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule396 #-}-   rule396 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _lhsIruleKinds-   {-# INLINE rule397 #-}-   rule397 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule398 #-}-   rule398 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->-     _lhsIusageInfo-{-# NOINLINE sem_ERules_Nil #-}-sem_ERules_Nil ::  T_ERules -sem_ERules_Nil  = T_ERules (return st23) where-   {-# NOINLINE st23 #-}-   st23 = let-      v22 :: T_ERules_v22 -      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) -> ( let-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule399  ()-         _lhsOmrules :: Map Identifier (VisitKind -> Either Error PP_Doc)-         _lhsOmrules = rule400  ()-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule401  ()-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule402  ()-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule403  ()-         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules-         in __result_ )-     in C_ERules_s23 v22-   {-# INLINE rule399 #-}-   rule399 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule400 #-}-   rule400 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule401 #-}-   rule401 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule402 #-}-   rule402 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule403 #-}-   rule403 = \  (_ :: ()) ->-     empty---- ExecutionPlan -------------------------------------------------- wrapper-data Inh_ExecutionPlan  = Inh_ExecutionPlan { inhmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), localAttrTypes_Inh_ExecutionPlan :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ExecutionPlan :: (String), mainName_Inh_ExecutionPlan :: (String), options_Inh_ExecutionPlan :: (Options), synmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes) }-data Syn_ExecutionPlan  = Syn_ExecutionPlan { code_Syn_ExecutionPlan :: (PP_Doc), datas_Syn_ExecutionPlan :: (PP_Doc), errors_Syn_ExecutionPlan :: (Seq Error), modules_Syn_ExecutionPlan :: (PP_Doc) }-{-# INLINABLE wrap_ExecutionPlan #-}-wrap_ExecutionPlan :: T_ExecutionPlan  -> Inh_ExecutionPlan  -> (Syn_ExecutionPlan )-wrap_ExecutionPlan (T_ExecutionPlan act) (Inh_ExecutionPlan _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ExecutionPlan_vIn25 _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap-        (T_ExecutionPlan_vOut25 _lhsOcode _lhsOdatas _lhsOerrors _lhsOmodules) <- return (inv_ExecutionPlan_s26 sem arg)-        return (Syn_ExecutionPlan _lhsOcode _lhsOdatas _lhsOerrors _lhsOmodules)-   )---- cata-{-# INLINE sem_ExecutionPlan #-}-sem_ExecutionPlan :: ExecutionPlan  -> T_ExecutionPlan -sem_ExecutionPlan ( ExecutionPlan nonts_ typeSyns_ wrappers_ derivings_ ) = sem_ExecutionPlan_ExecutionPlan ( sem_ENonterminals nonts_ ) typeSyns_ wrappers_ derivings_---- semantic domain-newtype T_ExecutionPlan  = T_ExecutionPlan {-                                           attach_T_ExecutionPlan :: Identity (T_ExecutionPlan_s26 )-                                           }-newtype T_ExecutionPlan_s26  = C_ExecutionPlan_s26 {-                                                   inv_ExecutionPlan_s26 :: (T_ExecutionPlan_v25 )-                                                   }-data T_ExecutionPlan_s27  = C_ExecutionPlan_s27-type T_ExecutionPlan_v25  = (T_ExecutionPlan_vIn25 ) -> (T_ExecutionPlan_vOut25 )-data T_ExecutionPlan_vIn25  = T_ExecutionPlan_vIn25 (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes)-data T_ExecutionPlan_vOut25  = T_ExecutionPlan_vOut25 (PP_Doc) (PP_Doc) (Seq Error) (PP_Doc)-{-# NOINLINE sem_ExecutionPlan_ExecutionPlan #-}-sem_ExecutionPlan_ExecutionPlan :: T_ENonterminals  -> (TypeSyns) -> (Set NontermIdent) -> (Derivings) -> T_ExecutionPlan -sem_ExecutionPlan_ExecutionPlan arg_nonts_ arg_typeSyns_ arg_wrappers_ _ = T_ExecutionPlan (return st26) where-   {-# NOINLINE st26 #-}-   st26 = let-      v25 :: T_ExecutionPlan_v25 -      v25 = \ (T_ExecutionPlan_vIn25 _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap) -> ( let-         _nontsX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_nonts_))-         (T_ENonterminals_vOut10 _nontsIchildvisit _nontsIcode _nontsIdatas _nontsIerrors _nontsIfromToStates _nontsIinitStates _nontsImodules _nontsIsemFunBndDefs _nontsIsemFunBndTps _nontsIvisitKinds _nontsIvisitdefs _nontsIvisituses) = inv_ENonterminals_s11 _nontsX11 (T_ENonterminals_vIn10 _nontsOallFromToStates _nontsOallInitStates _nontsOallVisitKinds _nontsOallchildvisit _nontsOavisitdefs _nontsOavisituses _nontsOinhmap _nontsOlocalAttrTypes _nontsOmainFile _nontsOmainName _nontsOoptions _nontsOsynmap _nontsOtypeSyns _nontsOwrappers)-         _lhsOcode :: PP_Doc-         _lhsOcode = rule404 _nontsIcode _wrappersExtra-         _lhsOdatas :: PP_Doc-         _lhsOdatas = rule405 _commonExtra _nontsIdatas-         _nontsOwrappers = rule406 arg_wrappers_-         _nontsOtypeSyns = rule407 arg_typeSyns_-         _wrappersExtra = rule408 _lateSemBndDef _lhsIoptions-         _commonExtra = rule409 _lateSemBndTp _lhsIoptions-         _lateSemBndTp = rule410 _lhsImainName _nontsIsemFunBndTps-         _lateSemBndDef = rule411 _lhsImainName _nontsIsemFunBndDefs-         _nontsOallchildvisit = rule412 _nontsIchildvisit-         _nontsOavisitdefs = rule413 _nontsIvisitdefs-         _nontsOavisituses = rule414 _nontsIvisituses-         _nontsOallFromToStates = rule415 _nontsIfromToStates-         _nontsOallVisitKinds = rule416 _nontsIvisitKinds-         _nontsOallInitStates = rule417 _nontsIinitStates-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule418 _nontsIerrors-         _lhsOmodules :: PP_Doc-         _lhsOmodules = rule419 _nontsImodules-         _nontsOinhmap = rule420 _lhsIinhmap-         _nontsOlocalAttrTypes = rule421 _lhsIlocalAttrTypes-         _nontsOmainFile = rule422 _lhsImainFile-         _nontsOmainName = rule423 _lhsImainName-         _nontsOoptions = rule424 _lhsIoptions-         _nontsOsynmap = rule425 _lhsIsynmap-         __result_ = T_ExecutionPlan_vOut25 _lhsOcode _lhsOdatas _lhsOerrors _lhsOmodules-         in __result_ )-     in C_ExecutionPlan_s26 v25-   {-# INLINE rule404 #-}-   {-# LINE 105 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule404 = \ ((_nontsIcode) :: PP_Doc) _wrappersExtra ->-                 {-# LINE 105 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 _nontsIcode  >-< _wrappersExtra-                 {-# LINE 3256 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule405 #-}-   {-# LINE 106 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule405 = \ _commonExtra ((_nontsIdatas) :: PP_Doc) ->-                 {-# LINE 106 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 _nontsIdatas >-< _commonExtra-                 {-# LINE 3262 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule406 #-}-   {-# LINE 112 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule406 = \ wrappers_ ->-                     {-# LINE 112 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     wrappers_-                     {-# LINE 3268 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule407 #-}-   {-# LINE 173 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule407 = \ typeSyns_ ->-                     {-# LINE 173 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     typeSyns_-                     {-# LINE 3274 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule408 #-}-   {-# LINE 663 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule408 = \ _lateSemBndDef ((_lhsIoptions) :: Options) ->-                        {-# LINE 663 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        if lateHigherOrderBinding _lhsIoptions-                        then _lateSemBndDef-                        else empty-                        {-# LINE 3282 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule409 #-}-   {-# LINE 666 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule409 = \ _lateSemBndTp ((_lhsIoptions) :: Options) ->-                        {-# LINE 666 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        if lateHigherOrderBinding _lhsIoptions-                        then _lateSemBndTp-                        else empty-                        {-# LINE 3290 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule410 #-}-   {-# LINE 669 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule410 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndTps) :: Seq PP_Doc) ->-                       {-# LINE 669 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       "and" >#< lateBindingTypeNm _lhsImainName >#< "=" >#< ppRecordTp (toList _nontsIsemFunBndTps)-                       {-# LINE 3296 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule411 #-}-   {-# LINE 670 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule411 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndDefs) :: Seq PP_Doc) ->-                        {-# LINE 670 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        "and" >#< lateBindingFieldNm _lhsImainName >#< ":" >#< lateBindingTypeNm _lhsImainName >#< "="-                        >-< (indent 2 $ ppRecordVal $ toList _nontsIsemFunBndDefs)-                        {-# LINE 3303 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule412 #-}-   {-# LINE 1157 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule412 = \ ((_nontsIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-                                          {-# LINE 1157 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                          _nontsIchildvisit-                                          {-# LINE 3309 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule413 #-}-   {-# LINE 1315 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule413 = \ ((_nontsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-                                       {-# LINE 1315 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                       _nontsIvisitdefs-                                       {-# LINE 3315 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule414 #-}-   {-# LINE 1316 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule414 = \ ((_nontsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-                                       {-# LINE 1316 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                       _nontsIvisituses-                                       {-# LINE 3321 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule415 #-}-   {-# LINE 1407 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule415 = \ ((_nontsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-                            {-# LINE 1407 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            _nontsIfromToStates-                            {-# LINE 3327 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule416 #-}-   {-# LINE 1451 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule416 = \ ((_nontsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-                          {-# LINE 1451 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          _nontsIvisitKinds-                          {-# LINE 3333 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule417 #-}-   {-# LINE 1465 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule417 = \ ((_nontsIinitStates) :: Map NontermIdent Int) ->-                          {-# LINE 1465 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          _nontsIinitStates-                          {-# LINE 3339 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule418 #-}-   rule418 = \ ((_nontsIerrors) :: Seq Error) ->-     _nontsIerrors-   {-# INLINE rule419 #-}-   rule419 = \ ((_nontsImodules) :: PP_Doc) ->-     _nontsImodules-   {-# INLINE rule420 #-}-   rule420 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule421 #-}-   rule421 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule422 #-}-   rule422 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule423 #-}-   rule423 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule424 #-}-   rule424 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule425 #-}-   rule425 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap---- Expression ----------------------------------------------------- wrapper-data Inh_Expression  = Inh_Expression { options_Inh_Expression :: (Options) }-data Syn_Expression  = Syn_Expression { attrs_Syn_Expression :: (Map String (Maybe NonLocalAttr)), pos_Syn_Expression :: (Pos), semfunc_Syn_Expression :: (PP_Doc), tks_Syn_Expression :: ([HsToken]) }-{-# INLINABLE wrap_Expression #-}-wrap_Expression :: T_Expression  -> Inh_Expression  -> (Syn_Expression )-wrap_Expression (T_Expression act) (Inh_Expression _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Expression_vIn28 _lhsIoptions-        (T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks) <- return (inv_Expression_s29 sem arg)-        return (Syn_Expression _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks)-   )---- cata-{-# INLINE sem_Expression #-}-sem_Expression :: Expression  -> T_Expression -sem_Expression ( Expression pos_ tks_ ) = sem_Expression_Expression pos_ tks_---- semantic domain-newtype T_Expression  = T_Expression {-                                     attach_T_Expression :: Identity (T_Expression_s29 )-                                     }-newtype T_Expression_s29  = C_Expression_s29 {-                                             inv_Expression_s29 :: (T_Expression_v28 )-                                             }-data T_Expression_s30  = C_Expression_s30-type T_Expression_v28  = (T_Expression_vIn28 ) -> (T_Expression_vOut28 )-data T_Expression_vIn28  = T_Expression_vIn28 (Options)-data T_Expression_vOut28  = T_Expression_vOut28 (Map String (Maybe NonLocalAttr)) (Pos) (PP_Doc) ([HsToken])-{-# NOINLINE sem_Expression_Expression #-}-sem_Expression_Expression :: (Pos) -> ([HsToken]) -> T_Expression -sem_Expression_Expression arg_pos_ arg_tks_ = T_Expression (return st29) where-   {-# NOINLINE st29 #-}-   st29 = let-      v28 :: T_Expression_v28 -      v28 = \ (T_Expression_vIn28 _lhsIoptions) -> ( let-         _lhsOtks :: [HsToken]-         _lhsOtks = rule426 arg_tks_-         _lhsOpos :: Pos-         _lhsOpos = rule427 arg_pos_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule428 _inhhstoken arg_tks_-         _lhsOsemfunc :: PP_Doc-         _lhsOsemfunc = rule429 _inhhstoken arg_tks_-         _inhhstoken = rule430 _lhsIoptions-         __result_ = T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks-         in __result_ )-     in C_Expression_s29 v28-   {-# INLINE rule426 #-}-   {-# LINE 1028 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule426 = \ tks_ ->-                           {-# LINE 1028 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           tks_-                           {-# LINE 3419 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule427 #-}-   {-# LINE 1049 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule427 = \ pos_ ->-                                        {-# LINE 1049 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                        pos_-                                        {-# LINE 3425 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule428 #-}-   {-# LINE 1141 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule428 = \ _inhhstoken tks_ ->-                               {-# LINE 1141 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               Map.unions $ map (\tok -> attrs_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_-                               {-# LINE 3431 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule429 #-}-   {-# LINE 1142 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule429 = \ _inhhstoken tks_ ->-                               {-# LINE 1142 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               vlist $ showTokens $ map (\tok -> tok_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_-                               {-# LINE 3437 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule430 #-}-   {-# LINE 1143 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule430 = \ ((_lhsIoptions) :: Options) ->-                                  {-# LINE 1143 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  Inh_HsToken _lhsIoptions-                                  {-# LINE 3443 "dist/build/ExecutionPlan2Caml.hs"#-}---- HsToken -------------------------------------------------------- wrapper-data Inh_HsToken  = Inh_HsToken { options_Inh_HsToken :: (Options) }-data Syn_HsToken  = Syn_HsToken { attrs_Syn_HsToken :: (Map String (Maybe NonLocalAttr)), tok_Syn_HsToken :: ((Pos,String)) }-{-# INLINABLE wrap_HsToken #-}-wrap_HsToken :: T_HsToken  -> Inh_HsToken  -> (Syn_HsToken )-wrap_HsToken (T_HsToken act) (Inh_HsToken _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsToken_vIn31 _lhsIoptions-        (T_HsToken_vOut31 _lhsOattrs _lhsOtok) <- return (inv_HsToken_s32 sem arg)-        return (Syn_HsToken _lhsOattrs _lhsOtok)-   )---- cata-{-# NOINLINE sem_HsToken #-}-sem_HsToken :: HsToken  -> T_HsToken -sem_HsToken ( AGLocal var_ pos_ rdesc_ ) = sem_HsToken_AGLocal var_ pos_ rdesc_-sem_HsToken ( AGField field_ attr_ pos_ rdesc_ ) = sem_HsToken_AGField field_ attr_ pos_ rdesc_-sem_HsToken ( HsToken value_ pos_ ) = sem_HsToken_HsToken value_ pos_-sem_HsToken ( CharToken value_ pos_ ) = sem_HsToken_CharToken value_ pos_-sem_HsToken ( StrToken value_ pos_ ) = sem_HsToken_StrToken value_ pos_-sem_HsToken ( Err mesg_ pos_ ) = sem_HsToken_Err mesg_ pos_---- semantic domain-newtype T_HsToken  = T_HsToken {-                               attach_T_HsToken :: Identity (T_HsToken_s32 )-                               }-newtype T_HsToken_s32  = C_HsToken_s32 {-                                       inv_HsToken_s32 :: (T_HsToken_v31 )-                                       }-data T_HsToken_s33  = C_HsToken_s33-type T_HsToken_v31  = (T_HsToken_vIn31 ) -> (T_HsToken_vOut31 )-data T_HsToken_vIn31  = T_HsToken_vIn31 (Options)-data T_HsToken_vOut31  = T_HsToken_vOut31 (Map String (Maybe NonLocalAttr)) ((Pos,String))-{-# NOINLINE sem_HsToken_AGLocal #-}-sem_HsToken_AGLocal :: (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken -sem_HsToken_AGLocal arg_var_ arg_pos_ _ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule431 arg_var_-         _tok = rule432 arg_pos_ arg_var_-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule433 _tok-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule431 #-}-   {-# LINE 1100 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule431 = \ var_ ->-                              {-# LINE 1100 "./src-ag/ExecutionPlan2Caml.ag" #-}-                              Map.singleton (fieldname var_) Nothing-                              {-# LINE 3500 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule432 #-}-   {-# LINE 1363 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule432 = \ pos_ var_ ->-                          {-# LINE 1363 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          (pos_,fieldname var_)-                          {-# LINE 3506 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule433 #-}-   rule433 = \ _tok ->-     _tok-{-# NOINLINE sem_HsToken_AGField #-}-sem_HsToken_AGField :: (Identifier) -> (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken -sem_HsToken_AGField arg_field_ arg_attr_ arg_pos_ arg_rdesc_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _mbAttr = rule434 arg_attr_ arg_field_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule435 _lhsIoptions _mbAttr arg_attr_ arg_field_-         _addTrace = rule436 arg_attr_ arg_field_ arg_rdesc_-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule437 _addTrace _lhsIoptions arg_attr_ arg_field_ arg_pos_-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule434 #-}-   {-# LINE 1101 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule434 = \ attr_ field_ ->-                              {-# LINE 1101 "./src-ag/ExecutionPlan2Caml.ag" #-}-                              if field_ == _INST || field_ == _FIELD || field_ == _INST'-                              then Nothing-                              else Just $ mkNonLocalAttr (field_ == _LHS) field_ attr_-                              {-# LINE 3533 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule435 #-}-   {-# LINE 1104 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule435 = \ ((_lhsIoptions) :: Options) _mbAttr attr_ field_ ->-                              {-# LINE 1104 "./src-ag/ExecutionPlan2Caml.ag" #-}-                              Map.singleton (attrname _lhsIoptions True field_ attr_) _mbAttr-                              {-# LINE 3539 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule436 #-}-   {-# LINE 1367 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule436 = \ attr_ field_ rdesc_ ->-                        {-# LINE 1367 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        case rdesc_ of-                          Just d  -> \x -> "(prerr_endline " ++ show (d ++ " -> " ++ show field_ ++ "." ++ show attr_) ++ "; " ++ x ++ ")"-                          Nothing -> id-                        {-# LINE 3547 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule437 #-}-   {-# LINE 1370 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule437 = \ _addTrace ((_lhsIoptions) :: Options) attr_ field_ pos_ ->-                   {-# LINE 1370 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   (pos_, _addTrace     $ attrname _lhsIoptions True field_ attr_)-                   {-# LINE 3553 "dist/build/ExecutionPlan2Caml.hs"#-}-{-# NOINLINE sem_HsToken_HsToken #-}-sem_HsToken_HsToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_HsToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule438 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule439  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule438 #-}-   {-# LINE 1372 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule438 = \ pos_ value_ ->-                         {-# LINE 1372 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         (pos_, value_)-                         {-# LINE 3573 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule439 #-}-   rule439 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_CharToken #-}-sem_HsToken_CharToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_CharToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule440 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule441  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule440 #-}-   {-# LINE 1374 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule440 = \ pos_ value_ ->-                           {-# LINE 1374 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           (pos_, if null value_-                                     then ""-                                     else showCharShort (head value_)-                           )-                           {-# LINE 3599 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule441 #-}-   rule441 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_StrToken #-}-sem_HsToken_StrToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_StrToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule442 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule443  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule442 #-}-   {-# LINE 1379 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule442 = \ pos_ value_ ->-                           {-# LINE 1379 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           (pos_, showStrShort value_)-                           {-# LINE 3622 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule443 #-}-   rule443 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_Err #-}-sem_HsToken_Err :: (String) -> (Pos) -> T_HsToken -sem_HsToken_Err _ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule444 arg_pos_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule445  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule444 #-}-   {-# LINE 1380 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule444 = \ pos_ ->-                           {-# LINE 1380 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           (pos_, "")-                           {-# LINE 3645 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule445 #-}-   rule445 = \  (_ :: ()) ->-     Map.empty---- HsTokens ------------------------------------------------------- wrapper-data Inh_HsTokens  = Inh_HsTokens { options_Inh_HsTokens :: (Options) }-data Syn_HsTokens  = Syn_HsTokens { tks_Syn_HsTokens :: ([(Pos,String)]) }-{-# INLINABLE wrap_HsTokens #-}-wrap_HsTokens :: T_HsTokens  -> Inh_HsTokens  -> (Syn_HsTokens )-wrap_HsTokens (T_HsTokens act) (Inh_HsTokens _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsTokens_vIn34 _lhsIoptions-        (T_HsTokens_vOut34 _lhsOtks) <- return (inv_HsTokens_s35 sem arg)-        return (Syn_HsTokens _lhsOtks)-   )---- cata-{-# NOINLINE sem_HsTokens #-}-sem_HsTokens :: HsTokens  -> T_HsTokens -sem_HsTokens list = Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list)---- semantic domain-newtype T_HsTokens  = T_HsTokens {-                                 attach_T_HsTokens :: Identity (T_HsTokens_s35 )-                                 }-newtype T_HsTokens_s35  = C_HsTokens_s35 {-                                         inv_HsTokens_s35 :: (T_HsTokens_v34 )-                                         }-data T_HsTokens_s36  = C_HsTokens_s36-type T_HsTokens_v34  = (T_HsTokens_vIn34 ) -> (T_HsTokens_vOut34 )-data T_HsTokens_vIn34  = T_HsTokens_vIn34 (Options)-data T_HsTokens_vOut34  = T_HsTokens_vOut34 ([(Pos,String)])-{-# NOINLINE sem_HsTokens_Cons #-}-sem_HsTokens_Cons :: T_HsToken  -> T_HsTokens  -> T_HsTokens -sem_HsTokens_Cons arg_hd_ arg_tl_ = T_HsTokens (return st35) where-   {-# NOINLINE st35 #-}-   st35 = let-      v34 :: T_HsTokens_v34 -      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let-         _hdX32 = Control.Monad.Identity.runIdentity (attach_T_HsToken (arg_hd_))-         _tlX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tl_))-         (T_HsToken_vOut31 _hdIattrs _hdItok) = inv_HsToken_s32 _hdX32 (T_HsToken_vIn31 _hdOoptions)-         (T_HsTokens_vOut34 _tlItks) = inv_HsTokens_s35 _tlX35 (T_HsTokens_vIn34 _tlOoptions)-         _lhsOtks :: [(Pos,String)]-         _lhsOtks = rule446 _hdItok _tlItks-         _hdOoptions = rule447 _lhsIoptions-         _tlOoptions = rule448 _lhsIoptions-         __result_ = T_HsTokens_vOut34 _lhsOtks-         in __result_ )-     in C_HsTokens_s35 v34-   {-# INLINE rule446 #-}-   {-# LINE 1359 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule446 = \ ((_hdItok) :: (Pos,String)) ((_tlItks) :: [(Pos,String)]) ->-                     {-# LINE 1359 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     _hdItok : _tlItks-                     {-# LINE 3703 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule447 #-}-   rule447 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule448 #-}-   rule448 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-{-# NOINLINE sem_HsTokens_Nil #-}-sem_HsTokens_Nil ::  T_HsTokens -sem_HsTokens_Nil  = T_HsTokens (return st35) where-   {-# NOINLINE st35 #-}-   st35 = let-      v34 :: T_HsTokens_v34 -      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let-         _lhsOtks :: [(Pos,String)]-         _lhsOtks = rule449  ()-         __result_ = T_HsTokens_vOut34 _lhsOtks-         in __result_ )-     in C_HsTokens_s35 v34-   {-# INLINE rule449 #-}-   {-# LINE 1360 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule449 = \  (_ :: ()) ->-                     {-# LINE 1360 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     []-                     {-# LINE 3727 "dist/build/ExecutionPlan2Caml.hs"#-}---- HsTokensRoot --------------------------------------------------- wrapper-data Inh_HsTokensRoot  = Inh_HsTokensRoot { options_Inh_HsTokensRoot :: (Options) }-data Syn_HsTokensRoot  = Syn_HsTokensRoot {  }-{-# INLINABLE wrap_HsTokensRoot #-}-wrap_HsTokensRoot :: T_HsTokensRoot  -> Inh_HsTokensRoot  -> (Syn_HsTokensRoot )-wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsTokensRoot_vIn37 _lhsIoptions-        (T_HsTokensRoot_vOut37 ) <- return (inv_HsTokensRoot_s38 sem arg)-        return (Syn_HsTokensRoot )-   )---- cata-{-# INLINE sem_HsTokensRoot #-}-sem_HsTokensRoot :: HsTokensRoot  -> T_HsTokensRoot -sem_HsTokensRoot ( HsTokensRoot tokens_ ) = sem_HsTokensRoot_HsTokensRoot ( sem_HsTokens tokens_ )---- semantic domain-newtype T_HsTokensRoot  = T_HsTokensRoot {-                                         attach_T_HsTokensRoot :: Identity (T_HsTokensRoot_s38 )-                                         }-newtype T_HsTokensRoot_s38  = C_HsTokensRoot_s38 {-                                                 inv_HsTokensRoot_s38 :: (T_HsTokensRoot_v37 )-                                                 }-data T_HsTokensRoot_s39  = C_HsTokensRoot_s39-type T_HsTokensRoot_v37  = (T_HsTokensRoot_vIn37 ) -> (T_HsTokensRoot_vOut37 )-data T_HsTokensRoot_vIn37  = T_HsTokensRoot_vIn37 (Options)-data T_HsTokensRoot_vOut37  = T_HsTokensRoot_vOut37 -{-# NOINLINE sem_HsTokensRoot_HsTokensRoot #-}-sem_HsTokensRoot_HsTokensRoot :: T_HsTokens  -> T_HsTokensRoot -sem_HsTokensRoot_HsTokensRoot arg_tokens_ = T_HsTokensRoot (return st38) where-   {-# NOINLINE st38 #-}-   st38 = let-      v37 :: T_HsTokensRoot_v37 -      v37 = \ (T_HsTokensRoot_vIn37 _lhsIoptions) -> ( let-         _tokensX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tokens_))-         (T_HsTokens_vOut34 _tokensItks) = inv_HsTokens_s35 _tokensX35 (T_HsTokens_vIn34 _tokensOoptions)-         _tokensOoptions = rule450 _lhsIoptions-         __result_ = T_HsTokensRoot_vOut37 -         in __result_ )-     in C_HsTokensRoot_s38 v37-   {-# INLINE rule450 #-}-   rule450 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions---- Pattern -------------------------------------------------------- wrapper-data Inh_Pattern  = Inh_Pattern { allInhmap_Inh_Pattern :: (Map NontermIdent Attributes), allSynmap_Inh_Pattern :: (Map NontermIdent Attributes), anyLazyKind_Inh_Pattern :: (Bool), inhmap_Inh_Pattern :: (Attributes), localAttrTypes_Inh_Pattern :: (Map Identifier Type), options_Inh_Pattern :: (Options), synmap_Inh_Pattern :: (Attributes) }-data Syn_Pattern  = Syn_Pattern { attrTypes_Syn_Pattern :: (PP_Doc), attrs_Syn_Pattern :: (Set String), copy_Syn_Pattern :: (Pattern), extraDefs_Syn_Pattern :: ([(PP_Doc,PP_Doc)]), isUnderscore_Syn_Pattern :: (Bool), sem_lhs_Syn_Pattern :: ( PP_Doc ) }-{-# INLINABLE wrap_Pattern #-}-wrap_Pattern :: T_Pattern  -> Inh_Pattern  -> (Syn_Pattern )-wrap_Pattern (T_Pattern act) (Inh_Pattern _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap-        (T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs) <- return (inv_Pattern_s41 sem arg)-        return (Syn_Pattern _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs)-   )---- cata-{-# NOINLINE sem_Pattern #-}-sem_Pattern :: Pattern  -> T_Pattern -sem_Pattern ( Constr name_ pats_ ) = sem_Pattern_Constr name_ ( sem_Patterns pats_ )-sem_Pattern ( Product pos_ pats_ ) = sem_Pattern_Product pos_ ( sem_Patterns pats_ )-sem_Pattern ( Alias field_ attr_ pat_ ) = sem_Pattern_Alias field_ attr_ ( sem_Pattern pat_ )-sem_Pattern ( Irrefutable pat_ ) = sem_Pattern_Irrefutable ( sem_Pattern pat_ )-sem_Pattern ( Underscore pos_ ) = sem_Pattern_Underscore pos_---- semantic domain-newtype T_Pattern  = T_Pattern {-                               attach_T_Pattern :: Identity (T_Pattern_s41 )-                               }-newtype T_Pattern_s41  = C_Pattern_s41 {-                                       inv_Pattern_s41 :: (T_Pattern_v40 )-                                       }-data T_Pattern_s42  = C_Pattern_s42-type T_Pattern_v40  = (T_Pattern_vIn40 ) -> (T_Pattern_vOut40 )-data T_Pattern_vIn40  = T_Pattern_vIn40 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)-data T_Pattern_vOut40  = T_Pattern_vOut40 (PP_Doc) (Set String) (Pattern) ([(PP_Doc,PP_Doc)]) (Bool) ( PP_Doc )-{-# NOINLINE sem_Pattern_Constr #-}-sem_Pattern_Constr :: (ConstructorIdent) -> T_Patterns  -> T_Pattern -sem_Pattern_Constr arg_name_ arg_pats_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))-         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIextraDefs _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule451 _patsIsem_lhs arg_name_-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule452  ()-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule453 _patsIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule454 _patsIattrs-         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]-         _lhsOextraDefs = rule455 _patsIextraDefs-         _copy = rule456 _patsIcopy arg_name_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule457 _copy-         _patsOallInhmap = rule458 _lhsIallInhmap-         _patsOallSynmap = rule459 _lhsIallSynmap-         _patsOanyLazyKind = rule460 _lhsIanyLazyKind-         _patsOinhmap = rule461 _lhsIinhmap-         _patsOlocalAttrTypes = rule462 _lhsIlocalAttrTypes-         _patsOoptions = rule463 _lhsIoptions-         _patsOsynmap = rule464 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule451 #-}-   {-# LINE 1066 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule451 = \ ((_patsIsem_lhs) :: [PP_Doc]) name_ ->-                                  {-# LINE 1066 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  pp_parens $ name_ >#< pp_block "(" ")" "," _patsIsem_lhs-                                  {-# LINE 3847 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule452 #-}-   {-# LINE 1075 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule452 = \  (_ :: ()) ->-                                    {-# LINE 1075 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                    False-                                    {-# LINE 3853 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule453 #-}-   rule453 = \ ((_patsIattrTypes) :: PP_Doc) ->-     _patsIattrTypes-   {-# INLINE rule454 #-}-   rule454 = \ ((_patsIattrs) :: Set String) ->-     _patsIattrs-   {-# INLINE rule455 #-}-   rule455 = \ ((_patsIextraDefs) :: [(PP_Doc,PP_Doc)]) ->-     _patsIextraDefs-   {-# INLINE rule456 #-}-   rule456 = \ ((_patsIcopy) :: Patterns) name_ ->-     Constr name_ _patsIcopy-   {-# INLINE rule457 #-}-   rule457 = \ _copy ->-     _copy-   {-# INLINE rule458 #-}-   rule458 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule459 #-}-   rule459 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule460 #-}-   rule460 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule461 #-}-   rule461 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule462 #-}-   rule462 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule463 #-}-   rule463 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule464 #-}-   rule464 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Product #-}-sem_Pattern_Product :: (Pos) -> T_Patterns  -> T_Pattern -sem_Pattern_Product arg_pos_ arg_pats_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))-         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIextraDefs _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule465 _patsIsem_lhs-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule466  ()-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule467 _patsIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule468 _patsIattrs-         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]-         _lhsOextraDefs = rule469 _patsIextraDefs-         _copy = rule470 _patsIcopy arg_pos_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule471 _copy-         _patsOallInhmap = rule472 _lhsIallInhmap-         _patsOallSynmap = rule473 _lhsIallSynmap-         _patsOanyLazyKind = rule474 _lhsIanyLazyKind-         _patsOinhmap = rule475 _lhsIinhmap-         _patsOlocalAttrTypes = rule476 _lhsIlocalAttrTypes-         _patsOoptions = rule477 _lhsIoptions-         _patsOsynmap = rule478 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule465 #-}-   {-# LINE 1065 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule465 = \ ((_patsIsem_lhs) :: [PP_Doc]) ->-                                  {-# LINE 1065 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  pp_block "(" ")" "," _patsIsem_lhs-                                  {-# LINE 3927 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule466 #-}-   {-# LINE 1076 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule466 = \  (_ :: ()) ->-                                    {-# LINE 1076 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                    False-                                    {-# LINE 3933 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule467 #-}-   rule467 = \ ((_patsIattrTypes) :: PP_Doc) ->-     _patsIattrTypes-   {-# INLINE rule468 #-}-   rule468 = \ ((_patsIattrs) :: Set String) ->-     _patsIattrs-   {-# INLINE rule469 #-}-   rule469 = \ ((_patsIextraDefs) :: [(PP_Doc,PP_Doc)]) ->-     _patsIextraDefs-   {-# INLINE rule470 #-}-   rule470 = \ ((_patsIcopy) :: Patterns) pos_ ->-     Product pos_ _patsIcopy-   {-# INLINE rule471 #-}-   rule471 = \ _copy ->-     _copy-   {-# INLINE rule472 #-}-   rule472 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule473 #-}-   rule473 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule474 #-}-   rule474 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule475 #-}-   rule475 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule476 #-}-   rule476 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule477 #-}-   rule477 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule478 #-}-   rule478 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Alias #-}-sem_Pattern_Alias :: (Identifier) -> (Identifier) -> T_Pattern  -> T_Pattern -sem_Pattern_Alias arg_field_ arg_attr_ arg_pat_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))-         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIextraDefs _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)-         _var = rule479 _lhsIoptions arg_attr_ arg_field_-         _hasTp = rule480 _mbTp-         _o_sigs = rule481 _lhsIoptions-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule482 _hasTp _mbTp _o_sigs _var-         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]-         _lhsOextraDefs = rule483 _patIisUnderscore _patIsem_lhs _var-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule484  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule485 _lhsIoptions _patIattrs arg_attr_ arg_field_-         _mbTp = rule486 _lhsIlocalAttrTypes _lhsIsynmap arg_attr_ arg_field_-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule487 _lhsIoptions _mbTp _patIattrTypes arg_attr_ arg_field_-         _copy = rule488 _patIcopy arg_attr_ arg_field_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule489 _copy-         _patOallInhmap = rule490 _lhsIallInhmap-         _patOallSynmap = rule491 _lhsIallSynmap-         _patOanyLazyKind = rule492 _lhsIanyLazyKind-         _patOinhmap = rule493 _lhsIinhmap-         _patOlocalAttrTypes = rule494 _lhsIlocalAttrTypes-         _patOoptions = rule495 _lhsIoptions-         _patOsynmap = rule496 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule479 #-}-   {-# LINE 1057 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule479 = \ ((_lhsIoptions) :: Options) attr_ field_ ->-                                  {-# LINE 1057 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  text $ attrname _lhsIoptions False field_ attr_-                                  {-# LINE 4011 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule480 #-}-   {-# LINE 1058 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule480 = \ _mbTp ->-                                  {-# LINE 1058 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  isJust _mbTp-                                  {-# LINE 4017 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule481 #-}-   {-# LINE 1059 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule481 = \ ((_lhsIoptions) :: Options) ->-                                  {-# LINE 1059 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  typeSigs _lhsIoptions-                                  {-# LINE 4023 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule482 #-}-   {-# LINE 1061 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule482 = \ _hasTp _mbTp _o_sigs _var ->-                                  {-# LINE 1061 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  ppArg (_hasTp     && _o_sigs    ) _var     (maybe (text "?no type?") ppTp _mbTp    )-                                  {-# LINE 4029 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule483 #-}-   {-# LINE 1062 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule483 = \ ((_patIisUnderscore) :: Bool) ((_patIsem_lhs) ::  PP_Doc ) _var ->-                                  {-# LINE 1062 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  if _patIisUnderscore-                                  then []-                                  else [ (_patIsem_lhs, _var    ) ]-                                  {-# LINE 4037 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule484 #-}-   {-# LINE 1077 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule484 = \  (_ :: ()) ->-                                    {-# LINE 1077 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                    False-                                    {-# LINE 4043 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule485 #-}-   {-# LINE 1083 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule485 = \ ((_lhsIoptions) :: Options) ((_patIattrs) :: Set String) attr_ field_ ->-                    {-# LINE 1083 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    Set.insert (attrname _lhsIoptions False field_ attr_) _patIattrs-                    {-# LINE 4049 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule486 #-}-   {-# LINE 1089 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule486 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIsynmap) :: Attributes) attr_ field_ ->-                    {-# LINE 1089 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    if field_ == _LHS-                    then Map.lookup attr_ _lhsIsynmap-                    else if field_ == _LOC-                         then Map.lookup attr_ _lhsIlocalAttrTypes-                         else Nothing-                    {-# LINE 4059 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule487 #-}-   {-# LINE 1094 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule487 = \ ((_lhsIoptions) :: Options) _mbTp ((_patIattrTypes) :: PP_Doc) attr_ field_ ->-                    {-# LINE 1094 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    maybe empty (\tp -> (attrname _lhsIoptions False field_ attr_) >#< "::" >#< ppTp tp) _mbTp-                    >-< _patIattrTypes-                    {-# LINE 4066 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule488 #-}-   rule488 = \ ((_patIcopy) :: Pattern) attr_ field_ ->-     Alias field_ attr_ _patIcopy-   {-# INLINE rule489 #-}-   rule489 = \ _copy ->-     _copy-   {-# INLINE rule490 #-}-   rule490 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule491 #-}-   rule491 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule492 #-}-   rule492 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule493 #-}-   rule493 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule494 #-}-   rule494 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule495 #-}-   rule495 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule496 #-}-   rule496 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Irrefutable #-}-sem_Pattern_Irrefutable :: T_Pattern  -> T_Pattern -sem_Pattern_Irrefutable arg_pat_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))-         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIextraDefs _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule497 _patIsem_lhs-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule498 _patIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule499 _patIattrs-         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]-         _lhsOextraDefs = rule500 _patIextraDefs-         _copy = rule501 _patIcopy-         _lhsOcopy :: Pattern-         _lhsOcopy = rule502 _copy-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule503 _patIisUnderscore-         _patOallInhmap = rule504 _lhsIallInhmap-         _patOallSynmap = rule505 _lhsIallSynmap-         _patOanyLazyKind = rule506 _lhsIanyLazyKind-         _patOinhmap = rule507 _lhsIinhmap-         _patOlocalAttrTypes = rule508 _lhsIlocalAttrTypes-         _patOoptions = rule509 _lhsIoptions-         _patOsynmap = rule510 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule497 #-}-   {-# LINE 1068 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule497 = \ ((_patIsem_lhs) ::  PP_Doc ) ->-                                  {-# LINE 1068 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  pp_parens (text "lazy" >#< _patIsem_lhs)-                                  {-# LINE 4131 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule498 #-}-   rule498 = \ ((_patIattrTypes) :: PP_Doc) ->-     _patIattrTypes-   {-# INLINE rule499 #-}-   rule499 = \ ((_patIattrs) :: Set String) ->-     _patIattrs-   {-# INLINE rule500 #-}-   rule500 = \ ((_patIextraDefs) :: [(PP_Doc,PP_Doc)]) ->-     _patIextraDefs-   {-# INLINE rule501 #-}-   rule501 = \ ((_patIcopy) :: Pattern) ->-     Irrefutable _patIcopy-   {-# INLINE rule502 #-}-   rule502 = \ _copy ->-     _copy-   {-# INLINE rule503 #-}-   rule503 = \ ((_patIisUnderscore) :: Bool) ->-     _patIisUnderscore-   {-# INLINE rule504 #-}-   rule504 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule505 #-}-   rule505 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule506 #-}-   rule506 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule507 #-}-   rule507 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule508 #-}-   rule508 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule509 #-}-   rule509 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule510 #-}-   rule510 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Underscore #-}-sem_Pattern_Underscore :: (Pos) -> T_Pattern -sem_Pattern_Underscore arg_pos_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule511  ()-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule512  ()-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule513  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule514  ()-         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]-         _lhsOextraDefs = rule515  ()-         _copy = rule516 arg_pos_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule517 _copy-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule511 #-}-   {-# LINE 1067 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule511 = \  (_ :: ()) ->-                                  {-# LINE 1067 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  text "_"-                                  {-# LINE 4199 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule512 #-}-   {-# LINE 1078 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule512 = \  (_ :: ()) ->-                                    {-# LINE 1078 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                    True-                                    {-# LINE 4205 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule513 #-}-   rule513 = \  (_ :: ()) ->-     empty-   {-# INLINE rule514 #-}-   rule514 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule515 #-}-   rule515 = \  (_ :: ()) ->-     []-   {-# INLINE rule516 #-}-   rule516 = \ pos_ ->-     Underscore pos_-   {-# INLINE rule517 #-}-   rule517 = \ _copy ->-     _copy---- Patterns ------------------------------------------------------- wrapper-data Inh_Patterns  = Inh_Patterns { allInhmap_Inh_Patterns :: (Map NontermIdent Attributes), allSynmap_Inh_Patterns :: (Map NontermIdent Attributes), anyLazyKind_Inh_Patterns :: (Bool), inhmap_Inh_Patterns :: (Attributes), localAttrTypes_Inh_Patterns :: (Map Identifier Type), options_Inh_Patterns :: (Options), synmap_Inh_Patterns :: (Attributes) }-data Syn_Patterns  = Syn_Patterns { attrTypes_Syn_Patterns :: (PP_Doc), attrs_Syn_Patterns :: (Set String), copy_Syn_Patterns :: (Patterns), extraDefs_Syn_Patterns :: ([(PP_Doc,PP_Doc)]), sem_lhs_Syn_Patterns :: ([PP_Doc]) }-{-# INLINABLE wrap_Patterns #-}-wrap_Patterns :: T_Patterns  -> Inh_Patterns  -> (Syn_Patterns )-wrap_Patterns (T_Patterns act) (Inh_Patterns _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap-        (T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOsem_lhs) <- return (inv_Patterns_s44 sem arg)-        return (Syn_Patterns _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOsem_lhs)-   )---- cata-{-# NOINLINE sem_Patterns #-}-sem_Patterns :: Patterns  -> T_Patterns -sem_Patterns list = Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list)---- semantic domain-newtype T_Patterns  = T_Patterns {-                                 attach_T_Patterns :: Identity (T_Patterns_s44 )-                                 }-newtype T_Patterns_s44  = C_Patterns_s44 {-                                         inv_Patterns_s44 :: (T_Patterns_v43 )-                                         }-data T_Patterns_s45  = C_Patterns_s45-type T_Patterns_v43  = (T_Patterns_vIn43 ) -> (T_Patterns_vOut43 )-data T_Patterns_vIn43  = T_Patterns_vIn43 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)-data T_Patterns_vOut43  = T_Patterns_vOut43 (PP_Doc) (Set String) (Patterns) ([(PP_Doc,PP_Doc)]) ([PP_Doc])-{-# NOINLINE sem_Patterns_Cons #-}-sem_Patterns_Cons :: T_Pattern  -> T_Patterns  -> T_Patterns -sem_Patterns_Cons arg_hd_ arg_tl_ = T_Patterns (return st44) where-   {-# NOINLINE st44 #-}-   st44 = let-      v43 :: T_Patterns_v43 -      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _hdX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_hd_))-         _tlX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_tl_))-         (T_Pattern_vOut40 _hdIattrTypes _hdIattrs _hdIcopy _hdIextraDefs _hdIisUnderscore _hdIsem_lhs) = inv_Pattern_s41 _hdX41 (T_Pattern_vIn40 _hdOallInhmap _hdOallSynmap _hdOanyLazyKind _hdOinhmap _hdOlocalAttrTypes _hdOoptions _hdOsynmap)-         (T_Patterns_vOut43 _tlIattrTypes _tlIattrs _tlIcopy _tlIextraDefs _tlIsem_lhs) = inv_Patterns_s44 _tlX44 (T_Patterns_vIn43 _tlOallInhmap _tlOallSynmap _tlOanyLazyKind _tlOinhmap _tlOlocalAttrTypes _tlOoptions _tlOsynmap)-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule518 _hdIattrTypes _tlIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule519 _hdIattrs _tlIattrs-         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]-         _lhsOextraDefs = rule520 _hdIextraDefs _tlIextraDefs-         _lhsOsem_lhs :: [PP_Doc]-         _lhsOsem_lhs = rule521 _hdIsem_lhs _tlIsem_lhs-         _copy = rule522 _hdIcopy _tlIcopy-         _lhsOcopy :: Patterns-         _lhsOcopy = rule523 _copy-         _hdOallInhmap = rule524 _lhsIallInhmap-         _hdOallSynmap = rule525 _lhsIallSynmap-         _hdOanyLazyKind = rule526 _lhsIanyLazyKind-         _hdOinhmap = rule527 _lhsIinhmap-         _hdOlocalAttrTypes = rule528 _lhsIlocalAttrTypes-         _hdOoptions = rule529 _lhsIoptions-         _hdOsynmap = rule530 _lhsIsynmap-         _tlOallInhmap = rule531 _lhsIallInhmap-         _tlOallSynmap = rule532 _lhsIallSynmap-         _tlOanyLazyKind = rule533 _lhsIanyLazyKind-         _tlOinhmap = rule534 _lhsIinhmap-         _tlOlocalAttrTypes = rule535 _lhsIlocalAttrTypes-         _tlOoptions = rule536 _lhsIoptions-         _tlOsynmap = rule537 _lhsIsynmap-         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOsem_lhs-         in __result_ )-     in C_Patterns_s44 v43-   {-# INLINE rule518 #-}-   rule518 = \ ((_hdIattrTypes) :: PP_Doc) ((_tlIattrTypes) :: PP_Doc) ->-     _hdIattrTypes >-< _tlIattrTypes-   {-# INLINE rule519 #-}-   rule519 = \ ((_hdIattrs) :: Set String) ((_tlIattrs) :: Set String) ->-     _hdIattrs `Set.union` _tlIattrs-   {-# INLINE rule520 #-}-   rule520 = \ ((_hdIextraDefs) :: [(PP_Doc,PP_Doc)]) ((_tlIextraDefs) :: [(PP_Doc,PP_Doc)]) ->-     _hdIextraDefs ++ _tlIextraDefs-   {-# INLINE rule521 #-}-   rule521 = \ ((_hdIsem_lhs) ::  PP_Doc ) ((_tlIsem_lhs) :: [PP_Doc]) ->-     _hdIsem_lhs : _tlIsem_lhs-   {-# INLINE rule522 #-}-   rule522 = \ ((_hdIcopy) :: Pattern) ((_tlIcopy) :: Patterns) ->-     (:) _hdIcopy _tlIcopy-   {-# INLINE rule523 #-}-   rule523 = \ _copy ->-     _copy-   {-# INLINE rule524 #-}-   rule524 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule525 #-}-   rule525 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule526 #-}-   rule526 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule527 #-}-   rule527 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule528 #-}-   rule528 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule529 #-}-   rule529 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule530 #-}-   rule530 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule531 #-}-   rule531 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule532 #-}-   rule532 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule533 #-}-   rule533 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule534 #-}-   rule534 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule535 #-}-   rule535 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule536 #-}-   rule536 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule537 #-}-   rule537 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Patterns_Nil #-}-sem_Patterns_Nil ::  T_Patterns -sem_Patterns_Nil  = T_Patterns (return st44) where-   {-# NOINLINE st44 #-}-   st44 = let-      v43 :: T_Patterns_v43 -      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule538  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule539  ()-         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]-         _lhsOextraDefs = rule540  ()-         _lhsOsem_lhs :: [PP_Doc]-         _lhsOsem_lhs = rule541  ()-         _copy = rule542  ()-         _lhsOcopy :: Patterns-         _lhsOcopy = rule543 _copy-         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOsem_lhs-         in __result_ )-     in C_Patterns_s44 v43-   {-# INLINE rule538 #-}-   rule538 = \  (_ :: ()) ->-     empty-   {-# INLINE rule539 #-}-   rule539 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule540 #-}-   rule540 = \  (_ :: ()) ->-     []-   {-# INLINE rule541 #-}-   rule541 = \  (_ :: ()) ->-     []-   {-# INLINE rule542 #-}-   rule542 = \  (_ :: ()) ->-     []-   {-# INLINE rule543 #-}-   rule543 = \ _copy ->-     _copy---- Visit ---------------------------------------------------------- wrapper-data Inh_Visit  = Inh_Visit { allFromToStates_Inh_Visit :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visit :: (Map NontermIdent Attributes), allInitStates_Inh_Visit :: (Map NontermIdent Int), allSynmap_Inh_Visit :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visit :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visit :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), allintramap_Inh_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visit :: (Map Identifier Type), childintros_Inh_Visit :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visit :: (ConstructorIdent), inhmap_Inh_Visit :: (Attributes), mrules_Inh_Visit :: (Map Identifier (VisitKind ->  Either Error PP_Doc)), nextVisits_Inh_Visit :: (Map StateIdentifier StateCtx), nt_Inh_Visit :: (NontermIdent), options_Inh_Visit :: (Options), params_Inh_Visit :: ([Identifier]), prevVisits_Inh_Visit :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visit :: (Map Identifier (Set String)), ruleuses_Inh_Visit :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visit :: (Attributes), terminaldefs_Inh_Visit :: (Set String) }-data Syn_Visit  = Syn_Visit { allvisits_Syn_Visit :: ( VisitStateState ), childvisit_Syn_Visit :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), errors_Syn_Visit :: (Seq Error), fromToStates_Syn_Visit :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visit :: (Set String), ruleKinds_Syn_Visit :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visit :: (Map Identifier Int), sem_visit_Syn_Visit :: (  (StateIdentifier,PP_Doc)  ), t_visits_Syn_Visit :: (PP_Doc), visitKinds_Syn_Visit :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visit :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visit :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_Visit #-}-wrap_Visit :: T_Visit  -> Inh_Visit  -> (Syn_Visit )-wrap_Visit (T_Visit act) (Inh_Visit _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs-        (T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visit_s47 sem arg)-        return (Syn_Visit _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_Visit #-}-sem_Visit :: Visit  -> T_Visit -sem_Visit ( Visit ident_ from_ to_ inh_ syn_ steps_ kind_ ) = sem_Visit_Visit ident_ from_ to_ inh_ syn_ ( sem_VisitSteps steps_ ) kind_---- semantic domain-newtype T_Visit  = T_Visit {-                           attach_T_Visit :: Identity (T_Visit_s47 )-                           }-newtype T_Visit_s47  = C_Visit_s47 {-                                   inv_Visit_s47 :: (T_Visit_v46 )-                                   }-data T_Visit_s48  = C_Visit_s48-type T_Visit_v46  = (T_Visit_vIn46 ) -> (T_Visit_vOut46 )-data T_Visit_vIn46  = T_Visit_vIn46 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (ConstructorIdent) (Attributes) (Map Identifier (VisitKind ->  Either Error PP_Doc)) (Map StateIdentifier StateCtx) (NontermIdent) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Attributes) (Set String)-data T_Visit_vOut46  = T_Visit_vOut46 ( VisitStateState ) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (  (StateIdentifier,PP_Doc)  ) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_Visit_Visit #-}-sem_Visit_Visit :: (VisitIdentifier) -> (StateIdentifier) -> (StateIdentifier) -> (Set Identifier) -> (Set Identifier) -> T_VisitSteps  -> (VisitKind) -> T_Visit -sem_Visit_Visit arg_ident_ arg_from_ arg_to_ arg_inh_ arg_syn_ arg_steps_ arg_kind_ = T_Visit (return st47) where-   {-# NOINLINE st47 #-}-   st47 = let-      v46 :: T_Visit_v46 -      v46 = \ (T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfollow _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)-         _lhsOallvisits ::  VisitStateState -         _lhsOallvisits = rule544 arg_from_ arg_ident_ arg_to_-         _nameTIn_visit = rule545 _lhsInt arg_ident_-         _nameTOut_visit = rule546 _lhsInt arg_ident_-         _nameNextState = rule547 _lhsInt arg_to_-         _nameCaller_visit = rule548 _lhsInt arg_ident_-         _nextVisitInfo = rule549 _lhsInextVisits arg_to_-         _t_params = rule550 _lhsIparams-         _t_c_params = rule551 _lhsIparams-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule552 _contpart _inhpart _lhsInt _nameCaller_visit _nameTIn_visit _nameTOut_visit _synpart _t_c_params _t_params arg_ident_-         _contpart = rule553 _lhsInt _nameNextState _nextVisitInfo _t_params arg_ident_-         _inhpart = rule554 _lhsIinhmap _ppTypeList arg_inh_-         _synpart = rule555 _lhsIsynmap _ppTypeList arg_syn_-         _ppTypeList = rule556 _lhsInt arg_ident_-         _o_sigs = rule557 _lhsIoptions-         _lhsOsem_visit ::   (StateIdentifier,PP_Doc)  -         _lhsOsem_visit = rule558 _lhsInt _lhsIoptions _nameTIn_visit _nameTOut_visit _o_sigs _stepsIsem_steps _t_params arg_from_ arg_ident_ arg_inh_-         _stepsOfollow = rule559 _nextStBuild _resultval-         _nextArgsMp = rule560 _lhsIallintramap arg_to_-         _nextArgs = rule561 _nextArgsMp-         _nextStExp = rule562 _lhsIoptions _nextArgs _nextArgsMp arg_to_-         _resultval = rule563 _lhsInt _lhsIoptions _nextStRefExp arg_ident_ arg_syn_-         (_nextStBuild,_nextStRefExp) = rule564 _lhsInt _nextStExp _nextVisitInfo arg_ident_-         _stepsOkind = rule565 arg_kind_-         _stepsOindex = rule566  ()-         _stepsOprevMaxSimRefs = rule567  ()-         _stepsOuseParallel = rule568  ()-         _prevVisitInfo = rule569 _lhsInextVisits arg_from_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)-         _lhsOchildvisit = rule570 _invokecode arg_ident_-         _invokecode = rule571 _lhsInt _lhsIoptions _nameTOut_visit _nextVisitInfo _o_sigs _prevVisitInfo arg_from_ arg_ident_ arg_inh_ arg_kind_ arg_syn_ arg_to_-         _thisintra = rule572 _defsAsMap _nextintra _uses-         _lhsOintramap :: Map StateIdentifier (Map String (Maybe NonLocalAttr))-         _lhsOintramap = rule573 _thisintra arg_from_-         _nextintra = rule574 _lhsIallintramap arg_to_-         _uses = rule575 _lhsIoptions _stepsIuses arg_syn_-         _inhVarNms = rule576 _lhsIoptions arg_inh_-         _defs = rule577 _inhVarNms _lhsIterminaldefs _stepsIdefs-         _defsAsMap = rule578 _defs-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule579 arg_ident_ arg_syn_-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule580 arg_ident_ arg_inh_-         _lazyIntrasInh = rule581 _inhVarNms _stepsIdefs arg_kind_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule582 _lazyIntrasInh _stepsIlazyIntras-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule583 arg_from_ arg_ident_ arg_to_-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule584 arg_ident_ arg_kind_-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule585 _stepsIerrors-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule586 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule587 _stepsIruleUsage-         _stepsOallFromToStates = rule588 _lhsIallFromToStates-         _stepsOallInitStates = rule589 _lhsIallInitStates-         _stepsOallVisitKinds = rule590 _lhsIallVisitKinds-         _stepsOallchildvisit = rule591 _lhsIallchildvisit-         _stepsOavisitdefs = rule592 _lhsIavisitdefs-         _stepsOavisituses = rule593 _lhsIavisituses-         _stepsOchildTypes = rule594 _lhsIchildTypes-         _stepsOchildintros = rule595 _lhsIchildintros-         _stepsOmrules = rule596 _lhsImrules-         _stepsOoptions = rule597 _lhsIoptions-         _stepsOruledefs = rule598 _lhsIruledefs-         _stepsOruleuses = rule599 _lhsIruleuses-         __result_ = T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_Visit_s47 v46-   {-# INLINE rule544 #-}-   {-# LINE 436 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule544 = \ from_ ident_ to_ ->-                            {-# LINE 436 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            (ident_, from_, to_)-                            {-# LINE 4507 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule545 #-}-   {-# LINE 539 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule545 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                          {-# LINE 539 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          conNmTVisitIn _lhsInt ident_-                          {-# LINE 4513 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule546 #-}-   {-# LINE 540 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule546 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                          {-# LINE 540 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          conNmTVisitOut _lhsInt ident_-                          {-# LINE 4519 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule547 #-}-   {-# LINE 541 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule547 = \ ((_lhsInt) :: NontermIdent) to_ ->-                           {-# LINE 541 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           type_nt_sem _lhsInt to_-                           {-# LINE 4525 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule548 #-}-   {-# LINE 542 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule548 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                           {-# LINE 542 "./src-ag/ExecutionPlan2Caml.ag" #-}-                           type_caller_visit _lhsInt ident_-                           {-# LINE 4531 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule549 #-}-   {-# LINE 544 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule549 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) to_ ->-                          {-# LINE 544 "./src-ag/ExecutionPlan2Caml.ag" #-}-                          Map.findWithDefault ManyVis to_ _lhsInextVisits-                          {-# LINE 4537 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule550 #-}-   {-# LINE 546 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule550 = \ ((_lhsIparams) :: [Identifier]) ->-                    {-# LINE 546 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    ppTypeParams _lhsIparams-                    {-# LINE 4543 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule551 #-}-   {-# LINE 547 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule551 = \ ((_lhsIparams) :: [Identifier]) ->-                     {-# LINE 547 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     ppTypeParams (cont_tvar : map pp _lhsIparams)-                     {-# LINE 4549 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule552 #-}-   {-# LINE 551 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule552 = \ _contpart _inhpart ((_lhsInt) :: NontermIdent) _nameCaller_visit _nameTIn_visit _nameTOut_visit _synpart _t_c_params _t_params ident_ ->-                    {-# LINE 551 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    "and" >#< _t_c_params     >#< _nameCaller_visit     >#< "=" >#< ppRecordTp-                      [ nm_inh _lhsInt ident_ >#< ":" >#< _t_params     >#< conNmTVisitIn _lhsInt ident_-                      , nm_cont _lhsInt ident_ >#< ":" >#< _t_params     >#< conNmTVisitOut _lhsInt ident_ >#< "->" >#< cont_tvar-                      ]-                    >-< "and" >#< _t_params     >#< _nameTIn_visit      >#< "=" >#< ppRecordTp _inhpart-                    >-< "and" >#< _t_params     >#< _nameTOut_visit     >#< "=" >#< ppRecordTp (_synpart     ++ _contpart    )-                    {-# LINE 4560 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule553 #-}-   {-# LINE 558 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule553 = \ ((_lhsInt) :: NontermIdent) _nameNextState _nextVisitInfo _t_params ident_ ->-                   {-# LINE 558 "./src-ag/ExecutionPlan2Caml.ag" #-}-                   case _nextVisitInfo     of-                     NoneVis -> []-                     _       -> [ nm_outarg_cont _lhsInt ident_ >#< ":" >#< _t_params     >#< _nameNextState     ]-                   {-# LINE 4568 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule554 #-}-   {-# LINE 562 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule554 = \ ((_lhsIinhmap) :: Attributes) _ppTypeList inh_ ->-                    {-# LINE 562 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    _ppTypeList     nm_inarg inh_ _lhsIinhmap-                    {-# LINE 4574 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule555 #-}-   {-# LINE 563 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule555 = \ ((_lhsIsynmap) :: Attributes) _ppTypeList syn_ ->-                    {-# LINE 563 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    _ppTypeList     nm_outarg syn_ _lhsIsynmap-                    {-# LINE 4580 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule556 #-}-   {-# LINE 564 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule556 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                     {-# LINE 564 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     \f s m -> map (\i -> case Map.lookup i m of-                                            Just tp -> f i _lhsInt ident_ >#< ":" >#< ppTp tp ) $ Set.toList s-                     {-# LINE 4587 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule557 #-}-   {-# LINE 798 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule557 = \ ((_lhsIoptions) :: Options) ->-                 {-# LINE 798 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 typeSigs _lhsIoptions-                 {-# LINE 4593 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule558 #-}-   {-# LINE 799 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule558 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTIn_visit _nameTOut_visit _o_sigs ((_stepsIsem_steps) :: PP_Doc) _t_params from_ ident_ inh_ ->-                    {-# LINE 799 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    ( from_-                    , let resTp = _t_params     >#< _nameTOut_visit-                          argTp = _t_params     >#< _nameTIn_visit-                          argMatch = ppRecordVal [ nm_inarg i _lhsInt ident_ >#< "=" >#< lhsname _lhsIoptions True i | i <- Set.toList inh_ ]-                      in ppFunDecl _o_sigs     (nm_visit ident_) [(argMatch, argTp)] resTp _stepsIsem_steps-                    )-                    {-# LINE 4604 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule559 #-}-   {-# LINE 806 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule559 = \ _nextStBuild _resultval ->-                     {-# LINE 806 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     _nextStBuild     >-< _resultval-                     {-# LINE 4610 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule560 #-}-   {-# LINE 808 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule560 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->-                     {-# LINE 808 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     maybe Map.empty id $ Map.lookup to_ _lhsIallintramap-                     {-# LINE 4616 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule561 #-}-   {-# LINE 809 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule561 = \ _nextArgsMp ->-                     {-# LINE 809 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     ppSpaced $ Map.keys $ _nextArgsMp-                     {-# LINE 4622 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule562 #-}-   {-# LINE 810 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule562 = \ ((_lhsIoptions) :: Options) _nextArgs _nextArgsMp to_ ->-                     {-# LINE 810 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     nm_st to_ >#< _nextArgs     >#< dummyArg _lhsIoptions (Map.null _nextArgsMp    )-                     {-# LINE 4628 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule563 #-}-   {-# LINE 812 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule563 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nextStRefExp ident_ syn_ ->-                    {-# LINE 812 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    ppRecordVal-                      (  [ nm_outarg i _lhsInt ident_ >#< "=" >#< lhsname _lhsIoptions False i | i <- Set.toList syn_ ]-                      ++ [ _nextStRefExp     ])-                    {-# LINE 4636 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule564 #-}-   {-# LINE 817 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule564 = \ ((_lhsInt) :: NontermIdent) _nextStExp _nextVisitInfo ident_ ->-         {-# LINE 817 "./src-ag/ExecutionPlan2Caml.ag" #-}-         case _nextVisitInfo     of-           NoneVis  -> (empty, empty)-           _        -> ( "let" >#< nextStName >#< "=" >#< _nextStExp     >#< "in"-                       , nm_outarg_cont _lhsInt ident_ >#< "=" >#< nextStName)-         {-# LINE 4645 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule565 #-}-   {-# LINE 832 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule565 = \ kind_ ->-                                  {-# LINE 832 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                  kind_-                                  {-# LINE 4651 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule566 #-}-   {-# LINE 884 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule566 = \  (_ :: ()) ->-                                     {-# LINE 884 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                     0-                                     {-# LINE 4657 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule567 #-}-   {-# LINE 891 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule567 = \  (_ :: ()) ->-                                              {-# LINE 891 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                              0-                                              {-# LINE 4663 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule568 #-}-   {-# LINE 908 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule568 = \  (_ :: ()) ->-                                           {-# LINE 908 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                           False-                                           {-# LINE 4669 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule569 #-}-   {-# LINE 1165 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule569 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) from_ ->-                        {-# LINE 1165 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        Map.findWithDefault ManyVis from_ _lhsInextVisits-                        {-# LINE 4675 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule570 #-}-   {-# LINE 1166 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule570 = \ _invokecode ident_ ->-                     {-# LINE 1166 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     Map.singleton ident_ _invokecode-                     {-# LINE 4681 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule571 #-}-   {-# LINE 1168 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule571 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTOut_visit _nextVisitInfo _o_sigs _prevVisitInfo from_ ident_ inh_ kind_ syn_ to_ ->-        {-# LINE 1168 "./src-ag/ExecutionPlan2Caml.ag" #-}-        \chld childTp kind follow ->-          let code = cont >-< inps >-< call-              childNmTo   = text $ stname chld to_-              childNmFrom = text $ stname chld from_-              childTpArgs = case childTp of-                              NT _ args _ -> args-                              _           -> error "generate visit call: type of the child is not a nonterminal!"-              cont = "let" >#< contNm >#< ppArg _o_sigs     (ppRecordVal cont_in) cont_in_tp >#< "="-                     >-< indent 2 follow-                     >#< "in"-              cont_in = [ nm_outarg i _lhsInt ident_ >#< "=" >#< attrname _lhsIoptions True chld i | i <- Set.toList syn_ ]-                        ++ case _nextVisitInfo     of-                             NoneVis -> []-                             _       -> [ nm_outarg_cont _lhsInt ident_ >#< "=" >#< childNmTo ]-              cont_in_tp = ppTypeParams childTpArgs >#< _nameTOut_visit-              inps = "let" >#< inpsNm >#< "=" >#< ppRecordVal-                       [ nm_inh _lhsInt ident_ >#< "=" >#< ppRecordVal inps_in-                       , nm_cont _lhsInt ident_ >#< "=" >#< contNm-                       ] >#< "in"-              inps_in = [ nm_inarg i _lhsInt ident_ >#< "=" >#< attrname _lhsIoptions False chld i | i <- Set.toList inh_ ]-              call = childNmFrom >|< "." >|< nm_invoke _lhsInt from_ >#< arg-              arg = case _prevVisitInfo     of-                      NoneVis  -> error "error: invocation of a visit from a state that has no next visits"-                      OneVis _ -> pp inpsNm-                      ManyVis  -> pp_parens (con_visit _lhsInt ident_ >#< inpsNm)-          in if kind `compatibleKind` kind_-             then Right code-             else Left $ IncompatibleVisitKind chld ident_ kind kind_-        {-# LINE 4714 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule572 #-}-   {-# LINE 1273 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule572 = \ _defsAsMap _nextintra _uses ->-                            {-# LINE 1273 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            (_uses     `Map.union` _nextintra    ) `Map.difference` _defsAsMap-                            {-# LINE 4720 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule573 #-}-   {-# LINE 1274 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule573 = \ _thisintra from_ ->-                            {-# LINE 1274 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            Map.singleton from_ _thisintra-                            {-# LINE 4726 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule574 #-}-   {-# LINE 1275 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule574 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->-                            {-# LINE 1275 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            maybe Map.empty id $ Map.lookup to_ _lhsIallintramap-                            {-# LINE 4732 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule575 #-}-   {-# LINE 1276 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule575 = \ ((_lhsIoptions) :: Options) ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) syn_ ->-                            {-# LINE 1276 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            let mp1 = _stepsIuses-                                mp2 = Map.fromList [ (lhsname _lhsIoptions False i, Just (AttrSyn _LHS i)) | i <- Set.elems syn_ ]-                            in mp1 `Map.union` mp2-                            {-# LINE 4740 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule576 #-}-   {-# LINE 1279 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule576 = \ ((_lhsIoptions) :: Options) inh_ ->-                            {-# LINE 1279 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            Set.map (lhsname _lhsIoptions True) inh_-                            {-# LINE 4746 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule577 #-}-   {-# LINE 1280 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule577 = \ _inhVarNms ((_lhsIterminaldefs) :: Set String) ((_stepsIdefs) :: Set String) ->-                            {-# LINE 1280 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            _stepsIdefs `Set.union` _inhVarNms     `Set.union` _lhsIterminaldefs-                            {-# LINE 4752 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule578 #-}-   {-# LINE 1281 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule578 = \ _defs ->-                            {-# LINE 1281 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            Map.fromList [ (a, Nothing) | a <- Set.elems _defs     ]-                            {-# LINE 4758 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule579 #-}-   {-# LINE 1305 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule579 = \ ident_ syn_ ->-                            {-# LINE 1305 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            Map.singleton ident_ syn_-                            {-# LINE 4764 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule580 #-}-   {-# LINE 1306 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule580 = \ ident_ inh_ ->-                            {-# LINE 1306 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            Map.singleton ident_ inh_-                            {-# LINE 4770 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule581 #-}-   {-# LINE 1338 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule581 = \ _inhVarNms ((_stepsIdefs) :: Set String) kind_ ->-                        {-# LINE 1338 "./src-ag/ExecutionPlan2Caml.ag" #-}-                        case kind_ of-                          VisitPure False -> _inhVarNms     `Set.union` _stepsIdefs-                          _               -> Set.empty-                        {-# LINE 4778 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule582 #-}-   {-# LINE 1341 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule582 = \ _lazyIntrasInh ((_stepsIlazyIntras) :: Set String) ->-                     {-# LINE 1341 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     _lazyIntrasInh     `Set.union` _stepsIlazyIntras-                     {-# LINE 4784 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule583 #-}-   {-# LINE 1404 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule583 = \ from_ ident_ to_ ->-                       {-# LINE 1404 "./src-ag/ExecutionPlan2Caml.ag" #-}-                       Map.singleton ident_ (from_, to_)-                       {-# LINE 4790 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule584 #-}-   {-# LINE 1448 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule584 = \ ident_ kind_ ->-                     {-# LINE 1448 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     Map.singleton ident_ kind_-                     {-# LINE 4796 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule585 #-}-   rule585 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule586 #-}-   rule586 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule587 #-}-   rule587 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule588 #-}-   rule588 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule589 #-}-   rule589 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule590 #-}-   rule590 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule591 #-}-   rule591 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule592 #-}-   rule592 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule593 #-}-   rule593 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule594 #-}-   rule594 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule595 #-}-   rule595 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule596 #-}-   rule596 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule597 #-}-   rule597 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule598 #-}-   rule598 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule599 #-}-   rule599 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses---- VisitStep ------------------------------------------------------ wrapper-data Inh_VisitStep  = Inh_VisitStep { allFromToStates_Inh_VisitStep :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitStep :: (Map NontermIdent Int), allVisitKinds_Inh_VisitStep :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitStep :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), avisitdefs_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitStep :: (Map Identifier Type), childintros_Inh_VisitStep :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), follow_Inh_VisitStep :: (PP_Doc), index_Inh_VisitStep :: (Int), isLast_Inh_VisitStep :: (Bool), kind_Inh_VisitStep :: (VisitKind), mrules_Inh_VisitStep :: (Map Identifier (VisitKind ->  Either Error PP_Doc)), options_Inh_VisitStep :: (Options), prevMaxSimRefs_Inh_VisitStep :: (Int), ruledefs_Inh_VisitStep :: (Map Identifier (Set String)), ruleuses_Inh_VisitStep :: (Map Identifier (Map String (Maybe NonLocalAttr))), useParallel_Inh_VisitStep :: (Bool) }-data Syn_VisitStep  = Syn_VisitStep { defs_Syn_VisitStep :: (Set String), errors_Syn_VisitStep :: (Seq Error), index_Syn_VisitStep :: (Int), isLast_Syn_VisitStep :: (Bool), lazyIntras_Syn_VisitStep :: (Set String), prevMaxSimRefs_Syn_VisitStep :: (Int), ruleKinds_Syn_VisitStep :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitStep :: (Map Identifier Int), sem_steps_Syn_VisitStep :: (PP_Doc), uses_Syn_VisitStep :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitStep :: (Map VisitIdentifier VisitKind) }-{-# INLINABLE wrap_VisitStep #-}-wrap_VisitStep :: T_VisitStep  -> Inh_VisitStep  -> (Syn_VisitStep )-wrap_VisitStep (T_VisitStep act) (Inh_VisitStep _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel-        (T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds) <- return (inv_VisitStep_s50 sem arg)-        return (Syn_VisitStep _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds)-   )---- cata-{-# NOINLINE sem_VisitStep #-}-sem_VisitStep :: VisitStep  -> T_VisitStep -sem_VisitStep ( Sem name_ ) = sem_VisitStep_Sem name_-sem_VisitStep ( ChildVisit child_ nonterm_ visit_ ) = sem_VisitStep_ChildVisit child_ nonterm_ visit_-sem_VisitStep ( PureGroup steps_ ordered_ ) = sem_VisitStep_PureGroup ( sem_VisitSteps steps_ ) ordered_-sem_VisitStep ( Sim steps_ ) = sem_VisitStep_Sim ( sem_VisitSteps steps_ )-sem_VisitStep ( ChildIntro child_ ) = sem_VisitStep_ChildIntro child_---- semantic domain-newtype T_VisitStep  = T_VisitStep {-                                   attach_T_VisitStep :: Identity (T_VisitStep_s50 )-                                   }-newtype T_VisitStep_s50  = C_VisitStep_s50 {-                                           inv_VisitStep_s50 :: (T_VisitStep_v49 )-                                           }-data T_VisitStep_s51  = C_VisitStep_s51-type T_VisitStep_v49  = (T_VisitStep_vIn49 ) -> (T_VisitStep_vOut49 )-data T_VisitStep_vIn49  = T_VisitStep_vIn49 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (PP_Doc) (Int) (Bool) (VisitKind) (Map Identifier (VisitKind ->  Either Error PP_Doc)) (Options) (Int) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Bool)-data T_VisitStep_vOut49  = T_VisitStep_vOut49 (Set String) (Seq Error) (Int) (Bool) (Set String) (Int) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)-{-# NOINLINE sem_VisitStep_Sem #-}-sem_VisitStep_Sem :: (Identifier) -> T_VisitStep -sem_VisitStep_Sem arg_name_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _ruleItf = rule600 _lhsImrules arg_name_-         _lhsOerrors :: Seq Error-         (_lhsOerrors,_sem_steps) = rule601 _lhsIkind _ruleItf-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule602 _lhsIfollow _sem_steps-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule603 arg_name_-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule604 _lhsIkind arg_name_-         _lhsOdefs :: Set String-         _lhsOdefs = rule605 _lhsIruledefs arg_name_-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule606 _lhsIruleuses arg_name_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule607  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule608  ()-         _lhsOindex :: Int-         _lhsOindex = rule609 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule610 _lhsIisLast-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule611 _lhsIprevMaxSimRefs-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule600 #-}-   {-# LINE 849 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule600 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) name_ ->-                               {-# LINE 849 "./src-ag/ExecutionPlan2Caml.ag" #-}-                               Map.findWithDefault (error $ "Rule "  ++ show name_  ++ " not found") name_ _lhsImrules-                               {-# LINE 4915 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule601 #-}-   {-# LINE 850 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule601 = \ ((_lhsIkind) :: VisitKind) _ruleItf ->-                                               {-# LINE 850 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                               case _ruleItf     _lhsIkind of-                                                 Left e     -> (Seq.singleton e, empty)-                                                 Right stmt -> (Seq.empty, stmt)-                                               {-# LINE 4923 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule602 #-}-   {-# LINE 853 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule602 = \ ((_lhsIfollow) :: PP_Doc) _sem_steps ->-                                 {-# LINE 853 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                 _sem_steps     >-< _lhsIfollow-                                 {-# LINE 4929 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule603 #-}-   {-# LINE 1226 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule603 = \ name_ ->-                                                 {-# LINE 1226 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                                 Map.singleton name_ 1-                                                 {-# LINE 4935 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule604 #-}-   {-# LINE 1236 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule604 = \ ((_lhsIkind) :: VisitKind) name_ ->-                    {-# LINE 1236 "./src-ag/ExecutionPlan2Caml.ag" #-}-                    Map.singleton name_ (Set.singleton _lhsIkind)-                    {-# LINE 4941 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule605 #-}-   {-# LINE 1321 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule605 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) name_ ->-                            {-# LINE 1321 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruledefs-                            {-# LINE 4947 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule606 #-}-   {-# LINE 1322 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule606 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) name_ ->-                            {-# LINE 1322 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruleuses-                            {-# LINE 4953 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule607 #-}-   rule607 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule608 #-}-   rule608 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule609 #-}-   rule609 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule610 #-}-   rule610 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast-   {-# INLINE rule611 #-}-   rule611 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-{-# NOINLINE sem_VisitStep_ChildVisit #-}-sem_VisitStep_ChildVisit :: (Identifier) -> (NontermIdent) -> (VisitIdentifier) -> T_VisitStep -sem_VisitStep_ChildVisit arg_child_ _ arg_visit_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _visitItf = rule612 _lhsIallchildvisit arg_visit_-         _childType = rule613 _lhsIchildTypes arg_child_-         _lhsOerrors :: Seq Error-         _lhsOsem_steps :: PP_Doc-         (_lhsOerrors,_lhsOsem_steps) = rule614 _childType _lhsIfollow _lhsIkind _visitItf arg_child_-         _lhsOdefs :: Set String-         _lhsOdefs = rule615 _lhsIavisitdefs _lhsIoptions _to arg_child_ arg_visit_-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule616 _from _lhsIavisituses _lhsIoptions arg_child_ arg_visit_-         (_from,_to) = rule617 _lhsIallFromToStates arg_visit_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule618  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule619  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule620  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule621  ()-         _lhsOindex :: Int-         _lhsOindex = rule622 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule623 _lhsIisLast-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule624 _lhsIprevMaxSimRefs-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule612 #-}-   {-# LINE 860 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule612 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) visit_ ->-                                {-# LINE 860 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                Map.findWithDefault (error $ "Visit " ++ show visit_ ++ " not found") visit_ _lhsIallchildvisit-                                {-# LINE 5008 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule613 #-}-   {-# LINE 861 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule613 = \ ((_lhsIchildTypes) :: Map Identifier Type) child_ ->-                                 {-# LINE 861 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                 Map.findWithDefault (error ("type of child " ++ show child_ ++ " is not in the childTypes map! " ++ show _lhsIchildTypes)) child_ _lhsIchildTypes-                                 {-# LINE 5014 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule614 #-}-   {-# LINE 862 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule614 = \ _childType ((_lhsIfollow) :: PP_Doc) ((_lhsIkind) :: VisitKind) _visitItf child_ ->-                                               {-# LINE 862 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                               case _visitItf     child_ _childType     _lhsIkind _lhsIfollow of-                                                 Left e      -> (Seq.singleton e, empty)-                                                 Right steps -> (Seq.empty, steps)-                                               {-# LINE 5022 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule615 #-}-   {-# LINE 1323 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule615 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) _to child_ visit_ ->-                            {-# LINE 1323 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            Set.insert (stname child_ _to) $ maybe (error "Visit not found") (Set.map $ attrname _lhsIoptions True child_) $ Map.lookup visit_ _lhsIavisitdefs-                            {-# LINE 5028 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule616 #-}-   {-# LINE 1324 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule616 = \ _from ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) child_ visit_ ->-                            {-# LINE 1324 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            let convert attrs = Map.fromList [ (attrname _lhsIoptions False child_ attr, Just $ mkNonLocalAttr True child_ attr) | attr <- Set.elems attrs ]-                            in Map.insert (stname child_ _from) Nothing $ convert $-                                 maybe (error "Visit not found") id $ Map.lookup visit_ _lhsIavisituses-                            {-# LINE 5036 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule617 #-}-   {-# LINE 1410 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule617 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) visit_ ->-                         {-# LINE 1410 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         Map.findWithDefault (error "visit not in allFromToStates") visit_ _lhsIallFromToStates-                         {-# LINE 5042 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule618 #-}-   rule618 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule619 #-}-   rule619 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule620 #-}-   rule620 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule621 #-}-   rule621 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule622 #-}-   rule622 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule623 #-}-   rule623 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast-   {-# INLINE rule624 #-}-   rule624 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-{-# NOINLINE sem_VisitStep_PureGroup #-}-sem_VisitStep_PureGroup :: T_VisitSteps  -> (Bool) -> T_VisitStep -sem_VisitStep_PureGroup arg_steps_ arg_ordered_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfollow _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)-         _stepsOkind = rule625 arg_ordered_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule626 _stepsIdefs _stepsIlazyIntras arg_ordered_-         _lhsOdefs :: Set String-         _lhsOdefs = rule627 _stepsIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule628 _stepsIerrors-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule629 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule630 _stepsIruleUsage-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule631 _stepsIsem_steps-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule632 _stepsIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule633 _stepsIvisitKinds-         _lhsOindex :: Int-         _lhsOindex = rule634 _stepsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule635 _stepsIisLast-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule636 _stepsIprevMaxSimRefs-         _stepsOallFromToStates = rule637 _lhsIallFromToStates-         _stepsOallInitStates = rule638 _lhsIallInitStates-         _stepsOallVisitKinds = rule639 _lhsIallVisitKinds-         _stepsOallchildvisit = rule640 _lhsIallchildvisit-         _stepsOavisitdefs = rule641 _lhsIavisitdefs-         _stepsOavisituses = rule642 _lhsIavisituses-         _stepsOchildTypes = rule643 _lhsIchildTypes-         _stepsOchildintros = rule644 _lhsIchildintros-         _stepsOfollow = rule645 _lhsIfollow-         _stepsOindex = rule646 _lhsIindex-         _stepsOmrules = rule647 _lhsImrules-         _stepsOoptions = rule648 _lhsIoptions-         _stepsOprevMaxSimRefs = rule649 _lhsIprevMaxSimRefs-         _stepsOruledefs = rule650 _lhsIruledefs-         _stepsOruleuses = rule651 _lhsIruleuses-         _stepsOuseParallel = rule652 _lhsIuseParallel-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule625 #-}-   {-# LINE 836 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule625 = \ ordered_ ->-                 {-# LINE 836 "./src-ag/ExecutionPlan2Caml.ag" #-}-                 VisitPure ordered_-                 {-# LINE 5120 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule626 #-}-   {-# LINE 1344 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule626 = \ ((_stepsIdefs) :: Set String) ((_stepsIlazyIntras) :: Set String) ordered_ ->-                     {-# LINE 1344 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     if ordered_-                     then _stepsIlazyIntras-                     else _stepsIdefs-                     {-# LINE 5128 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule627 #-}-   rule627 = \ ((_stepsIdefs) :: Set String) ->-     _stepsIdefs-   {-# INLINE rule628 #-}-   rule628 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule629 #-}-   rule629 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule630 #-}-   rule630 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule631 #-}-   rule631 = \ ((_stepsIsem_steps) :: PP_Doc) ->-     _stepsIsem_steps-   {-# INLINE rule632 #-}-   rule632 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->-     _stepsIuses-   {-# INLINE rule633 #-}-   rule633 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _stepsIvisitKinds-   {-# INLINE rule634 #-}-   rule634 = \ ((_stepsIindex) :: Int) ->-     _stepsIindex-   {-# INLINE rule635 #-}-   rule635 = \ ((_stepsIisLast) :: Bool) ->-     _stepsIisLast-   {-# INLINE rule636 #-}-   rule636 = \ ((_stepsIprevMaxSimRefs) :: Int) ->-     _stepsIprevMaxSimRefs-   {-# INLINE rule637 #-}-   rule637 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule638 #-}-   rule638 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule639 #-}-   rule639 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule640 #-}-   rule640 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule641 #-}-   rule641 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule642 #-}-   rule642 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule643 #-}-   rule643 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule644 #-}-   rule644 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule645 #-}-   rule645 = \ ((_lhsIfollow) :: PP_Doc) ->-     _lhsIfollow-   {-# INLINE rule646 #-}-   rule646 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule647 #-}-   rule647 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule648 #-}-   rule648 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule649 #-}-   rule649 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-   {-# INLINE rule650 #-}-   rule650 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule651 #-}-   rule651 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule652 #-}-   rule652 = \ ((_lhsIuseParallel) :: Bool) ->-     _lhsIuseParallel-{-# NOINLINE sem_VisitStep_Sim #-}-sem_VisitStep_Sim :: T_VisitSteps  -> T_VisitStep -sem_VisitStep_Sim arg_steps_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfollow _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)-         _stepsOindex = rule653  ()-         _lhsOindex :: Int-         _lhsOindex = rule654 _lhsIindex-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule655 _lhsIprevMaxSimRefs _stepsIindex _useParallel-         _useParallel = rule656 _lhsIoptions _stepsIsize-         _lhsOdefs :: Set String-         _lhsOdefs = rule657 _stepsIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule658 _stepsIerrors-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule659 _stepsIlazyIntras-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule660 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule661 _stepsIruleUsage-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule662 _stepsIsem_steps-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule663 _stepsIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule664 _stepsIvisitKinds-         _lhsOisLast :: Bool-         _lhsOisLast = rule665 _stepsIisLast-         _stepsOallFromToStates = rule666 _lhsIallFromToStates-         _stepsOallInitStates = rule667 _lhsIallInitStates-         _stepsOallVisitKinds = rule668 _lhsIallVisitKinds-         _stepsOallchildvisit = rule669 _lhsIallchildvisit-         _stepsOavisitdefs = rule670 _lhsIavisitdefs-         _stepsOavisituses = rule671 _lhsIavisituses-         _stepsOchildTypes = rule672 _lhsIchildTypes-         _stepsOchildintros = rule673 _lhsIchildintros-         _stepsOfollow = rule674 _lhsIfollow-         _stepsOkind = rule675 _lhsIkind-         _stepsOmrules = rule676 _lhsImrules-         _stepsOoptions = rule677 _lhsIoptions-         _stepsOprevMaxSimRefs = rule678 _lhsIprevMaxSimRefs-         _stepsOruledefs = rule679 _lhsIruledefs-         _stepsOruleuses = rule680 _lhsIruleuses-         _stepsOuseParallel = rule681 _useParallel-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule653 #-}-   {-# LINE 885 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule653 = \  (_ :: ()) ->-                                     {-# LINE 885 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                     0-                                     {-# LINE 5264 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule654 #-}-   {-# LINE 886 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule654 = \ ((_lhsIindex) :: Int) ->-                                     {-# LINE 886 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                     _lhsIindex-                                     {-# LINE 5270 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule655 #-}-   {-# LINE 893 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule655 = \ ((_lhsIprevMaxSimRefs) :: Int) ((_stepsIindex) :: Int) _useParallel ->-                         {-# LINE 893 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         if _useParallel-                         then _lhsIprevMaxSimRefs `max` (_stepsIindex - 1)-                         else _lhsIprevMaxSimRefs-                         {-# LINE 5278 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule656 #-}-   {-# LINE 909 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule656 = \ ((_lhsIoptions) :: Options) ((_stepsIsize) :: Int) ->-                                         {-# LINE 909 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                         parallelInvoke _lhsIoptions && _stepsIsize > 1-                                         {-# LINE 5284 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule657 #-}-   rule657 = \ ((_stepsIdefs) :: Set String) ->-     _stepsIdefs-   {-# INLINE rule658 #-}-   rule658 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule659 #-}-   rule659 = \ ((_stepsIlazyIntras) :: Set String) ->-     _stepsIlazyIntras-   {-# INLINE rule660 #-}-   rule660 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule661 #-}-   rule661 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule662 #-}-   rule662 = \ ((_stepsIsem_steps) :: PP_Doc) ->-     _stepsIsem_steps-   {-# INLINE rule663 #-}-   rule663 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->-     _stepsIuses-   {-# INLINE rule664 #-}-   rule664 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _stepsIvisitKinds-   {-# INLINE rule665 #-}-   rule665 = \ ((_stepsIisLast) :: Bool) ->-     _stepsIisLast-   {-# INLINE rule666 #-}-   rule666 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule667 #-}-   rule667 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule668 #-}-   rule668 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule669 #-}-   rule669 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule670 #-}-   rule670 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule671 #-}-   rule671 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule672 #-}-   rule672 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule673 #-}-   rule673 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule674 #-}-   rule674 = \ ((_lhsIfollow) :: PP_Doc) ->-     _lhsIfollow-   {-# INLINE rule675 #-}-   rule675 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule676 #-}-   rule676 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule677 #-}-   rule677 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule678 #-}-   rule678 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-   {-# INLINE rule679 #-}-   rule679 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule680 #-}-   rule680 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule681 #-}-   rule681 = \ _useParallel ->-     _useParallel-{-# NOINLINE sem_VisitStep_ChildIntro #-}-sem_VisitStep_ChildIntro :: (Identifier) -> T_VisitStep -sem_VisitStep_ChildIntro arg_child_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _attachItf = rule682 _lhsIchildintros arg_child_-         _lhsOerrors :: Seq Error-         _lhsOdefs :: Set String-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         (_lhsOerrors,_sem_steps,_lhsOdefs,_lhsOuses) = rule683 _attachItf _lhsIkind-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule684 _lhsIfollow _sem_steps-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule685  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule686  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule687  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule688  ()-         _lhsOindex :: Int-         _lhsOindex = rule689 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule690 _lhsIisLast-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule691 _lhsIprevMaxSimRefs-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule682 #-}-   {-# LINE 854 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule682 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) child_ ->-                                 {-# LINE 854 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                 Map.findWithDefault (error $ "Child " ++ show child_ ++ " not found") child_ _lhsIchildintros-                                 {-# LINE 5396 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule683 #-}-   {-# LINE 856 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule683 = \ _attachItf ((_lhsIkind) :: VisitKind) ->-                     {-# LINE 856 "./src-ag/ExecutionPlan2Caml.ag" #-}-                     case _attachItf     _lhsIkind of-                       Left e                   -> (Seq.singleton e, empty, Set.empty, Map.empty)-                       Right (code, defs, uses) -> (Seq.empty, code, defs, uses)-                     {-# LINE 5404 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule684 #-}-   {-# LINE 859 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule684 = \ ((_lhsIfollow) :: PP_Doc) _sem_steps ->-                                 {-# LINE 859 "./src-ag/ExecutionPlan2Caml.ag" #-}-                                 _sem_steps     >-< _lhsIfollow-                                 {-# LINE 5410 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule685 #-}-   rule685 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule686 #-}-   rule686 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule687 #-}-   rule687 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule688 #-}-   rule688 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule689 #-}-   rule689 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule690 #-}-   rule690 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast-   {-# INLINE rule691 #-}-   rule691 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs---- VisitSteps ----------------------------------------------------- wrapper-data Inh_VisitSteps  = Inh_VisitSteps { allFromToStates_Inh_VisitSteps :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitSteps :: (Map NontermIdent Int), allVisitKinds_Inh_VisitSteps :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitSteps :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), avisitdefs_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitSteps :: (Map Identifier Type), childintros_Inh_VisitSteps :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), follow_Inh_VisitSteps :: (PP_Doc), index_Inh_VisitSteps :: (Int), kind_Inh_VisitSteps :: (VisitKind), mrules_Inh_VisitSteps :: (Map Identifier (VisitKind ->  Either Error PP_Doc)), options_Inh_VisitSteps :: (Options), prevMaxSimRefs_Inh_VisitSteps :: (Int), ruledefs_Inh_VisitSteps :: (Map Identifier (Set String)), ruleuses_Inh_VisitSteps :: (Map Identifier (Map String (Maybe NonLocalAttr))), useParallel_Inh_VisitSteps :: (Bool) }-data Syn_VisitSteps  = Syn_VisitSteps { defs_Syn_VisitSteps :: (Set String), errors_Syn_VisitSteps :: (Seq Error), index_Syn_VisitSteps :: (Int), isLast_Syn_VisitSteps :: (Bool), lazyIntras_Syn_VisitSteps :: (Set String), prevMaxSimRefs_Syn_VisitSteps :: (Int), ruleKinds_Syn_VisitSteps :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitSteps :: (Map Identifier Int), sem_steps_Syn_VisitSteps :: (PP_Doc), size_Syn_VisitSteps :: (Int), uses_Syn_VisitSteps :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitSteps :: (Map VisitIdentifier VisitKind) }-{-# INLINABLE wrap_VisitSteps #-}-wrap_VisitSteps :: T_VisitSteps  -> Inh_VisitSteps  -> (Syn_VisitSteps )-wrap_VisitSteps (T_VisitSteps act) (Inh_VisitSteps _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel-        (T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOuses _lhsOvisitKinds) <- return (inv_VisitSteps_s53 sem arg)-        return (Syn_VisitSteps _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOuses _lhsOvisitKinds)-   )---- cata-{-# NOINLINE sem_VisitSteps #-}-sem_VisitSteps :: VisitSteps  -> T_VisitSteps -sem_VisitSteps list = Prelude.foldr sem_VisitSteps_Cons sem_VisitSteps_Nil (Prelude.map sem_VisitStep list)---- semantic domain-newtype T_VisitSteps  = T_VisitSteps {-                                     attach_T_VisitSteps :: Identity (T_VisitSteps_s53 )-                                     }-newtype T_VisitSteps_s53  = C_VisitSteps_s53 {-                                             inv_VisitSteps_s53 :: (T_VisitSteps_v52 )-                                             }-data T_VisitSteps_s54  = C_VisitSteps_s54-type T_VisitSteps_v52  = (T_VisitSteps_vIn52 ) -> (T_VisitSteps_vOut52 )-data T_VisitSteps_vIn52  = T_VisitSteps_vIn52 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (PP_Doc) (Int) (VisitKind) (Map Identifier (VisitKind ->  Either Error PP_Doc)) (Options) (Int) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Bool)-data T_VisitSteps_vOut52  = T_VisitSteps_vOut52 (Set String) (Seq Error) (Int) (Bool) (Set String) (Int) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Int) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)-{-# NOINLINE sem_VisitSteps_Cons #-}-sem_VisitSteps_Cons :: T_VisitStep  -> T_VisitSteps  -> T_VisitSteps -sem_VisitSteps_Cons arg_hd_ arg_tl_ = T_VisitSteps (return st53) where-   {-# NOINLINE st53 #-}-   st53 = let-      v52 :: T_VisitSteps_v52 -      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _hdX50 = Control.Monad.Identity.runIdentity (attach_T_VisitStep (arg_hd_))-         _tlX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_tl_))-         (T_VisitStep_vOut49 _hdIdefs _hdIerrors _hdIindex _hdIisLast _hdIlazyIntras _hdIprevMaxSimRefs _hdIruleKinds _hdIruleUsage _hdIsem_steps _hdIuses _hdIvisitKinds) = inv_VisitStep_s50 _hdX50 (T_VisitStep_vIn49 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOchildTypes _hdOchildintros _hdOfollow _hdOindex _hdOisLast _hdOkind _hdOmrules _hdOoptions _hdOprevMaxSimRefs _hdOruledefs _hdOruleuses _hdOuseParallel)-         (T_VisitSteps_vOut52 _tlIdefs _tlIerrors _tlIindex _tlIisLast _tlIlazyIntras _tlIprevMaxSimRefs _tlIruleKinds _tlIruleUsage _tlIsem_steps _tlIsize _tlIuses _tlIvisitKinds) = inv_VisitSteps_s53 _tlX53 (T_VisitSteps_vIn52 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOchildTypes _tlOchildintros _tlOfollow _tlOindex _tlOkind _tlOmrules _tlOoptions _tlOprevMaxSimRefs _tlOruledefs _tlOruleuses _tlOuseParallel)-         _hdOfollow = rule692 _tlIsem_steps-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule693 _hdIsem_steps-         _lhsOsize :: Int-         _lhsOsize = rule694 _tlIsize-         _hdOindex = rule695 _lhsIindex-         _tlOindex = rule696 _lhsIindex-         _lhsOindex :: Int-         _lhsOindex = rule697 _tlIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule698  ()-         _hdOisLast = rule699 _tlIisLast-         _lhsOdefs :: Set String-         _lhsOdefs = rule700 _hdIdefs _tlIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule701 _hdIerrors _tlIerrors-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule702 _hdIlazyIntras _tlIlazyIntras-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule703 _hdIruleKinds _tlIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule704 _hdIruleUsage _tlIruleUsage-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule705 _hdIuses _tlIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule706 _hdIvisitKinds _tlIvisitKinds-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule707 _tlIprevMaxSimRefs-         _hdOallFromToStates = rule708 _lhsIallFromToStates-         _hdOallInitStates = rule709 _lhsIallInitStates-         _hdOallVisitKinds = rule710 _lhsIallVisitKinds-         _hdOallchildvisit = rule711 _lhsIallchildvisit-         _hdOavisitdefs = rule712 _lhsIavisitdefs-         _hdOavisituses = rule713 _lhsIavisituses-         _hdOchildTypes = rule714 _lhsIchildTypes-         _hdOchildintros = rule715 _lhsIchildintros-         _hdOkind = rule716 _lhsIkind-         _hdOmrules = rule717 _lhsImrules-         _hdOoptions = rule718 _lhsIoptions-         _hdOprevMaxSimRefs = rule719 _lhsIprevMaxSimRefs-         _hdOruledefs = rule720 _lhsIruledefs-         _hdOruleuses = rule721 _lhsIruleuses-         _hdOuseParallel = rule722 _lhsIuseParallel-         _tlOallFromToStates = rule723 _lhsIallFromToStates-         _tlOallInitStates = rule724 _lhsIallInitStates-         _tlOallVisitKinds = rule725 _lhsIallVisitKinds-         _tlOallchildvisit = rule726 _lhsIallchildvisit-         _tlOavisitdefs = rule727 _lhsIavisitdefs-         _tlOavisituses = rule728 _lhsIavisituses-         _tlOchildTypes = rule729 _lhsIchildTypes-         _tlOchildintros = rule730 _lhsIchildintros-         _tlOfollow = rule731 _lhsIfollow-         _tlOkind = rule732 _lhsIkind-         _tlOmrules = rule733 _lhsImrules-         _tlOoptions = rule734 _lhsIoptions-         _tlOprevMaxSimRefs = rule735 _hdIprevMaxSimRefs-         _tlOruledefs = rule736 _lhsIruledefs-         _tlOruleuses = rule737 _lhsIruleuses-         _tlOuseParallel = rule738 _lhsIuseParallel-         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitSteps_s53 v52-   {-# INLINE rule692 #-}-   {-# LINE 844 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule692 = \ ((_tlIsem_steps) :: PP_Doc) ->-                            {-# LINE 844 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            _tlIsem_steps-                            {-# LINE 5541 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule693 #-}-   {-# LINE 845 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule693 = \ ((_hdIsem_steps) :: PP_Doc) ->-                            {-# LINE 845 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            _hdIsem_steps-                            {-# LINE 5547 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule694 #-}-   {-# LINE 876 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule694 = \ ((_tlIsize) :: Int) ->-                      {-# LINE 876 "./src-ag/ExecutionPlan2Caml.ag" #-}-                      1 + _tlIsize-                      {-# LINE 5553 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule695 #-}-   {-# LINE 881 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule695 = \ ((_lhsIindex) :: Int) ->-                {-# LINE 881 "./src-ag/ExecutionPlan2Caml.ag" #-}-                _lhsIindex-                {-# LINE 5559 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule696 #-}-   {-# LINE 882 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule696 = \ ((_lhsIindex) :: Int) ->-                {-# LINE 882 "./src-ag/ExecutionPlan2Caml.ag" #-}-                1 + _lhsIindex-                {-# LINE 5565 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule697 #-}-   {-# LINE 883 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule697 = \ ((_tlIindex) :: Int) ->-                {-# LINE 883 "./src-ag/ExecutionPlan2Caml.ag" #-}-                _tlIindex-                {-# LINE 5571 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule698 #-}-   {-# LINE 902 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule698 = \  (_ :: ()) ->-                         {-# LINE 902 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         False-                         {-# LINE 5577 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule699 #-}-   {-# LINE 903 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule699 = \ ((_tlIisLast) :: Bool) ->-                         {-# LINE 903 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         _tlIisLast-                         {-# LINE 5583 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule700 #-}-   rule700 = \ ((_hdIdefs) :: Set String) ((_tlIdefs) :: Set String) ->-     _hdIdefs `Set.union` _tlIdefs-   {-# INLINE rule701 #-}-   rule701 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule702 #-}-   rule702 = \ ((_hdIlazyIntras) :: Set String) ((_tlIlazyIntras) :: Set String) ->-     _hdIlazyIntras `Set.union` _tlIlazyIntras-   {-# INLINE rule703 #-}-   rule703 = \ ((_hdIruleKinds) :: Map Identifier (Set VisitKind)) ((_tlIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _hdIruleKinds `unionWithMappend` _tlIruleKinds-   {-# INLINE rule704 #-}-   rule704 = \ ((_hdIruleUsage) :: Map Identifier Int) ((_tlIruleUsage) :: Map Identifier Int) ->-     _hdIruleUsage `unionWithSum` _tlIruleUsage-   {-# INLINE rule705 #-}-   rule705 = \ ((_hdIuses) :: Map String (Maybe NonLocalAttr)) ((_tlIuses) :: Map String (Maybe NonLocalAttr)) ->-     _hdIuses `Map.union` _tlIuses-   {-# INLINE rule706 #-}-   rule706 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule707 #-}-   rule707 = \ ((_tlIprevMaxSimRefs) :: Int) ->-     _tlIprevMaxSimRefs-   {-# INLINE rule708 #-}-   rule708 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule709 #-}-   rule709 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule710 #-}-   rule710 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule711 #-}-   rule711 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule712 #-}-   rule712 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule713 #-}-   rule713 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule714 #-}-   rule714 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule715 #-}-   rule715 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule716 #-}-   rule716 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule717 #-}-   rule717 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule718 #-}-   rule718 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule719 #-}-   rule719 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-   {-# INLINE rule720 #-}-   rule720 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule721 #-}-   rule721 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule722 #-}-   rule722 = \ ((_lhsIuseParallel) :: Bool) ->-     _lhsIuseParallel-   {-# INLINE rule723 #-}-   rule723 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule724 #-}-   rule724 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule725 #-}-   rule725 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule726 #-}-   rule726 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->-     _lhsIallchildvisit-   {-# INLINE rule727 #-}-   rule727 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule728 #-}-   rule728 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule729 #-}-   rule729 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule730 #-}-   rule730 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule731 #-}-   rule731 = \ ((_lhsIfollow) :: PP_Doc) ->-     _lhsIfollow-   {-# INLINE rule732 #-}-   rule732 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule733 #-}-   rule733 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule734 #-}-   rule734 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule735 #-}-   rule735 = \ ((_hdIprevMaxSimRefs) :: Int) ->-     _hdIprevMaxSimRefs-   {-# INLINE rule736 #-}-   rule736 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule737 #-}-   rule737 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule738 #-}-   rule738 = \ ((_lhsIuseParallel) :: Bool) ->-     _lhsIuseParallel-{-# NOINLINE sem_VisitSteps_Nil #-}-sem_VisitSteps_Nil ::  T_VisitSteps -sem_VisitSteps_Nil  = T_VisitSteps (return st53) where-   {-# NOINLINE st53 #-}-   st53 = let-      v52 :: T_VisitSteps_v52 -      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule739 _lhsIfollow-         _lhsOsize :: Int-         _lhsOsize = rule740  ()-         _lhsOisLast :: Bool-         _lhsOisLast = rule741  ()-         _lhsOdefs :: Set String-         _lhsOdefs = rule742  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule743  ()-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule744  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule745  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule746  ()-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule747  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule748  ()-         _lhsOindex :: Int-         _lhsOindex = rule749 _lhsIindex-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule750 _lhsIprevMaxSimRefs-         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitSteps_s53 v52-   {-# INLINE rule739 #-}-   {-# LINE 846 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule739 = \ ((_lhsIfollow) :: PP_Doc) ->-                            {-# LINE 846 "./src-ag/ExecutionPlan2Caml.ag" #-}-                            _lhsIfollow-                            {-# LINE 5740 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule740 #-}-   {-# LINE 875 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule740 = \  (_ :: ()) ->-                      {-# LINE 875 "./src-ag/ExecutionPlan2Caml.ag" #-}-                      0-                      {-# LINE 5746 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule741 #-}-   {-# LINE 901 "./src-ag/ExecutionPlan2Caml.ag" #-}-   rule741 = \  (_ :: ()) ->-                         {-# LINE 901 "./src-ag/ExecutionPlan2Caml.ag" #-}-                         True-                         {-# LINE 5752 "dist/build/ExecutionPlan2Caml.hs"#-}-   {-# INLINE rule742 #-}-   rule742 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule743 #-}-   rule743 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule744 #-}-   rule744 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule745 #-}-   rule745 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule746 #-}-   rule746 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule747 #-}-   rule747 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule748 #-}-   rule748 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule749 #-}-   rule749 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule750 #-}-   rule750 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs---- Visits --------------------------------------------------------- wrapper-data Inh_Visits  = Inh_Visits { allFromToStates_Inh_Visits :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visits :: (Map NontermIdent Attributes), allInitStates_Inh_Visits :: (Map NontermIdent Int), allSynmap_Inh_Visits :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visits :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visits :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), allintramap_Inh_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visits :: (Map Identifier Type), childintros_Inh_Visits :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visits :: (ConstructorIdent), inhmap_Inh_Visits :: (Attributes), mrules_Inh_Visits :: (Map Identifier (VisitKind ->  Either Error PP_Doc)), nextVisits_Inh_Visits :: (Map StateIdentifier StateCtx), nt_Inh_Visits :: (NontermIdent), options_Inh_Visits :: (Options), params_Inh_Visits :: ([Identifier]), prevVisits_Inh_Visits :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visits :: (Map Identifier (Set String)), ruleuses_Inh_Visits :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visits :: (Attributes), terminaldefs_Inh_Visits :: (Set String) }-data Syn_Visits  = Syn_Visits { allvisits_Syn_Visits :: ([VisitStateState]), childvisit_Syn_Visits :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), errors_Syn_Visits :: (Seq Error), fromToStates_Syn_Visits :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visits :: (Set String), ruleKinds_Syn_Visits :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visits :: (Map Identifier Int), sem_visit_Syn_Visits :: ( [(StateIdentifier,PP_Doc)] ), t_visits_Syn_Visits :: (PP_Doc), visitKinds_Syn_Visits :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visits :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visits :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_Visits #-}-wrap_Visits :: T_Visits  -> Inh_Visits  -> (Syn_Visits )-wrap_Visits (T_Visits act) (Inh_Visits _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Visits_vIn55 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs-        (T_Visits_vOut55 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visits_s56 sem arg)+{-# LINE 2 "src-ag/HsToken.ag" #-}++import CommonTypes+import UU.Scanner.Position(Pos)+{-# LINE 10 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 2 "src-ag/Expression.ag" #-}++import UU.Scanner.Position(Pos)+import HsToken+{-# LINE 16 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 2 "src-ag/Patterns.ag" #-}++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)+{-# LINE 23 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 2 "src-ag/ExecutionPlan.ag" #-}++-- VisitSyntax.ag imports+import Patterns    (Pattern(..),Patterns)+import Expression  (Expression(..))+import CommonTypes+import ErrorMessages++import qualified Data.Set as Set+import Data.Set(Set)+import qualified Data.Map as Map+import Data.Map(Map)+{-# LINE 37 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 32 "src-ag/ExecutionPlan2Caml.ag" #-}++import ExecutionPlan+import Pretty+import PPUtil+import Options+import Data.Monoid(mappend,mempty)+import Data.Maybe+import Data.Graph+import Debug.Trace+import System.IO+import System.Directory+import System.FilePath+import UU.Scanner.Position++import TokenDef+import HsToken+import ErrorMessages++import Data.Set (Set)+import qualified Data.Set as Set+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Sequence(Seq)+import qualified Data.Sequence as Seq+import Data.Foldable(toList)+{-# LINE 65 "dist/build/ExecutionPlan2Caml.hs" #-}+import Control.Monad.Identity (Identity)+import qualified Control.Monad.Identity+{-# LINE 175 "src-ag/ExecutionPlan2Caml.ag" #-}++ppRecordTp :: PP a => [a] -> PP_Doc+ppRecordTp es+  | null es   = text "unit"+  | otherwise = pp_block "{" "}" "; " (map pp es)++ppRecordVal :: PP a => [a] -> PP_Doc+ppRecordVal es+  | null es   = text "()"+  | otherwise = pp_block "{" "}" "; " (map pp es)++ppFieldsVal :: Bool -> [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)] -> PP_Doc+ppFieldsVal record fields+  | null fields = text "()"+  | record      = ppRecordVal [ r >#< "=" >#< x | (r,x,_,_) <- fields ]+  | otherwise   = pp_block "(" ")" "," [ x | (_,x,_,_) <- fields ]++ppFieldsType :: Bool -> Bool -> [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)] -> PP_Doc+ppFieldsType record defor fields+  | null fields = text "unit"+  | record      = ppRecordTp [ r >#< ":" >#< (if defor then d else f) | (r,_,d,f) <- fields ]+  | otherwise   = pp_block "(" ")" "*" [ if defor then d else f | (_,_,d,f) <- fields ]+{-# LINE 91 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 288 "src-ag/ExecutionPlan2Caml.ag" #-}++ppTp :: Type -> PP_Doc+ppTp tp = case tp of+  Haskell t -> pp t   -- ocaml type+  NT nt tps deforested+    | nt == _SELF -> pp "?SELF?"+    | null tps    -> ppNontTp nt deforested+    | otherwise   -> pp_parens (ppSpaced (map pp_parens tps) >#< ppNontTp nt deforested)+  Self -> pp "?SELF?"++ppNontTp :: NontermIdent -> Bool -> PP_Doc+ppNontTp nt True  = pp "t_" >|< pp nt+ppNontTp nt False = pp nt++-- multiple type parameters go into a tuple+ppTypeParams :: PP a => [a] -> PP_Doc+ppTypeParams []  = empty+ppTypeParams [x] = pp x+ppTypeParams xs  = pp_block "(" ")" "," (map pp xs)+{-# LINE 113 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 361 "src-ag/ExecutionPlan2Caml.ag" #-}++-- convention for nonterminals to module names+modName :: NontermIdent -> PP_Doc+modName nt = pp "M_" >|< pp nt++ppFunDecl :: Bool -> PP_Doc -> [(PP_Doc,PP_Doc)] -> PP_Doc -> PP_Doc -> PP_Doc+ppFunDecl gensigs nm args resSig expr = body where+  body = nm >#< ppSpaced (map arg args) >#< ppRes >#< "="+         >-< indent 2 expr+  arg (arg,tp) = ppArg gensigs arg tp+  ppRes+    | gensigs  = ":" >#< resSig+    | otherwise = empty++ppArg :: Bool -> PP_Doc -> PP_Doc -> PP_Doc+ppArg gensigs arg tp+  | gensigs   = pp_parens (arg >#< ":" >#< tp)+  | otherwise = arg++{-# LINE 135 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 428 "src-ag/ExecutionPlan2Caml.ag" #-}+type VisitStateState = (VisitIdentifier,StateIdentifier, StateIdentifier)+{-# LINE 139 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 464 "src-ag/ExecutionPlan2Caml.ag" #-}++--+-- conventions+--++-- type of the state of a node: a closure containing the children states and attributes,+-- with code of type 'type_nt_sem' that represents the subsequent visits to successor states.+type_nt_state nt st = "s_" >|< nt >|< "_" >|< st++-- type of a visit to a node (the initial, and when in a given state)+-- an instance of this type is called the "semantics"+type_nt_sem_top nt = "t_" >|< nt+type_nt_sem nt st = type_nt_sem_top nt >|< "_s" >|< st++-- type of a caller (contains visit selection + inputs + continuation)+type_caller nt st = "c_" >|< nt >|< "_s" >|< st++-- names of records+nm_attach nt = "attach_">|< nt+nm_invoke nt st = "inv_" >|< nt >|< "_s" >|< st++-- name of the type variable representing the result type of the continuation+cont_tvar = text "'cont__"+++-- order states in reverse topological order so that successor states are+-- earlier in the resulting list.+orderStates :: StateIdentifier -> [VisitStateState] -> [StateIdentifier]+orderStates initial edges = res where+  source  = Map.singleton initial Set.empty  -- ensures that the initial state is in graph even when there are no edges+  targets = [ Map.singleton t Set.empty | (_,_,t) <- edges ]+  deps    = [ Map.singleton f (Set.singleton t) | (_,f,t) <- edges ]++  mp  = Map.unionsWith Set.union (source : (targets ++ deps))+  es  = [ (f,f,Set.toList ts) | (f,ts) <- Map.toList mp ]+  cps = stronglyConnComp es+  res = flattenSCCs cps+{-# LINE 179 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 521 "src-ag/ExecutionPlan2Caml.ag" #-}++type_caller_visit nt v = "c_" >|< nt >|< "_v" >|< v+con_visit nt v = "C_" >|< nt >|< "_v" >|< v++-- field names+nm_inh nt v  = "inh_" >|< nt >|< "_v" >|< v+nm_cont nt v = "cont_" >|< nt >|< "_v" >|< v+{-# LINE 189 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 567 "src-ag/ExecutionPlan2Caml.ag" #-}++-- more naming conventions+nm_inarg nm nt v = "i_" >|< nm >|< "_" >|< nt >|< "_v" >|< v+nm_outarg nm nt v = "o_" >|< nm >|< "_" >|< nt >|< "_v" >|< v+nm_outarg_cont = nm_outarg "_cont"++conNmTVisit nt vId      = "t_" >|< nt >|< "_v"    >|< vId+conNmTVisitIn nt vId    = "t_" >|< nt >|< "_vIn"  >|< vId+conNmTVisitOut nt vId   = "t_" >|< nt >|< "_vOut" >|< vId++-- todo: remove ppMonadType+ppMonadType :: Options -> PP_Doc+ppMonadType opts+  | parallelInvoke opts = text "IO"+  | otherwise           = text "Identity"+{-# LINE 207 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 780 "src-ag/ExecutionPlan2Caml.ag" #-}++nm_visit v = "__v" >|< v+nm_k st = "__k" >|< st+nm_st st = "__st" >|< st++mklets :: (PP b, PP c) => [b] -> c -> PP_Doc+mklets defs body = res where+  ppLet def = "let" >#< def >#< "in"+  res = vlist (map ppLet defs) >-< body+{-# LINE 219 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 822 "src-ag/ExecutionPlan2Caml.ag" #-}++resultValName :: String+resultValName = "__result_"++nextStName :: String+nextStName = "__st_"+{-# LINE 228 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 963 "src-ag/ExecutionPlan2Caml.ag" #-}++stname :: Identifier -> Int -> String+stname child st = "_" ++ getName child ++ "X" ++ show st++-- should actually return some conversion info+compatibleAttach :: VisitKind -> NontermIdent -> Options -> Bool+compatibleAttach _ _ _ = True+{-# LINE 238 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 1030 "src-ag/ExecutionPlan2Caml.ag" #-}++dummyPat :: Options -> Bool -> PP_Doc+dummyPat opts noArgs+  | not noArgs            = empty+  | strictDummyToken opts = text "()"+  | otherwise             = text "(_ : unit)"++dummyArg :: Options -> Bool -> PP_Doc+dummyArg opts noArgs+  | not noArgs            = empty+  | otherwise             = text "()"++dummyType :: Options -> Bool -> PP_Doc+dummyType opts noArgs+  | not noArgs            = empty+  | otherwise             = text "unit"+{-# LINE 257 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 1106 "src-ag/ExecutionPlan2Caml.ag" #-}++data NonLocalAttr+  = AttrInh Identifier Identifier+  | AttrSyn Identifier Identifier deriving Show++mkNonLocalAttr :: Bool -> Identifier -> Identifier -> NonLocalAttr+mkNonLocalAttr True  = AttrInh  -- True: inherited attr+mkNonLocalAttr False = AttrSyn++lookupAttrType :: NonLocalAttr -> Map Identifier Attributes -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc+lookupAttrType (AttrInh child name) inhs _ = lookupType child name inhs+lookupAttrType (AttrSyn child name) _ syns = lookupType child name syns++-- Note: if the child takes type parameters, the type of an attribute of this child may refer to these parameters. This means that+-- the actual type of the attribute needs to have its type parameters substituted with the actual type argument of the child.+-- However, for now we simply decide to return Nothing in this case, which skips the type annotation.+lookupType :: Identifier -> Identifier -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc+lookupType child name attrMp childMp+  | noParameters childTp = Just ppDoc+  | otherwise            = Nothing+  where+    attrTp     = Map.findWithDefault (error "lookupType: the attribute is not in the attrs of the child") name childAttrs+    childAttrs = Map.findWithDefault (error "lookupType: the attributes of the nonterm are not in the map") nonterm attrMp+    nonterm    = extractNonterminal childTp+    childTp    = Map.findWithDefault (error ("lookupType: the child " ++ show child ++ "is not in the appropriate map")) child childMp+    ppDoc      = ppTp attrTp++noParameters :: Type -> Bool+noParameters (Haskell _)   = True+noParameters (NT _ args _) = null args+{-# LINE 290 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 1204 "src-ag/ExecutionPlan2Caml.ag" #-}++contNm = text "__cont_"+inpsNm = text "__inps_"++-- a `compatibleKind` b  means: can kind b be invoked from a+compatibleKind :: VisitKind -> VisitKind -> Bool+compatibleKind _              _             = True++compatibleRule :: VisitKind -> Bool -> Bool+compatibleRule (VisitPure _) False = False+compatibleRule _             _     = True+{-# LINE 304 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 1229 "src-ag/ExecutionPlan2Caml.ag" #-}++unionWithSum = Map.unionWith (+)+{-# LINE 309 "dist/build/ExecutionPlan2Caml.hs" #-}++{-# LINE 1252 "src-ag/ExecutionPlan2Caml.ag" #-}++uwSetUnion :: (Ord a, Ord b) => Map a (Set b) -> Map a (Set b) -> Map a (Set b)+uwSetUnion = Map.unionWith Set.union++uwMapUnion :: (Ord a, Ord b) => Map a (Map b c) -> Map a (Map b c) -> Map a (Map b c)+uwMapUnion = Map.unionWith Map.union+{-# LINE 318 "dist/build/ExecutionPlan2Caml.hs" #-}+-- EChild ------------------------------------------------------+-- wrapper+data Inh_EChild  = Inh_EChild { allInitStates_Inh_EChild :: (Map NontermIdent Int), con_Inh_EChild :: (ConstructorIdent), mainFile_Inh_EChild :: (String), mainName_Inh_EChild :: (String), nt_Inh_EChild :: (NontermIdent), options_Inh_EChild :: (Options) }+data Syn_EChild  = Syn_EChild { argnamesw_Syn_EChild :: ( PP_Doc ), childTypes_Syn_EChild :: (Map Identifier Type), childintros_Syn_EChild :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), sigs_Syn_EChild :: ([(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]), terminaldefs_Syn_EChild :: (Set String) }+{-# INLINABLE wrap_EChild #-}+wrap_EChild :: T_EChild  -> Inh_EChild  -> (Syn_EChild )+wrap_EChild (T_EChild act) (Inh_EChild _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg1 = T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions+        (T_EChild_vOut1 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs) <- return (inv_EChild_s2 sem arg1)+        return (Syn_EChild _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs)+   )++-- cata+{-# NOINLINE sem_EChild #-}+sem_EChild :: EChild  -> T_EChild +sem_EChild ( EChild name_ tp_ kind_ hasAround_ merges_ isMerged_ ) = sem_EChild_EChild name_ tp_ kind_ hasAround_ merges_ isMerged_+sem_EChild ( ETerm name_ tp_ ) = sem_EChild_ETerm name_ tp_++-- semantic domain+newtype T_EChild  = T_EChild {+                             attach_T_EChild :: Identity (T_EChild_s2 )+                             }+newtype T_EChild_s2  = C_EChild_s2 {+                                   inv_EChild_s2 :: (T_EChild_v1 )+                                   }+data T_EChild_s3  = C_EChild_s3+type T_EChild_v1  = (T_EChild_vIn1 ) -> (T_EChild_vOut1 )+data T_EChild_vIn1  = T_EChild_vIn1 (Map NontermIdent Int) (ConstructorIdent) (String) (String) (NontermIdent) (Options)+data T_EChild_vOut1  = T_EChild_vOut1 ( PP_Doc ) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ([(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) (Set String)+{-# NOINLINE sem_EChild_EChild #-}+sem_EChild_EChild :: (Identifier) -> (Type) -> (ChildKind) -> (Bool) -> (Maybe [Identifier]) -> (Bool) -> T_EChild +sem_EChild_EChild arg_name_ arg_tp_ arg_kind_ arg_hasAround_ _ _ = T_EChild (return st2) where+   {-# NOINLINE st2 #-}+   st2 = let+      v1 :: T_EChild_v1 +      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) -> ( let+         _tpDocFor = rule0 arg_tp_+         _tpDocDefor = rule1 arg_tp_+         _fieldNm = rule2 _lhsIcon _lhsInt arg_name_+         _childNm = rule3 arg_name_+         _field = rule4 _childNm _fieldNm _tpDocDefor _tpDocFor+         _lhsOsigs :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]+         _lhsOsigs = rule5 _field arg_kind_+         _lhsOargnamesw ::  PP_Doc +         _lhsOargnamesw = rule6 _lhsIoptions _nt arg_kind_ arg_name_+         _lhsOchildintros :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule7 _introcode arg_name_+         _isDefor = rule8 arg_tp_+         _valcode = rule9 _isDefor _lhsIoptions _nt arg_kind_ arg_name_+         _aroundcode = rule10 _lhsIoptions arg_hasAround_ arg_name_+         _introcode = rule11 _aroundcode _initSt _isDefor _lhsIoptions _nt _valcode arg_hasAround_ arg_kind_ arg_name_+         _nt = rule12 arg_tp_+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule13 arg_name_ arg_tp_+         _initSt = rule14 _lhsIallInitStates _nt+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule15  ()+         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs+         in __result_ )+     in C_EChild_s2 v1+   {-# INLINE rule0 #-}+   {-# LINE 278 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule0 = \ tp_ ->+                         {-# LINE 278 "src-ag/ExecutionPlan2Caml.ag" #-}+                         ppTp $ removeDeforested tp_+                         {-# LINE 386 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule1 #-}+   {-# LINE 279 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule1 = \ tp_ ->+                         {-# LINE 279 "src-ag/ExecutionPlan2Caml.ag" #-}+                         ppTp $ forceDeforested tp_+                         {-# LINE 392 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule2 #-}+   {-# LINE 280 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule2 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->+                         {-# LINE 280 "src-ag/ExecutionPlan2Caml.ag" #-}+                         text $ recordFieldname _lhsInt _lhsIcon name_+                         {-# LINE 398 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule3 #-}+   {-# LINE 281 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule3 = \ name_ ->+                         {-# LINE 281 "src-ag/ExecutionPlan2Caml.ag" #-}+                         text (fieldname name_)+                         {-# LINE 404 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule4 #-}+   {-# LINE 282 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule4 = \ _childNm _fieldNm _tpDocDefor _tpDocFor ->+                     {-# LINE 282 "src-ag/ExecutionPlan2Caml.ag" #-}+                     (_fieldNm    , _childNm    , _tpDocDefor    , _tpDocFor    )+                     {-# LINE 410 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule5 #-}+   {-# LINE 283 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule5 = \ _field kind_ ->+                         {-# LINE 283 "src-ag/ExecutionPlan2Caml.ag" #-}+                         case kind_ of+                           ChildAttr -> []+                           _         -> [_field    ]+                         {-# LINE 418 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule6 #-}+   {-# LINE 396 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule6 = \ ((_lhsIoptions) :: Options) _nt kind_ name_ ->+                             {-# LINE 396 "src-ag/ExecutionPlan2Caml.ag" #-}+                             case kind_ of+                               ChildSyntax     -> "(" >#< prefix _lhsIoptions >|< _nt     >#< name_ >|< "_" >#< ")"+                               ChildAttr       -> empty+                               ChildReplace tp -> "(" >#< prefix _lhsIoptions >|< extractNonterminal tp >#< name_ >|< "_" >#< ")"+                             {-# LINE 427 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule7 #-}+   {-# LINE 923 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule7 = \ _introcode name_ ->+                               {-# LINE 923 "src-ag/ExecutionPlan2Caml.ag" #-}+                               Map.singleton name_ _introcode+                               {-# LINE 433 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule8 #-}+   {-# LINE 924 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule8 = \ tp_ ->+                               {-# LINE 924 "src-ag/ExecutionPlan2Caml.ag" #-}+                               case tp_ of+                                 NT _ _ defor -> defor+                                 _            -> False+                               {-# LINE 441 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule9 #-}+   {-# LINE 927 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule9 = \ _isDefor ((_lhsIoptions) :: Options) _nt kind_ name_ ->+                               {-# LINE 927 "src-ag/ExecutionPlan2Caml.ag" #-}+                               case kind_ of+                                 ChildSyntax -> name_ >|< "_"+                                 ChildAttr   ->+                                                let head | not _isDefor     = if lateHigherOrderBinding _lhsIoptions+                                                                              then lateSemNtLabel _nt     >#< lhsname _lhsIoptions True idLateBindingAttr+                                                                              else prefix _lhsIoptions >|< _nt+                                                         | otherwise        = empty+                                                in pp_parens (head >#< instname name_)+                                 ChildReplace _ ->+                                                   pp_parens (instname name_ >#< name_ >|< "_")+                               {-# LINE 456 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule10 #-}+   {-# LINE 938 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule10 = \ ((_lhsIoptions) :: Options) hasAround_ name_ ->+                               {-# LINE 938 "src-ag/ExecutionPlan2Caml.ag" #-}+                               if hasAround_+                               then locname _lhsIoptions name_ >|< "_around"+                               else empty+                               {-# LINE 464 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule11 #-}+   {-# LINE 941 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule11 = \ _aroundcode _initSt _isDefor ((_lhsIoptions) :: Options) _nt _valcode hasAround_ kind_ name_ ->+                               {-# LINE 941 "src-ag/ExecutionPlan2Caml.ag" #-}+                               \kind -> let pat    = text $ stname name_ _initSt+                                            attach = pp_parens (_aroundcode     >#< _valcode    ) >|< "." >|< nm_attach _nt     >#< "()"+                                            decl   = pat >#< "=" >#< attach+                                        in if compatibleAttach kind _nt     _lhsIoptions+                                           then Right ( "let" >#< decl >#< "in"+                                                      , Set.singleton (stname name_ _initSt    )+                                                      , case kind_ of+                                                          ChildAttr   -> Map.insert (instname name_) Nothing $+                                                                           ( if _isDefor     || not (lateHigherOrderBinding _lhsIoptions)+                                                                             then id+                                                                             else Map.insert (lhsname _lhsIoptions True idLateBindingAttr) (Just $ AttrInh _LHS idLateBindingAttr)+                                                                           ) $+                                                                           ( if hasAround_+                                                                             then Map.insert (locname _lhsIoptions (name_) ++ "_around") Nothing+                                                                             else id+                                                                           ) $ Map.empty+                                                          ChildReplace _ -> Map.singleton (instname name_) Nothing+                                                          ChildSyntax    -> Map.empty+                                                      )+                                           else Left $ IncompatibleAttachKind name_ kind+                               {-# LINE 489 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule12 #-}+   {-# LINE 961 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule12 = \ tp_ ->+                      {-# LINE 961 "src-ag/ExecutionPlan2Caml.ag" #-}+                      extractNonterminal tp_+                      {-# LINE 495 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule13 #-}+   {-# LINE 1424 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule13 = \ name_ tp_ ->+                     {-# LINE 1424 "src-ag/ExecutionPlan2Caml.ag" #-}+                     Map.singleton name_ tp_+                     {-# LINE 501 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule14 #-}+   {-# LINE 1468 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule14 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) _nt ->+                 {-# LINE 1468 "src-ag/ExecutionPlan2Caml.ag" #-}+                 Map.findWithDefault (error "nonterminal not in allInitStates map") _nt     _lhsIallInitStates+                 {-# LINE 507 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule15 #-}+   rule15 = \  (_ :: ()) ->+     Set.empty+{-# NOINLINE sem_EChild_ETerm #-}+sem_EChild_ETerm :: (Identifier) -> (Type) -> T_EChild +sem_EChild_ETerm arg_name_ arg_tp_ = T_EChild (return st2) where+   {-# NOINLINE st2 #-}+   st2 = let+      v1 :: T_EChild_v1 +      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) -> ( let+         _tpDocFor = rule16 arg_tp_+         _tpDocDefor = rule17 arg_tp_+         _fieldNm = rule18 _lhsIcon _lhsInt arg_name_+         _childNm = rule19 arg_name_+         _field = rule20 _childNm _fieldNm _tpDocDefor _tpDocFor+         _lhsOsigs :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]+         _lhsOsigs = rule21 _field+         _lhsOargnamesw ::  PP_Doc +         _lhsOargnamesw = rule22 arg_name_+         _lhsOchildintros :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule23 arg_name_+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule24 arg_name_+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule25 arg_name_ arg_tp_+         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs+         in __result_ )+     in C_EChild_s2 v1+   {-# INLINE rule16 #-}+   {-# LINE 278 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule16 = \ tp_ ->+                         {-# LINE 278 "src-ag/ExecutionPlan2Caml.ag" #-}+                         ppTp $ removeDeforested tp_+                         {-# LINE 541 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule17 #-}+   {-# LINE 279 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule17 = \ tp_ ->+                         {-# LINE 279 "src-ag/ExecutionPlan2Caml.ag" #-}+                         ppTp $ forceDeforested tp_+                         {-# LINE 547 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule18 #-}+   {-# LINE 280 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule18 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->+                         {-# LINE 280 "src-ag/ExecutionPlan2Caml.ag" #-}+                         text $ recordFieldname _lhsInt _lhsIcon name_+                         {-# LINE 553 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule19 #-}+   {-# LINE 281 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule19 = \ name_ ->+                         {-# LINE 281 "src-ag/ExecutionPlan2Caml.ag" #-}+                         text (fieldname name_)+                         {-# LINE 559 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule20 #-}+   {-# LINE 282 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule20 = \ _childNm _fieldNm _tpDocDefor _tpDocFor ->+                     {-# LINE 282 "src-ag/ExecutionPlan2Caml.ag" #-}+                     (_fieldNm    , _childNm    , _tpDocDefor    , _tpDocFor    )+                     {-# LINE 565 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule21 #-}+   {-# LINE 286 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule21 = \ _field ->+                         {-# LINE 286 "src-ag/ExecutionPlan2Caml.ag" #-}+                         [_field    ]+                         {-# LINE 571 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule22 #-}+   {-# LINE 400 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule22 = \ name_ ->+                             {-# LINE 400 "src-ag/ExecutionPlan2Caml.ag" #-}+                             text $ fieldname name_+                             {-# LINE 577 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule23 #-}+   {-# LINE 922 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule23 = \ name_ ->+                               {-# LINE 922 "src-ag/ExecutionPlan2Caml.ag" #-}+                               Map.singleton name_ (\_ -> Right (empty, Set.empty, Map.empty))+                               {-# LINE 583 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule24 #-}+   {-# LINE 1266 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule24 = \ name_ ->+                       {-# LINE 1266 "src-ag/ExecutionPlan2Caml.ag" #-}+                       Set.singleton $ fieldname name_+                       {-# LINE 589 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule25 #-}+   {-# LINE 1424 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule25 = \ name_ tp_ ->+                     {-# LINE 1424 "src-ag/ExecutionPlan2Caml.ag" #-}+                     Map.singleton name_ tp_+                     {-# LINE 595 "dist/build/ExecutionPlan2Caml.hs"#-}++-- EChildren ---------------------------------------------------+-- wrapper+data Inh_EChildren  = Inh_EChildren { allInitStates_Inh_EChildren :: (Map NontermIdent Int), con_Inh_EChildren :: (ConstructorIdent), mainFile_Inh_EChildren :: (String), mainName_Inh_EChildren :: (String), nt_Inh_EChildren :: (NontermIdent), options_Inh_EChildren :: (Options) }+data Syn_EChildren  = Syn_EChildren { argnamesw_Syn_EChildren :: ([PP_Doc]), childTypes_Syn_EChildren :: (Map Identifier Type), childintros_Syn_EChildren :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), sigs_Syn_EChildren :: ([(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]), terminaldefs_Syn_EChildren :: (Set String) }+{-# INLINABLE wrap_EChildren #-}+wrap_EChildren :: T_EChildren  -> Inh_EChildren  -> (Syn_EChildren )+wrap_EChildren (T_EChildren act) (Inh_EChildren _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg4 = T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions+        (T_EChildren_vOut4 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs) <- return (inv_EChildren_s5 sem arg4)+        return (Syn_EChildren _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs)+   )++-- cata+{-# NOINLINE sem_EChildren #-}+sem_EChildren :: EChildren  -> T_EChildren +sem_EChildren list = Prelude.foldr sem_EChildren_Cons sem_EChildren_Nil (Prelude.map sem_EChild list)++-- semantic domain+newtype T_EChildren  = T_EChildren {+                                   attach_T_EChildren :: Identity (T_EChildren_s5 )+                                   }+newtype T_EChildren_s5  = C_EChildren_s5 {+                                         inv_EChildren_s5 :: (T_EChildren_v4 )+                                         }+data T_EChildren_s6  = C_EChildren_s6+type T_EChildren_v4  = (T_EChildren_vIn4 ) -> (T_EChildren_vOut4 )+data T_EChildren_vIn4  = T_EChildren_vIn4 (Map NontermIdent Int) (ConstructorIdent) (String) (String) (NontermIdent) (Options)+data T_EChildren_vOut4  = T_EChildren_vOut4 ([PP_Doc]) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ([(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) (Set String)+{-# NOINLINE sem_EChildren_Cons #-}+sem_EChildren_Cons :: T_EChild  -> T_EChildren  -> T_EChildren +sem_EChildren_Cons arg_hd_ arg_tl_ = T_EChildren (return st5) where+   {-# NOINLINE st5 #-}+   st5 = let+      v4 :: T_EChildren_v4 +      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) -> ( let+         _hdX2 = Control.Monad.Identity.runIdentity (attach_T_EChild (arg_hd_))+         _tlX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_tl_))+         (T_EChild_vOut1 _hdIargnamesw _hdIchildTypes _hdIchildintros _hdIsigs _hdIterminaldefs) = inv_EChild_s2 _hdX2 (T_EChild_vIn1 _hdOallInitStates _hdOcon _hdOmainFile _hdOmainName _hdOnt _hdOoptions)+         (T_EChildren_vOut4 _tlIargnamesw _tlIchildTypes _tlIchildintros _tlIsigs _tlIterminaldefs) = inv_EChildren_s5 _tlX5 (T_EChildren_vIn4 _tlOallInitStates _tlOcon _tlOmainFile _tlOmainName _tlOnt _tlOoptions)+         _lhsOargnamesw :: [PP_Doc]+         _lhsOargnamesw = rule26 _hdIargnamesw _tlIargnamesw+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule27 _hdIchildTypes _tlIchildTypes+         _lhsOchildintros :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule28 _hdIchildintros _tlIchildintros+         _lhsOsigs :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]+         _lhsOsigs = rule29 _hdIsigs _tlIsigs+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule30 _hdIterminaldefs _tlIterminaldefs+         _hdOallInitStates = rule31 _lhsIallInitStates+         _hdOcon = rule32 _lhsIcon+         _hdOmainFile = rule33 _lhsImainFile+         _hdOmainName = rule34 _lhsImainName+         _hdOnt = rule35 _lhsInt+         _hdOoptions = rule36 _lhsIoptions+         _tlOallInitStates = rule37 _lhsIallInitStates+         _tlOcon = rule38 _lhsIcon+         _tlOmainFile = rule39 _lhsImainFile+         _tlOmainName = rule40 _lhsImainName+         _tlOnt = rule41 _lhsInt+         _tlOoptions = rule42 _lhsIoptions+         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs+         in __result_ )+     in C_EChildren_s5 v4+   {-# INLINE rule26 #-}+   rule26 = \ ((_hdIargnamesw) ::  PP_Doc ) ((_tlIargnamesw) :: [PP_Doc]) ->+     _hdIargnamesw : _tlIargnamesw+   {-# INLINE rule27 #-}+   rule27 = \ ((_hdIchildTypes) :: Map Identifier Type) ((_tlIchildTypes) :: Map Identifier Type) ->+     _hdIchildTypes `mappend` _tlIchildTypes+   {-# INLINE rule28 #-}+   rule28 = \ ((_hdIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ((_tlIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _hdIchildintros `Map.union` _tlIchildintros+   {-# INLINE rule29 #-}+   rule29 = \ ((_hdIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) ((_tlIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) ->+     _hdIsigs ++ _tlIsigs+   {-# INLINE rule30 #-}+   rule30 = \ ((_hdIterminaldefs) :: Set String) ((_tlIterminaldefs) :: Set String) ->+     _hdIterminaldefs `Set.union` _tlIterminaldefs+   {-# INLINE rule31 #-}+   rule31 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule32 #-}+   rule32 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule33 #-}+   rule33 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule34 #-}+   rule34 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule35 #-}+   rule35 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule36 #-}+   rule36 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule37 #-}+   rule37 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule38 #-}+   rule38 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule39 #-}+   rule39 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule40 #-}+   rule40 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule41 #-}+   rule41 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule42 #-}+   rule42 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+{-# NOINLINE sem_EChildren_Nil #-}+sem_EChildren_Nil ::  T_EChildren +sem_EChildren_Nil  = T_EChildren (return st5) where+   {-# NOINLINE st5 #-}+   st5 = let+      v4 :: T_EChildren_v4 +      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsImainFile _lhsImainName _lhsInt _lhsIoptions) -> ( let+         _lhsOargnamesw :: [PP_Doc]+         _lhsOargnamesw = rule43  ()+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule44  ()+         _lhsOchildintros :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule45  ()+         _lhsOsigs :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]+         _lhsOsigs = rule46  ()+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule47  ()+         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOchildTypes _lhsOchildintros _lhsOsigs _lhsOterminaldefs+         in __result_ )+     in C_EChildren_s5 v4+   {-# INLINE rule43 #-}+   rule43 = \  (_ :: ()) ->+     []+   {-# INLINE rule44 #-}+   rule44 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule45 #-}+   rule45 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule46 #-}+   rule46 = \  (_ :: ()) ->+     []+   {-# INLINE rule47 #-}+   rule47 = \  (_ :: ()) ->+     Set.empty++-- ENonterminal ------------------------------------------------+-- wrapper+data Inh_ENonterminal  = Inh_ENonterminal { allFromToStates_Inh_ENonterminal :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminal :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminal :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminal :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), avisitdefs_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), inhmap_Inh_ENonterminal :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminal :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminal :: (String), mainName_Inh_ENonterminal :: (String), options_Inh_ENonterminal :: (Options), synmap_Inh_ENonterminal :: (Map NontermIdent Attributes), typeSyns_Inh_ENonterminal :: (TypeSyns), wrappers_Inh_ENonterminal :: (Set NontermIdent) }+data Syn_ENonterminal  = Syn_ENonterminal { childvisit_Syn_ENonterminal :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), code_Syn_ENonterminal :: (PP_Doc), datas_Syn_ENonterminal :: (PP_Doc), errors_Syn_ENonterminal :: (Seq Error), fromToStates_Syn_ENonterminal :: (Map VisitIdentifier (Int,Int)), initStates_Syn_ENonterminal :: (Map NontermIdent Int), modules_Syn_ENonterminal :: (PP_Doc), semFunBndDefs_Syn_ENonterminal :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminal :: (Seq PP_Doc), visitKinds_Syn_ENonterminal :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_ENonterminal #-}+wrap_ENonterminal :: T_ENonterminal  -> Inh_ENonterminal  -> (Syn_ENonterminal )+wrap_ENonterminal (T_ENonterminal act) (Inh_ENonterminal _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg7 = T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers+        (T_ENonterminal_vOut7 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminal_s8 sem arg7)+        return (Syn_ENonterminal _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_ENonterminal #-}+sem_ENonterminal :: ENonterminal  -> T_ENonterminal +sem_ENonterminal ( ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ prods_ recursive_ hoInfo_ ) = sem_ENonterminal_ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ ( sem_EProductions prods_ ) recursive_ hoInfo_++-- semantic domain+newtype T_ENonterminal  = T_ENonterminal {+                                         attach_T_ENonterminal :: Identity (T_ENonterminal_s8 )+                                         }+newtype T_ENonterminal_s8  = C_ENonterminal_s8 {+                                               inv_ENonterminal_s8 :: (T_ENonterminal_v7 )+                                               }+data T_ENonterminal_s9  = C_ENonterminal_s9+type T_ENonterminal_v7  = (T_ENonterminal_vIn7 ) -> (T_ENonterminal_vOut7 )+data T_ENonterminal_vIn7  = T_ENonterminal_vIn7 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes) (TypeSyns) (Set NontermIdent)+data T_ENonterminal_vOut7  = T_ENonterminal_vOut7 (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (PP_Doc) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_ENonterminal_ENonterminal #-}+sem_ENonterminal_ENonterminal :: (NontermIdent) -> ([Identifier]) -> (ClassContext) -> (StateIdentifier) -> ([VisitIdentifier]) -> (Map StateIdentifier StateCtx) -> (Map StateIdentifier StateCtx) -> T_EProductions  -> (Bool) -> (HigherOrderInfo) -> T_ENonterminal +sem_ENonterminal_ENonterminal arg_nt_ arg_params_ _ arg_initial_ arg_initialv_ arg_nextVisits_ arg_prevVisits_ arg_prods_ _ _ = T_ENonterminal (return st8) where+   {-# NOINLINE st8 #-}+   st8 = let+      v7 :: T_ENonterminal_v7 +      v7 = \ (T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) -> ( let+         _prodsX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_prods_))+         (T_EProductions_vOut16 _prodsIallvisits _prodsIchildvisit _prodsIcount _prodsIdatatype _prodsIdatatype_call _prodsIdatatype_con _prodsIerrors _prodsIfromToStates _prodsIsemFunBndDefs _prodsIsemFunBndTps _prodsIsem_nt _prodsIsem_prod _prodsIt_visits _prodsIvisitKinds _prodsIvisitdefs _prodsIvisituses) = inv_EProductions_s17 _prodsX17 (T_EProductions_vIn16 _prodsOallFromToStates _prodsOallInhmap _prodsOallInitStates _prodsOallSynmap _prodsOallVisitKinds _prodsOallchildvisit _prodsOallstates _prodsOavisitdefs _prodsOavisituses _prodsOinhmap _prodsOinitial _prodsOlocalAttrTypes _prodsOmainFile _prodsOmainName _prodsOnextVisits _prodsOnt _prodsOntType _prodsOoptions _prodsOparams _prodsOprevVisits _prodsOrename _prodsOsynmap)+         _prodsOrename = rule48 _lhsIoptions+         _prodsOnt = rule49 arg_nt_+         _prodsOparams = rule50 arg_params_+         _lhsOdatas :: PP_Doc+         _lhsOdatas = rule51 _c_states _datatypeNt _datatypeProds _hasWrapper _lhsIoptions _prodsIt_visits _t_init _t_states _wr_inh _wr_syn arg_nt_+         _lhsOcode :: PP_Doc+         _lhsOcode = rule52 _datatypeCon _hasWrapper _lhsIoptions _prodsIsem_prod _sem_nt _wrapper arg_nt_+         _lhsOmodules :: PP_Doc+         _lhsOmodules = rule53 _moduleDecl+         _hasWrapper = rule54 _lhsIwrappers arg_nt_+         _t_params = rule55 arg_params_+         _aliasPre = rule56 _t_params arg_nt_+         _aliasMod = rule57 _aliasPre arg_nt_+         _datatypeNt = rule58 _aliasMod _aliasPre _lhsItypeSyns _prodsIdatatype _prodsIdatatype_call _t_params arg_nt_+         _datatypeCon = rule59 _lhsItypeSyns _prodsIdatatype_con arg_nt_+         _moduleDecl = rule60 _lhsItypeSyns arg_nt_+         _datatypeProds = rule61 _prodsIdatatype+         _fsemname = rule62 _lhsIoptions+         _semname = rule63 _fsemname arg_nt_+         _frecarg = rule64 _fsemname+         _sem_param_tp = rule65 _t_params arg_nt_+         _sem_res_tp = rule66 _t_params _t_type+         _sem_tp = rule67 _sem_param_tp _sem_res_tp+         _o_sigs = rule68 _lhsIoptions+         _sem_nt_body = rule69 _prodsIsem_nt+         _sem_nt = rule70 _frecarg _fsemname _lhsItypeSyns _o_sigs _sem_nt_body _sem_param_tp _sem_res_tp _semname arg_nt_+         (Just _prodsOinhmap) = rule71 _lhsIinhmap arg_nt_+         (Just _prodsOsynmap) = rule72 _lhsIsynmap arg_nt_+         _prodsOallInhmap = rule73 _lhsIinhmap+         _prodsOallSynmap = rule74 _lhsIsynmap+         _allstates = rule75 _prodsIallvisits arg_initial_+         _stvisits = rule76 _prodsIallvisits+         _t_type = rule77 arg_nt_+         _t_c_params = rule78 arg_params_+         _t_init = rule79 _t_params _t_type arg_initial_ arg_nt_+         _t_states = rule80 _allstates _t_c_params _t_params arg_nextVisits_ arg_nt_+         _c_states = rule81 _allstates _prodsIallvisits _t_c_params arg_nextVisits_ arg_nt_+         _wr_inh = rule82 _genwrap _wr_inhs1+         _wr_syn = rule83 _genwrap _wr_syns+         _genwrap = rule84 _t_params arg_nt_+         _inhAttrs = rule85 _lhsIinhmap arg_nt_+         _wr_inhs = rule86 _inhAttrs _wr_filter+         _wr_inhs1 = rule87 _inhAttrs+         _wr_filter = rule88 _lhsIoptions+         _wr_syns = rule89 _lhsIsynmap arg_nt_+         _wrapname = rule90 arg_nt_+         _inhname = rule91 arg_nt_+         _synname = rule92 arg_nt_+         _firstVisitInfo = rule93 arg_initial_ arg_nextVisits_+         _wrapArgSemTp = rule94 _t_params _t_type+         _wrapArgInhTp = rule95 _inhname _t_params+         _wrapArgPats = rule96 _lhsIoptions _wr_inhs1 arg_nt_+         _wrapResTp = rule97 _synname _t_params+         _wrapper = rule98 _o_sigs _wrapArgInhTp _wrapArgPats _wrapArgSemTp _wrapResTp _wrapname _wrapperPreamble+         _wrapperPreamble = rule99 _lhsImainName _lhsIoptions _wrapperBody+         _wrapperBody = rule100 _firstVisitInfo _lhsIoptions _wr_inhs _wr_syns arg_initial_ arg_initialv_ arg_nt_+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule101 _prodsIsemFunBndDefs _semFunBndDef+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule102 _prodsIsemFunBndTps _semFunBndTp+         _semFunBndDef = rule103 _semFunBndNm _semname+         _semFunBndTp = rule104 _semFunBndNm _sem_tp+         _semFunBndNm = rule105 arg_nt_+         _prodsOinitial = rule106 arg_initial_+         _prodsOallstates = rule107 _allstates+         _prodsOnextVisits = rule108 arg_nextVisits_+         _prodsOprevVisits = rule109 arg_prevVisits_+         _prodsOlocalAttrTypes = rule110 _lhsIlocalAttrTypes arg_nt_+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule111 arg_initial_ arg_nt_+         _ntType = rule112 arg_nt_ arg_params_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)+         _lhsOchildvisit = rule113 _prodsIchildvisit+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule114 _prodsIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule115 _prodsIfromToStates+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule116 _prodsIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule117 _prodsIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule118 _prodsIvisituses+         _prodsOallFromToStates = rule119 _lhsIallFromToStates+         _prodsOallInitStates = rule120 _lhsIallInitStates+         _prodsOallVisitKinds = rule121 _lhsIallVisitKinds+         _prodsOallchildvisit = rule122 _lhsIallchildvisit+         _prodsOavisitdefs = rule123 _lhsIavisitdefs+         _prodsOavisituses = rule124 _lhsIavisituses+         _prodsOmainFile = rule125 _lhsImainFile+         _prodsOmainName = rule126 _lhsImainName+         _prodsOntType = rule127 _ntType+         _prodsOoptions = rule128 _lhsIoptions+         __result_ = T_ENonterminal_vOut7 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminal_s8 v7+   {-# INLINE rule48 #-}+   {-# LINE 78 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule48 = \ ((_lhsIoptions) :: Options) ->+                   {-# LINE 78 "src-ag/ExecutionPlan2Caml.ag" #-}+                   rename _lhsIoptions+                   {-# LINE 890 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule49 #-}+   {-# LINE 86 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule49 = \ nt_ ->+               {-# LINE 86 "src-ag/ExecutionPlan2Caml.ag" #-}+               nt_+               {-# LINE 896 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule50 #-}+   {-# LINE 96 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule50 = \ params_ ->+                   {-# LINE 96 "src-ag/ExecutionPlan2Caml.ag" #-}+                   params_+                   {-# LINE 902 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule51 #-}+   {-# LINE 115 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule51 = \ _c_states _datatypeNt _datatypeProds _hasWrapper ((_lhsIoptions) :: Options) ((_prodsIt_visits) :: PP_Doc) _t_init _t_states _wr_inh _wr_syn nt_ ->+                {-# LINE 115 "src-ag/ExecutionPlan2Caml.ag" #-}+                (    text ""+                 >-< "(* *** " ++ getName nt_ ++ " *** [data] *)")+                 >-< (if dataTypes _lhsIoptions+                      then pp "(* data *)"+                           >-< _datatypeNt+                           >-< _datatypeProds+                           >-< ""+                      else empty)+                 >-< (if _hasWrapper+                       then pp "(* wrapper *)"+                            >-< _wr_inh+                            >-< _wr_syn+                            >-< ""+                       else empty)+                 >-< (if semfuns _lhsIoptions+                      then pp "(* semantic domain *)"+                           >-< _t_init+                           >-< _t_states+                           >-< _c_states+                           >-< _prodsIt_visits+                           >-< ""+                      else empty)+                {-# LINE 929 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule52 #-}+   {-# LINE 138 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule52 = \ _datatypeCon _hasWrapper ((_lhsIoptions) :: Options) ((_prodsIsem_prod) :: PP_Doc) _sem_nt _wrapper nt_ ->+                 {-# LINE 138 "src-ag/ExecutionPlan2Caml.ag" #-}+                 (    text ""+                  >-< "(* *** " ++ getName nt_ ++ " *** [code] *)")+                  >-< (if dataTypes _lhsIoptions+                      then pp "(* constructor functions *)"+                           >-< _datatypeCon+                      else empty)+                  >-< (if _hasWrapper+                       then pp "(* wrapper *)"+                            >-< _wrapper+                            >-< ""+                       else empty)+                  >-< (if folds _lhsIoptions+                       then "(* cata *)"+                            >-< _sem_nt+                            >-< ""+                       else empty)+                  >-< (if semfuns _lhsIoptions+                       then "(* semantic domain *)"+                            >-< _prodsIsem_prod+                            >-< ""+                       else empty)+                 {-# LINE 955 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule53 #-}+   {-# LINE 163 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule53 = \ _moduleDecl ->+                  {-# LINE 163 "src-ag/ExecutionPlan2Caml.ag" #-}+                  _moduleDecl+                  {-# LINE 961 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule54 #-}+   {-# LINE 165 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule54 = \ ((_lhsIwrappers) :: Set NontermIdent) nt_ ->+                     {-# LINE 165 "src-ag/ExecutionPlan2Caml.ag" #-}+                     nt_ `Set.member` _lhsIwrappers+                     {-# LINE 967 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule55 #-}+   {-# LINE 216 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule55 = \ params_ ->+                   {-# LINE 216 "src-ag/ExecutionPlan2Caml.ag" #-}+                   ppTypeParams params_+                   {-# LINE 973 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule56 #-}+   {-# LINE 217 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule56 = \ _t_params nt_ ->+                   {-# LINE 217 "src-ag/ExecutionPlan2Caml.ag" #-}+                   "and" >#< _t_params     >#< nt_ >#< "="+                   {-# LINE 979 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule57 #-}+   {-# LINE 218 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule57 = \ _aliasPre nt_ ->+                   {-# LINE 218 "src-ag/ExecutionPlan2Caml.ag" #-}+                   _aliasPre     >#< modName nt_ >|< ".t"+                   {-# LINE 985 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule58 #-}+   {-# LINE 220 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule58 = \ _aliasMod _aliasPre ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdatatype) :: [PP_Doc]) ((_prodsIdatatype_call) :: [PP_Doc]) _t_params nt_ ->+        {-# LINE 220 "src-ag/ExecutionPlan2Caml.ag" #-}+        case lookup nt_ _lhsItypeSyns of+          Just (List t)     -> _aliasPre     >#< ppTp t >#< "list"+          Just (Maybe t)    -> _aliasPre     >#< ppTp t >#< "option"+          Just (Tuple ts)   -> _aliasPre     >#< (pp_block "(" ")" " * " $ map (ppTp . snd) ts)+          Just (Map k v)    -> _aliasMod+          Just (IntMap t)   -> _aliasMod+          Just (OrdSet t)   -> _aliasMod+          Just IntSet       -> _aliasMod+          _ -> "and" >#< _t_params     >#< nt_ >#< "="+               >-< ( if null _prodsIdatatype+                     then pp "unit"+                     else indent 2 $ vlist _prodsIdatatype_call+                   )+        {-# LINE 1003 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule59 #-}+   {-# LINE 239 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule59 = \ ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdatatype_con) :: [PP_Doc]) nt_ ->+        {-# LINE 239 "src-ag/ExecutionPlan2Caml.ag" #-}+        case lookup nt_ _lhsItypeSyns of+          Just _  -> empty+          Nothing -> vlist _prodsIdatatype_con+        {-# LINE 1011 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule60 #-}+   {-# LINE 244 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule60 = \ ((_lhsItypeSyns) :: TypeSyns) nt_ ->+        {-# LINE 244 "src-ag/ExecutionPlan2Caml.ag" #-}+        let ppModule :: PP a => a -> PP_Doc+            ppModule expr = "module" >#< modName nt_ >#< "="+        in case lookup nt_ _lhsItypeSyns of+             Just (Map k _)  -> ppModule ("Map.Make" >#< pp_parens (ppTp k))+             Just (IntMap _) -> ppModule ("Map.Make ()")+             Just (OrdSet t) -> ppModule ("Set.Make" >#< pp_parens (ppTp t))+             Just IntSet     -> ppModule ("Set.Make (struct  type t = int  let compare = Pervasives.compare  end)")+             _               -> empty+        {-# LINE 1024 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule61 #-}+   {-# LINE 253 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule61 = \ ((_prodsIdatatype) :: [PP_Doc]) ->+                        {-# LINE 253 "src-ag/ExecutionPlan2Caml.ag" #-}+                        vlist _prodsIdatatype+                        {-# LINE 1030 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule62 #-}+   {-# LINE 313 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule62 = \ ((_lhsIoptions) :: Options) ->+                   {-# LINE 313 "src-ag/ExecutionPlan2Caml.ag" #-}+                   \x -> prefix _lhsIoptions ++ show x+                   {-# LINE 1036 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule63 #-}+   {-# LINE 314 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule63 = \ _fsemname nt_ ->+                  {-# LINE 314 "src-ag/ExecutionPlan2Caml.ag" #-}+                  _fsemname     nt_+                  {-# LINE 1042 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule64 #-}+   {-# LINE 315 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule64 = \ _fsemname ->+                  {-# LINE 315 "src-ag/ExecutionPlan2Caml.ag" #-}+                  \t x -> case t of+                    NT nt _ _ -> pp_parens (_fsemname nt >#< x)+                    _         -> x+                  {-# LINE 1050 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule65 #-}+   {-# LINE 319 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule65 = \ _t_params nt_ ->+                       {-# LINE 319 "src-ag/ExecutionPlan2Caml.ag" #-}+                       _t_params     >#< nt_+                       {-# LINE 1056 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule66 #-}+   {-# LINE 320 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule66 = \ _t_params _t_type ->+                       {-# LINE 320 "src-ag/ExecutionPlan2Caml.ag" #-}+                       _t_params     >#< _t_type+                       {-# LINE 1062 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule67 #-}+   {-# LINE 321 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule67 = \ _sem_param_tp _sem_res_tp ->+                       {-# LINE 321 "src-ag/ExecutionPlan2Caml.ag" #-}+                       _sem_param_tp     >#< "->" >#< _sem_res_tp+                       {-# LINE 1068 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule68 #-}+   {-# LINE 323 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule68 = \ ((_lhsIoptions) :: Options) ->+                  {-# LINE 323 "src-ag/ExecutionPlan2Caml.ag" #-}+                  typeSigs _lhsIoptions+                  {-# LINE 1074 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule69 #-}+   {-# LINE 324 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule69 = \ ((_prodsIsem_nt) :: PP_Doc) ->+                      {-# LINE 324 "src-ag/ExecutionPlan2Caml.ag" #-}+                      "match arg with" >-< (indent 2 $ _prodsIsem_nt)+                      {-# LINE 1080 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule70 #-}+   {-# LINE 325 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule70 = \ _frecarg _fsemname ((_lhsItypeSyns) :: TypeSyns) _o_sigs _sem_nt_body _sem_param_tp _sem_res_tp _semname nt_ ->+                  {-# LINE 325 "src-ag/ExecutionPlan2Caml.ag" #-}+                  let genSem :: PP a => a -> PP_Doc -> PP_Doc+                      genSem nm body = "and" >#< ppFunDecl _o_sigs     (pp _semname    ) [(pp nm, _sem_param_tp    )] _sem_res_tp     body+                      genAlias alts = genSem (pp "arg") (pp "match arg with" >-< (indent 2 $ vlist $ map (pp "|" >#<) alts))+                      genMap v = let body = modName nt_ >|< ".fold" >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil" >#< els+                                     els  = case v of+                                       NT nt _ _ -> pp_parens (modName nt_ >|< ".map" >#< _fsemname     nt >#< "m")+                                       _         -> pp "m"+                                 in genSem "m" body+                      genSet mbNt = let body = "List.fold_right" >#< _semname     >|< "_Entry" >#<+                                                els (pp_parens (modName nt_ >|< ".elements" >#< "s")) >#< _semname     >|< "_Nil"+                                        els r = maybe r (\nt -> pp_parens ("List.map" >#< _fsemname     nt >#< r)) mbNt+                                    in genSem "s" body+                  in case lookup nt_ _lhsItypeSyns of+                       Just (List t) -> let body = "List.fold_right" >#< _semname     >|< "_Cons" >#< els >#< _semname     >|< "_Nil"+                                            els  = case t of+                                              NT nt _ _ -> pp_parens ("List.map" >#< _fsemname     nt >#< "list")+                                              _         -> pp "list"+                                        in genSem "list" body+                       Just (Tuple ts) -> let pat = pp_parens (ppCommas $ map fst ts)+                                              body = _semname     >|< "_Tuple" >#< ppSpaced (map (\t -> _frecarg     (snd t) (pp $ fst t)) ts)+                                          in genSem pat body+                       Just (Map _ v) -> genMap v+                       Just (IntMap v) -> genMap v+                       Just (Maybe t) -> genAlias+                           [ "None" >#< "->" >#< "=" >#< _semname     >|< "_Nothing"+                           , "Some" >#< "just" >#< "->" >#< _semname     >|< "_Just" >#< _frecarg t (pp "just")+                           ]+                       Just (OrdSet t) -> genSet $ case t of+                                            NT nt _ _ -> Just nt+                                            _         -> Nothing+                       Just (IntSet) -> genSet Nothing+                       _ -> genSem "arg" _sem_nt_body+                  {-# LINE 1117 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule71 #-}+   {-# LINE 420 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule71 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->+                                         {-# LINE 420 "src-ag/ExecutionPlan2Caml.ag" #-}+                                         Map.lookup nt_ _lhsIinhmap+                                         {-# LINE 1123 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule72 #-}+   {-# LINE 421 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule72 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->+                                         {-# LINE 421 "src-ag/ExecutionPlan2Caml.ag" #-}+                                         Map.lookup nt_ _lhsIsynmap+                                         {-# LINE 1129 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule73 #-}+   {-# LINE 422 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule73 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+                                     {-# LINE 422 "src-ag/ExecutionPlan2Caml.ag" #-}+                                     _lhsIinhmap+                                     {-# LINE 1135 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule74 #-}+   {-# LINE 423 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule74 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+                                     {-# LINE 423 "src-ag/ExecutionPlan2Caml.ag" #-}+                                     _lhsIsynmap+                                     {-# LINE 1141 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule75 #-}+   {-# LINE 444 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule75 = \ ((_prodsIallvisits) :: [VisitStateState]) initial_ ->+                    {-# LINE 444 "src-ag/ExecutionPlan2Caml.ag" #-}+                    orderStates initial_ _prodsIallvisits+                    {-# LINE 1147 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule76 #-}+   {-# LINE 445 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule76 = \ ((_prodsIallvisits) :: [VisitStateState]) ->+                    {-# LINE 445 "src-ag/ExecutionPlan2Caml.ag" #-}+                    \st -> filter (\(v,f,t) -> f == st) _prodsIallvisits+                    {-# LINE 1153 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule77 #-}+   {-# LINE 446 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule77 = \ nt_ ->+                    {-# LINE 446 "src-ag/ExecutionPlan2Caml.ag" #-}+                    type_nt_sem_top nt_+                    {-# LINE 1159 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule78 #-}+   {-# LINE 447 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule78 = \ params_ ->+                     {-# LINE 447 "src-ag/ExecutionPlan2Caml.ag" #-}+                     ppTypeParams (cont_tvar : map pp params_)+                     {-# LINE 1165 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule79 #-}+   {-# LINE 450 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule79 = \ _t_params _t_type initial_ nt_ ->+                    {-# LINE 450 "src-ag/ExecutionPlan2Caml.ag" #-}+                    "and" >#< _t_params     >#< _t_type     >#< "=" >#< pp_braces ( nm_attach nt_ >#< ":" >#< "unit" >#< "->" >#< _t_params     >#< type_nt_sem nt_ initial_)+                    {-# LINE 1171 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule80 #-}+   {-# LINE 453 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule80 = \ _allstates _t_c_params _t_params nextVisits_ nt_ ->+                    {-# LINE 453 "src-ag/ExecutionPlan2Caml.ag" #-}+                    vlist $ map (\st ->+                      let s_st = type_nt_state nt_ st+                          t_st  = type_nt_sem nt_ st+                          c_st  = type_caller nt_ st+                          nextVisits = Map.findWithDefault ManyVis st nextVisits_+                          decl = "and" >#< _t_params     >#< t_st >#< "="+                      in case nextVisits of+                           NoneVis    -> decl >#< "unit"+                           _          -> decl >#< ppRecordVal [ nm_invoke nt_ st >#< ":" >#< cont_tvar >#< "." >#< _t_c_params     >#< c_st >#< "->" >#< cont_tvar ]+                     ) _allstates+                    {-# LINE 1186 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule81 #-}+   {-# LINE 506 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule81 = \ _allstates ((_prodsIallvisits) :: [VisitStateState]) _t_c_params nextVisits_ nt_ ->+                   {-# LINE 506 "src-ag/ExecutionPlan2Caml.ag" #-}+                   vlist $ map (\st ->+                     let nt_st = type_nt_state nt_ st+                         c_st  = type_caller nt_ st+                         outg  = filter (\(_,f,_) -> f == st) _prodsIallvisits+                         nextVisits = Map.findWithDefault ManyVis st nextVisits_+                         declHead = "and" >#< _t_c_params     >#< c_st >#< "="+                         visitcons = vlist $ map (\(v,_,_) ->+                           "|" >#< con_visit nt_ v >#< "of" >#< _t_c_params     >#< type_caller_visit nt_ v+                          ) outg+                     in case nextVisits of+                          NoneVis  -> empty+                          OneVis v -> declHead >#< _t_c_params     >#< type_caller_visit nt_ v+                          ManyVis  -> declHead >-< indent 3 visitcons+                    ) _allstates+                   {-# LINE 1205 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule82 #-}+   {-# LINE 588 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule82 = \ _genwrap _wr_inhs1 ->+                   {-# LINE 588 "src-ag/ExecutionPlan2Caml.ag" #-}+                   _genwrap     "inh" _wr_inhs1+                   {-# LINE 1211 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule83 #-}+   {-# LINE 589 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule83 = \ _genwrap _wr_syns ->+                   {-# LINE 589 "src-ag/ExecutionPlan2Caml.ag" #-}+                   _genwrap     "syn" _wr_syns+                   {-# LINE 1217 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule84 #-}+   {-# LINE 590 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule84 = \ _t_params nt_ ->+                   {-# LINE 590 "src-ag/ExecutionPlan2Caml.ag" #-}+                   \nm attrs ->+                     "and" >#< _t_params     >#< nm >|< "_" >|< nt_ >#< "=" >#< ppRecordTp+                       [ i >|< "_" >|< nm >|< "_" >|< nt_ >#< ":" >#< ppTp t | (i,t) <- attrs ]+                   {-# LINE 1225 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule85 #-}+   {-# LINE 594 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule85 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->+                   {-# LINE 594 "src-ag/ExecutionPlan2Caml.ag" #-}+                   fromJust $ Map.lookup nt_ _lhsIinhmap+                   {-# LINE 1231 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule86 #-}+   {-# LINE 595 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule86 = \ _inhAttrs _wr_filter ->+                   {-# LINE 595 "src-ag/ExecutionPlan2Caml.ag" #-}+                   Map.toList $ _wr_filter     $ _inhAttrs+                   {-# LINE 1237 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule87 #-}+   {-# LINE 596 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule87 = \ _inhAttrs ->+                   {-# LINE 596 "src-ag/ExecutionPlan2Caml.ag" #-}+                   Map.toList _inhAttrs+                   {-# LINE 1243 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule88 #-}+   {-# LINE 597 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule88 = \ ((_lhsIoptions) :: Options) ->+                    {-# LINE 597 "src-ag/ExecutionPlan2Caml.ag" #-}+                    if kennedyWarren _lhsIoptions && lateHigherOrderBinding _lhsIoptions+                    then Map.delete idLateBindingAttr+                    else id+                    {-# LINE 1251 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule89 #-}+   {-# LINE 600 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule89 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->+                   {-# LINE 600 "src-ag/ExecutionPlan2Caml.ag" #-}+                   Map.toList $ fromJust $ Map.lookup nt_ _lhsIsynmap+                   {-# LINE 1257 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule90 #-}+   {-# LINE 602 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule90 = \ nt_ ->+                   {-# LINE 602 "src-ag/ExecutionPlan2Caml.ag" #-}+                   text ("wrap_" ++ show nt_)+                   {-# LINE 1263 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule91 #-}+   {-# LINE 603 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule91 = \ nt_ ->+                   {-# LINE 603 "src-ag/ExecutionPlan2Caml.ag" #-}+                   text ("inh_" ++ show nt_)+                   {-# LINE 1269 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule92 #-}+   {-# LINE 604 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule92 = \ nt_ ->+                   {-# LINE 604 "src-ag/ExecutionPlan2Caml.ag" #-}+                   text ("syn_" ++ show nt_)+                   {-# LINE 1275 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule93 #-}+   {-# LINE 605 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule93 = \ initial_ nextVisits_ ->+                         {-# LINE 605 "src-ag/ExecutionPlan2Caml.ag" #-}+                         Map.findWithDefault ManyVis initial_ nextVisits_+                         {-# LINE 1281 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule94 #-}+   {-# LINE 607 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule94 = \ _t_params _t_type ->+                       {-# LINE 607 "src-ag/ExecutionPlan2Caml.ag" #-}+                       _t_params     >#< _t_type+                       {-# LINE 1287 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule95 #-}+   {-# LINE 608 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule95 = \ _inhname _t_params ->+                       {-# LINE 608 "src-ag/ExecutionPlan2Caml.ag" #-}+                       _t_params     >#< _inhname+                       {-# LINE 1293 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule96 #-}+   {-# LINE 609 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule96 = \ ((_lhsIoptions) :: Options) _wr_inhs1 nt_ ->+                       {-# LINE 609 "src-ag/ExecutionPlan2Caml.ag" #-}+                       ppRecordVal [ i >|< "_inh_" >|< nt_ >#< "=" >#< lhsname _lhsIoptions True i | (i,_) <- _wr_inhs1     ]+                       {-# LINE 1299 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule97 #-}+   {-# LINE 610 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule97 = \ _synname _t_params ->+                    {-# LINE 610 "src-ag/ExecutionPlan2Caml.ag" #-}+                    _t_params     >#< _synname+                    {-# LINE 1305 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule98 #-}+   {-# LINE 611 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule98 = \ _o_sigs _wrapArgInhTp _wrapArgPats _wrapArgSemTp _wrapResTp _wrapname _wrapperPreamble ->+                   {-# LINE 611 "src-ag/ExecutionPlan2Caml.ag" #-}+                   "and" >#< ppFunDecl _o_sigs     _wrapname     [(pp "act", _wrapArgSemTp    ), (_wrapArgPats    , _wrapArgInhTp    )] _wrapResTp     _wrapperPreamble+                   {-# LINE 1311 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule99 #-}+   {-# LINE 613 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule99 = \ ((_lhsImainName) :: String) ((_lhsIoptions) :: Options) _wrapperBody ->+        {-# LINE 613 "src-ag/ExecutionPlan2Caml.ag" #-}+        ( if lateHigherOrderBinding _lhsIoptions+          then "let" >#< lhsname _lhsIoptions True idLateBindingAttr >#< "=" >#< lateBindingFieldNm _lhsImainName >#< "in"+          else empty+        )+        >-< _wrapperBody+        {-# LINE 1321 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule100 #-}+   {-# LINE 619 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule100 = \ _firstVisitInfo ((_lhsIoptions) :: Options) _wr_inhs _wr_syns initial_ initialv_ nt_ ->+        {-# LINE 619 "src-ag/ExecutionPlan2Caml.ag" #-}+        case initialv_ of+          [] -> text "{ }"+          (initv:_) ->+            let attach  = "let" >#< "sem" >#< "=" >#< "act." >|< nm_attach nt_ >#< "()" >#< "in"+                pat     = ppRecordVal [ nm_outarg i nt_ initv >#< "=" >#< lhsname _lhsIoptions False i | (i,_) <- _wr_syns     ]+                bld     = ppRecordVal [ i >|< "_syn_" >|< nt_ >#< "=" >#< lhsname _lhsIoptions False i | (i,_) <- _wr_syns     ]+                res     = "let res = function" >#< pat >#< "->" >#< bld >#< "in"+                inps    = "let" >#< "inps" >#< "=" >#< ppRecordVal [ nm_inarg i nt_ initv >#< "=" >#< lhsname _lhsIoptions True i | (i,_) <- _wr_inhs     ] >#< "in"+                arg     = "let" >#< "arg" >#< "=" >#< argcon >#< argrec >#< "in"+                argcon  = case _firstVisitInfo     of+                            ManyVis -> con_visit nt_ initv+                            _       -> empty+                argrec  = ppRecordVal+                            [ nm_inh nt_ initv >#< "=" >#<  "inps"+                            , nm_cont nt_ initv >#< "=" >#< "res"+                            ]+                invoke  = "sem." >|< nm_invoke nt_ initial_ >#< "arg"+            in attach >-< res >-< inps >-< arg >-< invoke+        {-# LINE 1344 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule101 #-}+   {-# LINE 648 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule101 = \ ((_prodsIsemFunBndDefs) :: Seq PP_Doc) _semFunBndDef ->+                        {-# LINE 648 "src-ag/ExecutionPlan2Caml.ag" #-}+                        _semFunBndDef     Seq.<| _prodsIsemFunBndDefs+                        {-# LINE 1350 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule102 #-}+   {-# LINE 649 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule102 = \ ((_prodsIsemFunBndTps) :: Seq PP_Doc) _semFunBndTp ->+                        {-# LINE 649 "src-ag/ExecutionPlan2Caml.ag" #-}+                        _semFunBndTp     Seq.<| _prodsIsemFunBndTps+                        {-# LINE 1356 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule103 #-}+   {-# LINE 650 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule103 = \ _semFunBndNm _semname ->+                        {-# LINE 650 "src-ag/ExecutionPlan2Caml.ag" #-}+                        _semFunBndNm     >#< "=" >#< _semname+                        {-# LINE 1362 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule104 #-}+   {-# LINE 651 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule104 = \ _semFunBndNm _sem_tp ->+                        {-# LINE 651 "src-ag/ExecutionPlan2Caml.ag" #-}+                        _semFunBndNm     >#< ":" >#< _sem_tp+                        {-# LINE 1368 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule105 #-}+   {-# LINE 652 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule105 = \ nt_ ->+                        {-# LINE 652 "src-ag/ExecutionPlan2Caml.ag" #-}+                        lateSemNtLabel nt_+                        {-# LINE 1374 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule106 #-}+   {-# LINE 682 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule106 = \ initial_ ->+                      {-# LINE 682 "src-ag/ExecutionPlan2Caml.ag" #-}+                      initial_+                      {-# LINE 1380 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule107 #-}+   {-# LINE 683 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule107 = \ _allstates ->+                      {-# LINE 683 "src-ag/ExecutionPlan2Caml.ag" #-}+                      _allstates+                      {-# LINE 1386 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule108 #-}+   {-# LINE 1390 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule108 = \ nextVisits_ ->+                       {-# LINE 1390 "src-ag/ExecutionPlan2Caml.ag" #-}+                       nextVisits_+                       {-# LINE 1392 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule109 #-}+   {-# LINE 1391 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule109 = \ prevVisits_ ->+                       {-# LINE 1391 "src-ag/ExecutionPlan2Caml.ag" #-}+                       prevVisits_+                       {-# LINE 1398 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule110 #-}+   {-# LINE 1435 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule110 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) nt_ ->+                           {-# LINE 1435 "src-ag/ExecutionPlan2Caml.ag" #-}+                           Map.findWithDefault Map.empty nt_ _lhsIlocalAttrTypes+                           {-# LINE 1404 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule111 #-}+   {-# LINE 1462 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule111 = \ initial_ nt_ ->+                     {-# LINE 1462 "src-ag/ExecutionPlan2Caml.ag" #-}+                     Map.singleton nt_ initial_+                     {-# LINE 1410 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule112 #-}+   {-# LINE 1476 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule112 = \ nt_ params_ ->+                 {-# LINE 1476 "src-ag/ExecutionPlan2Caml.ag" #-}+                 NT nt_ (map show params_) False+                 {-# LINE 1416 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule113 #-}+   rule113 = \ ((_prodsIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _prodsIchildvisit+   {-# INLINE rule114 #-}+   rule114 = \ ((_prodsIerrors) :: Seq Error) ->+     _prodsIerrors+   {-# INLINE rule115 #-}+   rule115 = \ ((_prodsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _prodsIfromToStates+   {-# INLINE rule116 #-}+   rule116 = \ ((_prodsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _prodsIvisitKinds+   {-# INLINE rule117 #-}+   rule117 = \ ((_prodsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _prodsIvisitdefs+   {-# INLINE rule118 #-}+   rule118 = \ ((_prodsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _prodsIvisituses+   {-# INLINE rule119 #-}+   rule119 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule120 #-}+   rule120 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule121 #-}+   rule121 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule122 #-}+   rule122 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule123 #-}+   rule123 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule124 #-}+   rule124 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule125 #-}+   rule125 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule126 #-}+   rule126 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule127 #-}+   rule127 = \ _ntType ->+     _ntType+   {-# INLINE rule128 #-}+   rule128 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions++-- ENonterminals -----------------------------------------------+-- wrapper+data Inh_ENonterminals  = Inh_ENonterminals { allFromToStates_Inh_ENonterminals :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminals :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminals :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminals :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), avisitdefs_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), inhmap_Inh_ENonterminals :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminals :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminals :: (String), mainName_Inh_ENonterminals :: (String), options_Inh_ENonterminals :: (Options), synmap_Inh_ENonterminals :: (Map NontermIdent Attributes), typeSyns_Inh_ENonterminals :: (TypeSyns), wrappers_Inh_ENonterminals :: (Set NontermIdent) }+data Syn_ENonterminals  = Syn_ENonterminals { childvisit_Syn_ENonterminals :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), code_Syn_ENonterminals :: (PP_Doc), datas_Syn_ENonterminals :: (PP_Doc), errors_Syn_ENonterminals :: (Seq Error), fromToStates_Syn_ENonterminals :: (Map VisitIdentifier (Int,Int)), initStates_Syn_ENonterminals :: (Map NontermIdent Int), modules_Syn_ENonterminals :: (PP_Doc), semFunBndDefs_Syn_ENonterminals :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminals :: (Seq PP_Doc), visitKinds_Syn_ENonterminals :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_ENonterminals #-}+wrap_ENonterminals :: T_ENonterminals  -> Inh_ENonterminals  -> (Syn_ENonterminals )+wrap_ENonterminals (T_ENonterminals act) (Inh_ENonterminals _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg10 = T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers+        (T_ENonterminals_vOut10 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminals_s11 sem arg10)+        return (Syn_ENonterminals _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# NOINLINE sem_ENonterminals #-}+sem_ENonterminals :: ENonterminals  -> T_ENonterminals +sem_ENonterminals list = Prelude.foldr sem_ENonterminals_Cons sem_ENonterminals_Nil (Prelude.map sem_ENonterminal list)++-- semantic domain+newtype T_ENonterminals  = T_ENonterminals {+                                           attach_T_ENonterminals :: Identity (T_ENonterminals_s11 )+                                           }+newtype T_ENonterminals_s11  = C_ENonterminals_s11 {+                                                   inv_ENonterminals_s11 :: (T_ENonterminals_v10 )+                                                   }+data T_ENonterminals_s12  = C_ENonterminals_s12+type T_ENonterminals_v10  = (T_ENonterminals_vIn10 ) -> (T_ENonterminals_vOut10 )+data T_ENonterminals_vIn10  = T_ENonterminals_vIn10 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes) (TypeSyns) (Set NontermIdent)+data T_ENonterminals_vOut10  = T_ENonterminals_vOut10 (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (PP_Doc) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_ENonterminals_Cons #-}+sem_ENonterminals_Cons :: T_ENonterminal  -> T_ENonterminals  -> T_ENonterminals +sem_ENonterminals_Cons arg_hd_ arg_tl_ = T_ENonterminals (return st11) where+   {-# NOINLINE st11 #-}+   st11 = let+      v10 :: T_ENonterminals_v10 +      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) -> ( let+         _hdX8 = Control.Monad.Identity.runIdentity (attach_T_ENonterminal (arg_hd_))+         _tlX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_tl_))+         (T_ENonterminal_vOut7 _hdIchildvisit _hdIcode _hdIdatas _hdIerrors _hdIfromToStates _hdIinitStates _hdImodules _hdIsemFunBndDefs _hdIsemFunBndTps _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_ENonterminal_s8 _hdX8 (T_ENonterminal_vIn7 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOinhmap _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOoptions _hdOsynmap _hdOtypeSyns _hdOwrappers)+         (T_ENonterminals_vOut10 _tlIchildvisit _tlIcode _tlIdatas _tlIerrors _tlIfromToStates _tlIinitStates _tlImodules _tlIsemFunBndDefs _tlIsemFunBndTps _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_ENonterminals_s11 _tlX11 (T_ENonterminals_vIn10 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOinhmap _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOoptions _tlOsynmap _tlOtypeSyns _tlOwrappers)+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)+         _lhsOchildvisit = rule129 _hdIchildvisit _tlIchildvisit+         _lhsOcode :: PP_Doc+         _lhsOcode = rule130 _hdIcode _tlIcode+         _lhsOdatas :: PP_Doc+         _lhsOdatas = rule131 _hdIdatas _tlIdatas+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule132 _hdIerrors _tlIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule133 _hdIfromToStates _tlIfromToStates+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule134 _hdIinitStates _tlIinitStates+         _lhsOmodules :: PP_Doc+         _lhsOmodules = rule135 _hdImodules _tlImodules+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule136 _hdIsemFunBndDefs _tlIsemFunBndDefs+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule137 _hdIsemFunBndTps _tlIsemFunBndTps+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule138 _hdIvisitKinds _tlIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule139 _hdIvisitdefs _tlIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule140 _hdIvisituses _tlIvisituses+         _hdOallFromToStates = rule141 _lhsIallFromToStates+         _hdOallInitStates = rule142 _lhsIallInitStates+         _hdOallVisitKinds = rule143 _lhsIallVisitKinds+         _hdOallchildvisit = rule144 _lhsIallchildvisit+         _hdOavisitdefs = rule145 _lhsIavisitdefs+         _hdOavisituses = rule146 _lhsIavisituses+         _hdOinhmap = rule147 _lhsIinhmap+         _hdOlocalAttrTypes = rule148 _lhsIlocalAttrTypes+         _hdOmainFile = rule149 _lhsImainFile+         _hdOmainName = rule150 _lhsImainName+         _hdOoptions = rule151 _lhsIoptions+         _hdOsynmap = rule152 _lhsIsynmap+         _hdOtypeSyns = rule153 _lhsItypeSyns+         _hdOwrappers = rule154 _lhsIwrappers+         _tlOallFromToStates = rule155 _lhsIallFromToStates+         _tlOallInitStates = rule156 _lhsIallInitStates+         _tlOallVisitKinds = rule157 _lhsIallVisitKinds+         _tlOallchildvisit = rule158 _lhsIallchildvisit+         _tlOavisitdefs = rule159 _lhsIavisitdefs+         _tlOavisituses = rule160 _lhsIavisituses+         _tlOinhmap = rule161 _lhsIinhmap+         _tlOlocalAttrTypes = rule162 _lhsIlocalAttrTypes+         _tlOmainFile = rule163 _lhsImainFile+         _tlOmainName = rule164 _lhsImainName+         _tlOoptions = rule165 _lhsIoptions+         _tlOsynmap = rule166 _lhsIsynmap+         _tlOtypeSyns = rule167 _lhsItypeSyns+         _tlOwrappers = rule168 _lhsIwrappers+         __result_ = T_ENonterminals_vOut10 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminals_s11 v10+   {-# INLINE rule129 #-}+   rule129 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _hdIchildvisit `Map.union` _tlIchildvisit+   {-# INLINE rule130 #-}+   rule130 = \ ((_hdIcode) :: PP_Doc) ((_tlIcode) :: PP_Doc) ->+     _hdIcode >-< _tlIcode+   {-# INLINE rule131 #-}+   rule131 = \ ((_hdIdatas) :: PP_Doc) ((_tlIdatas) :: PP_Doc) ->+     _hdIdatas >-< _tlIdatas+   {-# INLINE rule132 #-}+   rule132 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule133 #-}+   rule133 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _hdIfromToStates `mappend` _tlIfromToStates+   {-# INLINE rule134 #-}+   rule134 = \ ((_hdIinitStates) :: Map NontermIdent Int) ((_tlIinitStates) :: Map NontermIdent Int) ->+     _hdIinitStates `mappend` _tlIinitStates+   {-# INLINE rule135 #-}+   rule135 = \ ((_hdImodules) :: PP_Doc) ((_tlImodules) :: PP_Doc) ->+     _hdImodules >-< _tlImodules+   {-# INLINE rule136 #-}+   rule136 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->+     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs+   {-# INLINE rule137 #-}+   rule137 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->+     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps+   {-# INLINE rule138 #-}+   rule138 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule139 #-}+   rule139 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs+   {-# INLINE rule140 #-}+   rule140 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisituses `uwSetUnion` _tlIvisituses+   {-# INLINE rule141 #-}+   rule141 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule142 #-}+   rule142 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule143 #-}+   rule143 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule144 #-}+   rule144 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule145 #-}+   rule145 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule146 #-}+   rule146 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule147 #-}+   rule147 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule148 #-}+   rule148 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule149 #-}+   rule149 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule150 #-}+   rule150 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule151 #-}+   rule151 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule152 #-}+   rule152 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap+   {-# INLINE rule153 #-}+   rule153 = \ ((_lhsItypeSyns) :: TypeSyns) ->+     _lhsItypeSyns+   {-# INLINE rule154 #-}+   rule154 = \ ((_lhsIwrappers) :: Set NontermIdent) ->+     _lhsIwrappers+   {-# INLINE rule155 #-}+   rule155 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule156 #-}+   rule156 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule157 #-}+   rule157 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule158 #-}+   rule158 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule159 #-}+   rule159 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule160 #-}+   rule160 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule161 #-}+   rule161 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule162 #-}+   rule162 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule163 #-}+   rule163 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule164 #-}+   rule164 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule165 #-}+   rule165 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule166 #-}+   rule166 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap+   {-# INLINE rule167 #-}+   rule167 = \ ((_lhsItypeSyns) :: TypeSyns) ->+     _lhsItypeSyns+   {-# INLINE rule168 #-}+   rule168 = \ ((_lhsIwrappers) :: Set NontermIdent) ->+     _lhsIwrappers+{-# NOINLINE sem_ENonterminals_Nil #-}+sem_ENonterminals_Nil ::  T_ENonterminals +sem_ENonterminals_Nil  = T_ENonterminals (return st11) where+   {-# NOINLINE st11 #-}+   st11 = let+      v10 :: T_ENonterminals_v10 +      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItypeSyns _lhsIwrappers) -> ( let+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)+         _lhsOchildvisit = rule169  ()+         _lhsOcode :: PP_Doc+         _lhsOcode = rule170  ()+         _lhsOdatas :: PP_Doc+         _lhsOdatas = rule171  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule172  ()+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule173  ()+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule174  ()+         _lhsOmodules :: PP_Doc+         _lhsOmodules = rule175  ()+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule176  ()+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule177  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule178  ()+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule179  ()+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule180  ()+         __result_ = T_ENonterminals_vOut10 _lhsOchildvisit _lhsOcode _lhsOdatas _lhsOerrors _lhsOfromToStates _lhsOinitStates _lhsOmodules _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminals_s11 v10+   {-# INLINE rule169 #-}+   rule169 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule170 #-}+   rule170 = \  (_ :: ()) ->+     empty+   {-# INLINE rule171 #-}+   rule171 = \  (_ :: ()) ->+     empty+   {-# INLINE rule172 #-}+   rule172 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule173 #-}+   rule173 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule174 #-}+   rule174 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule175 #-}+   rule175 = \  (_ :: ()) ->+     empty+   {-# INLINE rule176 #-}+   rule176 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule177 #-}+   rule177 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule178 #-}+   rule178 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule179 #-}+   rule179 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule180 #-}+   rule180 = \  (_ :: ()) ->+     Map.empty++-- EProduction -------------------------------------------------+-- wrapper+data Inh_EProduction  = Inh_EProduction { allFromToStates_Inh_EProduction :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProduction :: (Map NontermIdent Attributes), allInitStates_Inh_EProduction :: (Map NontermIdent Int), allSynmap_Inh_EProduction :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProduction :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProduction :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), allstates_Inh_EProduction :: ([StateIdentifier]), avisitdefs_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), inhmap_Inh_EProduction :: (Attributes), initial_Inh_EProduction :: (StateIdentifier), localAttrTypes_Inh_EProduction :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProduction :: (String), mainName_Inh_EProduction :: (String), nextVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), nt_Inh_EProduction :: (NontermIdent), ntType_Inh_EProduction :: (Type), options_Inh_EProduction :: (Options), params_Inh_EProduction :: ([Identifier]), prevVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), rename_Inh_EProduction :: (Bool), synmap_Inh_EProduction :: (Attributes) }+data Syn_EProduction  = Syn_EProduction { allvisits_Syn_EProduction :: ([VisitStateState]), childvisit_Syn_EProduction :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), count_Syn_EProduction :: (Int), datatype_Syn_EProduction :: (PP_Doc), datatype_call_Syn_EProduction :: (PP_Doc), datatype_con_Syn_EProduction :: (PP_Doc), errors_Syn_EProduction :: (Seq Error), fromToStates_Syn_EProduction :: (Map VisitIdentifier (Int,Int)), semFunBndDefs_Syn_EProduction :: (Seq PP_Doc), semFunBndTps_Syn_EProduction :: (Seq PP_Doc), sem_nt_Syn_EProduction :: (PP_Doc), sem_prod_Syn_EProduction :: (PP_Doc), t_visits_Syn_EProduction :: (PP_Doc), visitKinds_Syn_EProduction :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_EProduction #-}+wrap_EProduction :: T_EProduction  -> Inh_EProduction  -> (Syn_EProduction )+wrap_EProduction (T_EProduction act) (Inh_EProduction _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg13 = T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap+        (T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProduction_s14 sem arg13)+        return (Syn_EProduction _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_EProduction #-}+sem_EProduction :: EProduction  -> T_EProduction +sem_EProduction ( EProduction con_ params_ constraints_ rules_ children_ visits_ ) = sem_EProduction_EProduction con_ params_ constraints_ ( sem_ERules rules_ ) ( sem_EChildren children_ ) ( sem_Visits visits_ )++-- semantic domain+newtype T_EProduction  = T_EProduction {+                                       attach_T_EProduction :: Identity (T_EProduction_s14 )+                                       }+newtype T_EProduction_s14  = C_EProduction_s14 {+                                               inv_EProduction_s14 :: (T_EProduction_v13 )+                                               }+data T_EProduction_s15  = C_EProduction_s15+type T_EProduction_v13  = (T_EProduction_vIn13 ) -> (T_EProduction_vOut13 )+data T_EProduction_vIn13  = T_EProduction_vIn13 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ([StateIdentifier]) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Bool) (Attributes)+data T_EProduction_vOut13  = T_EProduction_vOut13 ([VisitStateState]) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Int) (PP_Doc) (PP_Doc) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_EProduction_EProduction #-}+sem_EProduction_EProduction :: (ConstructorIdent) -> ([Identifier]) -> ([Type]) -> T_ERules  -> T_EChildren  -> T_Visits  -> T_EProduction +sem_EProduction_EProduction arg_con_ arg_params_ _ arg_rules_ arg_children_ arg_visits_ = T_EProduction (return st14) where+   {-# NOINLINE st14 #-}+   st14 = let+      v13 :: T_EProduction_v13 +      v13 = \ (T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) -> ( let+         _rulesX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_rules_))+         _childrenX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_children_))+         _visitsX56 = Control.Monad.Identity.runIdentity (attach_T_Visits (arg_visits_))+         (T_ERules_vOut22 _rulesIerrors _rulesImrules _rulesIruledefs _rulesIruleuses _rulesIsem_rules) = inv_ERules_s23 _rulesX23 (T_ERules_vIn22 _rulesOallInhmap _rulesOallSynmap _rulesOchildTypes _rulesOcon _rulesOinhmap _rulesOlazyIntras _rulesOlocalAttrTypes _rulesOmainFile _rulesOmainName _rulesOnt _rulesOoptions _rulesOruleKinds _rulesOsynmap _rulesOusageInfo)+         (T_EChildren_vOut4 _childrenIargnamesw _childrenIchildTypes _childrenIchildintros _childrenIsigs _childrenIterminaldefs) = inv_EChildren_s5 _childrenX5 (T_EChildren_vIn4 _childrenOallInitStates _childrenOcon _childrenOmainFile _childrenOmainName _childrenOnt _childrenOoptions)+         (T_Visits_vOut55 _visitsIallvisits _visitsIchildvisit _visitsIerrors _visitsIfromToStates _visitsIintramap _visitsIlazyIntras _visitsIruleKinds _visitsIruleUsage _visitsIsem_visit _visitsIt_visits _visitsIvisitKinds _visitsIvisitdefs _visitsIvisituses) = inv_Visits_s56 _visitsX56 (T_Visits_vIn55 _visitsOallFromToStates _visitsOallInhmap _visitsOallInitStates _visitsOallSynmap _visitsOallVisitKinds _visitsOallchildvisit _visitsOallintramap _visitsOavisitdefs _visitsOavisituses _visitsOchildTypes _visitsOchildintros _visitsOcon _visitsOinhmap _visitsOmrules _visitsOnextVisits _visitsOnt _visitsOoptions _visitsOparams _visitsOprevVisits _visitsOruledefs _visitsOruleuses _visitsOsynmap _visitsOterminaldefs)+         _childrenOcon = rule181 arg_con_+         _rulesOcon = rule182 arg_con_+         _visitsOcon = rule183 arg_con_+         _o_records = rule184 _lhsIoptions+         _t_params = rule185 _lhsIparams+         _t_c_params = rule186 arg_params_+         _conname = rule187 _lhsInt _lhsIrename arg_con_+         _recname = rule188 _conname+         _lhsOdatatype :: PP_Doc+         _lhsOdatatype = rule189 _childrenIsigs _o_records _recname _t_params+         _lhsOdatatype_call :: PP_Doc+         _lhsOdatatype_call = rule190 _conname _recname _t_params+         _lhsOdatatype_con :: PP_Doc+         _lhsOdatatype_con = rule191 _childrenIsigs _conname _lhsInt _o_records _o_sigs _t_params arg_con_+         _lhsOcount :: Int+         _lhsOcount = rule192  ()+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule193 _childrenIargnamesw _childrenIsigs _lhsInt _lhsIoptions _lhsIrename _o_records arg_con_+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule194 _semFunBndDef+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule195 _semFunBndTp+         _semFunBndDef = rule196 _semFunBndNm _semname+         _semFunBndTp = rule197 _semFunBndNm _sem_tp+         _semFunBndNm = rule198 _lhsInt arg_con_+         _o_sigs = rule199 _lhsIoptions+         _t_type = rule200 _lhsInt+         _semname = rule201 _lhsInt _lhsIoptions arg_con_+         _sem_res_tp = rule202 _t_params _t_type+         _sem_tp = rule203 _childrenIsigs _sem_res_tp+         _initializer = rule204  ()+         _sem_prod = rule205 _childrenIsigs _o_sigs _prod_body _sem_res_tp _semname+         _prod_body = rule206 _initializer _lhsIinitial _lhsInt _rulesIsem_rules _statefuns arg_con_+         _statefuns = rule207 _genstfn _lhsIallstates+         _genstfn = rule208 _lhsIinitial _lhsInextVisits _lhsInt _stargs _stks _stvs+         _stargs = rule209 _childTypes _lhsIallInhmap _lhsIallSynmap _lhsIoptions _localAttrTypes _visitsIintramap+         _stvisits = rule210 _visitsIallvisits+         _stks = rule211 _lhsInextVisits _lhsInt _stvisits _t_c_params arg_con_+         _stvs = rule212 _visitsIsem_visit+         _visitsOmrules = rule213 _rulesImrules+         _visitsOchildintros = rule214 _childrenIchildintros+         _rulesOusageInfo = rule215 _visitsIruleUsage+         _rulesOruleKinds = rule216 _visitsIruleKinds+         _visitsOallintramap = rule217 _visitsIintramap+         _visitsOterminaldefs = rule218 _childrenIterminaldefs+         _visitsOruledefs = rule219 _rulesIruledefs+         _visitsOruleuses = rule220 _rulesIruleuses+         _lazyIntras = rule221 _visitsIlazyIntras+         _childTypes = rule222 _childrenIchildTypes _lhsIntType+         _localAttrTypes = rule223 _lhsIlocalAttrTypes arg_con_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)+         _lhsOchildvisit = rule224 _visitsIchildvisit+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule225 _rulesIerrors _visitsIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule226 _visitsIfromToStates+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule227 _visitsIt_visits+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule228 _visitsIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule229 _visitsIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule230 _visitsIvisituses+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule231 _visitsIallvisits+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule232 _sem_prod+         _rulesOallInhmap = rule233 _lhsIallInhmap+         _rulesOallSynmap = rule234 _lhsIallSynmap+         _rulesOchildTypes = rule235 _childTypes+         _rulesOinhmap = rule236 _lhsIinhmap+         _rulesOlazyIntras = rule237 _lazyIntras+         _rulesOlocalAttrTypes = rule238 _localAttrTypes+         _rulesOmainFile = rule239 _lhsImainFile+         _rulesOmainName = rule240 _lhsImainName+         _rulesOnt = rule241 _lhsInt+         _rulesOoptions = rule242 _lhsIoptions+         _rulesOsynmap = rule243 _lhsIsynmap+         _childrenOallInitStates = rule244 _lhsIallInitStates+         _childrenOmainFile = rule245 _lhsImainFile+         _childrenOmainName = rule246 _lhsImainName+         _childrenOnt = rule247 _lhsInt+         _childrenOoptions = rule248 _lhsIoptions+         _visitsOallFromToStates = rule249 _lhsIallFromToStates+         _visitsOallInhmap = rule250 _lhsIallInhmap+         _visitsOallInitStates = rule251 _lhsIallInitStates+         _visitsOallSynmap = rule252 _lhsIallSynmap+         _visitsOallVisitKinds = rule253 _lhsIallVisitKinds+         _visitsOallchildvisit = rule254 _lhsIallchildvisit+         _visitsOavisitdefs = rule255 _lhsIavisitdefs+         _visitsOavisituses = rule256 _lhsIavisituses+         _visitsOchildTypes = rule257 _childTypes+         _visitsOinhmap = rule258 _lhsIinhmap+         _visitsOnextVisits = rule259 _lhsInextVisits+         _visitsOnt = rule260 _lhsInt+         _visitsOoptions = rule261 _lhsIoptions+         _visitsOparams = rule262 _lhsIparams+         _visitsOprevVisits = rule263 _lhsIprevVisits+         _visitsOsynmap = rule264 _lhsIsynmap+         __result_ = T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProduction_s14 v13+   {-# INLINE rule181 #-}+   {-# LINE 90 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule181 = \ con_ ->+                                               {-# LINE 90 "src-ag/ExecutionPlan2Caml.ag" #-}+                                               con_+                                               {-# LINE 1904 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule182 #-}+   {-# LINE 91 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule182 = \ con_ ->+                   {-# LINE 91 "src-ag/ExecutionPlan2Caml.ag" #-}+                   con_+                   {-# LINE 1910 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule183 #-}+   {-# LINE 92 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule183 = \ con_ ->+                   {-# LINE 92 "src-ag/ExecutionPlan2Caml.ag" #-}+                   con_+                   {-# LINE 1916 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule184 #-}+   {-# LINE 259 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule184 = \ ((_lhsIoptions) :: Options) ->+                    {-# LINE 259 "src-ag/ExecutionPlan2Caml.ag" #-}+                    dataRecords _lhsIoptions+                    {-# LINE 1922 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule185 #-}+   {-# LINE 260 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule185 = \ ((_lhsIparams) :: [Identifier]) ->+                   {-# LINE 260 "src-ag/ExecutionPlan2Caml.ag" #-}+                   ppTypeParams _lhsIparams+                   {-# LINE 1928 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule186 #-}+   {-# LINE 261 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule186 = \ params_ ->+                     {-# LINE 261 "src-ag/ExecutionPlan2Caml.ag" #-}+                     ppTypeParams (cont_tvar : map pp params_)+                     {-# LINE 1934 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule187 #-}+   {-# LINE 262 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule187 = \ ((_lhsInt) :: NontermIdent) ((_lhsIrename) :: Bool) con_ ->+                  {-# LINE 262 "src-ag/ExecutionPlan2Caml.ag" #-}+                  conname _lhsIrename _lhsInt con_+                  {-# LINE 1940 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule188 #-}+   {-# LINE 263 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule188 = \ _conname ->+                  {-# LINE 263 "src-ag/ExecutionPlan2Caml.ag" #-}+                  pp "fields_" >|< _conname+                  {-# LINE 1946 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule189 #-}+   {-# LINE 264 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule189 = \ ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) _o_records _recname _t_params ->+                   {-# LINE 264 "src-ag/ExecutionPlan2Caml.ag" #-}+                   "and" >#< _t_params     >#< _recname     >#< "="+                   >#< ppFieldsType _o_records     False _childrenIsigs+                   {-# LINE 1953 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule190 #-}+   {-# LINE 266 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule190 = \ _conname _recname _t_params ->+                        {-# LINE 266 "src-ag/ExecutionPlan2Caml.ag" #-}+                        pp "|" >#< _conname     >#< "of" >#< pp_parens (_t_params     >#< _recname    )+                        {-# LINE 1959 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule191 #-}+   {-# LINE 268 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule191 = \ ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) _conname ((_lhsInt) :: NontermIdent) _o_records _o_sigs _t_params con_ ->+        {-# LINE 268 "src-ag/ExecutionPlan2Caml.ag" #-}+        let funNm  = _lhsInt >|< "_" >|< con_+            decl   = "and" >#< ppFunDecl _o_sigs     funNm params (_t_params     >#< _lhsInt) body+            params = [ (x, t) | (_,x,_,t) <- _childrenIsigs ]+            body   = _conname     >#< ppFieldsVal _o_records     _childrenIsigs+        in decl+        {-# LINE 1969 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule192 #-}+   {-# LINE 384 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule192 = \  (_ :: ()) ->+                                              {-# LINE 384 "src-ag/ExecutionPlan2Caml.ag" #-}+                                              1+                                              {-# LINE 1975 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule193 #-}+   {-# LINE 389 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule193 = \ ((_childrenIargnamesw) :: [PP_Doc]) ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIrename) :: Bool) _o_records con_ ->+                 {-# LINE 389 "src-ag/ExecutionPlan2Caml.ag" #-}+                 "|" >#< conname _lhsIrename _lhsInt con_ >#< ppFieldsVal _o_records     _childrenIsigs >#< "->" >#<+                   prefix _lhsIoptions >|< _lhsInt >|< "_" >|< con_ >#< ppSpaced _childrenIargnamesw+                 {-# LINE 1982 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule194 #-}+   {-# LINE 655 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule194 = \ _semFunBndDef ->+                        {-# LINE 655 "src-ag/ExecutionPlan2Caml.ag" #-}+                        Seq.singleton _semFunBndDef+                        {-# LINE 1988 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule195 #-}+   {-# LINE 656 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule195 = \ _semFunBndTp ->+                        {-# LINE 656 "src-ag/ExecutionPlan2Caml.ag" #-}+                        Seq.singleton _semFunBndTp+                        {-# LINE 1994 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule196 #-}+   {-# LINE 657 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule196 = \ _semFunBndNm _semname ->+                        {-# LINE 657 "src-ag/ExecutionPlan2Caml.ag" #-}+                        _semFunBndNm     >#< "=" >#< _semname+                        {-# LINE 2000 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule197 #-}+   {-# LINE 658 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule197 = \ _semFunBndNm _sem_tp ->+                        {-# LINE 658 "src-ag/ExecutionPlan2Caml.ag" #-}+                        _semFunBndNm     >#< ":" >#< _sem_tp+                        {-# LINE 2006 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule198 #-}+   {-# LINE 659 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule198 = \ ((_lhsInt) :: NontermIdent) con_ ->+                        {-# LINE 659 "src-ag/ExecutionPlan2Caml.ag" #-}+                        lateSemConLabel _lhsInt con_+                        {-# LINE 2012 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule199 #-}+   {-# LINE 686 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule199 = \ ((_lhsIoptions) :: Options) ->+                     {-# LINE 686 "src-ag/ExecutionPlan2Caml.ag" #-}+                     typeSigs _lhsIoptions+                     {-# LINE 2018 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule200 #-}+   {-# LINE 687 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule200 = \ ((_lhsInt) :: NontermIdent) ->+                     {-# LINE 687 "src-ag/ExecutionPlan2Caml.ag" #-}+                     type_nt_sem_top _lhsInt+                     {-# LINE 2024 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule201 #-}+   {-# LINE 688 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule201 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) con_ ->+                     {-# LINE 688 "src-ag/ExecutionPlan2Caml.ag" #-}+                     prefix _lhsIoptions >|< _lhsInt >|< "_" >|< con_+                     {-# LINE 2030 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule202 #-}+   {-# LINE 689 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule202 = \ _t_params _t_type ->+                     {-# LINE 689 "src-ag/ExecutionPlan2Caml.ag" #-}+                     _t_params     >#< _t_type+                     {-# LINE 2036 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule203 #-}+   {-# LINE 690 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule203 = \ ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) _sem_res_tp ->+                     {-# LINE 690 "src-ag/ExecutionPlan2Caml.ag" #-}+                     pp_block "" "" "->" [ d | (_,_,d,_) <- _childrenIsigs ] >#< "->" >#< _sem_res_tp+                     {-# LINE 2042 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule204 #-}+   {-# LINE 693 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule204 = \  (_ :: ()) ->+        {-# LINE 693 "src-ag/ExecutionPlan2Caml.ag" #-}+        empty+        {-# LINE 2048 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule205 #-}+   {-# LINE 699 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule205 = \ ((_childrenIsigs) :: [(PP_Doc,PP_Doc,PP_Doc,PP_Doc)]) _o_sigs _prod_body _sem_res_tp _semname ->+                    {-# LINE 699 "src-ag/ExecutionPlan2Caml.ag" #-}+                    "and" >#< ppFunDecl _o_sigs     _semname     [ (x,d) | (_,x,d,_) <- _childrenIsigs ] _sem_res_tp     _prod_body+                    {-# LINE 2054 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule206 #-}+   {-# LINE 701 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule206 = \ _initializer ((_lhsIinitial) :: StateIdentifier) ((_lhsInt) :: NontermIdent) ((_rulesIsem_rules) :: PP_Doc) _statefuns con_ ->+        {-# LINE 701 "src-ag/ExecutionPlan2Caml.ag" #-}+        _initializer+        >-< "{" >#< nm_attach _lhsInt >#< "=" >#< "function () ->"+        >-< indent 2+            (   "(* rules of production" >#< con_ >#< "*)"+            >-< _rulesIsem_rules+            >-< "(* states of production" >#< con_ >#< "*)"+            >-< vlist _statefuns+            >-< nm_st _lhsIinitial+            )+        >#< "}"+        {-# LINE 2069 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule207 #-}+   {-# LINE 717 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule207 = \ _genstfn ((_lhsIallstates) :: [StateIdentifier]) ->+                    {-# LINE 717 "src-ag/ExecutionPlan2Caml.ag" #-}+                    map _genstfn     _lhsIallstates+                    {-# LINE 2075 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule208 #-}+   {-# LINE 719 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule208 = \ ((_lhsIinitial) :: StateIdentifier) ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ((_lhsInt) :: NontermIdent) _stargs _stks _stvs ->+        {-# LINE 719 "src-ag/ExecutionPlan2Caml.ag" #-}+        \st -> let nextVisitInfo = Map.findWithDefault ManyVis st _lhsInextVisits+                   stNm = nm_st st+                   stDef body = "let" >#< stNm >#< (if st == _lhsIinitial then empty else _stargs     st) >#< "="+                                >-< indent 2 body >#< "in"+               in case nextVisitInfo of+                    NoneVis ->+                               if st == _lhsIinitial+                               then stDef (pp "unit")+                               else empty+                    _       -> stDef $ mklets (_stvs     st ++ _stks     st) $ ppRecordVal+                                 [ nm_invoke _lhsInt st >#< "=" >#< nm_k st ]+        {-# LINE 2091 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule209 #-}+   {-# LINE 739 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule209 = \ _childTypes ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIoptions) :: Options) _localAttrTypes ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->+        {-# LINE 739 "src-ag/ExecutionPlan2Caml.ag" #-}+        \st -> let attrs = maybe Map.empty id $ Map.lookup st _visitsIintramap in ppSpaced+                 [ case mbAttr of+                     Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->+                       case Map.lookup nm _localAttrTypes     of+                         Just tp -> pp_parens (strNm >#< ":" >#< ppTp tp)+                         Nothing -> pp strNm+                     Just attr | not (noPerStateTypeSigs _lhsIoptions) ->+                       case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _childTypes     of+                         Just tpDoc -> pp_parens (strNm >#< ":" >#< tpDoc)+                         Nothing    -> pp strNm+                     _ -> pp strNm+                 | (strNm, mbAttr) <- Map.assocs attrs+                 ] >#< dummyPat _lhsIoptions (Map.null attrs)+        {-# LINE 2109 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule210 #-}+   {-# LINE 754 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule210 = \ ((_visitsIallvisits) :: [VisitStateState]) ->+                   {-# LINE 754 "src-ag/ExecutionPlan2Caml.ag" #-}+                   \st -> filter (\(_,f,_) -> f == st) _visitsIallvisits+                   {-# LINE 2115 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule211 #-}+   {-# LINE 756 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule211 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ((_lhsInt) :: NontermIdent) _stvisits _t_c_params con_ ->+        {-# LINE 756 "src-ag/ExecutionPlan2Caml.ag" #-}+        \st -> let stvisits = _stvisits     st+                   def = ppFunDecl False                   (pp $ nm_k st)+                           [(pp "arg", _t_c_params     >#< type_caller _lhsInt st)] (pp cont_tvar) body+                   nextVisitInfo = Map.findWithDefault ManyVis st _lhsInextVisits+                   body = case nextVisitInfo of+                     NoneVis  -> text "?no next visit?"+                     OneVis v -> dispatch "arg" v+                     ManyVis  -> let alt (v,_,_) = "|" >#< con_visit _lhsInt v >#< "chosen" >#< "->" >-< indent 2 (dispatch "chosen" v)+                                 in "match arg with" >-< (indent 2 $ vlist $ map alt stvisits)+                   dispatch nm v = "let" >#< ppRecordVal+                                     [ nm_inh _lhsInt v >#< "=" >#< "inp"+                                     , nm_cont _lhsInt v >#< "=" >#< "cont" ]+                                   >#< "=" >#< pp nm+                                   >-< "in" >#< "cont" >#< pp_parens (nm_visit v >#< "inp")+               in if null stvisits+                  then []+                  else [ "(* k-function for production" >#< con_ >#< " *)" >-< def ]+        {-# LINE 2137 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule212 #-}+   {-# LINE 777 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule212 = \ ((_visitsIsem_visit) ::  [(StateIdentifier,PP_Doc)] ) ->+               {-# LINE 777 "src-ag/ExecutionPlan2Caml.ag" #-}+               \st -> [ppf | (f,ppf) <- _visitsIsem_visit, f == st]+               {-# LINE 2143 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule213 #-}+   {-# LINE 778 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule213 = \ ((_rulesImrules) :: Map Identifier (VisitKind -> Either Error PP_Doc)) ->+                    {-# LINE 778 "src-ag/ExecutionPlan2Caml.ag" #-}+                    _rulesImrules+                    {-# LINE 2149 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule214 #-}+   {-# LINE 919 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule214 = \ ((_childrenIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+                         {-# LINE 919 "src-ag/ExecutionPlan2Caml.ag" #-}+                         _childrenIchildintros+                         {-# LINE 2155 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule215 #-}+   {-# LINE 1225 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule215 = \ ((_visitsIruleUsage) :: Map Identifier Int) ->+                                                   {-# LINE 1225 "src-ag/ExecutionPlan2Caml.ag" #-}+                                                   _visitsIruleUsage+                                                   {-# LINE 2161 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule216 #-}+   {-# LINE 1240 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule216 = \ ((_visitsIruleKinds) :: Map Identifier (Set VisitKind)) ->+                      {-# LINE 1240 "src-ag/ExecutionPlan2Caml.ag" #-}+                      _visitsIruleKinds+                      {-# LINE 2167 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule217 #-}+   {-# LINE 1269 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule217 = \ ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->+                          {-# LINE 1269 "src-ag/ExecutionPlan2Caml.ag" #-}+                          _visitsIintramap+                          {-# LINE 2173 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule218 #-}+   {-# LINE 1270 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule218 = \ ((_childrenIterminaldefs) :: Set String) ->+                          {-# LINE 1270 "src-ag/ExecutionPlan2Caml.ag" #-}+                          _childrenIterminaldefs+                          {-# LINE 2179 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule219 #-}+   {-# LINE 1294 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule219 = \ ((_rulesIruledefs) :: Map Identifier (Set String)) ->+                                    {-# LINE 1294 "src-ag/ExecutionPlan2Caml.ag" #-}+                                    _rulesIruledefs+                                    {-# LINE 2185 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule220 #-}+   {-# LINE 1295 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule220 = \ ((_rulesIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+                                    {-# LINE 1295 "src-ag/ExecutionPlan2Caml.ag" #-}+                                    _rulesIruleuses+                                    {-# LINE 2191 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule221 #-}+   {-# LINE 1349 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule221 = \ ((_visitsIlazyIntras) :: Set String) ->+                     {-# LINE 1349 "src-ag/ExecutionPlan2Caml.ag" #-}+                     _visitsIlazyIntras+                     {-# LINE 2197 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule222 #-}+   {-# LINE 1421 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule222 = \ ((_childrenIchildTypes) :: Map Identifier Type) ((_lhsIntType) :: Type) ->+                     {-# LINE 1421 "src-ag/ExecutionPlan2Caml.ag" #-}+                     Map.singleton _LHS _lhsIntType `Map.union` _childrenIchildTypes+                     {-# LINE 2203 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule223 #-}+   {-# LINE 1438 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule223 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) con_ ->+                           {-# LINE 1438 "src-ag/ExecutionPlan2Caml.ag" #-}+                           Map.findWithDefault Map.empty con_ _lhsIlocalAttrTypes+                           {-# LINE 2209 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule224 #-}+   rule224 = \ ((_visitsIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _visitsIchildvisit+   {-# INLINE rule225 #-}+   rule225 = \ ((_rulesIerrors) :: Seq Error) ((_visitsIerrors) :: Seq Error) ->+     _rulesIerrors Seq.>< _visitsIerrors+   {-# INLINE rule226 #-}+   rule226 = \ ((_visitsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _visitsIfromToStates+   {-# INLINE rule227 #-}+   rule227 = \ ((_visitsIt_visits) :: PP_Doc) ->+     _visitsIt_visits+   {-# INLINE rule228 #-}+   rule228 = \ ((_visitsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _visitsIvisitKinds+   {-# INLINE rule229 #-}+   rule229 = \ ((_visitsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _visitsIvisitdefs+   {-# INLINE rule230 #-}+   rule230 = \ ((_visitsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _visitsIvisituses+   {-# INLINE rule231 #-}+   rule231 = \ ((_visitsIallvisits) :: [VisitStateState]) ->+     _visitsIallvisits+   {-# INLINE rule232 #-}+   rule232 = \ _sem_prod ->+     _sem_prod+   {-# INLINE rule233 #-}+   rule233 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule234 #-}+   rule234 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule235 #-}+   rule235 = \ _childTypes ->+     _childTypes+   {-# INLINE rule236 #-}+   rule236 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule237 #-}+   rule237 = \ _lazyIntras ->+     _lazyIntras+   {-# INLINE rule238 #-}+   rule238 = \ _localAttrTypes ->+     _localAttrTypes+   {-# INLINE rule239 #-}+   rule239 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule240 #-}+   rule240 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule241 #-}+   rule241 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule242 #-}+   rule242 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule243 #-}+   rule243 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule244 #-}+   rule244 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule245 #-}+   rule245 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule246 #-}+   rule246 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule247 #-}+   rule247 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule248 #-}+   rule248 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule249 #-}+   rule249 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule250 #-}+   rule250 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule251 #-}+   rule251 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule252 #-}+   rule252 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule253 #-}+   rule253 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule254 #-}+   rule254 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule255 #-}+   rule255 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule256 #-}+   rule256 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule257 #-}+   rule257 = \ _childTypes ->+     _childTypes+   {-# INLINE rule258 #-}+   rule258 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule259 #-}+   rule259 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule260 #-}+   rule260 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule261 #-}+   rule261 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule262 #-}+   rule262 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule263 #-}+   rule263 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule264 #-}+   rule264 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap++-- EProductions ------------------------------------------------+-- wrapper+data Inh_EProductions  = Inh_EProductions { allFromToStates_Inh_EProductions :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProductions :: (Map NontermIdent Attributes), allInitStates_Inh_EProductions :: (Map NontermIdent Int), allSynmap_Inh_EProductions :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProductions :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProductions :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), allstates_Inh_EProductions :: ([StateIdentifier]), avisitdefs_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), inhmap_Inh_EProductions :: (Attributes), initial_Inh_EProductions :: (StateIdentifier), localAttrTypes_Inh_EProductions :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProductions :: (String), mainName_Inh_EProductions :: (String), nextVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), nt_Inh_EProductions :: (NontermIdent), ntType_Inh_EProductions :: (Type), options_Inh_EProductions :: (Options), params_Inh_EProductions :: ([Identifier]), prevVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), rename_Inh_EProductions :: (Bool), synmap_Inh_EProductions :: (Attributes) }+data Syn_EProductions  = Syn_EProductions { allvisits_Syn_EProductions :: ([VisitStateState]), childvisit_Syn_EProductions :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), count_Syn_EProductions :: (Int), datatype_Syn_EProductions :: ([PP_Doc]), datatype_call_Syn_EProductions :: ([PP_Doc]), datatype_con_Syn_EProductions :: ([PP_Doc]), errors_Syn_EProductions :: (Seq Error), fromToStates_Syn_EProductions :: (Map VisitIdentifier (Int,Int)), semFunBndDefs_Syn_EProductions :: (Seq PP_Doc), semFunBndTps_Syn_EProductions :: (Seq PP_Doc), sem_nt_Syn_EProductions :: (PP_Doc), sem_prod_Syn_EProductions :: (PP_Doc), t_visits_Syn_EProductions :: (PP_Doc), visitKinds_Syn_EProductions :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_EProductions #-}+wrap_EProductions :: T_EProductions  -> Inh_EProductions  -> (Syn_EProductions )+wrap_EProductions (T_EProductions act) (Inh_EProductions _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg16 = T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap+        (T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProductions_s17 sem arg16)+        return (Syn_EProductions _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# NOINLINE sem_EProductions #-}+sem_EProductions :: EProductions  -> T_EProductions +sem_EProductions list = Prelude.foldr sem_EProductions_Cons sem_EProductions_Nil (Prelude.map sem_EProduction list)++-- semantic domain+newtype T_EProductions  = T_EProductions {+                                         attach_T_EProductions :: Identity (T_EProductions_s17 )+                                         }+newtype T_EProductions_s17  = C_EProductions_s17 {+                                                 inv_EProductions_s17 :: (T_EProductions_v16 )+                                                 }+data T_EProductions_s18  = C_EProductions_s18+type T_EProductions_v16  = (T_EProductions_vIn16 ) -> (T_EProductions_vOut16 )+data T_EProductions_vIn16  = T_EProductions_vIn16 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ([StateIdentifier]) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Bool) (Attributes)+data T_EProductions_vOut16  = T_EProductions_vOut16 ([VisitStateState]) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Int) ([PP_Doc]) ([PP_Doc]) ([PP_Doc]) (Seq Error) (Map VisitIdentifier (Int,Int)) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_EProductions_Cons #-}+sem_EProductions_Cons :: T_EProduction  -> T_EProductions  -> T_EProductions +sem_EProductions_Cons arg_hd_ arg_tl_ = T_EProductions (return st17) where+   {-# NOINLINE st17 #-}+   st17 = let+      v16 :: T_EProductions_v16 +      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) -> ( let+         _hdX14 = Control.Monad.Identity.runIdentity (attach_T_EProduction (arg_hd_))+         _tlX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_tl_))+         (T_EProduction_vOut13 _hdIallvisits _hdIchildvisit _hdIcount _hdIdatatype _hdIdatatype_call _hdIdatatype_con _hdIerrors _hdIfromToStates _hdIsemFunBndDefs _hdIsemFunBndTps _hdIsem_nt _hdIsem_prod _hdIt_visits _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_EProduction_s14 _hdX14 (T_EProduction_vIn13 _hdOallFromToStates _hdOallInhmap _hdOallInitStates _hdOallSynmap _hdOallVisitKinds _hdOallchildvisit _hdOallstates _hdOavisitdefs _hdOavisituses _hdOinhmap _hdOinitial _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOnextVisits _hdOnt _hdOntType _hdOoptions _hdOparams _hdOprevVisits _hdOrename _hdOsynmap)+         (T_EProductions_vOut16 _tlIallvisits _tlIchildvisit _tlIcount _tlIdatatype _tlIdatatype_call _tlIdatatype_con _tlIerrors _tlIfromToStates _tlIsemFunBndDefs _tlIsemFunBndTps _tlIsem_nt _tlIsem_prod _tlIt_visits _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_EProductions_s17 _tlX17 (T_EProductions_vIn16 _tlOallFromToStates _tlOallInhmap _tlOallInitStates _tlOallSynmap _tlOallVisitKinds _tlOallchildvisit _tlOallstates _tlOavisitdefs _tlOavisituses _tlOinhmap _tlOinitial _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOnextVisits _tlOnt _tlOntType _tlOoptions _tlOparams _tlOprevVisits _tlOrename _tlOsynmap)+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule265 _hdIallvisits+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule266 _hdIt_visits+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)+         _lhsOchildvisit = rule267 _hdIchildvisit _tlIchildvisit+         _lhsOcount :: Int+         _lhsOcount = rule268 _hdIcount _tlIcount+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule269 _hdIdatatype _tlIdatatype+         _lhsOdatatype_call :: [PP_Doc]+         _lhsOdatatype_call = rule270 _hdIdatatype_call _tlIdatatype_call+         _lhsOdatatype_con :: [PP_Doc]+         _lhsOdatatype_con = rule271 _hdIdatatype_con _tlIdatatype_con+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule272 _hdIerrors _tlIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule273 _hdIfromToStates _tlIfromToStates+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule274 _hdIsemFunBndDefs _tlIsemFunBndDefs+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule275 _hdIsemFunBndTps _tlIsemFunBndTps+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule276 _hdIsem_nt _tlIsem_nt+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule277 _hdIsem_prod _tlIsem_prod+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule278 _hdIvisitKinds _tlIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule279 _hdIvisitdefs _tlIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule280 _hdIvisituses _tlIvisituses+         _hdOallFromToStates = rule281 _lhsIallFromToStates+         _hdOallInhmap = rule282 _lhsIallInhmap+         _hdOallInitStates = rule283 _lhsIallInitStates+         _hdOallSynmap = rule284 _lhsIallSynmap+         _hdOallVisitKinds = rule285 _lhsIallVisitKinds+         _hdOallchildvisit = rule286 _lhsIallchildvisit+         _hdOallstates = rule287 _lhsIallstates+         _hdOavisitdefs = rule288 _lhsIavisitdefs+         _hdOavisituses = rule289 _lhsIavisituses+         _hdOinhmap = rule290 _lhsIinhmap+         _hdOinitial = rule291 _lhsIinitial+         _hdOlocalAttrTypes = rule292 _lhsIlocalAttrTypes+         _hdOmainFile = rule293 _lhsImainFile+         _hdOmainName = rule294 _lhsImainName+         _hdOnextVisits = rule295 _lhsInextVisits+         _hdOnt = rule296 _lhsInt+         _hdOntType = rule297 _lhsIntType+         _hdOoptions = rule298 _lhsIoptions+         _hdOparams = rule299 _lhsIparams+         _hdOprevVisits = rule300 _lhsIprevVisits+         _hdOrename = rule301 _lhsIrename+         _hdOsynmap = rule302 _lhsIsynmap+         _tlOallFromToStates = rule303 _lhsIallFromToStates+         _tlOallInhmap = rule304 _lhsIallInhmap+         _tlOallInitStates = rule305 _lhsIallInitStates+         _tlOallSynmap = rule306 _lhsIallSynmap+         _tlOallVisitKinds = rule307 _lhsIallVisitKinds+         _tlOallchildvisit = rule308 _lhsIallchildvisit+         _tlOallstates = rule309 _lhsIallstates+         _tlOavisitdefs = rule310 _lhsIavisitdefs+         _tlOavisituses = rule311 _lhsIavisituses+         _tlOinhmap = rule312 _lhsIinhmap+         _tlOinitial = rule313 _lhsIinitial+         _tlOlocalAttrTypes = rule314 _lhsIlocalAttrTypes+         _tlOmainFile = rule315 _lhsImainFile+         _tlOmainName = rule316 _lhsImainName+         _tlOnextVisits = rule317 _lhsInextVisits+         _tlOnt = rule318 _lhsInt+         _tlOntType = rule319 _lhsIntType+         _tlOoptions = rule320 _lhsIoptions+         _tlOparams = rule321 _lhsIparams+         _tlOprevVisits = rule322 _lhsIprevVisits+         _tlOrename = rule323 _lhsIrename+         _tlOsynmap = rule324 _lhsIsynmap+         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProductions_s17 v16+   {-# INLINE rule265 #-}+   {-# LINE 439 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule265 = \ ((_hdIallvisits) :: [VisitStateState]) ->+                           {-# LINE 439 "src-ag/ExecutionPlan2Caml.ag" #-}+                           _hdIallvisits+                           {-# LINE 2459 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule266 #-}+   {-# LINE 534 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule266 = \ ((_hdIt_visits) :: PP_Doc) ->+                   {-# LINE 534 "src-ag/ExecutionPlan2Caml.ag" #-}+                   _hdIt_visits+                   {-# LINE 2465 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule267 #-}+   rule267 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _hdIchildvisit `Map.union` _tlIchildvisit+   {-# INLINE rule268 #-}+   rule268 = \ ((_hdIcount) :: Int) ((_tlIcount) :: Int) ->+     _hdIcount + _tlIcount+   {-# INLINE rule269 #-}+   rule269 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->+     _hdIdatatype : _tlIdatatype+   {-# INLINE rule270 #-}+   rule270 = \ ((_hdIdatatype_call) :: PP_Doc) ((_tlIdatatype_call) :: [PP_Doc]) ->+     _hdIdatatype_call : _tlIdatatype_call+   {-# INLINE rule271 #-}+   rule271 = \ ((_hdIdatatype_con) :: PP_Doc) ((_tlIdatatype_con) :: [PP_Doc]) ->+     _hdIdatatype_con : _tlIdatatype_con+   {-# INLINE rule272 #-}+   rule272 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule273 #-}+   rule273 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _hdIfromToStates `mappend` _tlIfromToStates+   {-# INLINE rule274 #-}+   rule274 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->+     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs+   {-# INLINE rule275 #-}+   rule275 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->+     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps+   {-# INLINE rule276 #-}+   rule276 = \ ((_hdIsem_nt) :: PP_Doc) ((_tlIsem_nt) :: PP_Doc) ->+     _hdIsem_nt >-< _tlIsem_nt+   {-# INLINE rule277 #-}+   rule277 = \ ((_hdIsem_prod) :: PP_Doc) ((_tlIsem_prod) :: PP_Doc) ->+     _hdIsem_prod >-< _tlIsem_prod+   {-# INLINE rule278 #-}+   rule278 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule279 #-}+   rule279 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs+   {-# INLINE rule280 #-}+   rule280 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisituses `uwSetUnion` _tlIvisituses+   {-# INLINE rule281 #-}+   rule281 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule282 #-}+   rule282 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule283 #-}+   rule283 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule284 #-}+   rule284 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule285 #-}+   rule285 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule286 #-}+   rule286 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule287 #-}+   rule287 = \ ((_lhsIallstates) :: [StateIdentifier]) ->+     _lhsIallstates+   {-# INLINE rule288 #-}+   rule288 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule289 #-}+   rule289 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule290 #-}+   rule290 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule291 #-}+   rule291 = \ ((_lhsIinitial) :: StateIdentifier) ->+     _lhsIinitial+   {-# INLINE rule292 #-}+   rule292 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule293 #-}+   rule293 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule294 #-}+   rule294 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule295 #-}+   rule295 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule296 #-}+   rule296 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule297 #-}+   rule297 = \ ((_lhsIntType) :: Type) ->+     _lhsIntType+   {-# INLINE rule298 #-}+   rule298 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule299 #-}+   rule299 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule300 #-}+   rule300 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule301 #-}+   rule301 = \ ((_lhsIrename) :: Bool) ->+     _lhsIrename+   {-# INLINE rule302 #-}+   rule302 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule303 #-}+   rule303 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule304 #-}+   rule304 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule305 #-}+   rule305 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule306 #-}+   rule306 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule307 #-}+   rule307 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule308 #-}+   rule308 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule309 #-}+   rule309 = \ ((_lhsIallstates) :: [StateIdentifier]) ->+     _lhsIallstates+   {-# INLINE rule310 #-}+   rule310 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule311 #-}+   rule311 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule312 #-}+   rule312 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule313 #-}+   rule313 = \ ((_lhsIinitial) :: StateIdentifier) ->+     _lhsIinitial+   {-# INLINE rule314 #-}+   rule314 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule315 #-}+   rule315 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule316 #-}+   rule316 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule317 #-}+   rule317 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule318 #-}+   rule318 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule319 #-}+   rule319 = \ ((_lhsIntType) :: Type) ->+     _lhsIntType+   {-# INLINE rule320 #-}+   rule320 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule321 #-}+   rule321 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule322 #-}+   rule322 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule323 #-}+   rule323 = \ ((_lhsIrename) :: Bool) ->+     _lhsIrename+   {-# INLINE rule324 #-}+   rule324 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_EProductions_Nil #-}+sem_EProductions_Nil ::  T_EProductions +sem_EProductions_Nil  = T_EProductions (return st17) where+   {-# NOINLINE st17 #-}+   st17 = let+      v16 :: T_EProductions_v16 +      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap) -> ( let+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule325  ()+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)+         _lhsOchildvisit = rule326  ()+         _lhsOcount :: Int+         _lhsOcount = rule327  ()+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule328  ()+         _lhsOdatatype_call :: [PP_Doc]+         _lhsOdatatype_call = rule329  ()+         _lhsOdatatype_con :: [PP_Doc]+         _lhsOdatatype_con = rule330  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule331  ()+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule332  ()+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule333  ()+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule334  ()+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule335  ()+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule336  ()+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule337  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule338  ()+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule339  ()+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule340  ()+         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOdatatype_call _lhsOdatatype_con _lhsOerrors _lhsOfromToStates _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProductions_s17 v16+   {-# INLINE rule325 #-}+   {-# LINE 440 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule325 = \  (_ :: ()) ->+                           {-# LINE 440 "src-ag/ExecutionPlan2Caml.ag" #-}+                           error "Every nonterminal should have at least 1 production"+                           {-# LINE 2687 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule326 #-}+   rule326 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule327 #-}+   rule327 = \  (_ :: ()) ->+     0+   {-# INLINE rule328 #-}+   rule328 = \  (_ :: ()) ->+     []+   {-# INLINE rule329 #-}+   rule329 = \  (_ :: ()) ->+     []+   {-# INLINE rule330 #-}+   rule330 = \  (_ :: ()) ->+     []+   {-# INLINE rule331 #-}+   rule331 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule332 #-}+   rule332 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule333 #-}+   rule333 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule334 #-}+   rule334 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule335 #-}+   rule335 = \  (_ :: ()) ->+     empty+   {-# INLINE rule336 #-}+   rule336 = \  (_ :: ()) ->+     empty+   {-# INLINE rule337 #-}+   rule337 = \  (_ :: ()) ->+     empty+   {-# INLINE rule338 #-}+   rule338 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule339 #-}+   rule339 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule340 #-}+   rule340 = \  (_ :: ()) ->+     Map.empty++-- ERule -------------------------------------------------------+-- wrapper+data Inh_ERule  = Inh_ERule { allInhmap_Inh_ERule :: (Map NontermIdent Attributes), allSynmap_Inh_ERule :: (Map NontermIdent Attributes), childTypes_Inh_ERule :: (Map Identifier Type), con_Inh_ERule :: (ConstructorIdent), inhmap_Inh_ERule :: (Attributes), lazyIntras_Inh_ERule :: (Set String), localAttrTypes_Inh_ERule :: (Map Identifier Type), mainFile_Inh_ERule :: (String), mainName_Inh_ERule :: (String), nt_Inh_ERule :: (NontermIdent), options_Inh_ERule :: (Options), ruleKinds_Inh_ERule :: (Map Identifier (Set VisitKind)), synmap_Inh_ERule :: (Attributes), usageInfo_Inh_ERule :: (Map Identifier Int) }+data Syn_ERule  = Syn_ERule { errors_Syn_ERule :: (Seq Error), mrules_Syn_ERule :: (Map Identifier (VisitKind -> Either Error PP_Doc)), ruledefs_Syn_ERule :: (Map Identifier (Set String)), ruleuses_Syn_ERule :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERule :: (PP_Doc) }+{-# INLINABLE wrap_ERule #-}+wrap_ERule :: T_ERule  -> Inh_ERule  -> (Syn_ERule )+wrap_ERule (T_ERule act) (Inh_ERule _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg19 = T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo+        (T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules) <- return (inv_ERule_s20 sem arg19)+        return (Syn_ERule _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules)+   )++-- cata+{-# INLINE sem_ERule #-}+sem_ERule :: ERule  -> T_ERule +sem_ERule ( ERule name_ pattern_ rhs_ owrt_ origin_ explicit_ pure_ mbError_ ) = sem_ERule_ERule name_ ( sem_Pattern pattern_ ) ( sem_Expression rhs_ ) owrt_ origin_ explicit_ pure_ mbError_++-- semantic domain+newtype T_ERule  = T_ERule {+                           attach_T_ERule :: Identity (T_ERule_s20 )+                           }+newtype T_ERule_s20  = C_ERule_s20 {+                                   inv_ERule_s20 :: (T_ERule_v19 )+                                   }+data T_ERule_s21  = C_ERule_s21+type T_ERule_v19  = (T_ERule_vIn19 ) -> (T_ERule_vOut19 )+data T_ERule_vIn19  = T_ERule_vIn19 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (Attributes) (Set String) (Map Identifier Type) (String) (String) (NontermIdent) (Options) (Map Identifier (Set VisitKind)) (Attributes) (Map Identifier Int)+data T_ERule_vOut19  = T_ERule_vOut19 (Seq Error) (Map Identifier (VisitKind -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc)+{-# NOINLINE sem_ERule_ERule #-}+sem_ERule_ERule :: (Identifier) -> T_Pattern  -> T_Expression  -> (Bool) -> (String) -> (Bool) -> (Bool) -> (Maybe Error) -> T_ERule +sem_ERule_ERule arg_name_ arg_pattern_ arg_rhs_ _ _ arg_explicit_ arg_pure_ arg_mbError_ = T_ERule (return st20) where+   {-# NOINLINE st20 #-}+   st20 = let+      v19 :: T_ERule_v19 +      v19 = \ (T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) -> ( let+         _patternX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pattern_))+         _rhsX29 = Control.Monad.Identity.runIdentity (attach_T_Expression (arg_rhs_))+         (T_Pattern_vOut40 _patternIattrTypes _patternIattrs _patternIcopy _patternIextraDefs _patternIisUnderscore _patternIsem_lhs) = inv_Pattern_s41 _patternX41 (T_Pattern_vIn40 _patternOallInhmap _patternOallSynmap _patternOanyLazyKind _patternOinhmap _patternOlocalAttrTypes _patternOoptions _patternOsynmap)+         (T_Expression_vOut28 _rhsIattrs _rhsIpos _rhsIsemfunc _rhsItks) = inv_Expression_s29 _rhsX29 (T_Expression_vIn28 _rhsOoptions)+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule341 _rulecode _used+         _rulecode = rule342 _declHead _endpragma _genpragma _pragma _rhsIpos _rhsIsemfunc+         _pragma = rule343 _lhsIoptions _rhsIpos+         _endpragma = rule344 _lhsImainFile _lhsIoptions+         _genpragma = rule345 _haspos _lhsIoptions arg_explicit_+         _haspos = rule346 _rhsIpos+         _declHead = rule347 _argPats _lhsIoptions _rhsIattrs arg_name_+         _argPats = rule348 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIlocalAttrTypes _lhsIoptions _rhsIattrs+         _argExprs = rule349 _rhsIattrs+         _stepcode = rule350 _argExprs _lhsIoptions _patternIextraDefs _patternIsem_lhs _rhsIattrs arg_name_ arg_pure_+         _lhsOmrules :: Map Identifier (VisitKind -> Either Error PP_Doc)+         _lhsOmrules = rule351 _stepcode arg_name_+         _used = rule352 _lhsIusageInfo arg_name_+         _kinds = rule353 _lhsIruleKinds arg_name_+         _anyLazyKind = rule354 _kinds+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule355 _patternIattrs arg_name_+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule356 _rhsIattrs arg_name_+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule357 _used arg_mbError_+         _patternOallInhmap = rule358 _lhsIallInhmap+         _patternOallSynmap = rule359 _lhsIallSynmap+         _patternOanyLazyKind = rule360 _anyLazyKind+         _patternOinhmap = rule361 _lhsIinhmap+         _patternOlocalAttrTypes = rule362 _lhsIlocalAttrTypes+         _patternOoptions = rule363 _lhsIoptions+         _patternOsynmap = rule364 _lhsIsynmap+         _rhsOoptions = rule365 _lhsIoptions+         __result_ = T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules+         in __result_ )+     in C_ERule_s20 v19+   {-# INLINE rule341 #-}+   {-# LINE 977 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule341 = \ _rulecode _used ->+                          {-# LINE 977 "src-ag/ExecutionPlan2Caml.ag" #-}+                          if _used     == 0+                          then empty+                          else _rulecode+                          {-# LINE 2815 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule342 #-}+   {-# LINE 980 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule342 = \ _declHead _endpragma _genpragma _pragma ((_rhsIpos) :: Pos) ((_rhsIsemfunc) :: PP_Doc) ->+                          {-# LINE 980 "src-ag/ExecutionPlan2Caml.ag" #-}+                          ( if _genpragma+                            then _pragma+                            else empty+                          )+                          >-< _declHead+                          >-< indent ((column _rhsIpos - 2) `max` 2)+                                ( if _genpragma+                                  then _pragma     >-< _rhsIsemfunc >-< _endpragma+                                  else _rhsIsemfunc+                                )+                          >#< "in"+                          {-# LINE 2831 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule343 #-}+   {-# LINE 993 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule343 = \ ((_lhsIoptions) :: Options) ((_rhsIpos) :: Pos) ->+                           {-# LINE 993 "src-ag/ExecutionPlan2Caml.ag" #-}+                           ppLinePragma _lhsIoptions (line _rhsIpos) (file _rhsIpos)+                           {-# LINE 2837 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule344 #-}+   {-# LINE 994 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule344 = \ ((_lhsImainFile) :: String) ((_lhsIoptions) :: Options) ->+                           {-# LINE 994 "src-ag/ExecutionPlan2Caml.ag" #-}+                           ppWithLineNr (\ln -> ppLinePragma _lhsIoptions (ln+1) _lhsImainFile)+                           {-# LINE 2843 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule345 #-}+   {-# LINE 995 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule345 = \ _haspos ((_lhsIoptions) :: Options) explicit_ ->+                           {-# LINE 995 "src-ag/ExecutionPlan2Caml.ag" #-}+                           genLinePragmas _lhsIoptions && explicit_ && _haspos+                           {-# LINE 2849 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule346 #-}+   {-# LINE 996 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule346 = \ ((_rhsIpos) :: Pos) ->+                           {-# LINE 996 "src-ag/ExecutionPlan2Caml.ag" #-}+                           line _rhsIpos > 0 && column _rhsIpos >= 0 && not (null (file _rhsIpos))+                           {-# LINE 2855 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule347 #-}+   {-# LINE 1000 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule347 = \ _argPats ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->+                       {-# LINE 1000 "src-ag/ExecutionPlan2Caml.ag" #-}+                       "let" >#< name_ >#< _argPats     >#< dummyPat _lhsIoptions (Map.null _rhsIattrs) >#< "="+                       {-# LINE 2861 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule348 #-}+   {-# LINE 1002 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule348 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIchildTypes) :: Map Identifier Type) ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->+            {-# LINE 1002 "src-ag/ExecutionPlan2Caml.ag" #-}+            ppSpaced+              [ case mbAttr of+                  Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->+                    case Map.lookup nm _lhsIlocalAttrTypes of+                      Just tp -> pp_parens (strNm >#< ":" >#< ppTp tp)+                      Nothing -> pp strNm+                  Just attr | not (noPerStateTypeSigs _lhsIoptions) ->+                    case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes of+                      Just tpDoc -> pp_parens (strNm >#< ":" >#< tpDoc)+                      Nothing    -> pp strNm+                  _ -> pp strNm+              | (strNm, mbAttr) <- Map.assocs _rhsIattrs+              ]+            {-# LINE 2879 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule349 #-}+   {-# LINE 1016 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule349 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->+                       {-# LINE 1016 "src-ag/ExecutionPlan2Caml.ag" #-}+                       ppSpaced $ Map.keys _rhsIattrs+                       {-# LINE 2885 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule350 #-}+   {-# LINE 1017 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule350 = \ _argExprs ((_lhsIoptions) :: Options) ((_patternIextraDefs) :: [(PP_Doc,PP_Doc)]) ((_patternIsem_lhs) ::  PP_Doc ) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ pure_ ->+                       {-# LINE 1017 "src-ag/ExecutionPlan2Caml.ag" #-}+                       \kind ->+                         let mkBind (pat,expr) = "let" >#< pat >#< "=" >#< expr >#< "in"+                         in if kind `compatibleRule` pure_+                            then Right $ mkBind (_patternIsem_lhs, name_ >#< _argExprs     >#< dummyArg _lhsIoptions (Map.null _rhsIattrs))+                                         >-< vlist (map mkBind _patternIextraDefs)+                            else Left $ IncompatibleRuleKind name_ kind+                       {-# LINE 2896 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule351 #-}+   {-# LINE 1024 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule351 = \ _stepcode name_ ->+                       {-# LINE 1024 "src-ag/ExecutionPlan2Caml.ag" #-}+                       Map.singleton name_ _stepcode+                       {-# LINE 2902 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule352 #-}+   {-# LINE 1227 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule352 = \ ((_lhsIusageInfo) :: Map Identifier Int) name_ ->+                                                 {-# LINE 1227 "src-ag/ExecutionPlan2Caml.ag" #-}+                                                 Map.findWithDefault 0 name_ _lhsIusageInfo+                                                 {-# LINE 2908 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule353 #-}+   {-# LINE 1243 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule353 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) name_ ->+                {-# LINE 1243 "src-ag/ExecutionPlan2Caml.ag" #-}+                Map.findWithDefault Set.empty name_ _lhsIruleKinds+                {-# LINE 2914 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule354 #-}+   {-# LINE 1244 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule354 = \ _kinds ->+                      {-# LINE 1244 "src-ag/ExecutionPlan2Caml.ag" #-}+                      Set.fold (\k r -> isLazyKind k || r) False _kinds+                      {-# LINE 2920 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule355 #-}+   {-# LINE 1290 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule355 = \ ((_patternIattrs) :: Set String) name_ ->+                           {-# LINE 1290 "src-ag/ExecutionPlan2Caml.ag" #-}+                           Map.singleton name_ _patternIattrs+                           {-# LINE 2926 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule356 #-}+   {-# LINE 1291 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule356 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->+                           {-# LINE 1291 "src-ag/ExecutionPlan2Caml.ag" #-}+                           Map.singleton name_ _rhsIattrs+                           {-# LINE 2932 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule357 #-}+   {-# LINE 1485 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule357 = \ _used mbError_ ->+                 {-# LINE 1485 "src-ag/ExecutionPlan2Caml.ag" #-}+                 case mbError_ of+                   Just e | _used     > 0 -> Seq.singleton e+                   _                      -> Seq.empty+                 {-# LINE 2940 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule358 #-}+   rule358 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule359 #-}+   rule359 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule360 #-}+   rule360 = \ _anyLazyKind ->+     _anyLazyKind+   {-# INLINE rule361 #-}+   rule361 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule362 #-}+   rule362 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule363 #-}+   rule363 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule364 #-}+   rule364 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule365 #-}+   rule365 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions++-- ERules ------------------------------------------------------+-- wrapper+data Inh_ERules  = Inh_ERules { allInhmap_Inh_ERules :: (Map NontermIdent Attributes), allSynmap_Inh_ERules :: (Map NontermIdent Attributes), childTypes_Inh_ERules :: (Map Identifier Type), con_Inh_ERules :: (ConstructorIdent), inhmap_Inh_ERules :: (Attributes), lazyIntras_Inh_ERules :: (Set String), localAttrTypes_Inh_ERules :: (Map Identifier Type), mainFile_Inh_ERules :: (String), mainName_Inh_ERules :: (String), nt_Inh_ERules :: (NontermIdent), options_Inh_ERules :: (Options), ruleKinds_Inh_ERules :: (Map Identifier (Set VisitKind)), synmap_Inh_ERules :: (Attributes), usageInfo_Inh_ERules :: (Map Identifier Int) }+data Syn_ERules  = Syn_ERules { errors_Syn_ERules :: (Seq Error), mrules_Syn_ERules :: (Map Identifier (VisitKind -> Either Error PP_Doc)), ruledefs_Syn_ERules :: (Map Identifier (Set String)), ruleuses_Syn_ERules :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERules :: (PP_Doc) }+{-# INLINABLE wrap_ERules #-}+wrap_ERules :: T_ERules  -> Inh_ERules  -> (Syn_ERules )+wrap_ERules (T_ERules act) (Inh_ERules _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg22 = T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo+        (T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules) <- return (inv_ERules_s23 sem arg22)+        return (Syn_ERules _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules)+   )++-- cata+{-# NOINLINE sem_ERules #-}+sem_ERules :: ERules  -> T_ERules +sem_ERules list = Prelude.foldr sem_ERules_Cons sem_ERules_Nil (Prelude.map sem_ERule list)++-- semantic domain+newtype T_ERules  = T_ERules {+                             attach_T_ERules :: Identity (T_ERules_s23 )+                             }+newtype T_ERules_s23  = C_ERules_s23 {+                                     inv_ERules_s23 :: (T_ERules_v22 )+                                     }+data T_ERules_s24  = C_ERules_s24+type T_ERules_v22  = (T_ERules_vIn22 ) -> (T_ERules_vOut22 )+data T_ERules_vIn22  = T_ERules_vIn22 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (Attributes) (Set String) (Map Identifier Type) (String) (String) (NontermIdent) (Options) (Map Identifier (Set VisitKind)) (Attributes) (Map Identifier Int)+data T_ERules_vOut22  = T_ERules_vOut22 (Seq Error) (Map Identifier (VisitKind -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc)+{-# NOINLINE sem_ERules_Cons #-}+sem_ERules_Cons :: T_ERule  -> T_ERules  -> T_ERules +sem_ERules_Cons arg_hd_ arg_tl_ = T_ERules (return st23) where+   {-# NOINLINE st23 #-}+   st23 = let+      v22 :: T_ERules_v22 +      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) -> ( let+         _hdX20 = Control.Monad.Identity.runIdentity (attach_T_ERule (arg_hd_))+         _tlX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_tl_))+         (T_ERule_vOut19 _hdIerrors _hdImrules _hdIruledefs _hdIruleuses _hdIsem_rules) = inv_ERule_s20 _hdX20 (T_ERule_vIn19 _hdOallInhmap _hdOallSynmap _hdOchildTypes _hdOcon _hdOinhmap _hdOlazyIntras _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOnt _hdOoptions _hdOruleKinds _hdOsynmap _hdOusageInfo)+         (T_ERules_vOut22 _tlIerrors _tlImrules _tlIruledefs _tlIruleuses _tlIsem_rules) = inv_ERules_s23 _tlX23 (T_ERules_vIn22 _tlOallInhmap _tlOallSynmap _tlOchildTypes _tlOcon _tlOinhmap _tlOlazyIntras _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOnt _tlOoptions _tlOruleKinds _tlOsynmap _tlOusageInfo)+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule366 _hdIerrors _tlIerrors+         _lhsOmrules :: Map Identifier (VisitKind -> Either Error PP_Doc)+         _lhsOmrules = rule367 _hdImrules _tlImrules+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule368 _hdIruledefs _tlIruledefs+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule369 _hdIruleuses _tlIruleuses+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule370 _hdIsem_rules _tlIsem_rules+         _hdOallInhmap = rule371 _lhsIallInhmap+         _hdOallSynmap = rule372 _lhsIallSynmap+         _hdOchildTypes = rule373 _lhsIchildTypes+         _hdOcon = rule374 _lhsIcon+         _hdOinhmap = rule375 _lhsIinhmap+         _hdOlazyIntras = rule376 _lhsIlazyIntras+         _hdOlocalAttrTypes = rule377 _lhsIlocalAttrTypes+         _hdOmainFile = rule378 _lhsImainFile+         _hdOmainName = rule379 _lhsImainName+         _hdOnt = rule380 _lhsInt+         _hdOoptions = rule381 _lhsIoptions+         _hdOruleKinds = rule382 _lhsIruleKinds+         _hdOsynmap = rule383 _lhsIsynmap+         _hdOusageInfo = rule384 _lhsIusageInfo+         _tlOallInhmap = rule385 _lhsIallInhmap+         _tlOallSynmap = rule386 _lhsIallSynmap+         _tlOchildTypes = rule387 _lhsIchildTypes+         _tlOcon = rule388 _lhsIcon+         _tlOinhmap = rule389 _lhsIinhmap+         _tlOlazyIntras = rule390 _lhsIlazyIntras+         _tlOlocalAttrTypes = rule391 _lhsIlocalAttrTypes+         _tlOmainFile = rule392 _lhsImainFile+         _tlOmainName = rule393 _lhsImainName+         _tlOnt = rule394 _lhsInt+         _tlOoptions = rule395 _lhsIoptions+         _tlOruleKinds = rule396 _lhsIruleKinds+         _tlOsynmap = rule397 _lhsIsynmap+         _tlOusageInfo = rule398 _lhsIusageInfo+         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules+         in __result_ )+     in C_ERules_s23 v22+   {-# INLINE rule366 #-}+   rule366 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule367 #-}+   rule367 = \ ((_hdImrules) :: Map Identifier (VisitKind -> Either Error PP_Doc)) ((_tlImrules) :: Map Identifier (VisitKind -> Either Error PP_Doc)) ->+     _hdImrules `Map.union` _tlImrules+   {-# INLINE rule368 #-}+   rule368 = \ ((_hdIruledefs) :: Map Identifier (Set String)) ((_tlIruledefs) :: Map Identifier (Set String)) ->+     _hdIruledefs `uwSetUnion` _tlIruledefs+   {-# INLINE rule369 #-}+   rule369 = \ ((_hdIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ((_tlIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _hdIruleuses `uwMapUnion` _tlIruleuses+   {-# INLINE rule370 #-}+   rule370 = \ ((_hdIsem_rules) :: PP_Doc) ((_tlIsem_rules) :: PP_Doc) ->+     _hdIsem_rules >-< _tlIsem_rules+   {-# INLINE rule371 #-}+   rule371 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule372 #-}+   rule372 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule373 #-}+   rule373 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule374 #-}+   rule374 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule375 #-}+   rule375 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule376 #-}+   rule376 = \ ((_lhsIlazyIntras) :: Set String) ->+     _lhsIlazyIntras+   {-# INLINE rule377 #-}+   rule377 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule378 #-}+   rule378 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule379 #-}+   rule379 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule380 #-}+   rule380 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule381 #-}+   rule381 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule382 #-}+   rule382 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _lhsIruleKinds+   {-# INLINE rule383 #-}+   rule383 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule384 #-}+   rule384 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->+     _lhsIusageInfo+   {-# INLINE rule385 #-}+   rule385 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule386 #-}+   rule386 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule387 #-}+   rule387 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule388 #-}+   rule388 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule389 #-}+   rule389 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule390 #-}+   rule390 = \ ((_lhsIlazyIntras) :: Set String) ->+     _lhsIlazyIntras+   {-# INLINE rule391 #-}+   rule391 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule392 #-}+   rule392 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule393 #-}+   rule393 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule394 #-}+   rule394 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule395 #-}+   rule395 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule396 #-}+   rule396 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _lhsIruleKinds+   {-# INLINE rule397 #-}+   rule397 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule398 #-}+   rule398 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->+     _lhsIusageInfo+{-# NOINLINE sem_ERules_Nil #-}+sem_ERules_Nil ::  T_ERules +sem_ERules_Nil  = T_ERules (return st23) where+   {-# NOINLINE st23 #-}+   st23 = let+      v22 :: T_ERules_v22 +      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsIusageInfo) -> ( let+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule399  ()+         _lhsOmrules :: Map Identifier (VisitKind -> Either Error PP_Doc)+         _lhsOmrules = rule400  ()+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule401  ()+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule402  ()+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule403  ()+         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules+         in __result_ )+     in C_ERules_s23 v22+   {-# INLINE rule399 #-}+   rule399 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule400 #-}+   rule400 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule401 #-}+   rule401 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule402 #-}+   rule402 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule403 #-}+   rule403 = \  (_ :: ()) ->+     empty++-- ExecutionPlan -----------------------------------------------+-- wrapper+data Inh_ExecutionPlan  = Inh_ExecutionPlan { inhmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), localAttrTypes_Inh_ExecutionPlan :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ExecutionPlan :: (String), mainName_Inh_ExecutionPlan :: (String), options_Inh_ExecutionPlan :: (Options), synmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes) }+data Syn_ExecutionPlan  = Syn_ExecutionPlan { code_Syn_ExecutionPlan :: (PP_Doc), datas_Syn_ExecutionPlan :: (PP_Doc), errors_Syn_ExecutionPlan :: (Seq Error), modules_Syn_ExecutionPlan :: (PP_Doc) }+{-# INLINABLE wrap_ExecutionPlan #-}+wrap_ExecutionPlan :: T_ExecutionPlan  -> Inh_ExecutionPlan  -> (Syn_ExecutionPlan )+wrap_ExecutionPlan (T_ExecutionPlan act) (Inh_ExecutionPlan _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg25 = T_ExecutionPlan_vIn25 _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap+        (T_ExecutionPlan_vOut25 _lhsOcode _lhsOdatas _lhsOerrors _lhsOmodules) <- return (inv_ExecutionPlan_s26 sem arg25)+        return (Syn_ExecutionPlan _lhsOcode _lhsOdatas _lhsOerrors _lhsOmodules)+   )++-- cata+{-# INLINE sem_ExecutionPlan #-}+sem_ExecutionPlan :: ExecutionPlan  -> T_ExecutionPlan +sem_ExecutionPlan ( ExecutionPlan nonts_ typeSyns_ wrappers_ derivings_ ) = sem_ExecutionPlan_ExecutionPlan ( sem_ENonterminals nonts_ ) typeSyns_ wrappers_ derivings_++-- semantic domain+newtype T_ExecutionPlan  = T_ExecutionPlan {+                                           attach_T_ExecutionPlan :: Identity (T_ExecutionPlan_s26 )+                                           }+newtype T_ExecutionPlan_s26  = C_ExecutionPlan_s26 {+                                                   inv_ExecutionPlan_s26 :: (T_ExecutionPlan_v25 )+                                                   }+data T_ExecutionPlan_s27  = C_ExecutionPlan_s27+type T_ExecutionPlan_v25  = (T_ExecutionPlan_vIn25 ) -> (T_ExecutionPlan_vOut25 )+data T_ExecutionPlan_vIn25  = T_ExecutionPlan_vIn25 (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes)+data T_ExecutionPlan_vOut25  = T_ExecutionPlan_vOut25 (PP_Doc) (PP_Doc) (Seq Error) (PP_Doc)+{-# NOINLINE sem_ExecutionPlan_ExecutionPlan #-}+sem_ExecutionPlan_ExecutionPlan :: T_ENonterminals  -> (TypeSyns) -> (Set NontermIdent) -> (Derivings) -> T_ExecutionPlan +sem_ExecutionPlan_ExecutionPlan arg_nonts_ arg_typeSyns_ arg_wrappers_ _ = T_ExecutionPlan (return st26) where+   {-# NOINLINE st26 #-}+   st26 = let+      v25 :: T_ExecutionPlan_v25 +      v25 = \ (T_ExecutionPlan_vIn25 _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap) -> ( let+         _nontsX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_nonts_))+         (T_ENonterminals_vOut10 _nontsIchildvisit _nontsIcode _nontsIdatas _nontsIerrors _nontsIfromToStates _nontsIinitStates _nontsImodules _nontsIsemFunBndDefs _nontsIsemFunBndTps _nontsIvisitKinds _nontsIvisitdefs _nontsIvisituses) = inv_ENonterminals_s11 _nontsX11 (T_ENonterminals_vIn10 _nontsOallFromToStates _nontsOallInitStates _nontsOallVisitKinds _nontsOallchildvisit _nontsOavisitdefs _nontsOavisituses _nontsOinhmap _nontsOlocalAttrTypes _nontsOmainFile _nontsOmainName _nontsOoptions _nontsOsynmap _nontsOtypeSyns _nontsOwrappers)+         _lhsOcode :: PP_Doc+         _lhsOcode = rule404 _nontsIcode _wrappersExtra+         _lhsOdatas :: PP_Doc+         _lhsOdatas = rule405 _commonExtra _nontsIdatas+         _nontsOwrappers = rule406 arg_wrappers_+         _nontsOtypeSyns = rule407 arg_typeSyns_+         _wrappersExtra = rule408 _lateSemBndDef _lhsIoptions+         _commonExtra = rule409 _lateSemBndTp _lhsIoptions+         _lateSemBndTp = rule410 _lhsImainName _nontsIsemFunBndTps+         _lateSemBndDef = rule411 _lhsImainName _nontsIsemFunBndDefs+         _nontsOallchildvisit = rule412 _nontsIchildvisit+         _nontsOavisitdefs = rule413 _nontsIvisitdefs+         _nontsOavisituses = rule414 _nontsIvisituses+         _nontsOallFromToStates = rule415 _nontsIfromToStates+         _nontsOallVisitKinds = rule416 _nontsIvisitKinds+         _nontsOallInitStates = rule417 _nontsIinitStates+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule418 _nontsIerrors+         _lhsOmodules :: PP_Doc+         _lhsOmodules = rule419 _nontsImodules+         _nontsOinhmap = rule420 _lhsIinhmap+         _nontsOlocalAttrTypes = rule421 _lhsIlocalAttrTypes+         _nontsOmainFile = rule422 _lhsImainFile+         _nontsOmainName = rule423 _lhsImainName+         _nontsOoptions = rule424 _lhsIoptions+         _nontsOsynmap = rule425 _lhsIsynmap+         __result_ = T_ExecutionPlan_vOut25 _lhsOcode _lhsOdatas _lhsOerrors _lhsOmodules+         in __result_ )+     in C_ExecutionPlan_s26 v25+   {-# INLINE rule404 #-}+   {-# LINE 105 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule404 = \ ((_nontsIcode) :: PP_Doc) _wrappersExtra ->+                 {-# LINE 105 "src-ag/ExecutionPlan2Caml.ag" #-}+                 _nontsIcode  >-< _wrappersExtra+                 {-# LINE 3256 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule405 #-}+   {-# LINE 106 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule405 = \ _commonExtra ((_nontsIdatas) :: PP_Doc) ->+                 {-# LINE 106 "src-ag/ExecutionPlan2Caml.ag" #-}+                 _nontsIdatas >-< _commonExtra+                 {-# LINE 3262 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule406 #-}+   {-# LINE 112 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule406 = \ wrappers_ ->+                     {-# LINE 112 "src-ag/ExecutionPlan2Caml.ag" #-}+                     wrappers_+                     {-# LINE 3268 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule407 #-}+   {-# LINE 173 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule407 = \ typeSyns_ ->+                     {-# LINE 173 "src-ag/ExecutionPlan2Caml.ag" #-}+                     typeSyns_+                     {-# LINE 3274 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule408 #-}+   {-# LINE 663 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule408 = \ _lateSemBndDef ((_lhsIoptions) :: Options) ->+                        {-# LINE 663 "src-ag/ExecutionPlan2Caml.ag" #-}+                        if lateHigherOrderBinding _lhsIoptions+                        then _lateSemBndDef+                        else empty+                        {-# LINE 3282 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule409 #-}+   {-# LINE 666 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule409 = \ _lateSemBndTp ((_lhsIoptions) :: Options) ->+                        {-# LINE 666 "src-ag/ExecutionPlan2Caml.ag" #-}+                        if lateHigherOrderBinding _lhsIoptions+                        then _lateSemBndTp+                        else empty+                        {-# LINE 3290 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule410 #-}+   {-# LINE 669 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule410 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndTps) :: Seq PP_Doc) ->+                       {-# LINE 669 "src-ag/ExecutionPlan2Caml.ag" #-}+                       "and" >#< lateBindingTypeNm _lhsImainName >#< "=" >#< ppRecordTp (toList _nontsIsemFunBndTps)+                       {-# LINE 3296 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule411 #-}+   {-# LINE 670 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule411 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndDefs) :: Seq PP_Doc) ->+                        {-# LINE 670 "src-ag/ExecutionPlan2Caml.ag" #-}+                        "and" >#< lateBindingFieldNm _lhsImainName >#< ":" >#< lateBindingTypeNm _lhsImainName >#< "="+                        >-< (indent 2 $ ppRecordVal $ toList _nontsIsemFunBndDefs)+                        {-# LINE 3303 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule412 #-}+   {-# LINE 1157 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule412 = \ ((_nontsIchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+                                          {-# LINE 1157 "src-ag/ExecutionPlan2Caml.ag" #-}+                                          _nontsIchildvisit+                                          {-# LINE 3309 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule413 #-}+   {-# LINE 1315 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule413 = \ ((_nontsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+                                       {-# LINE 1315 "src-ag/ExecutionPlan2Caml.ag" #-}+                                       _nontsIvisitdefs+                                       {-# LINE 3315 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule414 #-}+   {-# LINE 1316 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule414 = \ ((_nontsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+                                       {-# LINE 1316 "src-ag/ExecutionPlan2Caml.ag" #-}+                                       _nontsIvisituses+                                       {-# LINE 3321 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule415 #-}+   {-# LINE 1407 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule415 = \ ((_nontsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+                            {-# LINE 1407 "src-ag/ExecutionPlan2Caml.ag" #-}+                            _nontsIfromToStates+                            {-# LINE 3327 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule416 #-}+   {-# LINE 1451 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule416 = \ ((_nontsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+                          {-# LINE 1451 "src-ag/ExecutionPlan2Caml.ag" #-}+                          _nontsIvisitKinds+                          {-# LINE 3333 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule417 #-}+   {-# LINE 1465 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule417 = \ ((_nontsIinitStates) :: Map NontermIdent Int) ->+                          {-# LINE 1465 "src-ag/ExecutionPlan2Caml.ag" #-}+                          _nontsIinitStates+                          {-# LINE 3339 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule418 #-}+   rule418 = \ ((_nontsIerrors) :: Seq Error) ->+     _nontsIerrors+   {-# INLINE rule419 #-}+   rule419 = \ ((_nontsImodules) :: PP_Doc) ->+     _nontsImodules+   {-# INLINE rule420 #-}+   rule420 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule421 #-}+   rule421 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule422 #-}+   rule422 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule423 #-}+   rule423 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule424 #-}+   rule424 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule425 #-}+   rule425 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap++-- Expression --------------------------------------------------+-- wrapper+data Inh_Expression  = Inh_Expression { options_Inh_Expression :: (Options) }+data Syn_Expression  = Syn_Expression { attrs_Syn_Expression :: (Map String (Maybe NonLocalAttr)), pos_Syn_Expression :: (Pos), semfunc_Syn_Expression :: (PP_Doc), tks_Syn_Expression :: ([HsToken]) }+{-# INLINABLE wrap_Expression #-}+wrap_Expression :: T_Expression  -> Inh_Expression  -> (Syn_Expression )+wrap_Expression (T_Expression act) (Inh_Expression _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg28 = T_Expression_vIn28 _lhsIoptions+        (T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks) <- return (inv_Expression_s29 sem arg28)+        return (Syn_Expression _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks)+   )++-- cata+{-# INLINE sem_Expression #-}+sem_Expression :: Expression  -> T_Expression +sem_Expression ( Expression pos_ tks_ ) = sem_Expression_Expression pos_ tks_++-- semantic domain+newtype T_Expression  = T_Expression {+                                     attach_T_Expression :: Identity (T_Expression_s29 )+                                     }+newtype T_Expression_s29  = C_Expression_s29 {+                                             inv_Expression_s29 :: (T_Expression_v28 )+                                             }+data T_Expression_s30  = C_Expression_s30+type T_Expression_v28  = (T_Expression_vIn28 ) -> (T_Expression_vOut28 )+data T_Expression_vIn28  = T_Expression_vIn28 (Options)+data T_Expression_vOut28  = T_Expression_vOut28 (Map String (Maybe NonLocalAttr)) (Pos) (PP_Doc) ([HsToken])+{-# NOINLINE sem_Expression_Expression #-}+sem_Expression_Expression :: (Pos) -> ([HsToken]) -> T_Expression +sem_Expression_Expression arg_pos_ arg_tks_ = T_Expression (return st29) where+   {-# NOINLINE st29 #-}+   st29 = let+      v28 :: T_Expression_v28 +      v28 = \ (T_Expression_vIn28 _lhsIoptions) -> ( let+         _lhsOtks :: [HsToken]+         _lhsOtks = rule426 arg_tks_+         _lhsOpos :: Pos+         _lhsOpos = rule427 arg_pos_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule428 _inhhstoken arg_tks_+         _lhsOsemfunc :: PP_Doc+         _lhsOsemfunc = rule429 _inhhstoken arg_tks_+         _inhhstoken = rule430 _lhsIoptions+         __result_ = T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks+         in __result_ )+     in C_Expression_s29 v28+   {-# INLINE rule426 #-}+   {-# LINE 1028 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule426 = \ tks_ ->+                           {-# LINE 1028 "src-ag/ExecutionPlan2Caml.ag" #-}+                           tks_+                           {-# LINE 3419 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule427 #-}+   {-# LINE 1049 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule427 = \ pos_ ->+                                        {-# LINE 1049 "src-ag/ExecutionPlan2Caml.ag" #-}+                                        pos_+                                        {-# LINE 3425 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule428 #-}+   {-# LINE 1141 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule428 = \ _inhhstoken tks_ ->+                               {-# LINE 1141 "src-ag/ExecutionPlan2Caml.ag" #-}+                               Map.unions $ map (\tok -> attrs_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_+                               {-# LINE 3431 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule429 #-}+   {-# LINE 1142 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule429 = \ _inhhstoken tks_ ->+                               {-# LINE 1142 "src-ag/ExecutionPlan2Caml.ag" #-}+                               vlist $ showTokens $ map (\tok -> tok_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_+                               {-# LINE 3437 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule430 #-}+   {-# LINE 1143 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule430 = \ ((_lhsIoptions) :: Options) ->+                                  {-# LINE 1143 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  Inh_HsToken _lhsIoptions+                                  {-# LINE 3443 "dist/build/ExecutionPlan2Caml.hs"#-}++-- HsToken -----------------------------------------------------+-- wrapper+data Inh_HsToken  = Inh_HsToken { options_Inh_HsToken :: (Options) }+data Syn_HsToken  = Syn_HsToken { attrs_Syn_HsToken :: (Map String (Maybe NonLocalAttr)), tok_Syn_HsToken :: ((Pos,String)) }+{-# INLINABLE wrap_HsToken #-}+wrap_HsToken :: T_HsToken  -> Inh_HsToken  -> (Syn_HsToken )+wrap_HsToken (T_HsToken act) (Inh_HsToken _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg31 = T_HsToken_vIn31 _lhsIoptions+        (T_HsToken_vOut31 _lhsOattrs _lhsOtok) <- return (inv_HsToken_s32 sem arg31)+        return (Syn_HsToken _lhsOattrs _lhsOtok)+   )++-- cata+{-# NOINLINE sem_HsToken #-}+sem_HsToken :: HsToken  -> T_HsToken +sem_HsToken ( AGLocal var_ pos_ rdesc_ ) = sem_HsToken_AGLocal var_ pos_ rdesc_+sem_HsToken ( AGField field_ attr_ pos_ rdesc_ ) = sem_HsToken_AGField field_ attr_ pos_ rdesc_+sem_HsToken ( HsToken value_ pos_ ) = sem_HsToken_HsToken value_ pos_+sem_HsToken ( CharToken value_ pos_ ) = sem_HsToken_CharToken value_ pos_+sem_HsToken ( StrToken value_ pos_ ) = sem_HsToken_StrToken value_ pos_+sem_HsToken ( Err mesg_ pos_ ) = sem_HsToken_Err mesg_ pos_++-- semantic domain+newtype T_HsToken  = T_HsToken {+                               attach_T_HsToken :: Identity (T_HsToken_s32 )+                               }+newtype T_HsToken_s32  = C_HsToken_s32 {+                                       inv_HsToken_s32 :: (T_HsToken_v31 )+                                       }+data T_HsToken_s33  = C_HsToken_s33+type T_HsToken_v31  = (T_HsToken_vIn31 ) -> (T_HsToken_vOut31 )+data T_HsToken_vIn31  = T_HsToken_vIn31 (Options)+data T_HsToken_vOut31  = T_HsToken_vOut31 (Map String (Maybe NonLocalAttr)) ((Pos,String))+{-# NOINLINE sem_HsToken_AGLocal #-}+sem_HsToken_AGLocal :: (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken +sem_HsToken_AGLocal arg_var_ arg_pos_ _ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule431 arg_var_+         _tok = rule432 arg_pos_ arg_var_+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule433 _tok+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule431 #-}+   {-# LINE 1100 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule431 = \ var_ ->+                              {-# LINE 1100 "src-ag/ExecutionPlan2Caml.ag" #-}+                              Map.singleton (fieldname var_) Nothing+                              {-# LINE 3500 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule432 #-}+   {-# LINE 1363 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule432 = \ pos_ var_ ->+                          {-# LINE 1363 "src-ag/ExecutionPlan2Caml.ag" #-}+                          (pos_,fieldname var_)+                          {-# LINE 3506 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule433 #-}+   rule433 = \ _tok ->+     _tok+{-# NOINLINE sem_HsToken_AGField #-}+sem_HsToken_AGField :: (Identifier) -> (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken +sem_HsToken_AGField arg_field_ arg_attr_ arg_pos_ arg_rdesc_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _mbAttr = rule434 arg_attr_ arg_field_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule435 _lhsIoptions _mbAttr arg_attr_ arg_field_+         _addTrace = rule436 arg_attr_ arg_field_ arg_rdesc_+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule437 _addTrace _lhsIoptions arg_attr_ arg_field_ arg_pos_+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule434 #-}+   {-# LINE 1101 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule434 = \ attr_ field_ ->+                              {-# LINE 1101 "src-ag/ExecutionPlan2Caml.ag" #-}+                              if field_ == _INST || field_ == _FIELD || field_ == _INST'+                              then Nothing+                              else Just $ mkNonLocalAttr (field_ == _LHS) field_ attr_+                              {-# LINE 3533 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule435 #-}+   {-# LINE 1104 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule435 = \ ((_lhsIoptions) :: Options) _mbAttr attr_ field_ ->+                              {-# LINE 1104 "src-ag/ExecutionPlan2Caml.ag" #-}+                              Map.singleton (attrname _lhsIoptions True field_ attr_) _mbAttr+                              {-# LINE 3539 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule436 #-}+   {-# LINE 1367 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule436 = \ attr_ field_ rdesc_ ->+                        {-# LINE 1367 "src-ag/ExecutionPlan2Caml.ag" #-}+                        case rdesc_ of+                          Just d  -> \x -> "(prerr_endline " ++ show (d ++ " -> " ++ show field_ ++ "." ++ show attr_) ++ "; " ++ x ++ ")"+                          Nothing -> id+                        {-# LINE 3547 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule437 #-}+   {-# LINE 1370 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule437 = \ _addTrace ((_lhsIoptions) :: Options) attr_ field_ pos_ ->+                   {-# LINE 1370 "src-ag/ExecutionPlan2Caml.ag" #-}+                   (pos_, _addTrace     $ attrname _lhsIoptions True field_ attr_)+                   {-# LINE 3553 "dist/build/ExecutionPlan2Caml.hs"#-}+{-# NOINLINE sem_HsToken_HsToken #-}+sem_HsToken_HsToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_HsToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule438 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule439  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule438 #-}+   {-# LINE 1372 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule438 = \ pos_ value_ ->+                         {-# LINE 1372 "src-ag/ExecutionPlan2Caml.ag" #-}+                         (pos_, value_)+                         {-# LINE 3573 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule439 #-}+   rule439 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_CharToken #-}+sem_HsToken_CharToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_CharToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule440 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule441  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule440 #-}+   {-# LINE 1374 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule440 = \ pos_ value_ ->+                           {-# LINE 1374 "src-ag/ExecutionPlan2Caml.ag" #-}+                           (pos_, if null value_+                                     then ""+                                     else showCharShort (head value_)+                           )+                           {-# LINE 3599 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule441 #-}+   rule441 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_StrToken #-}+sem_HsToken_StrToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_StrToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule442 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule443  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule442 #-}+   {-# LINE 1379 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule442 = \ pos_ value_ ->+                           {-# LINE 1379 "src-ag/ExecutionPlan2Caml.ag" #-}+                           (pos_, showStrShort value_)+                           {-# LINE 3622 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule443 #-}+   rule443 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_Err #-}+sem_HsToken_Err :: (String) -> (Pos) -> T_HsToken +sem_HsToken_Err _ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule444 arg_pos_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule445  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule444 #-}+   {-# LINE 1380 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule444 = \ pos_ ->+                           {-# LINE 1380 "src-ag/ExecutionPlan2Caml.ag" #-}+                           (pos_, "")+                           {-# LINE 3645 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule445 #-}+   rule445 = \  (_ :: ()) ->+     Map.empty++-- HsTokens ----------------------------------------------------+-- wrapper+data Inh_HsTokens  = Inh_HsTokens { options_Inh_HsTokens :: (Options) }+data Syn_HsTokens  = Syn_HsTokens { tks_Syn_HsTokens :: ([(Pos,String)]) }+{-# INLINABLE wrap_HsTokens #-}+wrap_HsTokens :: T_HsTokens  -> Inh_HsTokens  -> (Syn_HsTokens )+wrap_HsTokens (T_HsTokens act) (Inh_HsTokens _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg34 = T_HsTokens_vIn34 _lhsIoptions+        (T_HsTokens_vOut34 _lhsOtks) <- return (inv_HsTokens_s35 sem arg34)+        return (Syn_HsTokens _lhsOtks)+   )++-- cata+{-# NOINLINE sem_HsTokens #-}+sem_HsTokens :: HsTokens  -> T_HsTokens +sem_HsTokens list = Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list)++-- semantic domain+newtype T_HsTokens  = T_HsTokens {+                                 attach_T_HsTokens :: Identity (T_HsTokens_s35 )+                                 }+newtype T_HsTokens_s35  = C_HsTokens_s35 {+                                         inv_HsTokens_s35 :: (T_HsTokens_v34 )+                                         }+data T_HsTokens_s36  = C_HsTokens_s36+type T_HsTokens_v34  = (T_HsTokens_vIn34 ) -> (T_HsTokens_vOut34 )+data T_HsTokens_vIn34  = T_HsTokens_vIn34 (Options)+data T_HsTokens_vOut34  = T_HsTokens_vOut34 ([(Pos,String)])+{-# NOINLINE sem_HsTokens_Cons #-}+sem_HsTokens_Cons :: T_HsToken  -> T_HsTokens  -> T_HsTokens +sem_HsTokens_Cons arg_hd_ arg_tl_ = T_HsTokens (return st35) where+   {-# NOINLINE st35 #-}+   st35 = let+      v34 :: T_HsTokens_v34 +      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let+         _hdX32 = Control.Monad.Identity.runIdentity (attach_T_HsToken (arg_hd_))+         _tlX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tl_))+         (T_HsToken_vOut31 _hdIattrs _hdItok) = inv_HsToken_s32 _hdX32 (T_HsToken_vIn31 _hdOoptions)+         (T_HsTokens_vOut34 _tlItks) = inv_HsTokens_s35 _tlX35 (T_HsTokens_vIn34 _tlOoptions)+         _lhsOtks :: [(Pos,String)]+         _lhsOtks = rule446 _hdItok _tlItks+         _hdOoptions = rule447 _lhsIoptions+         _tlOoptions = rule448 _lhsIoptions+         __result_ = T_HsTokens_vOut34 _lhsOtks+         in __result_ )+     in C_HsTokens_s35 v34+   {-# INLINE rule446 #-}+   {-# LINE 1359 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule446 = \ ((_hdItok) :: (Pos,String)) ((_tlItks) :: [(Pos,String)]) ->+                     {-# LINE 1359 "src-ag/ExecutionPlan2Caml.ag" #-}+                     _hdItok : _tlItks+                     {-# LINE 3703 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule447 #-}+   rule447 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule448 #-}+   rule448 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+{-# NOINLINE sem_HsTokens_Nil #-}+sem_HsTokens_Nil ::  T_HsTokens +sem_HsTokens_Nil  = T_HsTokens (return st35) where+   {-# NOINLINE st35 #-}+   st35 = let+      v34 :: T_HsTokens_v34 +      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let+         _lhsOtks :: [(Pos,String)]+         _lhsOtks = rule449  ()+         __result_ = T_HsTokens_vOut34 _lhsOtks+         in __result_ )+     in C_HsTokens_s35 v34+   {-# INLINE rule449 #-}+   {-# LINE 1360 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule449 = \  (_ :: ()) ->+                     {-# LINE 1360 "src-ag/ExecutionPlan2Caml.ag" #-}+                     []+                     {-# LINE 3727 "dist/build/ExecutionPlan2Caml.hs"#-}++-- HsTokensRoot ------------------------------------------------+-- wrapper+data Inh_HsTokensRoot  = Inh_HsTokensRoot { options_Inh_HsTokensRoot :: (Options) }+data Syn_HsTokensRoot  = Syn_HsTokensRoot {  }+{-# INLINABLE wrap_HsTokensRoot #-}+wrap_HsTokensRoot :: T_HsTokensRoot  -> Inh_HsTokensRoot  -> (Syn_HsTokensRoot )+wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg37 = T_HsTokensRoot_vIn37 _lhsIoptions+        (T_HsTokensRoot_vOut37 ) <- return (inv_HsTokensRoot_s38 sem arg37)+        return (Syn_HsTokensRoot )+   )++-- cata+{-# INLINE sem_HsTokensRoot #-}+sem_HsTokensRoot :: HsTokensRoot  -> T_HsTokensRoot +sem_HsTokensRoot ( HsTokensRoot tokens_ ) = sem_HsTokensRoot_HsTokensRoot ( sem_HsTokens tokens_ )++-- semantic domain+newtype T_HsTokensRoot  = T_HsTokensRoot {+                                         attach_T_HsTokensRoot :: Identity (T_HsTokensRoot_s38 )+                                         }+newtype T_HsTokensRoot_s38  = C_HsTokensRoot_s38 {+                                                 inv_HsTokensRoot_s38 :: (T_HsTokensRoot_v37 )+                                                 }+data T_HsTokensRoot_s39  = C_HsTokensRoot_s39+type T_HsTokensRoot_v37  = (T_HsTokensRoot_vIn37 ) -> (T_HsTokensRoot_vOut37 )+data T_HsTokensRoot_vIn37  = T_HsTokensRoot_vIn37 (Options)+data T_HsTokensRoot_vOut37  = T_HsTokensRoot_vOut37 +{-# NOINLINE sem_HsTokensRoot_HsTokensRoot #-}+sem_HsTokensRoot_HsTokensRoot :: T_HsTokens  -> T_HsTokensRoot +sem_HsTokensRoot_HsTokensRoot arg_tokens_ = T_HsTokensRoot (return st38) where+   {-# NOINLINE st38 #-}+   st38 = let+      v37 :: T_HsTokensRoot_v37 +      v37 = \ (T_HsTokensRoot_vIn37 _lhsIoptions) -> ( let+         _tokensX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tokens_))+         (T_HsTokens_vOut34 _tokensItks) = inv_HsTokens_s35 _tokensX35 (T_HsTokens_vIn34 _tokensOoptions)+         _tokensOoptions = rule450 _lhsIoptions+         __result_ = T_HsTokensRoot_vOut37 +         in __result_ )+     in C_HsTokensRoot_s38 v37+   {-# INLINE rule450 #-}+   rule450 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions++-- Pattern -----------------------------------------------------+-- wrapper+data Inh_Pattern  = Inh_Pattern { allInhmap_Inh_Pattern :: (Map NontermIdent Attributes), allSynmap_Inh_Pattern :: (Map NontermIdent Attributes), anyLazyKind_Inh_Pattern :: (Bool), inhmap_Inh_Pattern :: (Attributes), localAttrTypes_Inh_Pattern :: (Map Identifier Type), options_Inh_Pattern :: (Options), synmap_Inh_Pattern :: (Attributes) }+data Syn_Pattern  = Syn_Pattern { attrTypes_Syn_Pattern :: (PP_Doc), attrs_Syn_Pattern :: (Set String), copy_Syn_Pattern :: (Pattern), extraDefs_Syn_Pattern :: ([(PP_Doc,PP_Doc)]), isUnderscore_Syn_Pattern :: (Bool), sem_lhs_Syn_Pattern :: ( PP_Doc ) }+{-# INLINABLE wrap_Pattern #-}+wrap_Pattern :: T_Pattern  -> Inh_Pattern  -> (Syn_Pattern )+wrap_Pattern (T_Pattern act) (Inh_Pattern _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg40 = T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap+        (T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs) <- return (inv_Pattern_s41 sem arg40)+        return (Syn_Pattern _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs)+   )++-- cata+{-# NOINLINE sem_Pattern #-}+sem_Pattern :: Pattern  -> T_Pattern +sem_Pattern ( Constr name_ pats_ ) = sem_Pattern_Constr name_ ( sem_Patterns pats_ )+sem_Pattern ( Product pos_ pats_ ) = sem_Pattern_Product pos_ ( sem_Patterns pats_ )+sem_Pattern ( Alias field_ attr_ pat_ ) = sem_Pattern_Alias field_ attr_ ( sem_Pattern pat_ )+sem_Pattern ( Irrefutable pat_ ) = sem_Pattern_Irrefutable ( sem_Pattern pat_ )+sem_Pattern ( Underscore pos_ ) = sem_Pattern_Underscore pos_++-- semantic domain+newtype T_Pattern  = T_Pattern {+                               attach_T_Pattern :: Identity (T_Pattern_s41 )+                               }+newtype T_Pattern_s41  = C_Pattern_s41 {+                                       inv_Pattern_s41 :: (T_Pattern_v40 )+                                       }+data T_Pattern_s42  = C_Pattern_s42+type T_Pattern_v40  = (T_Pattern_vIn40 ) -> (T_Pattern_vOut40 )+data T_Pattern_vIn40  = T_Pattern_vIn40 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)+data T_Pattern_vOut40  = T_Pattern_vOut40 (PP_Doc) (Set String) (Pattern) ([(PP_Doc,PP_Doc)]) (Bool) ( PP_Doc )+{-# NOINLINE sem_Pattern_Constr #-}+sem_Pattern_Constr :: (ConstructorIdent) -> T_Patterns  -> T_Pattern +sem_Pattern_Constr arg_name_ arg_pats_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))+         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIextraDefs _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule451 _patsIsem_lhs arg_name_+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule452  ()+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule453 _patsIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule454 _patsIattrs+         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]+         _lhsOextraDefs = rule455 _patsIextraDefs+         _copy = rule456 _patsIcopy arg_name_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule457 _copy+         _patsOallInhmap = rule458 _lhsIallInhmap+         _patsOallSynmap = rule459 _lhsIallSynmap+         _patsOanyLazyKind = rule460 _lhsIanyLazyKind+         _patsOinhmap = rule461 _lhsIinhmap+         _patsOlocalAttrTypes = rule462 _lhsIlocalAttrTypes+         _patsOoptions = rule463 _lhsIoptions+         _patsOsynmap = rule464 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule451 #-}+   {-# LINE 1066 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule451 = \ ((_patsIsem_lhs) :: [PP_Doc]) name_ ->+                                  {-# LINE 1066 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  pp_parens $ name_ >#< pp_block "(" ")" "," _patsIsem_lhs+                                  {-# LINE 3847 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule452 #-}+   {-# LINE 1075 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule452 = \  (_ :: ()) ->+                                    {-# LINE 1075 "src-ag/ExecutionPlan2Caml.ag" #-}+                                    False+                                    {-# LINE 3853 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule453 #-}+   rule453 = \ ((_patsIattrTypes) :: PP_Doc) ->+     _patsIattrTypes+   {-# INLINE rule454 #-}+   rule454 = \ ((_patsIattrs) :: Set String) ->+     _patsIattrs+   {-# INLINE rule455 #-}+   rule455 = \ ((_patsIextraDefs) :: [(PP_Doc,PP_Doc)]) ->+     _patsIextraDefs+   {-# INLINE rule456 #-}+   rule456 = \ ((_patsIcopy) :: Patterns) name_ ->+     Constr name_ _patsIcopy+   {-# INLINE rule457 #-}+   rule457 = \ _copy ->+     _copy+   {-# INLINE rule458 #-}+   rule458 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule459 #-}+   rule459 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule460 #-}+   rule460 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule461 #-}+   rule461 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule462 #-}+   rule462 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule463 #-}+   rule463 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule464 #-}+   rule464 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Product #-}+sem_Pattern_Product :: (Pos) -> T_Patterns  -> T_Pattern +sem_Pattern_Product arg_pos_ arg_pats_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))+         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIextraDefs _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule465 _patsIsem_lhs+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule466  ()+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule467 _patsIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule468 _patsIattrs+         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]+         _lhsOextraDefs = rule469 _patsIextraDefs+         _copy = rule470 _patsIcopy arg_pos_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule471 _copy+         _patsOallInhmap = rule472 _lhsIallInhmap+         _patsOallSynmap = rule473 _lhsIallSynmap+         _patsOanyLazyKind = rule474 _lhsIanyLazyKind+         _patsOinhmap = rule475 _lhsIinhmap+         _patsOlocalAttrTypes = rule476 _lhsIlocalAttrTypes+         _patsOoptions = rule477 _lhsIoptions+         _patsOsynmap = rule478 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule465 #-}+   {-# LINE 1065 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule465 = \ ((_patsIsem_lhs) :: [PP_Doc]) ->+                                  {-# LINE 1065 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  pp_block "(" ")" "," _patsIsem_lhs+                                  {-# LINE 3927 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule466 #-}+   {-# LINE 1076 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule466 = \  (_ :: ()) ->+                                    {-# LINE 1076 "src-ag/ExecutionPlan2Caml.ag" #-}+                                    False+                                    {-# LINE 3933 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule467 #-}+   rule467 = \ ((_patsIattrTypes) :: PP_Doc) ->+     _patsIattrTypes+   {-# INLINE rule468 #-}+   rule468 = \ ((_patsIattrs) :: Set String) ->+     _patsIattrs+   {-# INLINE rule469 #-}+   rule469 = \ ((_patsIextraDefs) :: [(PP_Doc,PP_Doc)]) ->+     _patsIextraDefs+   {-# INLINE rule470 #-}+   rule470 = \ ((_patsIcopy) :: Patterns) pos_ ->+     Product pos_ _patsIcopy+   {-# INLINE rule471 #-}+   rule471 = \ _copy ->+     _copy+   {-# INLINE rule472 #-}+   rule472 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule473 #-}+   rule473 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule474 #-}+   rule474 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule475 #-}+   rule475 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule476 #-}+   rule476 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule477 #-}+   rule477 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule478 #-}+   rule478 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Alias #-}+sem_Pattern_Alias :: (Identifier) -> (Identifier) -> T_Pattern  -> T_Pattern +sem_Pattern_Alias arg_field_ arg_attr_ arg_pat_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))+         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIextraDefs _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)+         _var = rule479 _lhsIoptions arg_attr_ arg_field_+         _hasTp = rule480 _mbTp+         _o_sigs = rule481 _lhsIoptions+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule482 _hasTp _mbTp _o_sigs _var+         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]+         _lhsOextraDefs = rule483 _patIisUnderscore _patIsem_lhs _var+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule484  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule485 _lhsIoptions _patIattrs arg_attr_ arg_field_+         _mbTp = rule486 _lhsIlocalAttrTypes _lhsIsynmap arg_attr_ arg_field_+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule487 _lhsIoptions _mbTp _patIattrTypes arg_attr_ arg_field_+         _copy = rule488 _patIcopy arg_attr_ arg_field_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule489 _copy+         _patOallInhmap = rule490 _lhsIallInhmap+         _patOallSynmap = rule491 _lhsIallSynmap+         _patOanyLazyKind = rule492 _lhsIanyLazyKind+         _patOinhmap = rule493 _lhsIinhmap+         _patOlocalAttrTypes = rule494 _lhsIlocalAttrTypes+         _patOoptions = rule495 _lhsIoptions+         _patOsynmap = rule496 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule479 #-}+   {-# LINE 1057 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule479 = \ ((_lhsIoptions) :: Options) attr_ field_ ->+                                  {-# LINE 1057 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  text $ attrname _lhsIoptions False field_ attr_+                                  {-# LINE 4011 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule480 #-}+   {-# LINE 1058 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule480 = \ _mbTp ->+                                  {-# LINE 1058 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  isJust _mbTp+                                  {-# LINE 4017 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule481 #-}+   {-# LINE 1059 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule481 = \ ((_lhsIoptions) :: Options) ->+                                  {-# LINE 1059 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  typeSigs _lhsIoptions+                                  {-# LINE 4023 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule482 #-}+   {-# LINE 1061 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule482 = \ _hasTp _mbTp _o_sigs _var ->+                                  {-# LINE 1061 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  ppArg (_hasTp     && _o_sigs    ) _var     (maybe (text "?no type?") ppTp _mbTp    )+                                  {-# LINE 4029 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule483 #-}+   {-# LINE 1062 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule483 = \ ((_patIisUnderscore) :: Bool) ((_patIsem_lhs) ::  PP_Doc ) _var ->+                                  {-# LINE 1062 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  if _patIisUnderscore+                                  then []+                                  else [ (_patIsem_lhs, _var    ) ]+                                  {-# LINE 4037 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule484 #-}+   {-# LINE 1077 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule484 = \  (_ :: ()) ->+                                    {-# LINE 1077 "src-ag/ExecutionPlan2Caml.ag" #-}+                                    False+                                    {-# LINE 4043 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule485 #-}+   {-# LINE 1083 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule485 = \ ((_lhsIoptions) :: Options) ((_patIattrs) :: Set String) attr_ field_ ->+                    {-# LINE 1083 "src-ag/ExecutionPlan2Caml.ag" #-}+                    Set.insert (attrname _lhsIoptions False field_ attr_) _patIattrs+                    {-# LINE 4049 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule486 #-}+   {-# LINE 1089 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule486 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIsynmap) :: Attributes) attr_ field_ ->+                    {-# LINE 1089 "src-ag/ExecutionPlan2Caml.ag" #-}+                    if field_ == _LHS+                    then Map.lookup attr_ _lhsIsynmap+                    else if field_ == _LOC+                         then Map.lookup attr_ _lhsIlocalAttrTypes+                         else Nothing+                    {-# LINE 4059 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule487 #-}+   {-# LINE 1094 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule487 = \ ((_lhsIoptions) :: Options) _mbTp ((_patIattrTypes) :: PP_Doc) attr_ field_ ->+                    {-# LINE 1094 "src-ag/ExecutionPlan2Caml.ag" #-}+                    maybe empty (\tp -> (attrname _lhsIoptions False field_ attr_) >#< "::" >#< ppTp tp) _mbTp+                    >-< _patIattrTypes+                    {-# LINE 4066 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule488 #-}+   rule488 = \ ((_patIcopy) :: Pattern) attr_ field_ ->+     Alias field_ attr_ _patIcopy+   {-# INLINE rule489 #-}+   rule489 = \ _copy ->+     _copy+   {-# INLINE rule490 #-}+   rule490 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule491 #-}+   rule491 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule492 #-}+   rule492 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule493 #-}+   rule493 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule494 #-}+   rule494 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule495 #-}+   rule495 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule496 #-}+   rule496 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Irrefutable #-}+sem_Pattern_Irrefutable :: T_Pattern  -> T_Pattern +sem_Pattern_Irrefutable arg_pat_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))+         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIextraDefs _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule497 _patIsem_lhs+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule498 _patIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule499 _patIattrs+         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]+         _lhsOextraDefs = rule500 _patIextraDefs+         _copy = rule501 _patIcopy+         _lhsOcopy :: Pattern+         _lhsOcopy = rule502 _copy+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule503 _patIisUnderscore+         _patOallInhmap = rule504 _lhsIallInhmap+         _patOallSynmap = rule505 _lhsIallSynmap+         _patOanyLazyKind = rule506 _lhsIanyLazyKind+         _patOinhmap = rule507 _lhsIinhmap+         _patOlocalAttrTypes = rule508 _lhsIlocalAttrTypes+         _patOoptions = rule509 _lhsIoptions+         _patOsynmap = rule510 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule497 #-}+   {-# LINE 1068 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule497 = \ ((_patIsem_lhs) ::  PP_Doc ) ->+                                  {-# LINE 1068 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  pp_parens (text "lazy" >#< _patIsem_lhs)+                                  {-# LINE 4131 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule498 #-}+   rule498 = \ ((_patIattrTypes) :: PP_Doc) ->+     _patIattrTypes+   {-# INLINE rule499 #-}+   rule499 = \ ((_patIattrs) :: Set String) ->+     _patIattrs+   {-# INLINE rule500 #-}+   rule500 = \ ((_patIextraDefs) :: [(PP_Doc,PP_Doc)]) ->+     _patIextraDefs+   {-# INLINE rule501 #-}+   rule501 = \ ((_patIcopy) :: Pattern) ->+     Irrefutable _patIcopy+   {-# INLINE rule502 #-}+   rule502 = \ _copy ->+     _copy+   {-# INLINE rule503 #-}+   rule503 = \ ((_patIisUnderscore) :: Bool) ->+     _patIisUnderscore+   {-# INLINE rule504 #-}+   rule504 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule505 #-}+   rule505 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule506 #-}+   rule506 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule507 #-}+   rule507 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule508 #-}+   rule508 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule509 #-}+   rule509 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule510 #-}+   rule510 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Underscore #-}+sem_Pattern_Underscore :: (Pos) -> T_Pattern +sem_Pattern_Underscore arg_pos_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule511  ()+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule512  ()+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule513  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule514  ()+         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]+         _lhsOextraDefs = rule515  ()+         _copy = rule516 arg_pos_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule517 _copy+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule511 #-}+   {-# LINE 1067 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule511 = \  (_ :: ()) ->+                                  {-# LINE 1067 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  text "_"+                                  {-# LINE 4199 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule512 #-}+   {-# LINE 1078 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule512 = \  (_ :: ()) ->+                                    {-# LINE 1078 "src-ag/ExecutionPlan2Caml.ag" #-}+                                    True+                                    {-# LINE 4205 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule513 #-}+   rule513 = \  (_ :: ()) ->+     empty+   {-# INLINE rule514 #-}+   rule514 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule515 #-}+   rule515 = \  (_ :: ()) ->+     []+   {-# INLINE rule516 #-}+   rule516 = \ pos_ ->+     Underscore pos_+   {-# INLINE rule517 #-}+   rule517 = \ _copy ->+     _copy++-- Patterns ----------------------------------------------------+-- wrapper+data Inh_Patterns  = Inh_Patterns { allInhmap_Inh_Patterns :: (Map NontermIdent Attributes), allSynmap_Inh_Patterns :: (Map NontermIdent Attributes), anyLazyKind_Inh_Patterns :: (Bool), inhmap_Inh_Patterns :: (Attributes), localAttrTypes_Inh_Patterns :: (Map Identifier Type), options_Inh_Patterns :: (Options), synmap_Inh_Patterns :: (Attributes) }+data Syn_Patterns  = Syn_Patterns { attrTypes_Syn_Patterns :: (PP_Doc), attrs_Syn_Patterns :: (Set String), copy_Syn_Patterns :: (Patterns), extraDefs_Syn_Patterns :: ([(PP_Doc,PP_Doc)]), sem_lhs_Syn_Patterns :: ([PP_Doc]) }+{-# INLINABLE wrap_Patterns #-}+wrap_Patterns :: T_Patterns  -> Inh_Patterns  -> (Syn_Patterns )+wrap_Patterns (T_Patterns act) (Inh_Patterns _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg43 = T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap+        (T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOsem_lhs) <- return (inv_Patterns_s44 sem arg43)+        return (Syn_Patterns _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOsem_lhs)+   )++-- cata+{-# NOINLINE sem_Patterns #-}+sem_Patterns :: Patterns  -> T_Patterns +sem_Patterns list = Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list)++-- semantic domain+newtype T_Patterns  = T_Patterns {+                                 attach_T_Patterns :: Identity (T_Patterns_s44 )+                                 }+newtype T_Patterns_s44  = C_Patterns_s44 {+                                         inv_Patterns_s44 :: (T_Patterns_v43 )+                                         }+data T_Patterns_s45  = C_Patterns_s45+type T_Patterns_v43  = (T_Patterns_vIn43 ) -> (T_Patterns_vOut43 )+data T_Patterns_vIn43  = T_Patterns_vIn43 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)+data T_Patterns_vOut43  = T_Patterns_vOut43 (PP_Doc) (Set String) (Patterns) ([(PP_Doc,PP_Doc)]) ([PP_Doc])+{-# NOINLINE sem_Patterns_Cons #-}+sem_Patterns_Cons :: T_Pattern  -> T_Patterns  -> T_Patterns +sem_Patterns_Cons arg_hd_ arg_tl_ = T_Patterns (return st44) where+   {-# NOINLINE st44 #-}+   st44 = let+      v43 :: T_Patterns_v43 +      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _hdX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_hd_))+         _tlX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_tl_))+         (T_Pattern_vOut40 _hdIattrTypes _hdIattrs _hdIcopy _hdIextraDefs _hdIisUnderscore _hdIsem_lhs) = inv_Pattern_s41 _hdX41 (T_Pattern_vIn40 _hdOallInhmap _hdOallSynmap _hdOanyLazyKind _hdOinhmap _hdOlocalAttrTypes _hdOoptions _hdOsynmap)+         (T_Patterns_vOut43 _tlIattrTypes _tlIattrs _tlIcopy _tlIextraDefs _tlIsem_lhs) = inv_Patterns_s44 _tlX44 (T_Patterns_vIn43 _tlOallInhmap _tlOallSynmap _tlOanyLazyKind _tlOinhmap _tlOlocalAttrTypes _tlOoptions _tlOsynmap)+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule518 _hdIattrTypes _tlIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule519 _hdIattrs _tlIattrs+         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]+         _lhsOextraDefs = rule520 _hdIextraDefs _tlIextraDefs+         _lhsOsem_lhs :: [PP_Doc]+         _lhsOsem_lhs = rule521 _hdIsem_lhs _tlIsem_lhs+         _copy = rule522 _hdIcopy _tlIcopy+         _lhsOcopy :: Patterns+         _lhsOcopy = rule523 _copy+         _hdOallInhmap = rule524 _lhsIallInhmap+         _hdOallSynmap = rule525 _lhsIallSynmap+         _hdOanyLazyKind = rule526 _lhsIanyLazyKind+         _hdOinhmap = rule527 _lhsIinhmap+         _hdOlocalAttrTypes = rule528 _lhsIlocalAttrTypes+         _hdOoptions = rule529 _lhsIoptions+         _hdOsynmap = rule530 _lhsIsynmap+         _tlOallInhmap = rule531 _lhsIallInhmap+         _tlOallSynmap = rule532 _lhsIallSynmap+         _tlOanyLazyKind = rule533 _lhsIanyLazyKind+         _tlOinhmap = rule534 _lhsIinhmap+         _tlOlocalAttrTypes = rule535 _lhsIlocalAttrTypes+         _tlOoptions = rule536 _lhsIoptions+         _tlOsynmap = rule537 _lhsIsynmap+         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOsem_lhs+         in __result_ )+     in C_Patterns_s44 v43+   {-# INLINE rule518 #-}+   rule518 = \ ((_hdIattrTypes) :: PP_Doc) ((_tlIattrTypes) :: PP_Doc) ->+     _hdIattrTypes >-< _tlIattrTypes+   {-# INLINE rule519 #-}+   rule519 = \ ((_hdIattrs) :: Set String) ((_tlIattrs) :: Set String) ->+     _hdIattrs `Set.union` _tlIattrs+   {-# INLINE rule520 #-}+   rule520 = \ ((_hdIextraDefs) :: [(PP_Doc,PP_Doc)]) ((_tlIextraDefs) :: [(PP_Doc,PP_Doc)]) ->+     _hdIextraDefs ++ _tlIextraDefs+   {-# INLINE rule521 #-}+   rule521 = \ ((_hdIsem_lhs) ::  PP_Doc ) ((_tlIsem_lhs) :: [PP_Doc]) ->+     _hdIsem_lhs : _tlIsem_lhs+   {-# INLINE rule522 #-}+   rule522 = \ ((_hdIcopy) :: Pattern) ((_tlIcopy) :: Patterns) ->+     (:) _hdIcopy _tlIcopy+   {-# INLINE rule523 #-}+   rule523 = \ _copy ->+     _copy+   {-# INLINE rule524 #-}+   rule524 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule525 #-}+   rule525 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule526 #-}+   rule526 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule527 #-}+   rule527 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule528 #-}+   rule528 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule529 #-}+   rule529 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule530 #-}+   rule530 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule531 #-}+   rule531 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule532 #-}+   rule532 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule533 #-}+   rule533 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule534 #-}+   rule534 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule535 #-}+   rule535 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule536 #-}+   rule536 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule537 #-}+   rule537 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Patterns_Nil #-}+sem_Patterns_Nil ::  T_Patterns +sem_Patterns_Nil  = T_Patterns (return st44) where+   {-# NOINLINE st44 #-}+   st44 = let+      v43 :: T_Patterns_v43 +      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule538  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule539  ()+         _lhsOextraDefs :: [(PP_Doc,PP_Doc)]+         _lhsOextraDefs = rule540  ()+         _lhsOsem_lhs :: [PP_Doc]+         _lhsOsem_lhs = rule541  ()+         _copy = rule542  ()+         _lhsOcopy :: Patterns+         _lhsOcopy = rule543 _copy+         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOextraDefs _lhsOsem_lhs+         in __result_ )+     in C_Patterns_s44 v43+   {-# INLINE rule538 #-}+   rule538 = \  (_ :: ()) ->+     empty+   {-# INLINE rule539 #-}+   rule539 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule540 #-}+   rule540 = \  (_ :: ()) ->+     []+   {-# INLINE rule541 #-}+   rule541 = \  (_ :: ()) ->+     []+   {-# INLINE rule542 #-}+   rule542 = \  (_ :: ()) ->+     []+   {-# INLINE rule543 #-}+   rule543 = \ _copy ->+     _copy++-- Visit -------------------------------------------------------+-- wrapper+data Inh_Visit  = Inh_Visit { allFromToStates_Inh_Visit :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visit :: (Map NontermIdent Attributes), allInitStates_Inh_Visit :: (Map NontermIdent Int), allSynmap_Inh_Visit :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visit :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visit :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), allintramap_Inh_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visit :: (Map Identifier Type), childintros_Inh_Visit :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visit :: (ConstructorIdent), inhmap_Inh_Visit :: (Attributes), mrules_Inh_Visit :: (Map Identifier (VisitKind ->  Either Error PP_Doc)), nextVisits_Inh_Visit :: (Map StateIdentifier StateCtx), nt_Inh_Visit :: (NontermIdent), options_Inh_Visit :: (Options), params_Inh_Visit :: ([Identifier]), prevVisits_Inh_Visit :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visit :: (Map Identifier (Set String)), ruleuses_Inh_Visit :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visit :: (Attributes), terminaldefs_Inh_Visit :: (Set String) }+data Syn_Visit  = Syn_Visit { allvisits_Syn_Visit :: ( VisitStateState ), childvisit_Syn_Visit :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), errors_Syn_Visit :: (Seq Error), fromToStates_Syn_Visit :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visit :: (Set String), ruleKinds_Syn_Visit :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visit :: (Map Identifier Int), sem_visit_Syn_Visit :: (  (StateIdentifier,PP_Doc)  ), t_visits_Syn_Visit :: (PP_Doc), visitKinds_Syn_Visit :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visit :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visit :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_Visit #-}+wrap_Visit :: T_Visit  -> Inh_Visit  -> (Syn_Visit )+wrap_Visit (T_Visit act) (Inh_Visit _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg46 = T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs+        (T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visit_s47 sem arg46)+        return (Syn_Visit _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_Visit #-}+sem_Visit :: Visit  -> T_Visit +sem_Visit ( Visit ident_ from_ to_ inh_ syn_ steps_ kind_ ) = sem_Visit_Visit ident_ from_ to_ inh_ syn_ ( sem_VisitSteps steps_ ) kind_++-- semantic domain+newtype T_Visit  = T_Visit {+                           attach_T_Visit :: Identity (T_Visit_s47 )+                           }+newtype T_Visit_s47  = C_Visit_s47 {+                                   inv_Visit_s47 :: (T_Visit_v46 )+                                   }+data T_Visit_s48  = C_Visit_s48+type T_Visit_v46  = (T_Visit_vIn46 ) -> (T_Visit_vOut46 )+data T_Visit_vIn46  = T_Visit_vIn46 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (ConstructorIdent) (Attributes) (Map Identifier (VisitKind ->  Either Error PP_Doc)) (Map StateIdentifier StateCtx) (NontermIdent) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Attributes) (Set String)+data T_Visit_vOut46  = T_Visit_vOut46 ( VisitStateState ) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (  (StateIdentifier,PP_Doc)  ) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_Visit_Visit #-}+sem_Visit_Visit :: (VisitIdentifier) -> (StateIdentifier) -> (StateIdentifier) -> (Set Identifier) -> (Set Identifier) -> T_VisitSteps  -> (VisitKind) -> T_Visit +sem_Visit_Visit arg_ident_ arg_from_ arg_to_ arg_inh_ arg_syn_ arg_steps_ arg_kind_ = T_Visit (return st47) where+   {-# NOINLINE st47 #-}+   st47 = let+      v46 :: T_Visit_v46 +      v46 = \ (T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfollow _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)+         _lhsOallvisits ::  VisitStateState +         _lhsOallvisits = rule544 arg_from_ arg_ident_ arg_to_+         _nameTIn_visit = rule545 _lhsInt arg_ident_+         _nameTOut_visit = rule546 _lhsInt arg_ident_+         _nameNextState = rule547 _lhsInt arg_to_+         _nameCaller_visit = rule548 _lhsInt arg_ident_+         _nextVisitInfo = rule549 _lhsInextVisits arg_to_+         _t_params = rule550 _lhsIparams+         _t_c_params = rule551 _lhsIparams+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule552 _contpart _inhpart _lhsInt _nameCaller_visit _nameTIn_visit _nameTOut_visit _synpart _t_c_params _t_params arg_ident_+         _contpart = rule553 _lhsInt _nameNextState _nextVisitInfo _t_params arg_ident_+         _inhpart = rule554 _lhsIinhmap _ppTypeList arg_inh_+         _synpart = rule555 _lhsIsynmap _ppTypeList arg_syn_+         _ppTypeList = rule556 _lhsInt arg_ident_+         _o_sigs = rule557 _lhsIoptions+         _lhsOsem_visit ::   (StateIdentifier,PP_Doc)  +         _lhsOsem_visit = rule558 _lhsInt _lhsIoptions _nameTIn_visit _nameTOut_visit _o_sigs _stepsIsem_steps _t_params arg_from_ arg_ident_ arg_inh_+         _stepsOfollow = rule559 _nextStBuild _resultval+         _nextArgsMp = rule560 _lhsIallintramap arg_to_+         _nextArgs = rule561 _nextArgsMp+         _nextStExp = rule562 _lhsIoptions _nextArgs _nextArgsMp arg_to_+         _resultval = rule563 _lhsInt _lhsIoptions _nextStRefExp arg_ident_ arg_syn_+         (_nextStBuild,_nextStRefExp) = rule564 _lhsInt _nextStExp _nextVisitInfo arg_ident_+         _stepsOkind = rule565 arg_kind_+         _stepsOindex = rule566  ()+         _stepsOprevMaxSimRefs = rule567  ()+         _stepsOuseParallel = rule568  ()+         _prevVisitInfo = rule569 _lhsInextVisits arg_from_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)+         _lhsOchildvisit = rule570 _invokecode arg_ident_+         _invokecode = rule571 _lhsInt _lhsIoptions _nameTOut_visit _nextVisitInfo _o_sigs _prevVisitInfo arg_from_ arg_ident_ arg_inh_ arg_kind_ arg_syn_ arg_to_+         _thisintra = rule572 _defsAsMap _nextintra _uses+         _lhsOintramap :: Map StateIdentifier (Map String (Maybe NonLocalAttr))+         _lhsOintramap = rule573 _thisintra arg_from_+         _nextintra = rule574 _lhsIallintramap arg_to_+         _uses = rule575 _lhsIoptions _stepsIuses arg_syn_+         _inhVarNms = rule576 _lhsIoptions arg_inh_+         _defs = rule577 _inhVarNms _lhsIterminaldefs _stepsIdefs+         _defsAsMap = rule578 _defs+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule579 arg_ident_ arg_syn_+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule580 arg_ident_ arg_inh_+         _lazyIntrasInh = rule581 _inhVarNms _stepsIdefs arg_kind_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule582 _lazyIntrasInh _stepsIlazyIntras+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule583 arg_from_ arg_ident_ arg_to_+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule584 arg_ident_ arg_kind_+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule585 _stepsIerrors+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule586 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule587 _stepsIruleUsage+         _stepsOallFromToStates = rule588 _lhsIallFromToStates+         _stepsOallInitStates = rule589 _lhsIallInitStates+         _stepsOallVisitKinds = rule590 _lhsIallVisitKinds+         _stepsOallchildvisit = rule591 _lhsIallchildvisit+         _stepsOavisitdefs = rule592 _lhsIavisitdefs+         _stepsOavisituses = rule593 _lhsIavisituses+         _stepsOchildTypes = rule594 _lhsIchildTypes+         _stepsOchildintros = rule595 _lhsIchildintros+         _stepsOmrules = rule596 _lhsImrules+         _stepsOoptions = rule597 _lhsIoptions+         _stepsOruledefs = rule598 _lhsIruledefs+         _stepsOruleuses = rule599 _lhsIruleuses+         __result_ = T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_Visit_s47 v46+   {-# INLINE rule544 #-}+   {-# LINE 436 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule544 = \ from_ ident_ to_ ->+                            {-# LINE 436 "src-ag/ExecutionPlan2Caml.ag" #-}+                            (ident_, from_, to_)+                            {-# LINE 4507 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule545 #-}+   {-# LINE 539 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule545 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                          {-# LINE 539 "src-ag/ExecutionPlan2Caml.ag" #-}+                          conNmTVisitIn _lhsInt ident_+                          {-# LINE 4513 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule546 #-}+   {-# LINE 540 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule546 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                          {-# LINE 540 "src-ag/ExecutionPlan2Caml.ag" #-}+                          conNmTVisitOut _lhsInt ident_+                          {-# LINE 4519 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule547 #-}+   {-# LINE 541 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule547 = \ ((_lhsInt) :: NontermIdent) to_ ->+                           {-# LINE 541 "src-ag/ExecutionPlan2Caml.ag" #-}+                           type_nt_sem _lhsInt to_+                           {-# LINE 4525 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule548 #-}+   {-# LINE 542 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule548 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                           {-# LINE 542 "src-ag/ExecutionPlan2Caml.ag" #-}+                           type_caller_visit _lhsInt ident_+                           {-# LINE 4531 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule549 #-}+   {-# LINE 544 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule549 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) to_ ->+                          {-# LINE 544 "src-ag/ExecutionPlan2Caml.ag" #-}+                          Map.findWithDefault ManyVis to_ _lhsInextVisits+                          {-# LINE 4537 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule550 #-}+   {-# LINE 546 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule550 = \ ((_lhsIparams) :: [Identifier]) ->+                    {-# LINE 546 "src-ag/ExecutionPlan2Caml.ag" #-}+                    ppTypeParams _lhsIparams+                    {-# LINE 4543 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule551 #-}+   {-# LINE 547 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule551 = \ ((_lhsIparams) :: [Identifier]) ->+                     {-# LINE 547 "src-ag/ExecutionPlan2Caml.ag" #-}+                     ppTypeParams (cont_tvar : map pp _lhsIparams)+                     {-# LINE 4549 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule552 #-}+   {-# LINE 551 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule552 = \ _contpart _inhpart ((_lhsInt) :: NontermIdent) _nameCaller_visit _nameTIn_visit _nameTOut_visit _synpart _t_c_params _t_params ident_ ->+                    {-# LINE 551 "src-ag/ExecutionPlan2Caml.ag" #-}+                    "and" >#< _t_c_params     >#< _nameCaller_visit     >#< "=" >#< ppRecordTp+                      [ nm_inh _lhsInt ident_ >#< ":" >#< _t_params     >#< conNmTVisitIn _lhsInt ident_+                      , nm_cont _lhsInt ident_ >#< ":" >#< _t_params     >#< conNmTVisitOut _lhsInt ident_ >#< "->" >#< cont_tvar+                      ]+                    >-< "and" >#< _t_params     >#< _nameTIn_visit      >#< "=" >#< ppRecordTp _inhpart+                    >-< "and" >#< _t_params     >#< _nameTOut_visit     >#< "=" >#< ppRecordTp (_synpart     ++ _contpart    )+                    {-# LINE 4560 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule553 #-}+   {-# LINE 558 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule553 = \ ((_lhsInt) :: NontermIdent) _nameNextState _nextVisitInfo _t_params ident_ ->+                   {-# LINE 558 "src-ag/ExecutionPlan2Caml.ag" #-}+                   case _nextVisitInfo     of+                     NoneVis -> []+                     _       -> [ nm_outarg_cont _lhsInt ident_ >#< ":" >#< _t_params     >#< _nameNextState     ]+                   {-# LINE 4568 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule554 #-}+   {-# LINE 562 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule554 = \ ((_lhsIinhmap) :: Attributes) _ppTypeList inh_ ->+                    {-# LINE 562 "src-ag/ExecutionPlan2Caml.ag" #-}+                    _ppTypeList     nm_inarg inh_ _lhsIinhmap+                    {-# LINE 4574 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule555 #-}+   {-# LINE 563 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule555 = \ ((_lhsIsynmap) :: Attributes) _ppTypeList syn_ ->+                    {-# LINE 563 "src-ag/ExecutionPlan2Caml.ag" #-}+                    _ppTypeList     nm_outarg syn_ _lhsIsynmap+                    {-# LINE 4580 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule556 #-}+   {-# LINE 564 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule556 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                     {-# LINE 564 "src-ag/ExecutionPlan2Caml.ag" #-}+                     \f s m -> map (\i -> case Map.lookup i m of+                                            Just tp -> f i _lhsInt ident_ >#< ":" >#< ppTp tp ) $ Set.toList s+                     {-# LINE 4587 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule557 #-}+   {-# LINE 798 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule557 = \ ((_lhsIoptions) :: Options) ->+                 {-# LINE 798 "src-ag/ExecutionPlan2Caml.ag" #-}+                 typeSigs _lhsIoptions+                 {-# LINE 4593 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule558 #-}+   {-# LINE 799 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule558 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTIn_visit _nameTOut_visit _o_sigs ((_stepsIsem_steps) :: PP_Doc) _t_params from_ ident_ inh_ ->+                    {-# LINE 799 "src-ag/ExecutionPlan2Caml.ag" #-}+                    ( from_+                    , let resTp = _t_params     >#< _nameTOut_visit+                          argTp = _t_params     >#< _nameTIn_visit+                          argMatch = ppRecordVal [ nm_inarg i _lhsInt ident_ >#< "=" >#< lhsname _lhsIoptions True i | i <- Set.toList inh_ ]+                      in ppFunDecl _o_sigs     (nm_visit ident_) [(argMatch, argTp)] resTp _stepsIsem_steps+                    )+                    {-# LINE 4604 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule559 #-}+   {-# LINE 806 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule559 = \ _nextStBuild _resultval ->+                     {-# LINE 806 "src-ag/ExecutionPlan2Caml.ag" #-}+                     _nextStBuild     >-< _resultval+                     {-# LINE 4610 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule560 #-}+   {-# LINE 808 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule560 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->+                     {-# LINE 808 "src-ag/ExecutionPlan2Caml.ag" #-}+                     maybe Map.empty id $ Map.lookup to_ _lhsIallintramap+                     {-# LINE 4616 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule561 #-}+   {-# LINE 809 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule561 = \ _nextArgsMp ->+                     {-# LINE 809 "src-ag/ExecutionPlan2Caml.ag" #-}+                     ppSpaced $ Map.keys $ _nextArgsMp+                     {-# LINE 4622 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule562 #-}+   {-# LINE 810 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule562 = \ ((_lhsIoptions) :: Options) _nextArgs _nextArgsMp to_ ->+                     {-# LINE 810 "src-ag/ExecutionPlan2Caml.ag" #-}+                     nm_st to_ >#< _nextArgs     >#< dummyArg _lhsIoptions (Map.null _nextArgsMp    )+                     {-# LINE 4628 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule563 #-}+   {-# LINE 812 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule563 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nextStRefExp ident_ syn_ ->+                    {-# LINE 812 "src-ag/ExecutionPlan2Caml.ag" #-}+                    ppRecordVal+                      (  [ nm_outarg i _lhsInt ident_ >#< "=" >#< lhsname _lhsIoptions False i | i <- Set.toList syn_ ]+                      ++ [ _nextStRefExp     ])+                    {-# LINE 4636 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule564 #-}+   {-# LINE 817 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule564 = \ ((_lhsInt) :: NontermIdent) _nextStExp _nextVisitInfo ident_ ->+         {-# LINE 817 "src-ag/ExecutionPlan2Caml.ag" #-}+         case _nextVisitInfo     of+           NoneVis  -> (empty, empty)+           _        -> ( "let" >#< nextStName >#< "=" >#< _nextStExp     >#< "in"+                       , nm_outarg_cont _lhsInt ident_ >#< "=" >#< nextStName)+         {-# LINE 4645 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule565 #-}+   {-# LINE 832 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule565 = \ kind_ ->+                                  {-# LINE 832 "src-ag/ExecutionPlan2Caml.ag" #-}+                                  kind_+                                  {-# LINE 4651 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule566 #-}+   {-# LINE 884 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule566 = \  (_ :: ()) ->+                                     {-# LINE 884 "src-ag/ExecutionPlan2Caml.ag" #-}+                                     0+                                     {-# LINE 4657 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule567 #-}+   {-# LINE 891 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule567 = \  (_ :: ()) ->+                                              {-# LINE 891 "src-ag/ExecutionPlan2Caml.ag" #-}+                                              0+                                              {-# LINE 4663 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule568 #-}+   {-# LINE 908 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule568 = \  (_ :: ()) ->+                                           {-# LINE 908 "src-ag/ExecutionPlan2Caml.ag" #-}+                                           False+                                           {-# LINE 4669 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule569 #-}+   {-# LINE 1165 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule569 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) from_ ->+                        {-# LINE 1165 "src-ag/ExecutionPlan2Caml.ag" #-}+                        Map.findWithDefault ManyVis from_ _lhsInextVisits+                        {-# LINE 4675 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule570 #-}+   {-# LINE 1166 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule570 = \ _invokecode ident_ ->+                     {-# LINE 1166 "src-ag/ExecutionPlan2Caml.ag" #-}+                     Map.singleton ident_ _invokecode+                     {-# LINE 4681 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule571 #-}+   {-# LINE 1168 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule571 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTOut_visit _nextVisitInfo _o_sigs _prevVisitInfo from_ ident_ inh_ kind_ syn_ to_ ->+        {-# LINE 1168 "src-ag/ExecutionPlan2Caml.ag" #-}+        \chld childTp kind follow ->+          let code = cont >-< inps >-< call+              childNmTo   = text $ stname chld to_+              childNmFrom = text $ stname chld from_+              childTpArgs = case childTp of+                              NT _ args _ -> args+                              _           -> error "generate visit call: type of the child is not a nonterminal!"+              cont = "let" >#< contNm >#< ppArg _o_sigs     (ppRecordVal cont_in) cont_in_tp >#< "="+                     >-< indent 2 follow+                     >#< "in"+              cont_in = [ nm_outarg i _lhsInt ident_ >#< "=" >#< attrname _lhsIoptions True chld i | i <- Set.toList syn_ ]+                        ++ case _nextVisitInfo     of+                             NoneVis -> []+                             _       -> [ nm_outarg_cont _lhsInt ident_ >#< "=" >#< childNmTo ]+              cont_in_tp = ppTypeParams childTpArgs >#< _nameTOut_visit+              inps = "let" >#< inpsNm >#< "=" >#< ppRecordVal+                       [ nm_inh _lhsInt ident_ >#< "=" >#< ppRecordVal inps_in+                       , nm_cont _lhsInt ident_ >#< "=" >#< contNm+                       ] >#< "in"+              inps_in = [ nm_inarg i _lhsInt ident_ >#< "=" >#< attrname _lhsIoptions False chld i | i <- Set.toList inh_ ]+              call = childNmFrom >|< "." >|< nm_invoke _lhsInt from_ >#< arg+              arg = case _prevVisitInfo     of+                      NoneVis  -> error "error: invocation of a visit from a state that has no next visits"+                      OneVis _ -> pp inpsNm+                      ManyVis  -> pp_parens (con_visit _lhsInt ident_ >#< inpsNm)+          in if kind `compatibleKind` kind_+             then Right code+             else Left $ IncompatibleVisitKind chld ident_ kind kind_+        {-# LINE 4714 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule572 #-}+   {-# LINE 1273 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule572 = \ _defsAsMap _nextintra _uses ->+                            {-# LINE 1273 "src-ag/ExecutionPlan2Caml.ag" #-}+                            (_uses     `Map.union` _nextintra    ) `Map.difference` _defsAsMap+                            {-# LINE 4720 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule573 #-}+   {-# LINE 1274 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule573 = \ _thisintra from_ ->+                            {-# LINE 1274 "src-ag/ExecutionPlan2Caml.ag" #-}+                            Map.singleton from_ _thisintra+                            {-# LINE 4726 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule574 #-}+   {-# LINE 1275 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule574 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->+                            {-# LINE 1275 "src-ag/ExecutionPlan2Caml.ag" #-}+                            maybe Map.empty id $ Map.lookup to_ _lhsIallintramap+                            {-# LINE 4732 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule575 #-}+   {-# LINE 1276 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule575 = \ ((_lhsIoptions) :: Options) ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) syn_ ->+                            {-# LINE 1276 "src-ag/ExecutionPlan2Caml.ag" #-}+                            let mp1 = _stepsIuses+                                mp2 = Map.fromList [ (lhsname _lhsIoptions False i, Just (AttrSyn _LHS i)) | i <- Set.elems syn_ ]+                            in mp1 `Map.union` mp2+                            {-# LINE 4740 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule576 #-}+   {-# LINE 1279 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule576 = \ ((_lhsIoptions) :: Options) inh_ ->+                            {-# LINE 1279 "src-ag/ExecutionPlan2Caml.ag" #-}+                            Set.map (lhsname _lhsIoptions True) inh_+                            {-# LINE 4746 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule577 #-}+   {-# LINE 1280 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule577 = \ _inhVarNms ((_lhsIterminaldefs) :: Set String) ((_stepsIdefs) :: Set String) ->+                            {-# LINE 1280 "src-ag/ExecutionPlan2Caml.ag" #-}+                            _stepsIdefs `Set.union` _inhVarNms     `Set.union` _lhsIterminaldefs+                            {-# LINE 4752 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule578 #-}+   {-# LINE 1281 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule578 = \ _defs ->+                            {-# LINE 1281 "src-ag/ExecutionPlan2Caml.ag" #-}+                            Map.fromList [ (a, Nothing) | a <- Set.elems _defs     ]+                            {-# LINE 4758 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule579 #-}+   {-# LINE 1305 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule579 = \ ident_ syn_ ->+                            {-# LINE 1305 "src-ag/ExecutionPlan2Caml.ag" #-}+                            Map.singleton ident_ syn_+                            {-# LINE 4764 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule580 #-}+   {-# LINE 1306 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule580 = \ ident_ inh_ ->+                            {-# LINE 1306 "src-ag/ExecutionPlan2Caml.ag" #-}+                            Map.singleton ident_ inh_+                            {-# LINE 4770 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule581 #-}+   {-# LINE 1338 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule581 = \ _inhVarNms ((_stepsIdefs) :: Set String) kind_ ->+                        {-# LINE 1338 "src-ag/ExecutionPlan2Caml.ag" #-}+                        case kind_ of+                          VisitPure False -> _inhVarNms     `Set.union` _stepsIdefs+                          _               -> Set.empty+                        {-# LINE 4778 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule582 #-}+   {-# LINE 1341 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule582 = \ _lazyIntrasInh ((_stepsIlazyIntras) :: Set String) ->+                     {-# LINE 1341 "src-ag/ExecutionPlan2Caml.ag" #-}+                     _lazyIntrasInh     `Set.union` _stepsIlazyIntras+                     {-# LINE 4784 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule583 #-}+   {-# LINE 1404 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule583 = \ from_ ident_ to_ ->+                       {-# LINE 1404 "src-ag/ExecutionPlan2Caml.ag" #-}+                       Map.singleton ident_ (from_, to_)+                       {-# LINE 4790 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule584 #-}+   {-# LINE 1448 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule584 = \ ident_ kind_ ->+                     {-# LINE 1448 "src-ag/ExecutionPlan2Caml.ag" #-}+                     Map.singleton ident_ kind_+                     {-# LINE 4796 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule585 #-}+   rule585 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule586 #-}+   rule586 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule587 #-}+   rule587 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule588 #-}+   rule588 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule589 #-}+   rule589 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule590 #-}+   rule590 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule591 #-}+   rule591 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule592 #-}+   rule592 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule593 #-}+   rule593 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule594 #-}+   rule594 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule595 #-}+   rule595 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule596 #-}+   rule596 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule597 #-}+   rule597 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule598 #-}+   rule598 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule599 #-}+   rule599 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses++-- VisitStep ---------------------------------------------------+-- wrapper+data Inh_VisitStep  = Inh_VisitStep { allFromToStates_Inh_VisitStep :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitStep :: (Map NontermIdent Int), allVisitKinds_Inh_VisitStep :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitStep :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), avisitdefs_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitStep :: (Map Identifier Type), childintros_Inh_VisitStep :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), follow_Inh_VisitStep :: (PP_Doc), index_Inh_VisitStep :: (Int), isLast_Inh_VisitStep :: (Bool), kind_Inh_VisitStep :: (VisitKind), mrules_Inh_VisitStep :: (Map Identifier (VisitKind ->  Either Error PP_Doc)), options_Inh_VisitStep :: (Options), prevMaxSimRefs_Inh_VisitStep :: (Int), ruledefs_Inh_VisitStep :: (Map Identifier (Set String)), ruleuses_Inh_VisitStep :: (Map Identifier (Map String (Maybe NonLocalAttr))), useParallel_Inh_VisitStep :: (Bool) }+data Syn_VisitStep  = Syn_VisitStep { defs_Syn_VisitStep :: (Set String), errors_Syn_VisitStep :: (Seq Error), index_Syn_VisitStep :: (Int), isLast_Syn_VisitStep :: (Bool), lazyIntras_Syn_VisitStep :: (Set String), prevMaxSimRefs_Syn_VisitStep :: (Int), ruleKinds_Syn_VisitStep :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitStep :: (Map Identifier Int), sem_steps_Syn_VisitStep :: (PP_Doc), uses_Syn_VisitStep :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitStep :: (Map VisitIdentifier VisitKind) }+{-# INLINABLE wrap_VisitStep #-}+wrap_VisitStep :: T_VisitStep  -> Inh_VisitStep  -> (Syn_VisitStep )+wrap_VisitStep (T_VisitStep act) (Inh_VisitStep _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg49 = T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel+        (T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds) <- return (inv_VisitStep_s50 sem arg49)+        return (Syn_VisitStep _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds)+   )++-- cata+{-# NOINLINE sem_VisitStep #-}+sem_VisitStep :: VisitStep  -> T_VisitStep +sem_VisitStep ( Sem name_ ) = sem_VisitStep_Sem name_+sem_VisitStep ( ChildVisit child_ nonterm_ visit_ ) = sem_VisitStep_ChildVisit child_ nonterm_ visit_+sem_VisitStep ( PureGroup steps_ ordered_ ) = sem_VisitStep_PureGroup ( sem_VisitSteps steps_ ) ordered_+sem_VisitStep ( Sim steps_ ) = sem_VisitStep_Sim ( sem_VisitSteps steps_ )+sem_VisitStep ( ChildIntro child_ ) = sem_VisitStep_ChildIntro child_++-- semantic domain+newtype T_VisitStep  = T_VisitStep {+                                   attach_T_VisitStep :: Identity (T_VisitStep_s50 )+                                   }+newtype T_VisitStep_s50  = C_VisitStep_s50 {+                                           inv_VisitStep_s50 :: (T_VisitStep_v49 )+                                           }+data T_VisitStep_s51  = C_VisitStep_s51+type T_VisitStep_v49  = (T_VisitStep_vIn49 ) -> (T_VisitStep_vOut49 )+data T_VisitStep_vIn49  = T_VisitStep_vIn49 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (PP_Doc) (Int) (Bool) (VisitKind) (Map Identifier (VisitKind ->  Either Error PP_Doc)) (Options) (Int) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Bool)+data T_VisitStep_vOut49  = T_VisitStep_vOut49 (Set String) (Seq Error) (Int) (Bool) (Set String) (Int) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)+{-# NOINLINE sem_VisitStep_Sem #-}+sem_VisitStep_Sem :: (Identifier) -> T_VisitStep +sem_VisitStep_Sem arg_name_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _ruleItf = rule600 _lhsImrules arg_name_+         _lhsOerrors :: Seq Error+         (_lhsOerrors,_sem_steps) = rule601 _lhsIkind _ruleItf+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule602 _lhsIfollow _sem_steps+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule603 arg_name_+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule604 _lhsIkind arg_name_+         _lhsOdefs :: Set String+         _lhsOdefs = rule605 _lhsIruledefs arg_name_+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule606 _lhsIruleuses arg_name_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule607  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule608  ()+         _lhsOindex :: Int+         _lhsOindex = rule609 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule610 _lhsIisLast+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule611 _lhsIprevMaxSimRefs+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule600 #-}+   {-# LINE 849 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule600 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) name_ ->+                               {-# LINE 849 "src-ag/ExecutionPlan2Caml.ag" #-}+                               Map.findWithDefault (error $ "Rule "  ++ show name_  ++ " not found") name_ _lhsImrules+                               {-# LINE 4915 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule601 #-}+   {-# LINE 850 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule601 = \ ((_lhsIkind) :: VisitKind) _ruleItf ->+                                               {-# LINE 850 "src-ag/ExecutionPlan2Caml.ag" #-}+                                               case _ruleItf     _lhsIkind of+                                                 Left e     -> (Seq.singleton e, empty)+                                                 Right stmt -> (Seq.empty, stmt)+                                               {-# LINE 4923 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule602 #-}+   {-# LINE 853 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule602 = \ ((_lhsIfollow) :: PP_Doc) _sem_steps ->+                                 {-# LINE 853 "src-ag/ExecutionPlan2Caml.ag" #-}+                                 _sem_steps     >-< _lhsIfollow+                                 {-# LINE 4929 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule603 #-}+   {-# LINE 1226 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule603 = \ name_ ->+                                                 {-# LINE 1226 "src-ag/ExecutionPlan2Caml.ag" #-}+                                                 Map.singleton name_ 1+                                                 {-# LINE 4935 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule604 #-}+   {-# LINE 1236 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule604 = \ ((_lhsIkind) :: VisitKind) name_ ->+                    {-# LINE 1236 "src-ag/ExecutionPlan2Caml.ag" #-}+                    Map.singleton name_ (Set.singleton _lhsIkind)+                    {-# LINE 4941 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule605 #-}+   {-# LINE 1321 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule605 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) name_ ->+                            {-# LINE 1321 "src-ag/ExecutionPlan2Caml.ag" #-}+                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruledefs+                            {-# LINE 4947 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule606 #-}+   {-# LINE 1322 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule606 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) name_ ->+                            {-# LINE 1322 "src-ag/ExecutionPlan2Caml.ag" #-}+                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruleuses+                            {-# LINE 4953 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule607 #-}+   rule607 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule608 #-}+   rule608 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule609 #-}+   rule609 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule610 #-}+   rule610 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast+   {-# INLINE rule611 #-}+   rule611 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+{-# NOINLINE sem_VisitStep_ChildVisit #-}+sem_VisitStep_ChildVisit :: (Identifier) -> (NontermIdent) -> (VisitIdentifier) -> T_VisitStep +sem_VisitStep_ChildVisit arg_child_ _ arg_visit_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _visitItf = rule612 _lhsIallchildvisit arg_visit_+         _childType = rule613 _lhsIchildTypes arg_child_+         _lhsOerrors :: Seq Error+         _lhsOsem_steps :: PP_Doc+         (_lhsOerrors,_lhsOsem_steps) = rule614 _childType _lhsIfollow _lhsIkind _visitItf arg_child_+         _lhsOdefs :: Set String+         _lhsOdefs = rule615 _lhsIavisitdefs _lhsIoptions _to arg_child_ arg_visit_+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule616 _from _lhsIavisituses _lhsIoptions arg_child_ arg_visit_+         (_from,_to) = rule617 _lhsIallFromToStates arg_visit_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule618  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule619  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule620  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule621  ()+         _lhsOindex :: Int+         _lhsOindex = rule622 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule623 _lhsIisLast+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule624 _lhsIprevMaxSimRefs+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule612 #-}+   {-# LINE 860 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule612 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) visit_ ->+                                {-# LINE 860 "src-ag/ExecutionPlan2Caml.ag" #-}+                                Map.findWithDefault (error $ "Visit " ++ show visit_ ++ " not found") visit_ _lhsIallchildvisit+                                {-# LINE 5008 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule613 #-}+   {-# LINE 861 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule613 = \ ((_lhsIchildTypes) :: Map Identifier Type) child_ ->+                                 {-# LINE 861 "src-ag/ExecutionPlan2Caml.ag" #-}+                                 Map.findWithDefault (error ("type of child " ++ show child_ ++ " is not in the childTypes map! " ++ show _lhsIchildTypes)) child_ _lhsIchildTypes+                                 {-# LINE 5014 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule614 #-}+   {-# LINE 862 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule614 = \ _childType ((_lhsIfollow) :: PP_Doc) ((_lhsIkind) :: VisitKind) _visitItf child_ ->+                                               {-# LINE 862 "src-ag/ExecutionPlan2Caml.ag" #-}+                                               case _visitItf     child_ _childType     _lhsIkind _lhsIfollow of+                                                 Left e      -> (Seq.singleton e, empty)+                                                 Right steps -> (Seq.empty, steps)+                                               {-# LINE 5022 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule615 #-}+   {-# LINE 1323 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule615 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) _to child_ visit_ ->+                            {-# LINE 1323 "src-ag/ExecutionPlan2Caml.ag" #-}+                            Set.insert (stname child_ _to) $ maybe (error "Visit not found") (Set.map $ attrname _lhsIoptions True child_) $ Map.lookup visit_ _lhsIavisitdefs+                            {-# LINE 5028 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule616 #-}+   {-# LINE 1324 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule616 = \ _from ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) child_ visit_ ->+                            {-# LINE 1324 "src-ag/ExecutionPlan2Caml.ag" #-}+                            let convert attrs = Map.fromList [ (attrname _lhsIoptions False child_ attr, Just $ mkNonLocalAttr True child_ attr) | attr <- Set.elems attrs ]+                            in Map.insert (stname child_ _from) Nothing $ convert $+                                 maybe (error "Visit not found") id $ Map.lookup visit_ _lhsIavisituses+                            {-# LINE 5036 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule617 #-}+   {-# LINE 1410 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule617 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) visit_ ->+                         {-# LINE 1410 "src-ag/ExecutionPlan2Caml.ag" #-}+                         Map.findWithDefault (error "visit not in allFromToStates") visit_ _lhsIallFromToStates+                         {-# LINE 5042 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule618 #-}+   rule618 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule619 #-}+   rule619 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule620 #-}+   rule620 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule621 #-}+   rule621 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule622 #-}+   rule622 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule623 #-}+   rule623 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast+   {-# INLINE rule624 #-}+   rule624 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+{-# NOINLINE sem_VisitStep_PureGroup #-}+sem_VisitStep_PureGroup :: T_VisitSteps  -> (Bool) -> T_VisitStep +sem_VisitStep_PureGroup arg_steps_ arg_ordered_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfollow _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)+         _stepsOkind = rule625 arg_ordered_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule626 _stepsIdefs _stepsIlazyIntras arg_ordered_+         _lhsOdefs :: Set String+         _lhsOdefs = rule627 _stepsIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule628 _stepsIerrors+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule629 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule630 _stepsIruleUsage+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule631 _stepsIsem_steps+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule632 _stepsIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule633 _stepsIvisitKinds+         _lhsOindex :: Int+         _lhsOindex = rule634 _stepsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule635 _stepsIisLast+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule636 _stepsIprevMaxSimRefs+         _stepsOallFromToStates = rule637 _lhsIallFromToStates+         _stepsOallInitStates = rule638 _lhsIallInitStates+         _stepsOallVisitKinds = rule639 _lhsIallVisitKinds+         _stepsOallchildvisit = rule640 _lhsIallchildvisit+         _stepsOavisitdefs = rule641 _lhsIavisitdefs+         _stepsOavisituses = rule642 _lhsIavisituses+         _stepsOchildTypes = rule643 _lhsIchildTypes+         _stepsOchildintros = rule644 _lhsIchildintros+         _stepsOfollow = rule645 _lhsIfollow+         _stepsOindex = rule646 _lhsIindex+         _stepsOmrules = rule647 _lhsImrules+         _stepsOoptions = rule648 _lhsIoptions+         _stepsOprevMaxSimRefs = rule649 _lhsIprevMaxSimRefs+         _stepsOruledefs = rule650 _lhsIruledefs+         _stepsOruleuses = rule651 _lhsIruleuses+         _stepsOuseParallel = rule652 _lhsIuseParallel+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule625 #-}+   {-# LINE 836 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule625 = \ ordered_ ->+                 {-# LINE 836 "src-ag/ExecutionPlan2Caml.ag" #-}+                 VisitPure ordered_+                 {-# LINE 5120 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule626 #-}+   {-# LINE 1344 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule626 = \ ((_stepsIdefs) :: Set String) ((_stepsIlazyIntras) :: Set String) ordered_ ->+                     {-# LINE 1344 "src-ag/ExecutionPlan2Caml.ag" #-}+                     if ordered_+                     then _stepsIlazyIntras+                     else _stepsIdefs+                     {-# LINE 5128 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule627 #-}+   rule627 = \ ((_stepsIdefs) :: Set String) ->+     _stepsIdefs+   {-# INLINE rule628 #-}+   rule628 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule629 #-}+   rule629 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule630 #-}+   rule630 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule631 #-}+   rule631 = \ ((_stepsIsem_steps) :: PP_Doc) ->+     _stepsIsem_steps+   {-# INLINE rule632 #-}+   rule632 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->+     _stepsIuses+   {-# INLINE rule633 #-}+   rule633 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _stepsIvisitKinds+   {-# INLINE rule634 #-}+   rule634 = \ ((_stepsIindex) :: Int) ->+     _stepsIindex+   {-# INLINE rule635 #-}+   rule635 = \ ((_stepsIisLast) :: Bool) ->+     _stepsIisLast+   {-# INLINE rule636 #-}+   rule636 = \ ((_stepsIprevMaxSimRefs) :: Int) ->+     _stepsIprevMaxSimRefs+   {-# INLINE rule637 #-}+   rule637 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule638 #-}+   rule638 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule639 #-}+   rule639 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule640 #-}+   rule640 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule641 #-}+   rule641 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule642 #-}+   rule642 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule643 #-}+   rule643 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule644 #-}+   rule644 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule645 #-}+   rule645 = \ ((_lhsIfollow) :: PP_Doc) ->+     _lhsIfollow+   {-# INLINE rule646 #-}+   rule646 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule647 #-}+   rule647 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule648 #-}+   rule648 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule649 #-}+   rule649 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+   {-# INLINE rule650 #-}+   rule650 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule651 #-}+   rule651 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule652 #-}+   rule652 = \ ((_lhsIuseParallel) :: Bool) ->+     _lhsIuseParallel+{-# NOINLINE sem_VisitStep_Sim #-}+sem_VisitStep_Sim :: T_VisitSteps  -> T_VisitStep +sem_VisitStep_Sim arg_steps_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfollow _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)+         _stepsOindex = rule653  ()+         _lhsOindex :: Int+         _lhsOindex = rule654 _lhsIindex+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule655 _lhsIprevMaxSimRefs _stepsIindex _useParallel+         _useParallel = rule656 _lhsIoptions _stepsIsize+         _lhsOdefs :: Set String+         _lhsOdefs = rule657 _stepsIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule658 _stepsIerrors+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule659 _stepsIlazyIntras+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule660 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule661 _stepsIruleUsage+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule662 _stepsIsem_steps+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule663 _stepsIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule664 _stepsIvisitKinds+         _lhsOisLast :: Bool+         _lhsOisLast = rule665 _stepsIisLast+         _stepsOallFromToStates = rule666 _lhsIallFromToStates+         _stepsOallInitStates = rule667 _lhsIallInitStates+         _stepsOallVisitKinds = rule668 _lhsIallVisitKinds+         _stepsOallchildvisit = rule669 _lhsIallchildvisit+         _stepsOavisitdefs = rule670 _lhsIavisitdefs+         _stepsOavisituses = rule671 _lhsIavisituses+         _stepsOchildTypes = rule672 _lhsIchildTypes+         _stepsOchildintros = rule673 _lhsIchildintros+         _stepsOfollow = rule674 _lhsIfollow+         _stepsOkind = rule675 _lhsIkind+         _stepsOmrules = rule676 _lhsImrules+         _stepsOoptions = rule677 _lhsIoptions+         _stepsOprevMaxSimRefs = rule678 _lhsIprevMaxSimRefs+         _stepsOruledefs = rule679 _lhsIruledefs+         _stepsOruleuses = rule680 _lhsIruleuses+         _stepsOuseParallel = rule681 _useParallel+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule653 #-}+   {-# LINE 885 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule653 = \  (_ :: ()) ->+                                     {-# LINE 885 "src-ag/ExecutionPlan2Caml.ag" #-}+                                     0+                                     {-# LINE 5264 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule654 #-}+   {-# LINE 886 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule654 = \ ((_lhsIindex) :: Int) ->+                                     {-# LINE 886 "src-ag/ExecutionPlan2Caml.ag" #-}+                                     _lhsIindex+                                     {-# LINE 5270 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule655 #-}+   {-# LINE 893 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule655 = \ ((_lhsIprevMaxSimRefs) :: Int) ((_stepsIindex) :: Int) _useParallel ->+                         {-# LINE 893 "src-ag/ExecutionPlan2Caml.ag" #-}+                         if _useParallel+                         then _lhsIprevMaxSimRefs `max` (_stepsIindex - 1)+                         else _lhsIprevMaxSimRefs+                         {-# LINE 5278 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule656 #-}+   {-# LINE 909 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule656 = \ ((_lhsIoptions) :: Options) ((_stepsIsize) :: Int) ->+                                         {-# LINE 909 "src-ag/ExecutionPlan2Caml.ag" #-}+                                         parallelInvoke _lhsIoptions && _stepsIsize > 1+                                         {-# LINE 5284 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule657 #-}+   rule657 = \ ((_stepsIdefs) :: Set String) ->+     _stepsIdefs+   {-# INLINE rule658 #-}+   rule658 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule659 #-}+   rule659 = \ ((_stepsIlazyIntras) :: Set String) ->+     _stepsIlazyIntras+   {-# INLINE rule660 #-}+   rule660 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule661 #-}+   rule661 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule662 #-}+   rule662 = \ ((_stepsIsem_steps) :: PP_Doc) ->+     _stepsIsem_steps+   {-# INLINE rule663 #-}+   rule663 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->+     _stepsIuses+   {-# INLINE rule664 #-}+   rule664 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _stepsIvisitKinds+   {-# INLINE rule665 #-}+   rule665 = \ ((_stepsIisLast) :: Bool) ->+     _stepsIisLast+   {-# INLINE rule666 #-}+   rule666 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule667 #-}+   rule667 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule668 #-}+   rule668 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule669 #-}+   rule669 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule670 #-}+   rule670 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule671 #-}+   rule671 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule672 #-}+   rule672 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule673 #-}+   rule673 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule674 #-}+   rule674 = \ ((_lhsIfollow) :: PP_Doc) ->+     _lhsIfollow+   {-# INLINE rule675 #-}+   rule675 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule676 #-}+   rule676 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule677 #-}+   rule677 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule678 #-}+   rule678 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+   {-# INLINE rule679 #-}+   rule679 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule680 #-}+   rule680 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule681 #-}+   rule681 = \ _useParallel ->+     _useParallel+{-# NOINLINE sem_VisitStep_ChildIntro #-}+sem_VisitStep_ChildIntro :: (Identifier) -> T_VisitStep +sem_VisitStep_ChildIntro arg_child_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _attachItf = rule682 _lhsIchildintros arg_child_+         _lhsOerrors :: Seq Error+         _lhsOdefs :: Set String+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         (_lhsOerrors,_sem_steps,_lhsOdefs,_lhsOuses) = rule683 _attachItf _lhsIkind+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule684 _lhsIfollow _sem_steps+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule685  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule686  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule687  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule688  ()+         _lhsOindex :: Int+         _lhsOindex = rule689 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule690 _lhsIisLast+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule691 _lhsIprevMaxSimRefs+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule682 #-}+   {-# LINE 854 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule682 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) child_ ->+                                 {-# LINE 854 "src-ag/ExecutionPlan2Caml.ag" #-}+                                 Map.findWithDefault (error $ "Child " ++ show child_ ++ " not found") child_ _lhsIchildintros+                                 {-# LINE 5396 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule683 #-}+   {-# LINE 856 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule683 = \ _attachItf ((_lhsIkind) :: VisitKind) ->+                     {-# LINE 856 "src-ag/ExecutionPlan2Caml.ag" #-}+                     case _attachItf     _lhsIkind of+                       Left e                   -> (Seq.singleton e, empty, Set.empty, Map.empty)+                       Right (code, defs, uses) -> (Seq.empty, code, defs, uses)+                     {-# LINE 5404 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule684 #-}+   {-# LINE 859 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule684 = \ ((_lhsIfollow) :: PP_Doc) _sem_steps ->+                                 {-# LINE 859 "src-ag/ExecutionPlan2Caml.ag" #-}+                                 _sem_steps     >-< _lhsIfollow+                                 {-# LINE 5410 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule685 #-}+   rule685 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule686 #-}+   rule686 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule687 #-}+   rule687 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule688 #-}+   rule688 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule689 #-}+   rule689 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule690 #-}+   rule690 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast+   {-# INLINE rule691 #-}+   rule691 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs++-- VisitSteps --------------------------------------------------+-- wrapper+data Inh_VisitSteps  = Inh_VisitSteps { allFromToStates_Inh_VisitSteps :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitSteps :: (Map NontermIdent Int), allVisitKinds_Inh_VisitSteps :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitSteps :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), avisitdefs_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitSteps :: (Map Identifier Type), childintros_Inh_VisitSteps :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), follow_Inh_VisitSteps :: (PP_Doc), index_Inh_VisitSteps :: (Int), kind_Inh_VisitSteps :: (VisitKind), mrules_Inh_VisitSteps :: (Map Identifier (VisitKind ->  Either Error PP_Doc)), options_Inh_VisitSteps :: (Options), prevMaxSimRefs_Inh_VisitSteps :: (Int), ruledefs_Inh_VisitSteps :: (Map Identifier (Set String)), ruleuses_Inh_VisitSteps :: (Map Identifier (Map String (Maybe NonLocalAttr))), useParallel_Inh_VisitSteps :: (Bool) }+data Syn_VisitSteps  = Syn_VisitSteps { defs_Syn_VisitSteps :: (Set String), errors_Syn_VisitSteps :: (Seq Error), index_Syn_VisitSteps :: (Int), isLast_Syn_VisitSteps :: (Bool), lazyIntras_Syn_VisitSteps :: (Set String), prevMaxSimRefs_Syn_VisitSteps :: (Int), ruleKinds_Syn_VisitSteps :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitSteps :: (Map Identifier Int), sem_steps_Syn_VisitSteps :: (PP_Doc), size_Syn_VisitSteps :: (Int), uses_Syn_VisitSteps :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitSteps :: (Map VisitIdentifier VisitKind) }+{-# INLINABLE wrap_VisitSteps #-}+wrap_VisitSteps :: T_VisitSteps  -> Inh_VisitSteps  -> (Syn_VisitSteps )+wrap_VisitSteps (T_VisitSteps act) (Inh_VisitSteps _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg52 = T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel+        (T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOuses _lhsOvisitKinds) <- return (inv_VisitSteps_s53 sem arg52)+        return (Syn_VisitSteps _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOuses _lhsOvisitKinds)+   )++-- cata+{-# NOINLINE sem_VisitSteps #-}+sem_VisitSteps :: VisitSteps  -> T_VisitSteps +sem_VisitSteps list = Prelude.foldr sem_VisitSteps_Cons sem_VisitSteps_Nil (Prelude.map sem_VisitStep list)++-- semantic domain+newtype T_VisitSteps  = T_VisitSteps {+                                     attach_T_VisitSteps :: Identity (T_VisitSteps_s53 )+                                     }+newtype T_VisitSteps_s53  = C_VisitSteps_s53 {+                                             inv_VisitSteps_s53 :: (T_VisitSteps_v52 )+                                             }+data T_VisitSteps_s54  = C_VisitSteps_s54+type T_VisitSteps_v52  = (T_VisitSteps_vIn52 ) -> (T_VisitSteps_vOut52 )+data T_VisitSteps_vIn52  = T_VisitSteps_vIn52 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (PP_Doc) (Int) (VisitKind) (Map Identifier (VisitKind ->  Either Error PP_Doc)) (Options) (Int) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Bool)+data T_VisitSteps_vOut52  = T_VisitSteps_vOut52 (Set String) (Seq Error) (Int) (Bool) (Set String) (Int) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Int) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)+{-# NOINLINE sem_VisitSteps_Cons #-}+sem_VisitSteps_Cons :: T_VisitStep  -> T_VisitSteps  -> T_VisitSteps +sem_VisitSteps_Cons arg_hd_ arg_tl_ = T_VisitSteps (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_VisitSteps_v52 +      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _hdX50 = Control.Monad.Identity.runIdentity (attach_T_VisitStep (arg_hd_))+         _tlX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_tl_))+         (T_VisitStep_vOut49 _hdIdefs _hdIerrors _hdIindex _hdIisLast _hdIlazyIntras _hdIprevMaxSimRefs _hdIruleKinds _hdIruleUsage _hdIsem_steps _hdIuses _hdIvisitKinds) = inv_VisitStep_s50 _hdX50 (T_VisitStep_vIn49 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOchildTypes _hdOchildintros _hdOfollow _hdOindex _hdOisLast _hdOkind _hdOmrules _hdOoptions _hdOprevMaxSimRefs _hdOruledefs _hdOruleuses _hdOuseParallel)+         (T_VisitSteps_vOut52 _tlIdefs _tlIerrors _tlIindex _tlIisLast _tlIlazyIntras _tlIprevMaxSimRefs _tlIruleKinds _tlIruleUsage _tlIsem_steps _tlIsize _tlIuses _tlIvisitKinds) = inv_VisitSteps_s53 _tlX53 (T_VisitSteps_vIn52 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOchildTypes _tlOchildintros _tlOfollow _tlOindex _tlOkind _tlOmrules _tlOoptions _tlOprevMaxSimRefs _tlOruledefs _tlOruleuses _tlOuseParallel)+         _hdOfollow = rule692 _tlIsem_steps+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule693 _hdIsem_steps+         _lhsOsize :: Int+         _lhsOsize = rule694 _tlIsize+         _hdOindex = rule695 _lhsIindex+         _tlOindex = rule696 _lhsIindex+         _lhsOindex :: Int+         _lhsOindex = rule697 _tlIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule698  ()+         _hdOisLast = rule699 _tlIisLast+         _lhsOdefs :: Set String+         _lhsOdefs = rule700 _hdIdefs _tlIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule701 _hdIerrors _tlIerrors+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule702 _hdIlazyIntras _tlIlazyIntras+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule703 _hdIruleKinds _tlIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule704 _hdIruleUsage _tlIruleUsage+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule705 _hdIuses _tlIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule706 _hdIvisitKinds _tlIvisitKinds+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule707 _tlIprevMaxSimRefs+         _hdOallFromToStates = rule708 _lhsIallFromToStates+         _hdOallInitStates = rule709 _lhsIallInitStates+         _hdOallVisitKinds = rule710 _lhsIallVisitKinds+         _hdOallchildvisit = rule711 _lhsIallchildvisit+         _hdOavisitdefs = rule712 _lhsIavisitdefs+         _hdOavisituses = rule713 _lhsIavisituses+         _hdOchildTypes = rule714 _lhsIchildTypes+         _hdOchildintros = rule715 _lhsIchildintros+         _hdOkind = rule716 _lhsIkind+         _hdOmrules = rule717 _lhsImrules+         _hdOoptions = rule718 _lhsIoptions+         _hdOprevMaxSimRefs = rule719 _lhsIprevMaxSimRefs+         _hdOruledefs = rule720 _lhsIruledefs+         _hdOruleuses = rule721 _lhsIruleuses+         _hdOuseParallel = rule722 _lhsIuseParallel+         _tlOallFromToStates = rule723 _lhsIallFromToStates+         _tlOallInitStates = rule724 _lhsIallInitStates+         _tlOallVisitKinds = rule725 _lhsIallVisitKinds+         _tlOallchildvisit = rule726 _lhsIallchildvisit+         _tlOavisitdefs = rule727 _lhsIavisitdefs+         _tlOavisituses = rule728 _lhsIavisituses+         _tlOchildTypes = rule729 _lhsIchildTypes+         _tlOchildintros = rule730 _lhsIchildintros+         _tlOfollow = rule731 _lhsIfollow+         _tlOkind = rule732 _lhsIkind+         _tlOmrules = rule733 _lhsImrules+         _tlOoptions = rule734 _lhsIoptions+         _tlOprevMaxSimRefs = rule735 _hdIprevMaxSimRefs+         _tlOruledefs = rule736 _lhsIruledefs+         _tlOruleuses = rule737 _lhsIruleuses+         _tlOuseParallel = rule738 _lhsIuseParallel+         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitSteps_s53 v52+   {-# INLINE rule692 #-}+   {-# LINE 844 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule692 = \ ((_tlIsem_steps) :: PP_Doc) ->+                            {-# LINE 844 "src-ag/ExecutionPlan2Caml.ag" #-}+                            _tlIsem_steps+                            {-# LINE 5541 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule693 #-}+   {-# LINE 845 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule693 = \ ((_hdIsem_steps) :: PP_Doc) ->+                            {-# LINE 845 "src-ag/ExecutionPlan2Caml.ag" #-}+                            _hdIsem_steps+                            {-# LINE 5547 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule694 #-}+   {-# LINE 876 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule694 = \ ((_tlIsize) :: Int) ->+                      {-# LINE 876 "src-ag/ExecutionPlan2Caml.ag" #-}+                      1 + _tlIsize+                      {-# LINE 5553 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule695 #-}+   {-# LINE 881 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule695 = \ ((_lhsIindex) :: Int) ->+                {-# LINE 881 "src-ag/ExecutionPlan2Caml.ag" #-}+                _lhsIindex+                {-# LINE 5559 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule696 #-}+   {-# LINE 882 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule696 = \ ((_lhsIindex) :: Int) ->+                {-# LINE 882 "src-ag/ExecutionPlan2Caml.ag" #-}+                1 + _lhsIindex+                {-# LINE 5565 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule697 #-}+   {-# LINE 883 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule697 = \ ((_tlIindex) :: Int) ->+                {-# LINE 883 "src-ag/ExecutionPlan2Caml.ag" #-}+                _tlIindex+                {-# LINE 5571 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule698 #-}+   {-# LINE 902 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule698 = \  (_ :: ()) ->+                         {-# LINE 902 "src-ag/ExecutionPlan2Caml.ag" #-}+                         False+                         {-# LINE 5577 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule699 #-}+   {-# LINE 903 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule699 = \ ((_tlIisLast) :: Bool) ->+                         {-# LINE 903 "src-ag/ExecutionPlan2Caml.ag" #-}+                         _tlIisLast+                         {-# LINE 5583 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule700 #-}+   rule700 = \ ((_hdIdefs) :: Set String) ((_tlIdefs) :: Set String) ->+     _hdIdefs `Set.union` _tlIdefs+   {-# INLINE rule701 #-}+   rule701 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule702 #-}+   rule702 = \ ((_hdIlazyIntras) :: Set String) ((_tlIlazyIntras) :: Set String) ->+     _hdIlazyIntras `Set.union` _tlIlazyIntras+   {-# INLINE rule703 #-}+   rule703 = \ ((_hdIruleKinds) :: Map Identifier (Set VisitKind)) ((_tlIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _hdIruleKinds `unionWithMappend` _tlIruleKinds+   {-# INLINE rule704 #-}+   rule704 = \ ((_hdIruleUsage) :: Map Identifier Int) ((_tlIruleUsage) :: Map Identifier Int) ->+     _hdIruleUsage `unionWithSum` _tlIruleUsage+   {-# INLINE rule705 #-}+   rule705 = \ ((_hdIuses) :: Map String (Maybe NonLocalAttr)) ((_tlIuses) :: Map String (Maybe NonLocalAttr)) ->+     _hdIuses `Map.union` _tlIuses+   {-# INLINE rule706 #-}+   rule706 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule707 #-}+   rule707 = \ ((_tlIprevMaxSimRefs) :: Int) ->+     _tlIprevMaxSimRefs+   {-# INLINE rule708 #-}+   rule708 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule709 #-}+   rule709 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule710 #-}+   rule710 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule711 #-}+   rule711 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule712 #-}+   rule712 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule713 #-}+   rule713 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule714 #-}+   rule714 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule715 #-}+   rule715 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule716 #-}+   rule716 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule717 #-}+   rule717 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule718 #-}+   rule718 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule719 #-}+   rule719 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+   {-# INLINE rule720 #-}+   rule720 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule721 #-}+   rule721 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule722 #-}+   rule722 = \ ((_lhsIuseParallel) :: Bool) ->+     _lhsIuseParallel+   {-# INLINE rule723 #-}+   rule723 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule724 #-}+   rule724 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule725 #-}+   rule725 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule726 #-}+   rule726 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)) ->+     _lhsIallchildvisit+   {-# INLINE rule727 #-}+   rule727 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule728 #-}+   rule728 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule729 #-}+   rule729 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule730 #-}+   rule730 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule731 #-}+   rule731 = \ ((_lhsIfollow) :: PP_Doc) ->+     _lhsIfollow+   {-# INLINE rule732 #-}+   rule732 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule733 #-}+   rule733 = \ ((_lhsImrules) :: Map Identifier (VisitKind ->  Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule734 #-}+   rule734 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule735 #-}+   rule735 = \ ((_hdIprevMaxSimRefs) :: Int) ->+     _hdIprevMaxSimRefs+   {-# INLINE rule736 #-}+   rule736 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule737 #-}+   rule737 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule738 #-}+   rule738 = \ ((_lhsIuseParallel) :: Bool) ->+     _lhsIuseParallel+{-# NOINLINE sem_VisitSteps_Nil #-}+sem_VisitSteps_Nil ::  T_VisitSteps +sem_VisitSteps_Nil  = T_VisitSteps (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_VisitSteps_v52 +      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfollow _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule739 _lhsIfollow+         _lhsOsize :: Int+         _lhsOsize = rule740  ()+         _lhsOisLast :: Bool+         _lhsOisLast = rule741  ()+         _lhsOdefs :: Set String+         _lhsOdefs = rule742  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule743  ()+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule744  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule745  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule746  ()+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule747  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule748  ()+         _lhsOindex :: Int+         _lhsOindex = rule749 _lhsIindex+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule750 _lhsIprevMaxSimRefs+         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitSteps_s53 v52+   {-# INLINE rule739 #-}+   {-# LINE 846 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule739 = \ ((_lhsIfollow) :: PP_Doc) ->+                            {-# LINE 846 "src-ag/ExecutionPlan2Caml.ag" #-}+                            _lhsIfollow+                            {-# LINE 5740 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule740 #-}+   {-# LINE 875 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule740 = \  (_ :: ()) ->+                      {-# LINE 875 "src-ag/ExecutionPlan2Caml.ag" #-}+                      0+                      {-# LINE 5746 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule741 #-}+   {-# LINE 901 "src-ag/ExecutionPlan2Caml.ag" #-}+   rule741 = \  (_ :: ()) ->+                         {-# LINE 901 "src-ag/ExecutionPlan2Caml.ag" #-}+                         True+                         {-# LINE 5752 "dist/build/ExecutionPlan2Caml.hs"#-}+   {-# INLINE rule742 #-}+   rule742 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule743 #-}+   rule743 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule744 #-}+   rule744 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule745 #-}+   rule745 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule746 #-}+   rule746 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule747 #-}+   rule747 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule748 #-}+   rule748 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule749 #-}+   rule749 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule750 #-}+   rule750 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs++-- Visits ------------------------------------------------------+-- wrapper+data Inh_Visits  = Inh_Visits { allFromToStates_Inh_Visits :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visits :: (Map NontermIdent Attributes), allInitStates_Inh_Visits :: (Map NontermIdent Int), allSynmap_Inh_Visits :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visits :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visits :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), allintramap_Inh_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visits :: (Map Identifier Type), childintros_Inh_Visits :: (Map Identifier (VisitKind -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visits :: (ConstructorIdent), inhmap_Inh_Visits :: (Attributes), mrules_Inh_Visits :: (Map Identifier (VisitKind ->  Either Error PP_Doc)), nextVisits_Inh_Visits :: (Map StateIdentifier StateCtx), nt_Inh_Visits :: (NontermIdent), options_Inh_Visits :: (Options), params_Inh_Visits :: ([Identifier]), prevVisits_Inh_Visits :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visits :: (Map Identifier (Set String)), ruleuses_Inh_Visits :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visits :: (Attributes), terminaldefs_Inh_Visits :: (Set String) }+data Syn_Visits  = Syn_Visits { allvisits_Syn_Visits :: ([VisitStateState]), childvisit_Syn_Visits :: (Map VisitIdentifier (Identifier -> Type -> VisitKind -> PP_Doc -> Either Error PP_Doc)), errors_Syn_Visits :: (Seq Error), fromToStates_Syn_Visits :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visits :: (Set String), ruleKinds_Syn_Visits :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visits :: (Map Identifier Int), sem_visit_Syn_Visits :: ( [(StateIdentifier,PP_Doc)] ), t_visits_Syn_Visits :: (PP_Doc), visitKinds_Syn_Visits :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visits :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visits :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_Visits #-}+wrap_Visits :: T_Visits  -> Inh_Visits  -> (Syn_Visits )+wrap_Visits (T_Visits act) (Inh_Visits _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg55 = T_Visits_vIn55 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs+        (T_Visits_vOut55 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visits_s56 sem arg55)         return (Syn_Visits _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)    ) 
src-generated/ExecutionPlan2Clean.hs view
@@ -2,6636 +2,6636 @@ {-# LANGUAGE ScopedTypeVariables #-}  module ExecutionPlan2Clean where-{-# LINE 2 "./src-ag/HsToken.ag" #-}--import CommonTypes-import UU.Scanner.Position(Pos)-{-# LINE 10 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 2 "./src-ag/Expression.ag" #-}--import UU.Scanner.Position(Pos)-import HsToken-{-# LINE 16 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 2 "./src-ag/Patterns.ag" #-}---- Patterns.ag imports-import UU.Scanner.Position(Pos)-import CommonTypes (ConstructorIdent,Identifier)-{-# LINE 23 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 2 "./src-ag/ExecutionPlan.ag" #-}---- VisitSyntax.ag imports-import Patterns    (Pattern(..),Patterns)-import Expression  (Expression(..))-import CommonTypes-import ErrorMessages--import qualified Data.Set as Set-import Data.Set(Set)-import qualified Data.Map as Map-import Data.Map(Map)-{-# LINE 37 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 7 "./src-ag/ExecutionPlan2Clean.ag" #-}--import ExecutionPlan-import Pretty-import PPUtil-import Options-import Data.Monoid(mappend,mempty)-import Data.Maybe-import Debug.Trace-import System.IO-import System.Directory-import System.FilePath-import UU.Scanner.Position--import TokenDef-import HsToken-import ErrorMessages--import Data.Set (Set)-import qualified Data.Set as Set-import Data.Map (Map)-import qualified Data.Map as Map-import Data.Sequence(Seq)-import qualified Data.Sequence as Seq-import Data.Foldable(toList)-{-# LINE 64 "dist/build/ExecutionPlan2Clean.hs" #-}-import Control.Monad.Identity (Identity)-import qualified Control.Monad.Identity-{-# LINE 190 "./src-ag/ExecutionPlan2Clean.ag" #-}--classCtxsToDocs :: ClassContext -> [PP_Doc]-classCtxsToDocs = map toDoc where-  toDoc (ident,args) = (ident >#< ppSpaced (map pp_parens args))--classConstrsToDocs :: [Type] -> [PP_Doc]-classConstrsToDocs = map ppTp--ppClasses :: [PP_Doc] -> PP_Doc-ppClasses [] = empty-ppClasses xs = "|" >#< pp_block "" "" "&" xs--ppQuants :: [Identifier] -> PP_Doc-ppQuants [] = empty-ppQuants ps = "E." >#< ppSpaced ps >#< ":"-{-# LINE 83 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 227 "./src-ag/ExecutionPlan2Clean.ag" #-}---- first parameter indicates: generate a record or not-ppConFields :: Bool -> [PP_Doc] -> PP_Doc-ppConFields True  flds = ppListSep "{" "}" ", " flds-ppConFields False flds = ppSpaced flds-{-# LINE 91 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 260 "./src-ag/ExecutionPlan2Clean.ag" #-}--ppTp :: Type -> PP_Doc-ppTp = text . typeToHaskellString Nothing []-{-# LINE 97 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 333 "./src-ag/ExecutionPlan2Clean.ag" #-}--isRecordConstructor :: NontermIdent -> Map NontermIdent ConstructorType -> Bool-isRecordConstructor nt ctm = Map.lookup nt ctm == Just RecordConstructor-{-# LINE 103 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 374 "./src-ag/ExecutionPlan2Clean.ag" #-}-type VisitStateState = (VisitIdentifier,StateIdentifier, StateIdentifier)-{-# LINE 107 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 483 "./src-ag/ExecutionPlan2Clean.ag" #-}--conNmTVisit nt vId      = "T_" >|< nt >|< "_v"    >|< vId-conNmTVisitIn nt vId    = "T_" >|< nt >|< "_vIn"  >|< vId-conNmTVisitOut nt vId   = "T_" >|< nt >|< "_vOut" >|< vId-conNmTNextVisit nt stId = "T_" >|< nt >|< "_s"    >|< stId--ppMonadType :: Options -> PP_Doc-ppMonadType opts-  | parallelInvoke opts = text "IO"-  | otherwise           = text "Identity"-{-# LINE 120 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 652 "./src-ag/ExecutionPlan2Clean.ag" #-}--ppDefor :: Type -> PP_Doc-ppDefor (NT nt args _) = "T_" >|< nt >#< ppSpaced (map pp_parens args)-ppDefor (Haskell s)    = text s-{-# LINE 127 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 756 "./src-ag/ExecutionPlan2Clean.ag" #-}--mklet :: (PP a, PP b, PP c) => a -> b -> c -> PP_Doc-mklet prefix defs body =-  prefix-  >-< indent (length (show prefix))-    ("let"-     >-< indent 4 defs-     >-< "in" >#< body)-{-# LINE 138 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 817 "./src-ag/ExecutionPlan2Clean.ag" #-}--resultValName :: String-resultValName = "ag__result_"--nextStName :: String-nextStName = "ag__st_"-{-# LINE 147 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 878 "./src-ag/ExecutionPlan2Clean.ag" #-}--parResultName :: String-parResultName = "__outcome_"--fmtDecl :: PP a => Bool -> FormatMode -> a -> PP_Doc-fmtDecl declPure fmt decl = case fmt of-  FormatLetDecl -> pp decl-  FormatLetLine -> "let" >#< decl >#< "in"-  FormatDo | declPure  -> "let" >#< decl >#< "in"-           | otherwise -> pp decl-{-# LINE 160 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 992 "./src-ag/ExecutionPlan2Clean.ag" #-}--stname :: Identifier -> Int -> String-stname child st = "st_" ++ getName child ++ "X" ++ show st---- should actually return some conversion info-compatibleAttach :: VisitKind -> NontermIdent -> Options -> Bool-compatibleAttach _ _ _ = True--unMon :: Options -> PP_Doc-unMon options-  | parallelInvoke options = text "'System.IO.Unsafe'.unsafePerformIO"    -- IO monad-  | otherwise              = text "'Control.Monad.Identity'.runIdentity"  -- identity monad-{-# LINE 175 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 1079 "./src-ag/ExecutionPlan2Clean.ag" #-}--dummyPat :: Options -> Bool -> PP_Doc-dummyPat opts noArgs-  | not noArgs && tupleAsDummyToken opts = empty  -- no unnecessary tuples-  | tupleAsDummyToken opts = if strictDummyToken opts-                             then text "Void"-                             else text "(_)"-  | otherwise              = let match | strictDummyToken opts = "!_"-                                       | otherwise             = "_"-                             in pp_parens (match >#< "::" >#< dummyType opts noArgs)-  where match | strictDummyToken opts = "(!_)"-              | otherwise             = "_"--dummyArg :: Options -> Bool -> PP_Doc-dummyArg opts noArgs-  | not noArgs && tupleAsDummyToken opts = empty    -- no unnecessary tuples-  | tupleAsDummyToken opts = text "Void"-  | otherwise              = text "GHC.Prim.realWorld#"--dummyType :: Options -> Bool -> PP_Doc-dummyType opts noArgs-  | not noArgs && tupleAsDummyToken opts = empty     -- no unnecessary tuples-  | tupleAsDummyToken opts = text "Void"-  | otherwise              = text "(GHC.Prim.State# GHC.Prim.RealWorld)"-{-# LINE 202 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 1105 "./src-ag/ExecutionPlan2Clean.ag" #-}---- rules are "deinlined" to prevent needless code duplication.--- if there is only a bit of duplication, we allow ghc to decide if it is worth it.--- if the duplication crosses this threshold, however, we tell ghc definitely not to inline it.-ruleInlineThresholdSoft :: Int-ruleInlineThresholdSoft = 3--ruleInlineThresholdHard :: Int-ruleInlineThresholdHard = 5--reallyOftenUsedThreshold :: Int-reallyOftenUsedThreshold = 12-{-# LINE 217 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 1172 "./src-ag/ExecutionPlan2Clean.ag" #-}--data NonLocalAttr-  = AttrInh Identifier Identifier-  | AttrSyn Identifier Identifier deriving Show--mkNonLocalAttr :: Bool -> Identifier -> Identifier -> NonLocalAttr-mkNonLocalAttr True  = AttrInh  -- True: inherited attr-mkNonLocalAttr False = AttrSyn--lookupAttrType :: NonLocalAttr -> Map Identifier Attributes -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc-lookupAttrType (AttrInh child name) inhs _ = lookupType child name inhs-lookupAttrType (AttrSyn child name) _ syns = lookupType child name syns---- Note: if the child takes type parameters, the type of an attribute of this child may refer to these parameters. This means that--- the actual type of the attribute needs to have its type parameters substituted with the actual type argument of the child.--- However, for now we simply decide to return Nothing in this case, which skips the type annotation.-lookupType :: Identifier -> Identifier -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc-lookupType child name attrMp childMp-  | noParameters childTp = Just ppDoc-  | otherwise            = Nothing-  where-    attrTp     = Map.findWithDefault (error "lookupType: the attribute is not in the attrs of the child") name childAttrs-    childAttrs = Map.findWithDefault (error "lookupType: the attributes of the nonterm are not in the map") nonterm attrMp-    nonterm    = extractNonterminal childTp-    childTp    = Map.findWithDefault (error ("lookupType: the child " ++ show child ++ "is not in the appropriate map")) child childMp-    ppDoc      = ppTp attrTp--noParameters :: Type -> Bool-noParameters (Haskell _)   = True-noParameters (NT _ args _) = null args-{-# LINE 250 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 1259 "./src-ag/ExecutionPlan2Clean.ag" #-}---- a `compatibleKind` b  means: can kind b be invoked from a-compatibleKind :: VisitKind -> VisitKind -> Bool-compatibleKind _              _             = True--compatibleRule :: VisitKind -> Bool -> Bool-compatibleRule (VisitPure _) False = False-compatibleRule _             _     = True-{-# LINE 261 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 1281 "./src-ag/ExecutionPlan2Clean.ag" #-}--unionWithSum = Map.unionWith (+)-{-# LINE 266 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 1304 "./src-ag/ExecutionPlan2Clean.ag" #-}--uwSetUnion :: (Ord a, Ord b) => Map a (Set b) -> Map a (Set b) -> Map a (Set b)-uwSetUnion = Map.unionWith Set.union--uwMapUnion :: (Ord a, Ord b) => Map a (Map b c) -> Map a (Map b c) -> Map a (Map b c)-uwMapUnion = Map.unionWith Map.union-{-# LINE 275 "dist/build/ExecutionPlan2Clean.hs" #-}--{-# LINE 1499 "./src-ag/ExecutionPlan2Clean.ag" #-}--renderDocs :: [PP_Doc] -> String-renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) ""--writeModule :: FilePath -> [PP_Doc] -> IO ()-writeModule path docs-  = do bExists <- doesFileExist path-       if bExists-        then do input <- readFile path-                seq (length input) (return ())-                if input /= output-                 then dumpIt-                 else return ()-        else dumpIt-  where-    output = renderDocs docs-    dumpIt = writeFile path output--cleanIclModuleHeader :: Options -> String -> String-cleanIclModuleHeader flags input- = case moduleName flags-   of Name nm -> genMod nm-      Default -> genMod (defaultModuleName input)-      NoName  -> ""-   where genMod x = "implementation module " ++ x --cleanDclModuleHeader :: Options -> String -> Maybe String -> String-cleanDclModuleHeader flags input export- = case moduleName flags-   of Name nm -> genMod nm-      Default -> genMod (defaultModuleName input)-      NoName  -> ""-   where genMod x = "definition module " ++ x ++ genExp export x-         genExp Nothing _ = ""-         genExp (Just e) x = "(module " ++ x ++ ", module " ++ e ++ ")"--defaultModuleName :: String -> String-defaultModuleName = dropExtension--mkIclModuleHeader :: Maybe (String,String,String) -> String -> String -> String -> Bool -> String-mkIclModuleHeader Nothing defaultName suffix _ _-  = "implementation module " ++ defaultName ++ suffix-mkIclModuleHeader (Just (name, exports, imports)) _ suffix addExports replaceExports-  = "implementation module " ++ name ++ suffix ++ "\n" ++ imports ++ "\n"--mkDclModuleHeader :: Maybe (String,String,String) -> String -> String -> String -> Bool -> String-mkDclModuleHeader Nothing defaultName suffix _ _-  = "definition module " ++ defaultName ++ suffix-mkDclModuleHeader (Just (name, exports, _)) _ suffix addExports replaceExports-  = "definition module " ++ name ++ suffix ++ ex ++ "\n"-  where-    ex  = if null exports || (replaceExports && null addExports)-          then ""-          else if null addExports-               then exports-               else if replaceExports-                    then addExports-                    else exports ++ "," ++ addExports-{-# LINE 336 "dist/build/ExecutionPlan2Clean.hs" #-}--- EChild --------------------------------------------------------- wrapper-data Inh_EChild  = Inh_EChild { allInitStates_Inh_EChild :: (Map NontermIdent Int), con_Inh_EChild :: (ConstructorIdent), constructorTypeMap_Inh_EChild :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_EChild :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_EChild :: (String -> String -> String -> Bool -> String), importBlocks_Inh_EChild :: (PP_Doc), mainFile_Inh_EChild :: (String), mainName_Inh_EChild :: (String), nt_Inh_EChild :: (NontermIdent), options_Inh_EChild :: (Options), textBlocks_Inh_EChild :: (PP_Doc) }-data Syn_EChild  = Syn_EChild { argnamesw_Syn_EChild :: ( PP_Doc ), argpats_Syn_EChild :: (  PP_Doc  ), argtps_Syn_EChild :: (  PP_Doc  ), childTypes_Syn_EChild :: (Map Identifier Type), childintros_Syn_EChild :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), datatype_Syn_EChild :: (PP_Doc), recfields_Syn_EChild :: ( [Identifier] ), recordtype_Syn_EChild :: (PP_Doc), terminaldefs_Syn_EChild :: (Set String), usedArgs_Syn_EChild :: (Set String) }-{-# INLINABLE wrap_EChild #-}-wrap_EChild :: T_EChild  -> Inh_EChild  -> (Syn_EChild )-wrap_EChild (T_EChild act) (Inh_EChild _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks-        (T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs) <- return (inv_EChild_s2 sem arg)-        return (Syn_EChild _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs)-   )---- cata-{-# NOINLINE sem_EChild #-}-sem_EChild :: EChild  -> T_EChild -sem_EChild ( EChild name_ tp_ kind_ hasAround_ merges_ isMerged_ ) = sem_EChild_EChild name_ tp_ kind_ hasAround_ merges_ isMerged_-sem_EChild ( ETerm name_ tp_ ) = sem_EChild_ETerm name_ tp_---- semantic domain-newtype T_EChild  = T_EChild {-                             attach_T_EChild :: Identity (T_EChild_s2 )-                             }-newtype T_EChild_s2  = C_EChild_s2 {-                                   inv_EChild_s2 :: (T_EChild_v1 )-                                   }-data T_EChild_s3  = C_EChild_s3-type T_EChild_v1  = (T_EChild_vIn1 ) -> (T_EChild_vOut1 )-data T_EChild_vIn1  = T_EChild_vIn1 (Map NontermIdent Int) (ConstructorIdent) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (String) (String) (NontermIdent) (Options) (PP_Doc)-data T_EChild_vOut1  = T_EChild_vOut1 ( PP_Doc ) (  PP_Doc  ) (  PP_Doc  ) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (PP_Doc) ( [Identifier] ) (PP_Doc) (Set String) (Set String)-{-# NOINLINE sem_EChild_EChild #-}-sem_EChild_EChild :: (Identifier) -> (Type) -> (ChildKind) -> (Bool) -> (Maybe [Identifier]) -> (Bool) -> T_EChild -sem_EChild_EChild arg_name_ arg_tp_ arg_kind_ arg_hasAround_ _ _ = T_EChild (return st2) where-   {-# NOINLINE st2 #-}-   st2 = let-      v1 :: T_EChild_v1 -      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) -> ( let-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule0 _usedArgs_augmented_f1 _usedArgs_augmented_syn-         _usedArgs_augmented_f1 = rule1 arg_kind_ arg_name_-         _tpDoc = rule2 _addStrict arg_tp_-         _strNm = rule3 _lhsIcon _lhsInt arg_name_-         _field = rule4 _lhsIoptions _strNm _tpDoc-         _recordfield = rule5 _strNm _tpDoc-         _addStrict = rule6 _lhsIoptions-         _lhsOdatatype :: PP_Doc-         _lhsOdatatype = rule7 _field arg_kind_-         _lhsOrecordtype :: PP_Doc-         _lhsOrecordtype = rule8 _recordfield arg_kind_-         _lhsOargnamesw ::  PP_Doc -         _lhsOargnamesw = rule9 _nt arg_kind_ arg_name_-         _lhsOargtps ::   PP_Doc  -         _lhsOargtps = rule10 arg_kind_ arg_tp_-         _argpats = rule11 arg_kind_ arg_name_-         _lhsOrecfields ::  [Identifier] -         _lhsOrecfields = rule12 arg_kind_ arg_name_-         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule13 _introcode arg_name_-         _isDefor = rule14 arg_tp_-         _valcode = rule15 _isDefor _lhsIoptions _nt arg_kind_ arg_name_-         _aroundcode = rule16 _lhsIoptions arg_hasAround_ arg_name_-         _introcode = rule17 _addbang _aroundcode _initSt _isDefor _lhsIoptions _nt _valcode arg_hasAround_ arg_kind_ arg_name_-         _nt = rule18 arg_tp_-         _addbang = rule19 _lhsIoptions-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule20 arg_name_ arg_tp_-         _initSt = rule21 _lhsIallInitStates _nt-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule22  ()-         _usedArgs_augmented_syn = rule23  ()-         _lhsOargpats ::   PP_Doc  -         _lhsOargpats = rule24 _argpats-         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs-         in __result_ )-     in C_EChild_s2 v1-   {-# INLINE rule0 #-}-   rule0 = \ _usedArgs_augmented_f1 _usedArgs_augmented_syn ->-     foldr ($) _usedArgs_augmented_syn [_usedArgs_augmented_f1]-   {-# INLINE rule1 #-}-   rule1 = \ kind_ name_ ->-                         \s -> case kind_ of-                               ChildSyntax -> Set.insert ("arg_" ++ show name_ ++ "_") s-                               _           -> s-   {-# INLINE rule2 #-}-   {-# LINE 243 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule2 = \ _addStrict tp_ ->-                     {-# LINE 243 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     _addStrict     $ pp_parens $ ppTp $ removeDeforested tp_-                     {-# LINE 426 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule3 #-}-   {-# LINE 244 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule3 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->-                     {-# LINE 244 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     recordFieldname _lhsInt _lhsIcon name_-                     {-# LINE 432 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule4 #-}-   {-# LINE 245 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule4 = \ ((_lhsIoptions) :: Options) _strNm _tpDoc ->-                     {-# LINE 245 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     if dataRecords _lhsIoptions-                     then _strNm     >#< "::" >#< _tpDoc-                     else _tpDoc-                     {-# LINE 440 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule5 #-}-   {-# LINE 248 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule5 = \ _strNm _tpDoc ->-                           {-# LINE 248 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           _strNm     >#< "::" >#< _tpDoc-                           {-# LINE 446 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule6 #-}-   {-# LINE 249 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule6 = \ ((_lhsIoptions) :: Options) ->-                        {-# LINE 249 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        \x -> if strictData _lhsIoptions then "!" >|< x else x-                        {-# LINE 452 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule7 #-}-   {-# LINE 250 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule7 = \ _field kind_ ->-                             {-# LINE 250 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             case kind_ of-                               ChildAttr -> empty-                               _         -> _field-                             {-# LINE 460 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule8 #-}-   {-# LINE 254 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule8 = \ _recordfield kind_ ->-                               {-# LINE 254 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               case kind_ of-                                 ChildAttr -> empty-                                 _         -> _recordfield-                               {-# LINE 468 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule9 #-}-   {-# LINE 342 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule9 = \ _nt kind_ name_ ->-                             {-# LINE 342 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             case kind_ of-                               ChildSyntax     -> "(" >#< "sem_" >|< _nt     >#< name_ >|< "_" >#< ")"-                               ChildAttr       -> empty-                               ChildReplace tp -> "(" >#< "sem_" >|< extractNonterminal tp >#< name_ >|< "_" >#< ")"-                             {-# LINE 477 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule10 #-}-   {-# LINE 633 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule10 = \ kind_ tp_ ->-                            {-# LINE 633 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            case kind_ of-                              ChildSyntax     -> pp_parens $ ppDefor tp_-                              ChildReplace tp -> pp_parens $ ppDefor tp-                              _               -> empty-                            {-# LINE 486 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule11 #-}-   {-# LINE 637 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule11 = \ kind_ name_ ->-                           {-# LINE 637 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           case kind_ of-                             ChildSyntax    -> name_ >|< "_"-                             ChildReplace _ -> name_ >|< "_"-                             _              -> empty-                           {-# LINE 495 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule12 #-}-   {-# LINE 642 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule12 = \ kind_ name_ ->-                             {-# LINE 642 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             case kind_ of-                               ChildSyntax    -> [name_]-                               ChildReplace _ -> [name_]-                               _              -> []-                             {-# LINE 504 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule13 #-}-   {-# LINE 946 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule13 = \ _introcode name_ ->-                               {-# LINE 946 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               Map.singleton name_ _introcode-                               {-# LINE 510 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule14 #-}-   {-# LINE 947 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule14 = \ tp_ ->-                               {-# LINE 947 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               case tp_ of-                                 NT _ _ defor -> defor-                                 _            -> False-                               {-# LINE 518 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule15 #-}-   {-# LINE 950 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule15 = \ _isDefor ((_lhsIoptions) :: Options) _nt kind_ name_ ->-                               {-# LINE 950 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               case kind_ of-                                 ChildSyntax -> "arg_" >|< name_ >|< "_"-                                 ChildAttr   ->-                                                let prefix | not _isDefor     = if lateHigherOrderBinding _lhsIoptions-                                                                                then lateSemNtLabel _nt     >#< lhsname _lhsIoptions True idLateBindingAttr-                                                                                else "sem_" >|< _nt-                                                           | otherwise        = empty-                                                in pp_parens (prefix >#< instname name_)-                                 ChildReplace _ ->-                                                   pp_parens (instname name_ >#< name_ >|< "_")-                               {-# LINE 533 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule16 #-}-   {-# LINE 961 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule16 = \ ((_lhsIoptions) :: Options) hasAround_ name_ ->-                               {-# LINE 961 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               if hasAround_-                               then locname _lhsIoptions name_ >|< "_around"-                               else empty-                               {-# LINE 541 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule17 #-}-   {-# LINE 964 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule17 = \ _addbang _aroundcode _initSt _isDefor ((_lhsIoptions) :: Options) _nt _valcode hasAround_ kind_ name_ ->-                               {-# LINE 964 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               \kind fmtMode ->-                                        let pat       = text $ stname name_ _initSt-                                            patStrict = _addbang     pat-                                            attach    = "attach_T_" >|< _nt     >#< pp_parens (_aroundcode     >#< _valcode    )-                                            runAttach = unMon _lhsIoptions >#< pp_parens attach-                                            decl      = case kind of-                                                          VisitPure False -> pat >#< "=" >#< runAttach-                                                          VisitPure True  -> patStrict >#< "=" >#< runAttach-                                                          VisitMonadic    -> attach >#< ">>= \\" >#< patStrict >#< "->"-                                        in if compatibleAttach kind _nt     _lhsIoptions-                                           then Right ( fmtDecl False fmtMode decl-                                                      , Set.singleton (stname name_ _initSt    )-                                                      , case kind_ of-                                                          ChildAttr   -> Map.insert (instname name_) Nothing $-                                                                           ( if _isDefor     || not (lateHigherOrderBinding _lhsIoptions)-                                                                             then id-                                                                             else Map.insert (lhsname _lhsIoptions True idLateBindingAttr) (Just $ AttrInh _LHS idLateBindingAttr)-                                                                           ) $-                                                                           ( if hasAround_-                                                                             then Map.insert (locname _lhsIoptions (name_) ++ "_around") Nothing-                                                                             else id-                                                                           ) $ Map.empty-                                                          ChildReplace _ -> Map.singleton (instname name_) Nothing-                                                          ChildSyntax    -> Map.empty-                                                      )-                                           else Left $ IncompatibleAttachKind name_ kind-                               {-# LINE 572 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule18 #-}-   {-# LINE 990 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule18 = \ tp_ ->-                            {-# LINE 990 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            extractNonterminal tp_-                            {-# LINE 578 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule19 #-}-   {-# LINE 1568 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule19 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1568 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 584 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule20 #-}-   {-# LINE 1620 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule20 = \ name_ tp_ ->-                     {-# LINE 1620 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     Map.singleton name_ tp_-                     {-# LINE 590 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule21 #-}-   {-# LINE 1664 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule21 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) _nt ->-                 {-# LINE 1664 "./src-ag/ExecutionPlan2Clean.ag" #-}-                 Map.findWithDefault (error "nonterminal not in allInitStates map") _nt     _lhsIallInitStates-                 {-# LINE 596 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule22 #-}-   rule22 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule23 #-}-   rule23 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule24 #-}-   rule24 = \ _argpats ->-     _argpats-{-# NOINLINE sem_EChild_ETerm #-}-sem_EChild_ETerm :: (Identifier) -> (Type) -> T_EChild -sem_EChild_ETerm arg_name_ arg_tp_ = T_EChild (return st2) where-   {-# NOINLINE st2 #-}-   st2 = let-      v1 :: T_EChild_v1 -      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) -> ( let-         _tpDoc = rule25 _addStrict arg_tp_-         _strNm = rule26 _lhsIcon _lhsInt arg_name_-         _field = rule27 _lhsIoptions _strNm _tpDoc-         _recordfield = rule28 _strNm _tpDoc-         _addStrict = rule29 _lhsIoptions-         _lhsOdatatype :: PP_Doc-         _lhsOdatatype = rule30 _field-         _lhsOrecordtype :: PP_Doc-         _lhsOrecordtype = rule31 _recordfield-         _lhsOargnamesw ::  PP_Doc -         _lhsOargnamesw = rule32 arg_name_-         _lhsOargtps ::   PP_Doc  -         _lhsOargtps = rule33 arg_tp_-         _argpats = rule34 _addbang arg_name_-         _lhsOrecfields ::  [Identifier] -         _lhsOrecfields = rule35 arg_name_-         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule36 arg_name_-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule37 arg_name_-         _addbang = rule38 _lhsIoptions-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule39 arg_name_ arg_tp_-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule40  ()-         _lhsOargpats ::   PP_Doc  -         _lhsOargpats = rule41 _argpats-         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs-         in __result_ )-     in C_EChild_s2 v1-   {-# INLINE rule25 #-}-   {-# LINE 243 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule25 = \ _addStrict tp_ ->-                     {-# LINE 243 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     _addStrict     $ pp_parens $ ppTp $ removeDeforested tp_-                     {-# LINE 648 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule26 #-}-   {-# LINE 244 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule26 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->-                     {-# LINE 244 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     recordFieldname _lhsInt _lhsIcon name_-                     {-# LINE 654 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule27 #-}-   {-# LINE 245 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule27 = \ ((_lhsIoptions) :: Options) _strNm _tpDoc ->-                     {-# LINE 245 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     if dataRecords _lhsIoptions-                     then _strNm     >#< "::" >#< _tpDoc-                     else _tpDoc-                     {-# LINE 662 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule28 #-}-   {-# LINE 248 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule28 = \ _strNm _tpDoc ->-                           {-# LINE 248 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           _strNm     >#< "::" >#< _tpDoc-                           {-# LINE 668 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule29 #-}-   {-# LINE 249 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule29 = \ ((_lhsIoptions) :: Options) ->-                        {-# LINE 249 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        \x -> if strictData _lhsIoptions then "!" >|< x else x-                        {-# LINE 674 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule30 #-}-   {-# LINE 257 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule30 = \ _field ->-                                {-# LINE 257 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                _field-                                {-# LINE 680 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule31 #-}-   {-# LINE 258 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule31 = \ _recordfield ->-                                {-# LINE 258 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                _recordfield-                                {-# LINE 686 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule32 #-}-   {-# LINE 346 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule32 = \ name_ ->-                             {-# LINE 346 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             text $ fieldname name_-                             {-# LINE 692 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule33 #-}-   {-# LINE 648 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule33 = \ tp_ ->-                             {-# LINE 648 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             pp_parens $ show tp_-                             {-# LINE 698 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule34 #-}-   {-# LINE 649 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule34 = \ _addbang name_ ->-                             {-# LINE 649 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             _addbang     $ text $ fieldname name_-                             {-# LINE 704 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule35 #-}-   {-# LINE 650 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule35 = \ name_ ->-                             {-# LINE 650 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             [name_]-                             {-# LINE 710 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule36 #-}-   {-# LINE 945 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule36 = \ name_ ->-                               {-# LINE 945 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               Map.singleton name_ (\_ _ -> Right (empty, Set.empty, Map.empty))-                               {-# LINE 716 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule37 #-}-   {-# LINE 1318 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule37 = \ name_ ->-                       {-# LINE 1318 "./src-ag/ExecutionPlan2Clean.ag" #-}-                       Set.singleton $ fieldname name_-                       {-# LINE 722 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule38 #-}-   {-# LINE 1569 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule38 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1569 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 728 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule39 #-}-   {-# LINE 1620 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule39 = \ name_ tp_ ->-                     {-# LINE 1620 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     Map.singleton name_ tp_-                     {-# LINE 734 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule40 #-}-   rule40 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule41 #-}-   rule41 = \ _argpats ->-     _argpats---- EChildren ------------------------------------------------------ wrapper-data Inh_EChildren  = Inh_EChildren { allInitStates_Inh_EChildren :: (Map NontermIdent Int), con_Inh_EChildren :: (ConstructorIdent), constructorTypeMap_Inh_EChildren :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_EChildren :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_EChildren :: (String -> String -> String -> Bool -> String), importBlocks_Inh_EChildren :: (PP_Doc), mainFile_Inh_EChildren :: (String), mainName_Inh_EChildren :: (String), nt_Inh_EChildren :: (NontermIdent), options_Inh_EChildren :: (Options), textBlocks_Inh_EChildren :: (PP_Doc) }-data Syn_EChildren  = Syn_EChildren { argnamesw_Syn_EChildren :: ([PP_Doc]), argpats_Syn_EChildren :: ( [PP_Doc] ), argtps_Syn_EChildren :: ( [PP_Doc] ), childTypes_Syn_EChildren :: (Map Identifier Type), childintros_Syn_EChildren :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), datatype_Syn_EChildren :: ([PP_Doc]), recfields_Syn_EChildren :: ( [Identifier] ), recordtype_Syn_EChildren :: ([PP_Doc]), terminaldefs_Syn_EChildren :: (Set String), usedArgs_Syn_EChildren :: (Set String) }-{-# INLINABLE wrap_EChildren #-}-wrap_EChildren :: T_EChildren  -> Inh_EChildren  -> (Syn_EChildren )-wrap_EChildren (T_EChildren act) (Inh_EChildren _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks-        (T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs) <- return (inv_EChildren_s5 sem arg)-        return (Syn_EChildren _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs)-   )---- cata-{-# NOINLINE sem_EChildren #-}-sem_EChildren :: EChildren  -> T_EChildren -sem_EChildren list = Prelude.foldr sem_EChildren_Cons sem_EChildren_Nil (Prelude.map sem_EChild list)---- semantic domain-newtype T_EChildren  = T_EChildren {-                                   attach_T_EChildren :: Identity (T_EChildren_s5 )-                                   }-newtype T_EChildren_s5  = C_EChildren_s5 {-                                         inv_EChildren_s5 :: (T_EChildren_v4 )-                                         }-data T_EChildren_s6  = C_EChildren_s6-type T_EChildren_v4  = (T_EChildren_vIn4 ) -> (T_EChildren_vOut4 )-data T_EChildren_vIn4  = T_EChildren_vIn4 (Map NontermIdent Int) (ConstructorIdent) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (String) (String) (NontermIdent) (Options) (PP_Doc)-data T_EChildren_vOut4  = T_EChildren_vOut4 ([PP_Doc]) ( [PP_Doc] ) ( [PP_Doc] ) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ([PP_Doc]) ( [Identifier] ) ([PP_Doc]) (Set String) (Set String)-{-# NOINLINE sem_EChildren_Cons #-}-sem_EChildren_Cons :: T_EChild  -> T_EChildren  -> T_EChildren -sem_EChildren_Cons arg_hd_ arg_tl_ = T_EChildren (return st5) where-   {-# NOINLINE st5 #-}-   st5 = let-      v4 :: T_EChildren_v4 -      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) -> ( let-         _hdX2 = Control.Monad.Identity.runIdentity (attach_T_EChild (arg_hd_))-         _tlX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_tl_))-         (T_EChild_vOut1 _hdIargnamesw _hdIargpats _hdIargtps _hdIchildTypes _hdIchildintros _hdIdatatype _hdIrecfields _hdIrecordtype _hdIterminaldefs _hdIusedArgs) = inv_EChild_s2 _hdX2 (T_EChild_vIn1 _hdOallInitStates _hdOcon _hdOconstructorTypeMap _hdOdclModuleHeader _hdOiclModuleHeader _hdOimportBlocks _hdOmainFile _hdOmainName _hdOnt _hdOoptions _hdOtextBlocks)-         (T_EChildren_vOut4 _tlIargnamesw _tlIargpats _tlIargtps _tlIchildTypes _tlIchildintros _tlIdatatype _tlIrecfields _tlIrecordtype _tlIterminaldefs _tlIusedArgs) = inv_EChildren_s5 _tlX5 (T_EChildren_vIn4 _tlOallInitStates _tlOcon _tlOconstructorTypeMap _tlOdclModuleHeader _tlOiclModuleHeader _tlOimportBlocks _tlOmainFile _tlOmainName _tlOnt _tlOoptions _tlOtextBlocks)-         _lhsOargnamesw :: [PP_Doc]-         _lhsOargnamesw = rule42 _hdIargnamesw _tlIargnamesw-         _lhsOargpats ::  [PP_Doc] -         _lhsOargpats = rule43 _hdIargpats _tlIargpats-         _lhsOargtps ::  [PP_Doc] -         _lhsOargtps = rule44 _hdIargtps _tlIargtps-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule45 _hdIchildTypes _tlIchildTypes-         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule46 _hdIchildintros _tlIchildintros-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule47 _hdIdatatype _tlIdatatype-         _lhsOrecfields ::  [Identifier] -         _lhsOrecfields = rule48 _hdIrecfields _tlIrecfields-         _lhsOrecordtype :: [PP_Doc]-         _lhsOrecordtype = rule49 _hdIrecordtype _tlIrecordtype-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule50 _hdIterminaldefs _tlIterminaldefs-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule51 _hdIusedArgs _tlIusedArgs-         _hdOallInitStates = rule52 _lhsIallInitStates-         _hdOcon = rule53 _lhsIcon-         _hdOconstructorTypeMap = rule54 _lhsIconstructorTypeMap-         _hdOdclModuleHeader = rule55 _lhsIdclModuleHeader-         _hdOiclModuleHeader = rule56 _lhsIiclModuleHeader-         _hdOimportBlocks = rule57 _lhsIimportBlocks-         _hdOmainFile = rule58 _lhsImainFile-         _hdOmainName = rule59 _lhsImainName-         _hdOnt = rule60 _lhsInt-         _hdOoptions = rule61 _lhsIoptions-         _hdOtextBlocks = rule62 _lhsItextBlocks-         _tlOallInitStates = rule63 _lhsIallInitStates-         _tlOcon = rule64 _lhsIcon-         _tlOconstructorTypeMap = rule65 _lhsIconstructorTypeMap-         _tlOdclModuleHeader = rule66 _lhsIdclModuleHeader-         _tlOiclModuleHeader = rule67 _lhsIiclModuleHeader-         _tlOimportBlocks = rule68 _lhsIimportBlocks-         _tlOmainFile = rule69 _lhsImainFile-         _tlOmainName = rule70 _lhsImainName-         _tlOnt = rule71 _lhsInt-         _tlOoptions = rule72 _lhsIoptions-         _tlOtextBlocks = rule73 _lhsItextBlocks-         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs-         in __result_ )-     in C_EChildren_s5 v4-   {-# INLINE rule42 #-}-   rule42 = \ ((_hdIargnamesw) ::  PP_Doc ) ((_tlIargnamesw) :: [PP_Doc]) ->-     _hdIargnamesw : _tlIargnamesw-   {-# INLINE rule43 #-}-   rule43 = \ ((_hdIargpats) ::   PP_Doc  ) ((_tlIargpats) ::  [PP_Doc] ) ->-     _hdIargpats : _tlIargpats-   {-# INLINE rule44 #-}-   rule44 = \ ((_hdIargtps) ::   PP_Doc  ) ((_tlIargtps) ::  [PP_Doc] ) ->-     _hdIargtps : _tlIargtps-   {-# INLINE rule45 #-}-   rule45 = \ ((_hdIchildTypes) :: Map Identifier Type) ((_tlIchildTypes) :: Map Identifier Type) ->-     _hdIchildTypes `mappend` _tlIchildTypes-   {-# INLINE rule46 #-}-   rule46 = \ ((_hdIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ((_tlIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _hdIchildintros `Map.union` _tlIchildintros-   {-# INLINE rule47 #-}-   rule47 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->-     _hdIdatatype : _tlIdatatype-   {-# INLINE rule48 #-}-   rule48 = \ ((_hdIrecfields) ::  [Identifier] ) ((_tlIrecfields) ::  [Identifier] ) ->-     _hdIrecfields ++ _tlIrecfields-   {-# INLINE rule49 #-}-   rule49 = \ ((_hdIrecordtype) :: PP_Doc) ((_tlIrecordtype) :: [PP_Doc]) ->-     _hdIrecordtype : _tlIrecordtype-   {-# INLINE rule50 #-}-   rule50 = \ ((_hdIterminaldefs) :: Set String) ((_tlIterminaldefs) :: Set String) ->-     _hdIterminaldefs `Set.union` _tlIterminaldefs-   {-# INLINE rule51 #-}-   rule51 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->-     _hdIusedArgs `Set.union` _tlIusedArgs-   {-# INLINE rule52 #-}-   rule52 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule53 #-}-   rule53 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule54 #-}-   rule54 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule55 #-}-   rule55 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule56 #-}-   rule56 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule57 #-}-   rule57 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule58 #-}-   rule58 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule59 #-}-   rule59 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule60 #-}-   rule60 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule61 #-}-   rule61 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule62 #-}-   rule62 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule63 #-}-   rule63 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule64 #-}-   rule64 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule65 #-}-   rule65 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule66 #-}-   rule66 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule67 #-}-   rule67 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule68 #-}-   rule68 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule69 #-}-   rule69 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule70 #-}-   rule70 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule71 #-}-   rule71 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule72 #-}-   rule72 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule73 #-}-   rule73 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-{-# NOINLINE sem_EChildren_Nil #-}-sem_EChildren_Nil ::  T_EChildren -sem_EChildren_Nil  = T_EChildren (return st5) where-   {-# NOINLINE st5 #-}-   st5 = let-      v4 :: T_EChildren_v4 -      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) -> ( let-         _lhsOargnamesw :: [PP_Doc]-         _lhsOargnamesw = rule74  ()-         _lhsOargpats ::  [PP_Doc] -         _lhsOargpats = rule75  ()-         _lhsOargtps ::  [PP_Doc] -         _lhsOargtps = rule76  ()-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule77  ()-         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule78  ()-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule79  ()-         _lhsOrecfields ::  [Identifier] -         _lhsOrecfields = rule80  ()-         _lhsOrecordtype :: [PP_Doc]-         _lhsOrecordtype = rule81  ()-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule82  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule83  ()-         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs-         in __result_ )-     in C_EChildren_s5 v4-   {-# INLINE rule74 #-}-   rule74 = \  (_ :: ()) ->-     []-   {-# INLINE rule75 #-}-   rule75 = \  (_ :: ()) ->-     []-   {-# INLINE rule76 #-}-   rule76 = \  (_ :: ()) ->-     []-   {-# INLINE rule77 #-}-   rule77 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule78 #-}-   rule78 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule79 #-}-   rule79 = \  (_ :: ()) ->-     []-   {-# INLINE rule80 #-}-   rule80 = \  (_ :: ()) ->-     []-   {-# INLINE rule81 #-}-   rule81 = \  (_ :: ()) ->-     []-   {-# INLINE rule82 #-}-   rule82 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule83 #-}-   rule83 = \  (_ :: ()) ->-     Set.empty---- ENonterminal --------------------------------------------------- wrapper-data Inh_ENonterminal  = Inh_ENonterminal { allFromToStates_Inh_ENonterminal :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminal :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminal :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminal :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), constructorTypeMap_Inh_ENonterminal :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ENonterminal :: (String -> String -> String -> Bool -> String), derivings_Inh_ENonterminal :: (Derivings), iclModuleHeader_Inh_ENonterminal :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ENonterminal :: (PP_Doc), inhmap_Inh_ENonterminal :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminal :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminal :: (String), mainName_Inh_ENonterminal :: (String), options_Inh_ENonterminal :: (Options), synmap_Inh_ENonterminal :: (Map NontermIdent Attributes), textBlocks_Inh_ENonterminal :: (PP_Doc), typeSyns_Inh_ENonterminal :: (TypeSyns), wrappers_Inh_ENonterminal :: (Set NontermIdent) }-data Syn_ENonterminal  = Syn_ENonterminal { appendCommon_Syn_ENonterminal :: ( PP_Doc ), appendMain_Syn_ENonterminal :: ( PP_Doc ), childvisit_Syn_ENonterminal :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_ENonterminal :: (Seq Error), fromToStates_Syn_ENonterminal :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_ENonterminal :: (IO ()), imports_Syn_ENonterminal :: ([PP_Doc]), initStates_Syn_ENonterminal :: (Map NontermIdent Int), output_Syn_ENonterminal :: (PP_Doc), output_dcl_Syn_ENonterminal :: (PP_Doc), semFunBndDefs_Syn_ENonterminal :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminal :: (Seq PP_Doc), visitKinds_Syn_ENonterminal :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_ENonterminal #-}-wrap_ENonterminal :: T_ENonterminal  -> Inh_ENonterminal  -> (Syn_ENonterminal )-wrap_ENonterminal (T_ENonterminal act) (Inh_ENonterminal _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers-        (T_ENonterminal_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminal_s8 sem arg)-        return (Syn_ENonterminal _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_ENonterminal #-}-sem_ENonterminal :: ENonterminal  -> T_ENonterminal -sem_ENonterminal ( ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ prods_ recursive_ hoInfo_ ) = sem_ENonterminal_ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ ( sem_EProductions prods_ ) recursive_ hoInfo_---- semantic domain-newtype T_ENonterminal  = T_ENonterminal {-                                         attach_T_ENonterminal :: Identity (T_ENonterminal_s8 )-                                         }-newtype T_ENonterminal_s8  = C_ENonterminal_s8 {-                                               inv_ENonterminal_s8 :: (T_ENonterminal_v7 )-                                               }-data T_ENonterminal_s9  = C_ENonterminal_s9-type T_ENonterminal_v7  = (T_ENonterminal_vIn7 ) -> (T_ENonterminal_vOut7 )-data T_ENonterminal_vIn7  = T_ENonterminal_vIn7 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (Derivings) (String -> String -> String -> Bool -> String) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes) (PP_Doc) (TypeSyns) (Set NontermIdent)-data T_ENonterminal_vOut7  = T_ENonterminal_vOut7 ( PP_Doc ) ( PP_Doc ) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Map NontermIdent Int) (PP_Doc) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_ENonterminal_ENonterminal #-}-sem_ENonterminal_ENonterminal :: (NontermIdent) -> ([Identifier]) -> (ClassContext) -> (StateIdentifier) -> (Maybe VisitIdentifier) -> (Map StateIdentifier StateCtx) -> (Map StateIdentifier StateCtx) -> T_EProductions  -> (Bool) -> (HigherOrderInfo) -> T_ENonterminal -sem_ENonterminal_ENonterminal arg_nt_ arg_params_ arg_classCtxs_ arg_initial_ arg_initialv_ arg_nextVisits_ arg_prevVisits_ arg_prods_ _ _ = T_ENonterminal (return st8) where-   {-# NOINLINE st8 #-}-   st8 = let-      v7 :: T_ENonterminal_v7 -      v7 = \ (T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let-         _prodsX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_prods_))-         (T_EProductions_vOut16 _prodsIallvisits _prodsIchildvisit _prodsIcount _prodsIdatatype _prodsIerrors _prodsIfromToStates _prodsIgenProdIO _prodsIimports _prodsIrecordtype _prodsIsemFunBndDefs _prodsIsemFunBndTps _prodsIsem_nt _prodsIsem_prod _prodsIsem_prod_tys _prodsIt_visits _prodsIvisitKinds _prodsIvisitdefs _prodsIvisituses) = inv_EProductions_s17 _prodsX17 (T_EProductions_vIn16 _prodsOallFromToStates _prodsOallInhmap _prodsOallInitStates _prodsOallSynmap _prodsOallVisitKinds _prodsOallchildvisit _prodsOallstates _prodsOavisitdefs _prodsOavisituses _prodsOclassCtxs _prodsOconstructorTypeMap _prodsOdclModuleHeader _prodsOiclModuleHeader _prodsOimportBlocks _prodsOinhmap _prodsOinitial _prodsOlocalAttrTypes _prodsOmainFile _prodsOmainName _prodsOnextVisits _prodsOnt _prodsOntType _prodsOoptions _prodsOparams _prodsOprevVisits _prodsOrename _prodsOsynmap _prodsOtextBlocks)-         _prodsOrename = rule84 _lhsIoptions-         _prodsOnt = rule85 arg_nt_-         _prodsOparams = rule86 arg_params_-         _prodsOclassCtxs = rule87 arg_classCtxs_-         _lhsOoutput :: PP_Doc-         _lhsOoutput = rule88 _hasWrapper _k_states _lhsIoptions _prodsIsem_prod _sem_nt _t_init_icl _t_states_icl _wr_inh_icl _wr_syn_icl _wrapper_icl arg_nt_-         _hasWrapper = rule89 _lhsIwrappers arg_nt_-         _lhsOoutput_dcl :: PP_Doc-         _lhsOoutput_dcl = rule90 _datatype _hasWrapper _lhsIoptions _prodsIsem_prod_tys _prodsIt_visits _sem_tp _semname _t_init_dcl _t_states_dcl _wr_inh_dcl _wr_syn_dcl _wrapper_dcl arg_nt_-         _classPP = rule91 arg_classCtxs_-         _aliasPre = rule92 _classPP _t_params arg_nt_-         _datatype = rule93 _aliasPre _classPP _derivings _lhsIconstructorTypeMap _lhsItypeSyns _prodsIdatatype _prodsIrecordtype _t_params arg_nt_-         _derivings = rule94 _lhsIderivings arg_nt_-         _fsemname = rule95  ()-         _semname = rule96 _fsemname arg_nt_-         _frecarg = rule97 _fsemname-         _sem_tp = rule98 _classPP _quantPP _t_params _t_type arg_nt_-         _quantPP = rule99 arg_params_-         _sem_nt = rule100 _frecarg _fsemname _lhsItypeSyns _prodsIsem_nt _sem_tp _semname arg_nt_-         (Just _prodsOinhmap) = rule101 _lhsIinhmap arg_nt_-         (Just _prodsOsynmap) = rule102 _lhsIsynmap arg_nt_-         _prodsOallInhmap = rule103 _lhsIinhmap-         _prodsOallSynmap = rule104 _lhsIsynmap-         _outedges = rule105 _prodsIallvisits-         _inedges = rule106 _prodsIallvisits-         _allstates = rule107 _inedges _outedges arg_initial_-         _stvisits = rule108 _prodsIallvisits-         _t_type = rule109 arg_nt_-         _lt_type = rule110 arg_nt_-         _t_params = rule111 arg_params_-         _t_init_icl = rule112 _lt_type _t_init_dcl _t_type-         _t_init_dcl = rule113 _lhsIoptions _t_params _t_type arg_initial_-         _t_states_icl = rule114 _allstates arg_nextVisits_ arg_nt_-         _t_states_dcl = rule115 _allstates _t_params arg_nextVisits_ arg_nt_-         _k_type = rule116 arg_nt_-         _k_states = rule117 _allstates _k_type _prodsIallvisits _t_params _t_type arg_nextVisits_ arg_nt_-         _wr_inh_icl = rule118 _genwrap_icl _wr_inhs-         _wr_syn_icl = rule119 _genwrap_icl _wr_syns-         _genwrap_icl = rule120 _addbang arg_nt_-         _wr_inh_dcl = rule121 _genwrap_dcl _wr_inhs-         _wr_syn_dcl = rule122 _genwrap_dcl _wr_syns-         _genwrap_dcl = rule123 _addbang _t_params arg_nt_-         _synAttrs = rule124 _lhsIinhmap arg_nt_-         _wr_inhs = rule125 _synAttrs _wr_filter-         _wr_inhs1 = rule126 _synAttrs-         _wr_filter = rule127 _lhsIoptions-         _wr_syns = rule128 _lhsIsynmap arg_nt_-         _inhlist = rule129 _lhsIoptions _wr_inhs-         _inhlist1 = rule130 _lhsIoptions _wr_inhs1-         _synlist = rule131 _lhsIoptions _wr_syns-         _wrapname = rule132 arg_nt_-         _inhname = rule133 arg_nt_-         _synname = rule134 arg_nt_-         _firstVisitInfo = rule135 arg_initial_ arg_nextVisits_-         _wrapper_icl = rule136 _addbang _addbangWrap _classPP _firstVisitInfo _inhlist _inhlist1 _inhname _k_type _lhsIallVisitKinds _lhsImainName _lhsIoptions _quantPP _synlist _synname _t_params _t_type _wrapname arg_initial_ arg_initialv_ arg_nt_-         _wrapper_dcl = rule137 _classPP _inhname _lhsIoptions _quantPP _synname _t_params _t_type _wrapname-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule138 _prodsIsemFunBndDefs _semFunBndDef-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule139 _prodsIsemFunBndTps _semFunBndTp-         _semFunBndDef = rule140 _semFunBndNm _semname-         _semFunBndTp = rule141 _semFunBndNm _sem_tp-         _semFunBndNm = rule142 arg_nt_-         _prodsOinitial = rule143 arg_initial_-         _prodsOallstates = rule144 _allstates-         _lhsOappendMain ::  PP_Doc -         _lhsOappendMain = rule145 _lhsIwrappers _sem_nt _wr_inh_icl _wr_syn_icl _wrapper_icl arg_nt_-         _lhsOappendCommon ::  PP_Doc -         _lhsOappendCommon = rule146 _datatype _k_states _lhsIoptions _prodsIt_visits _t_init_icl _t_states_icl-         _addbang = rule147 _lhsIoptions-         _addbangWrap = rule148  ()-         _prodsOnextVisits = rule149 arg_nextVisits_-         _prodsOprevVisits = rule150 arg_prevVisits_-         _prodsOlocalAttrTypes = rule151 _lhsIlocalAttrTypes arg_nt_-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule152 arg_initial_ arg_nt_-         _ntType = rule153 arg_nt_ arg_params_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule154 _prodsIchildvisit-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule155 _prodsIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule156 _prodsIfromToStates-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule157 _prodsIgenProdIO-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule158 _prodsIimports-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule159 _prodsIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule160 _prodsIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule161 _prodsIvisituses-         _prodsOallFromToStates = rule162 _lhsIallFromToStates-         _prodsOallInitStates = rule163 _lhsIallInitStates-         _prodsOallVisitKinds = rule164 _lhsIallVisitKinds-         _prodsOallchildvisit = rule165 _lhsIallchildvisit-         _prodsOavisitdefs = rule166 _lhsIavisitdefs-         _prodsOavisituses = rule167 _lhsIavisituses-         _prodsOconstructorTypeMap = rule168 _lhsIconstructorTypeMap-         _prodsOdclModuleHeader = rule169 _lhsIdclModuleHeader-         _prodsOiclModuleHeader = rule170 _lhsIiclModuleHeader-         _prodsOimportBlocks = rule171 _lhsIimportBlocks-         _prodsOmainFile = rule172 _lhsImainFile-         _prodsOmainName = rule173 _lhsImainName-         _prodsOntType = rule174 _ntType-         _prodsOoptions = rule175 _lhsIoptions-         _prodsOtextBlocks = rule176 _lhsItextBlocks-         __result_ = T_ENonterminal_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminal_s8 v7-   {-# INLINE rule84 #-}-   {-# LINE 58 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule84 = \ ((_lhsIoptions) :: Options) ->-                                  {-# LINE 58 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  rename _lhsIoptions-                                  {-# LINE 1140 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule85 #-}-   {-# LINE 66 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule85 = \ nt_ ->-                              {-# LINE 66 "./src-ag/ExecutionPlan2Clean.ag" #-}-                              nt_-                              {-# LINE 1146 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule86 #-}-   {-# LINE 78 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule86 = \ params_ ->-                   {-# LINE 78 "./src-ag/ExecutionPlan2Clean.ag" #-}-                   params_-                   {-# LINE 1152 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule87 #-}-   {-# LINE 82 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule87 = \ classCtxs_ ->-                      {-# LINE 82 "./src-ag/ExecutionPlan2Clean.ag" #-}-                      classCtxs_-                      {-# LINE 1158 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule88 #-}-   {-# LINE 102 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule88 = \ _hasWrapper _k_states ((_lhsIoptions) :: Options) ((_prodsIsem_prod) :: PP_Doc) _sem_nt _t_init_icl _t_states_icl _wr_inh_icl _wr_syn_icl _wrapper_icl nt_ ->-                                {-# LINE 102 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                ("// " ++ getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-')-                                >-< (if _hasWrapper-                                     then "// wrapper"-                                          >-< _wr_inh_icl-                                          >-< _wr_syn_icl-                                          >-< _wrapper_icl-                                          >-< ""-                                     else empty)-                                >-< (if   folds _lhsIoptions-                                     then "// cata"-                                          >-< _sem_nt-                                          >-< ""-                                     else empty)-                                >-< (if   semfuns _lhsIoptions-                                     then "// semantic domain"-                                          >-< _t_init_icl-                                          >-< _t_states_icl-                                          >-< _k_states-                                          >-< _prodsIsem_prod-                                          >-< ""-                                     else empty)-                                {-# LINE 1184 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule89 #-}-   {-# LINE 123 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule89 = \ ((_lhsIwrappers) :: Set NontermIdent) nt_ ->-                                    {-# LINE 123 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                    nt_ `Set.member` _lhsIwrappers-                                    {-# LINE 1190 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule90 #-}-   {-# LINE 125 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule90 = \ _datatype _hasWrapper ((_lhsIoptions) :: Options) ((_prodsIsem_prod_tys) :: PP_Doc) ((_prodsIt_visits) :: PP_Doc) _sem_tp _semname _t_init_dcl _t_states_dcl _wr_inh_dcl _wr_syn_dcl _wrapper_dcl nt_ ->-                                    {-# LINE 125 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                    ("// " ++ getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-')-                                    >-< (if dataTypes _lhsIoptions-                                         then "// data"-                                              >-< _datatype-                                              >-< ""-                                         else empty)-                                    >-< (if _hasWrapper-                                         then "// wrapper"-                                              >-< _wr_inh_dcl-                                              >-< _wr_syn_dcl-                                              >-< _wrapper_dcl-                                              >-< ""-                                         else empty)-                                    >-< (if   folds _lhsIoptions-                                         then "// cata"-                                              >-< _semname     >#< "::" >#< _sem_tp-                                              >-< ""-                                         else empty)-                                    >-< (if   semfuns _lhsIoptions-                                         then "// semantic domain"-                                              >-< _t_init_dcl-                                              >-< _t_states_dcl-                                              >-< _prodsIt_visits-                                              >-< _prodsIsem_prod_tys-                                              >-< ""-                                         else empty)-                                    {-# LINE 1221 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule91 #-}-   {-# LINE 163 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule91 = \ classCtxs_ ->-                                  {-# LINE 163 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  ppClasses $ classCtxsToDocs classCtxs_-                                  {-# LINE 1227 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule92 #-}-   {-# LINE 164 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule92 = \ _classPP _t_params nt_ ->-                                  {-# LINE 164 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  "::" >#< _classPP     >#< nt_ >#< _t_params     >#< ":=="-                                  {-# LINE 1233 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule93 #-}-   {-# LINE 165 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule93 = \ _aliasPre _classPP _derivings ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdatatype) :: [PP_Doc]) ((_prodsIrecordtype) :: PP_Doc) _t_params nt_ ->-                                  {-# LINE 165 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  case lookup nt_ _lhsItypeSyns of-                                     Nothing -> "::" >#< _classPP     >#< nt_ >#< _t_params-                                                >-< ( if null _prodsIdatatype-                                                      then empty-                                                      else if isRecordConstructor nt_ _lhsIconstructorTypeMap-                                                             then  indent 2 $ "=" >#< _prodsIrecordtype-                                                             else  indent 2 $ vlist $ ( ("=" >#< head _prodsIdatatype)-                                                                                    : (map ("|" >#<) $ tail _prodsIdatatype))-                                                    )-                                                >-< indent 2 _derivings-                                     Just (List t)     -> _aliasPre     >#< "[" >#< show t >#< "]"-                                     Just (Maybe t)    -> _aliasPre     >#< "Data.Maybe" >#< pp_parens (show t)-                                     Just (Tuple ts)   -> _aliasPre     >#< pp_parens (ppCommas $ map (show . snd) ts)-                                     Just (Either l r) -> _aliasPre     >#< "Data.Either" >#< pp_parens (show l) >#< pp_parens (show r)-                                     Just (Map k v)    -> _aliasPre     >#< "Data.Map" >#< pp_parens (show k) >#< pp_parens (show v)-                                     Just (IntMap t)   -> _aliasPre     >#< "Data.IntMap.IntMap" >#< pp_parens (show t)-                                     Just (OrdSet t)   -> _aliasPre     >#< "Data.Set.Set" >#< pp_parens (show t)-                                     Just IntSet       -> _aliasPre     >#< "Data.IntSet.IntSet"-                                  {-# LINE 1256 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule94 #-}-   {-# LINE 184 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule94 = \ ((_lhsIderivings) :: Derivings) nt_ ->-                                   {-# LINE 184 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   case Map.lookup nt_ _lhsIderivings of-                                      Nothing -> empty-                                      Just s  -> if   Set.null s-                                                 then empty-                                                 else "deriving" >#< (pp_parens $ ppCommas $ map pp $ Set.toList s)-                                   {-# LINE 1266 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule95 #-}-   {-# LINE 269 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule95 = \  (_ :: ()) ->-                                  {-# LINE 269 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  \x -> "sem_" ++ show x-                                  {-# LINE 1272 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule96 #-}-   {-# LINE 270 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule96 = \ _fsemname nt_ ->-                                 {-# LINE 270 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _fsemname     nt_-                                 {-# LINE 1278 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule97 #-}-   {-# LINE 271 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule97 = \ _fsemname ->-                                 {-# LINE 271 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 \t x -> case t of-                                            NT nt _ _ -> pp_parens (_fsemname nt >#< x)-                                            _         -> pp x-                                 {-# LINE 1286 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule98 #-}-   {-# LINE 277 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule98 = \ _classPP _quantPP _t_params _t_type nt_ ->-                                 {-# LINE 277 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _quantPP     >#< _classPP     >#< nt_ >#< _t_params     >#< "->" >#< _t_type     >#< _t_params-                                 {-# LINE 1292 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule99 #-}-   {-# LINE 278 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule99 = \ params_ ->-                                 {-# LINE 278 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 ppQuants params_-                                 {-# LINE 1298 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule100 #-}-   {-# LINE 280 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule100 = \ _frecarg _fsemname ((_lhsItypeSyns) :: TypeSyns) ((_prodsIsem_nt) :: PP_Doc) _sem_tp _semname nt_ ->-                                 {-# LINE 280 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _semname     >#< "::" >#< _sem_tp-                                 >-< case lookup nt_ _lhsItypeSyns of-                                        Nothing -> _prodsIsem_nt-                                        Just (List t) -> _semname     >#< "list" >#< "=" >#< "foldr" >#< _semname     >|< "_Cons"-                                                         >#< _semname     >|< "_Nil"-                                                         >#< case t of-                                                                NT nt _ _ -> pp_parens ("map" >#< _fsemname nt >#< "list")-                                                                _         -> pp "list"-                                        Just (Maybe t) -> _semname     >#< "'Data.Maybe'.Nothing" >#< "=" >#< _semname     >|< "_Nothing"-                                                          >-< _semname     >#< pp_parens ("'Data.Maybe'.Just just") >#< "="-                                                          >#< _semname     >|< "_Just" >#< _frecarg t "just"-                                        Just (Tuple ts) -> _semname     >#< pp_parens (ppCommas $ map fst ts) >#< "="-                                                           >#< _semname     >|< "_Tuple" >#< ppSpaced (map (\t -> _frecarg (snd t) (show $ fst t)) ts)-                                        Just (Either l r) -> _semname     >#< "('Data.Either'.Left left)" >#< "=" >#< _semname     >|< "_Left" >#< _frecarg l "left"-                                                             >-< _semname     >#< "('Data.Either'.Right right)" >#< "=" >#< _semname     >|< "_Right" >#< _frecarg r "right"-                                        Just (Map k v) -> _semname     >#< "m" >#< "=" >#< "'Data.Map'.foldrWithKey"-                                                          >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil"-                                                          >#< case v of-                                                                 NT nt _ _ -> pp_parens ("'Data.Map'.map" >#< _fsemname nt >#< "m")-                                                                 _         -> pp "m"-                                        Just (IntMap v) -> _semname     >#< "m" >#< "=" >#< "'Data.IntMap'.foldWithKey"-                                                           >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil"-                                                           >#< case v of-                                                                  NT nt _ _ -> pp_parens ("'Data.IntMap'.map" >#< _fsemname nt >#< "m")-                                                                  _         -> pp "m"-                                        Just (OrdSet t) -> _semname     >#< "s" >#< "=" >#< "foldr" >#< _semname     >|< "_Entry"-                                                           >#< _semname     >|< "_Nil"-                                                           >#< pp_parens (-                                                                 ( case t of-                                                                     NT nt _ _ -> pp_parens ("map" >#< _fsemname nt)-                                                                     _         -> empty-                                                                 ) >#< pp_parens ("'Data.IntSet'.elems" >#< "s")-                                                               )-                                        Just IntSet     -> _semname     >#< "s" >#< "=" >#< "foldr" >#< _semname     >|< "_Entry"-                                                           >#< _semname     >|< "_Nil"-                                                           >#< pp_parens ("'Data.IntSet'.elems" >#< "s")-                                 {-# LINE 1339 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule101 #-}-   {-# LINE 366 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule101 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->-                                         {-# LINE 366 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                         Map.lookup nt_ _lhsIinhmap-                                         {-# LINE 1345 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule102 #-}-   {-# LINE 367 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule102 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->-                                         {-# LINE 367 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                         Map.lookup nt_ _lhsIsynmap-                                         {-# LINE 1351 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule103 #-}-   {-# LINE 368 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule103 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-                                     {-# LINE 368 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     _lhsIinhmap-                                     {-# LINE 1357 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule104 #-}-   {-# LINE 369 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule104 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-                                     {-# LINE 369 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     _lhsIsynmap-                                     {-# LINE 1363 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule105 #-}-   {-# LINE 390 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule105 = \ ((_prodsIallvisits) :: [VisitStateState]) ->-                                   {-# LINE 390 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   Set.fromList $ map (\(_,f,_) -> f) _prodsIallvisits-                                   {-# LINE 1369 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule106 #-}-   {-# LINE 391 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule106 = \ ((_prodsIallvisits) :: [VisitStateState]) ->-                                   {-# LINE 391 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   Set.fromList $ map (\(_,_,t) -> t) _prodsIallvisits-                                   {-# LINE 1375 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule107 #-}-   {-# LINE 392 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule107 = \ _inedges _outedges initial_ ->-                                   {-# LINE 392 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   Set.insert initial_ $ _inedges     `Set.union` _outedges-                                   {-# LINE 1381 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule108 #-}-   {-# LINE 393 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule108 = \ ((_prodsIallvisits) :: [VisitStateState]) ->-                                   {-# LINE 393 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   \st -> filter (\(v,f,t) -> f == st) _prodsIallvisits-                                   {-# LINE 1387 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule109 #-}-   {-# LINE 394 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule109 = \ nt_ ->-                                   {-# LINE 394 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   "T_" >|< nt_-                                   {-# LINE 1393 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule110 #-}-   {-# LINE 395 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule110 = \ nt_ ->-                                   {-# LINE 395 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   "t_" >|< nt_-                                   {-# LINE 1399 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule111 #-}-   {-# LINE 396 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule111 = \ params_ ->-                                   {-# LINE 396 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   ppSpaced params_-                                   {-# LINE 1405 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule112 #-}-   {-# LINE 397 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule112 = \ _lt_type _t_init_dcl _t_type ->-                                       {-# LINE 397 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                       _t_init_dcl     >-<-                                       "attach_" >|< _t_type     >#< pp_parens (_t_type     >#< _lt_type    ) >#< "=" >#< _lt_type-                                       {-# LINE 1412 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule113 #-}-   {-# LINE 399 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule113 = \ ((_lhsIoptions) :: Options) _t_params _t_type initial_ ->-                                       {-# LINE 399 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                       "::" >#< _t_type     >#< _t_params     >#< "=" >#< _t_type-                                       >#<-                                       pp_parens (-                                       ppMonadType _lhsIoptions >#< pp_parens (_t_type     >|< "_s" >|< initial_ >#< _t_params    ))-                                       {-# LINE 1421 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule114 #-}-   {-# LINE 403 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule114 = \ _allstates nextVisits_ nt_ ->-                                       {-# LINE 403 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                       vlist $ map (\st ->-                                         let nt_st = nt_ >|< "_s" >|< st-                                             c_st  = "C_" >|< nt_st-                                             inv_st  = "inv_" >|< nt_st-                                             nextVisit = Map.findWithDefault ManyVis st nextVisits_-                                         in  case nextVisit of-                                               NoneVis    -> empty-                                               OneVis vId -> inv_st >#< pp_parens (c_st >#< "x") >#< "=" >#< "x"-                                               ManyVis    -> empty-                                             ) $ Set.toList _allstates-                                       {-# LINE 1436 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule115 #-}-   {-# LINE 413 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule115 = \ _allstates _t_params nextVisits_ nt_ ->-                                       {-# LINE 413 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                       vlist $ map (\st ->-                                         let nt_st   = nt_ >|< "_s" >|< st-                                             t_st    = "T_" >|< nt_st-                                             k_st    = "K_" >|< nt_st-                                             c_st    = "C_" >|< nt_st-                                             inv_st  = "inv_" >|< nt_st-                                             nextVisit = Map.findWithDefault ManyVis st nextVisits_-                                         in  case nextVisit of-                                               NoneVis    -> "::" >#< t_st >#< _t_params     >#< "=" >#< c_st-                                               OneVis vId -> "::" >#< t_st >#< _t_params     >#< "=" >#< c_st >#< (pp_parens (conNmTVisit nt_ vId >#< _t_params    ))-                                               ManyVis    -> "::" >#< t_st >#< _t_params     >#< "where" >#< c_st >#< "::"-                                                               >#< (pp_braces $ inv_st >#< "::" >#< "!" >|< pp_parens ("E.t:" >#< k_st >#< _t_params     >#< "t" >#< "->" >#< "t"))-                                                               >#< "->" >#< t_st >#< _t_params-                                             ) $ Set.toList _allstates-                                       {-# LINE 1455 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule116 #-}-   {-# LINE 430 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule116 = \ nt_ ->-                                  {-# LINE 430 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  "K_" ++ show nt_-                                  {-# LINE 1461 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule117 #-}-   {-# LINE 431 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule117 = \ _allstates _k_type ((_prodsIallvisits) :: [VisitStateState]) _t_params _t_type nextVisits_ nt_ ->-                                  {-# LINE 431 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  vlist $ map (\st ->-                                     let nt_st = nt_ >|< "_s" >|< st-                                         k_st  = "K_" >|< nt_st-                                         outg  = filter (\(v,f,t) -> f == st) _prodsIallvisits-                                         visitlist = vlist $ map (\(v,f,t) ->-                                             _k_type     >|< "_v" >|< v >#< "::" >#< k_st >#< _t_params     >#< pp_parens (_t_type     >|< "_v" >|< v >#< _t_params    )-                                              ) outg-                                         nextVisit = Map.findWithDefault ManyVis st nextVisits_-                                         decl = "::" >#< k_st >#< "k" >#< _t_params     >#< "where" >-< indent 3 visitlist-                                     in  case nextVisit of-                                           NoneVis  -> empty-                                           OneVis _ -> empty-                                           ManyVis  -> decl-                                     ) $ Set.toList _allstates-                                  {-# LINE 1480 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule118 #-}-   {-# LINE 499 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule118 = \ _genwrap_icl _wr_inhs ->-                                      {-# LINE 499 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      _genwrap_icl     "Inh" _wr_inhs-                                      {-# LINE 1486 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule119 #-}-   {-# LINE 500 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule119 = \ _genwrap_icl _wr_syns ->-                                      {-# LINE 500 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      _genwrap_icl     "Syn" _wr_syns-                                      {-# LINE 1492 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule120 #-}-   {-# LINE 501 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule120 = \ _addbang nt_ ->-                                      {-# LINE 501 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      \nm attr ->-                                        let tyConName = nm >|< "_" >|< nt_-                                        in  (let (d, _, _) = foldr (\(i, t) (d, c, n) -> (d >-<-                                                               i >|< "_" >|< tyConName >#< "::" >#< tyConName >#< "->" >#< (_addbang     $ pp_parens $ typeToHaskellString (Just nt_) [] t)-                                                               >-< i >|< "_" >|< tyConName >#< pp_parens (tyConName >#< unwords (replicate (n - c - 1) "_" ++ ["x"] ++ replicate c "_")) >#< "= x"-                                                               , c + 1, n)-                                                               ) (empty, 0, length attr) attr-                                            in  d)-                                      {-# LINE 1505 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule121 #-}-   {-# LINE 509 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule121 = \ _genwrap_dcl _wr_inhs ->-                                      {-# LINE 509 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      _genwrap_dcl     "Inh" _wr_inhs-                                      {-# LINE 1511 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule122 #-}-   {-# LINE 510 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule122 = \ _genwrap_dcl _wr_syns ->-                                      {-# LINE 510 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      _genwrap_dcl     "Syn" _wr_syns-                                      {-# LINE 1517 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule123 #-}-   {-# LINE 511 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule123 = \ _addbang _t_params nt_ ->-                                      {-# LINE 511 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      \nm attr ->-                                        let tyConName = nm >|< "_" >|< nt_-                                        in  "::" >#< tyConName >#< _t_params     >#< "=" >#< tyConName-                                            >#< (ppSpaced $ map (\(_,t) -> _addbang     $ pp_parens $ typeToHaskellString (Just nt_) [] t) attr)-                                            >-<-                                                (let (d, _, _) = foldr (\(i, t) (d, c, n) -> (d >-<-                                                                  i >|< "_" >|< tyConName >#< "::" >#< tyConName >#< "->" >#< (_addbang     $ pp_parens $ typeToHaskellString (Just nt_) [] t)-                                                                  , c + 1, n)-                                                                  ) (empty, 0, length attr) attr-                                                in  d)-                                      {-# LINE 1532 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule124 #-}-   {-# LINE 521 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule124 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->-                                  {-# LINE 521 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  fromJust $ Map.lookup nt_ _lhsIinhmap-                                  {-# LINE 1538 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule125 #-}-   {-# LINE 522 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule125 = \ _synAttrs _wr_filter ->-                                  {-# LINE 522 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  Map.toList $ _wr_filter     $ _synAttrs-                                  {-# LINE 1544 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule126 #-}-   {-# LINE 523 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule126 = \ _synAttrs ->-                                  {-# LINE 523 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  Map.toList _synAttrs-                                  {-# LINE 1550 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule127 #-}-   {-# LINE 524 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule127 = \ ((_lhsIoptions) :: Options) ->-                                   {-# LINE 524 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   if lateHigherOrderBinding _lhsIoptions-                                   then Map.delete idLateBindingAttr-                                   else id-                                   {-# LINE 1558 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule128 #-}-   {-# LINE 527 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule128 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->-                                  {-# LINE 527 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  Map.toList $ fromJust $ Map.lookup nt_ _lhsIsynmap-                                  {-# LINE 1564 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule129 #-}-   {-# LINE 528 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule129 = \ ((_lhsIoptions) :: Options) _wr_inhs ->-                                  {-# LINE 528 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  map (lhsname _lhsIoptions True . fst) _wr_inhs-                                  {-# LINE 1570 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule130 #-}-   {-# LINE 529 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule130 = \ ((_lhsIoptions) :: Options) _wr_inhs1 ->-                                  {-# LINE 529 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  map (lhsname _lhsIoptions True . fst) _wr_inhs1-                                  {-# LINE 1576 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule131 #-}-   {-# LINE 530 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule131 = \ ((_lhsIoptions) :: Options) _wr_syns ->-                                  {-# LINE 530 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  map (lhsname _lhsIoptions False . fst) _wr_syns-                                  {-# LINE 1582 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule132 #-}-   {-# LINE 531 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule132 = \ nt_ ->-                                  {-# LINE 531 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  "wrap_" ++ show nt_-                                  {-# LINE 1588 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule133 #-}-   {-# LINE 532 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule133 = \ nt_ ->-                                  {-# LINE 532 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  "Inh_" ++ show nt_-                                  {-# LINE 1594 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule134 #-}-   {-# LINE 533 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule134 = \ nt_ ->-                                  {-# LINE 533 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  "Syn_" ++ show nt_-                                  {-# LINE 1600 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule135 #-}-   {-# LINE 534 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule135 = \ initial_ nextVisits_ ->-                                        {-# LINE 534 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                        Map.findWithDefault ManyVis initial_ nextVisits_-                                        {-# LINE 1606 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule136 #-}-   {-# LINE 535 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule136 = \ _addbang _addbangWrap _classPP _firstVisitInfo _inhlist _inhlist1 _inhname _k_type ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ((_lhsImainName) :: String) ((_lhsIoptions) :: Options) _quantPP _synlist _synname _t_params _t_type _wrapname initial_ initialv_ nt_ ->-                                      {-# LINE 535 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      (_wrapname     >#< "::" >#< _quantPP     >#< _classPP     >#< _t_type     >#< _t_params-                                            >#< _inhname     >#< _t_params     >#< "->" >#< ( if monadicWrappers _lhsIoptions then ppMonadType _lhsIoptions else empty) >#< pp_parens (_synname     >#< _t_params    ))-                                      >-< (_wrapname     >#< (_addbang     $ pp_parens (_t_type     >#< pp "act"))-                                          >#< (_addbang     $ pp_parens (_inhname-                                                 >#< (ppSpaced $ map (_addbangWrap     . pp) _inhlist    )) >#< "="))-                                      >-<-                                      indent 3 (case initialv_ of-                                        Nothing -> text _synname-                                        Just initv ->-                                          let inCon  = conNmTVisitIn nt_ initv-                                              outCon = conNmTVisitOut nt_ initv-                                              pat    = _addbang     $ pp_parens $ pat0-                                              pat0   = outCon >#< ppSpaced _synlist-                                              arg    = inCon >#< ppSpaced _inhlist1-                                              ind    = case _firstVisitInfo     of-                                                         NoneVis  -> error "wrapper: initial state should have a next visit but it has none"-                                                         OneVis _ -> empty-                                                         ManyVis  -> _k_type     >|< "_v" >|< initv-                                              extra  = if dummyTokenVisit _lhsIoptions-                                                       then pp $ dummyArg _lhsIoptions True-                                                       else empty-                                              convert = case Map.lookup initv _lhsIallVisitKinds of-                                                          Just kind -> case kind of-                                                                         VisitPure _  -> text "lift"-                                                                         VisitMonadic -> empty-                                                          _         -> empty-                                              unMonad | monadicWrappers _lhsIoptions = empty-                                                      | otherwise                    = unMon _lhsIoptions-                                          in unMonad >#< "("-                                             >-< indent 2-                                                   ("act >>= \\" >#< _addbang     (pp "sem") >#< "->"-                                                   >-< "lift" >#< pp_parens arg >#< ">>= \\" >#< _addbangWrap     (pp "arg") >#< "->"-                                                   >-< convert >#< pp_parens ("inv_" >|< nt_ >|< "_s" >|< initial_ >#< "sem" >#< ind >#< "arg" >#< extra) >#< ">>= \\" >#< pat >#< "->"-                                                   >-< "lift" >#< pp_parens (_synname     >#< ppSpaced _synlist    )-                                                   )-                                             >-< ")" )-                                      >-< if lateHigherOrderBinding _lhsIoptions-                                          then indent 2 ("where" >#< lhsname _lhsIoptions True idLateBindingAttr >#< "=" >#< lateBindingFieldNm _lhsImainName)-                                          else empty-                                      {-# LINE 1650 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule137 #-}-   {-# LINE 575 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule137 = \ _classPP _inhname ((_lhsIoptions) :: Options) _quantPP _synname _t_params _t_type _wrapname ->-                                      {-# LINE 575 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      (_wrapname     >#< "::" >#< _quantPP     >#< _classPP     >#< _t_type     >#< _t_params-                                            >#< _inhname     >#< _t_params     >#< "->" >#< ( if monadicWrappers _lhsIoptions then ppMonadType _lhsIoptions else empty) >#< pp_parens (_synname     >#< _t_params    ))-                                      {-# LINE 1657 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule138 #-}-   {-# LINE 584 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule138 = \ ((_prodsIsemFunBndDefs) :: Seq PP_Doc) _semFunBndDef ->-                        {-# LINE 584 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        _semFunBndDef     Seq.<| _prodsIsemFunBndDefs-                        {-# LINE 1663 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule139 #-}-   {-# LINE 585 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule139 = \ ((_prodsIsemFunBndTps) :: Seq PP_Doc) _semFunBndTp ->-                        {-# LINE 585 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        _semFunBndTp     Seq.<| _prodsIsemFunBndTps-                        {-# LINE 1669 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule140 #-}-   {-# LINE 586 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule140 = \ _semFunBndNm _semname ->-                        {-# LINE 586 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        _semFunBndNm     >#< "=" >#< _semname-                        {-# LINE 1675 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule141 #-}-   {-# LINE 587 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule141 = \ _semFunBndNm _sem_tp ->-                        {-# LINE 587 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        _semFunBndNm     >#< "::" >#< _sem_tp-                        {-# LINE 1681 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule142 #-}-   {-# LINE 588 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule142 = \ nt_ ->-                        {-# LINE 588 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        lateSemNtLabel nt_-                        {-# LINE 1687 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule143 #-}-   {-# LINE 622 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule143 = \ initial_ ->-                                     {-# LINE 622 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     initial_-                                     {-# LINE 1693 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule144 #-}-   {-# LINE 623 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule144 = \ _allstates ->-                                     {-# LINE 623 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     _allstates-                                     {-# LINE 1699 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule145 #-}-   {-# LINE 1469 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule145 = \ ((_lhsIwrappers) :: Set NontermIdent) _sem_nt _wr_inh_icl _wr_syn_icl _wrapper_icl nt_ ->-                                      {-# LINE 1469 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      (if nt_ `Set.member` _lhsIwrappers-                                       then     _wr_inh_icl-                                            >-< _wr_syn_icl-                                            >-< _wrapper_icl-                                       else empty)-                                      >-< _sem_nt-                                      {-# LINE 1710 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule146 #-}-   {-# LINE 1475 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule146 = \ _datatype _k_states ((_lhsIoptions) :: Options) ((_prodsIt_visits) :: PP_Doc) _t_init_icl _t_states_icl ->-                                      {-# LINE 1475 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      (if dataTypes _lhsIoptions then _datatype     else empty)-                                      >-< _t_init_icl-                                      >-< _t_states_icl-                                      >-< _k_states-                                      >-< _prodsIt_visits-                                      {-# LINE 1720 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule147 #-}-   {-# LINE 1566 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule147 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1566 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 1726 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule148 #-}-   {-# LINE 1574 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule148 = \  (_ :: ()) ->-                                                        {-# LINE 1574 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                        id-                                                        {-# LINE 1732 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule149 #-}-   {-# LINE 1586 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule149 = \ nextVisits_ ->-                       {-# LINE 1586 "./src-ag/ExecutionPlan2Clean.ag" #-}-                       nextVisits_-                       {-# LINE 1738 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule150 #-}-   {-# LINE 1587 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule150 = \ prevVisits_ ->-                       {-# LINE 1587 "./src-ag/ExecutionPlan2Clean.ag" #-}-                       prevVisits_-                       {-# LINE 1744 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule151 #-}-   {-# LINE 1631 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule151 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) nt_ ->-                           {-# LINE 1631 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           Map.findWithDefault Map.empty nt_ _lhsIlocalAttrTypes-                           {-# LINE 1750 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule152 #-}-   {-# LINE 1658 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule152 = \ initial_ nt_ ->-                     {-# LINE 1658 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     Map.singleton nt_ initial_-                     {-# LINE 1756 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule153 #-}-   {-# LINE 1672 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule153 = \ nt_ params_ ->-                 {-# LINE 1672 "./src-ag/ExecutionPlan2Clean.ag" #-}-                 NT nt_ (map show params_) False-                 {-# LINE 1762 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule154 #-}-   rule154 = \ ((_prodsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _prodsIchildvisit-   {-# INLINE rule155 #-}-   rule155 = \ ((_prodsIerrors) :: Seq Error) ->-     _prodsIerrors-   {-# INLINE rule156 #-}-   rule156 = \ ((_prodsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _prodsIfromToStates-   {-# INLINE rule157 #-}-   rule157 = \ ((_prodsIgenProdIO) :: IO ()) ->-     _prodsIgenProdIO-   {-# INLINE rule158 #-}-   rule158 = \ ((_prodsIimports) :: [PP_Doc]) ->-     _prodsIimports-   {-# INLINE rule159 #-}-   rule159 = \ ((_prodsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _prodsIvisitKinds-   {-# INLINE rule160 #-}-   rule160 = \ ((_prodsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _prodsIvisitdefs-   {-# INLINE rule161 #-}-   rule161 = \ ((_prodsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _prodsIvisituses-   {-# INLINE rule162 #-}-   rule162 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule163 #-}-   rule163 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule164 #-}-   rule164 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule165 #-}-   rule165 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule166 #-}-   rule166 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule167 #-}-   rule167 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule168 #-}-   rule168 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule169 #-}-   rule169 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule170 #-}-   rule170 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule171 #-}-   rule171 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule172 #-}-   rule172 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule173 #-}-   rule173 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule174 #-}-   rule174 = \ _ntType ->-     _ntType-   {-# INLINE rule175 #-}-   rule175 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule176 #-}-   rule176 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks---- ENonterminals -------------------------------------------------- wrapper-data Inh_ENonterminals  = Inh_ENonterminals { allFromToStates_Inh_ENonterminals :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminals :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminals :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminals :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), constructorTypeMap_Inh_ENonterminals :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ENonterminals :: (String -> String -> String -> Bool -> String), derivings_Inh_ENonterminals :: (Derivings), iclModuleHeader_Inh_ENonterminals :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ENonterminals :: (PP_Doc), inhmap_Inh_ENonterminals :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminals :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminals :: (String), mainName_Inh_ENonterminals :: (String), options_Inh_ENonterminals :: (Options), synmap_Inh_ENonterminals :: (Map NontermIdent Attributes), textBlocks_Inh_ENonterminals :: (PP_Doc), typeSyns_Inh_ENonterminals :: (TypeSyns), wrappers_Inh_ENonterminals :: (Set NontermIdent) }-data Syn_ENonterminals  = Syn_ENonterminals { appendCommon_Syn_ENonterminals :: ([PP_Doc]), appendMain_Syn_ENonterminals :: ([PP_Doc]), childvisit_Syn_ENonterminals :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_ENonterminals :: (Seq Error), fromToStates_Syn_ENonterminals :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_ENonterminals :: (IO ()), imports_Syn_ENonterminals :: ([PP_Doc]), initStates_Syn_ENonterminals :: (Map NontermIdent Int), output_Syn_ENonterminals :: (PP_Doc), output_dcl_Syn_ENonterminals :: (PP_Doc), semFunBndDefs_Syn_ENonterminals :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminals :: (Seq PP_Doc), visitKinds_Syn_ENonterminals :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_ENonterminals #-}-wrap_ENonterminals :: T_ENonterminals  -> Inh_ENonterminals  -> (Syn_ENonterminals )-wrap_ENonterminals (T_ENonterminals act) (Inh_ENonterminals _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers-        (T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminals_s11 sem arg)-        return (Syn_ENonterminals _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# NOINLINE sem_ENonterminals #-}-sem_ENonterminals :: ENonterminals  -> T_ENonterminals -sem_ENonterminals list = Prelude.foldr sem_ENonterminals_Cons sem_ENonterminals_Nil (Prelude.map sem_ENonterminal list)---- semantic domain-newtype T_ENonterminals  = T_ENonterminals {-                                           attach_T_ENonterminals :: Identity (T_ENonterminals_s11 )-                                           }-newtype T_ENonterminals_s11  = C_ENonterminals_s11 {-                                                   inv_ENonterminals_s11 :: (T_ENonterminals_v10 )-                                                   }-data T_ENonterminals_s12  = C_ENonterminals_s12-type T_ENonterminals_v10  = (T_ENonterminals_vIn10 ) -> (T_ENonterminals_vOut10 )-data T_ENonterminals_vIn10  = T_ENonterminals_vIn10 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (Derivings) (String -> String -> String -> Bool -> String) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes) (PP_Doc) (TypeSyns) (Set NontermIdent)-data T_ENonterminals_vOut10  = T_ENonterminals_vOut10 ([PP_Doc]) ([PP_Doc]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Map NontermIdent Int) (PP_Doc) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_ENonterminals_Cons #-}-sem_ENonterminals_Cons :: T_ENonterminal  -> T_ENonterminals  -> T_ENonterminals -sem_ENonterminals_Cons arg_hd_ arg_tl_ = T_ENonterminals (return st11) where-   {-# NOINLINE st11 #-}-   st11 = let-      v10 :: T_ENonterminals_v10 -      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let-         _hdX8 = Control.Monad.Identity.runIdentity (attach_T_ENonterminal (arg_hd_))-         _tlX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_tl_))-         (T_ENonterminal_vOut7 _hdIappendCommon _hdIappendMain _hdIchildvisit _hdIerrors _hdIfromToStates _hdIgenProdIO _hdIimports _hdIinitStates _hdIoutput _hdIoutput_dcl _hdIsemFunBndDefs _hdIsemFunBndTps _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_ENonterminal_s8 _hdX8 (T_ENonterminal_vIn7 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOconstructorTypeMap _hdOdclModuleHeader _hdOderivings _hdOiclModuleHeader _hdOimportBlocks _hdOinhmap _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOoptions _hdOsynmap _hdOtextBlocks _hdOtypeSyns _hdOwrappers)-         (T_ENonterminals_vOut10 _tlIappendCommon _tlIappendMain _tlIchildvisit _tlIerrors _tlIfromToStates _tlIgenProdIO _tlIimports _tlIinitStates _tlIoutput _tlIoutput_dcl _tlIsemFunBndDefs _tlIsemFunBndTps _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_ENonterminals_s11 _tlX11 (T_ENonterminals_vIn10 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOconstructorTypeMap _tlOdclModuleHeader _tlOderivings _tlOiclModuleHeader _tlOimportBlocks _tlOinhmap _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOoptions _tlOsynmap _tlOtextBlocks _tlOtypeSyns _tlOwrappers)-         _lhsOappendCommon :: [PP_Doc]-         _lhsOappendCommon = rule177 _hdIappendCommon _tlIappendCommon-         _lhsOappendMain :: [PP_Doc]-         _lhsOappendMain = rule178 _hdIappendMain _tlIappendMain-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule179 _hdIchildvisit _tlIchildvisit-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule180 _hdIerrors _tlIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule181 _hdIfromToStates _tlIfromToStates-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule182 _hdIgenProdIO _tlIgenProdIO-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule183 _hdIimports _tlIimports-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule184 _hdIinitStates _tlIinitStates-         _lhsOoutput :: PP_Doc-         _lhsOoutput = rule185 _hdIoutput _tlIoutput-         _lhsOoutput_dcl :: PP_Doc-         _lhsOoutput_dcl = rule186 _hdIoutput_dcl _tlIoutput_dcl-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule187 _hdIsemFunBndDefs _tlIsemFunBndDefs-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule188 _hdIsemFunBndTps _tlIsemFunBndTps-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule189 _hdIvisitKinds _tlIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule190 _hdIvisitdefs _tlIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule191 _hdIvisituses _tlIvisituses-         _hdOallFromToStates = rule192 _lhsIallFromToStates-         _hdOallInitStates = rule193 _lhsIallInitStates-         _hdOallVisitKinds = rule194 _lhsIallVisitKinds-         _hdOallchildvisit = rule195 _lhsIallchildvisit-         _hdOavisitdefs = rule196 _lhsIavisitdefs-         _hdOavisituses = rule197 _lhsIavisituses-         _hdOconstructorTypeMap = rule198 _lhsIconstructorTypeMap-         _hdOdclModuleHeader = rule199 _lhsIdclModuleHeader-         _hdOderivings = rule200 _lhsIderivings-         _hdOiclModuleHeader = rule201 _lhsIiclModuleHeader-         _hdOimportBlocks = rule202 _lhsIimportBlocks-         _hdOinhmap = rule203 _lhsIinhmap-         _hdOlocalAttrTypes = rule204 _lhsIlocalAttrTypes-         _hdOmainFile = rule205 _lhsImainFile-         _hdOmainName = rule206 _lhsImainName-         _hdOoptions = rule207 _lhsIoptions-         _hdOsynmap = rule208 _lhsIsynmap-         _hdOtextBlocks = rule209 _lhsItextBlocks-         _hdOtypeSyns = rule210 _lhsItypeSyns-         _hdOwrappers = rule211 _lhsIwrappers-         _tlOallFromToStates = rule212 _lhsIallFromToStates-         _tlOallInitStates = rule213 _lhsIallInitStates-         _tlOallVisitKinds = rule214 _lhsIallVisitKinds-         _tlOallchildvisit = rule215 _lhsIallchildvisit-         _tlOavisitdefs = rule216 _lhsIavisitdefs-         _tlOavisituses = rule217 _lhsIavisituses-         _tlOconstructorTypeMap = rule218 _lhsIconstructorTypeMap-         _tlOdclModuleHeader = rule219 _lhsIdclModuleHeader-         _tlOderivings = rule220 _lhsIderivings-         _tlOiclModuleHeader = rule221 _lhsIiclModuleHeader-         _tlOimportBlocks = rule222 _lhsIimportBlocks-         _tlOinhmap = rule223 _lhsIinhmap-         _tlOlocalAttrTypes = rule224 _lhsIlocalAttrTypes-         _tlOmainFile = rule225 _lhsImainFile-         _tlOmainName = rule226 _lhsImainName-         _tlOoptions = rule227 _lhsIoptions-         _tlOsynmap = rule228 _lhsIsynmap-         _tlOtextBlocks = rule229 _lhsItextBlocks-         _tlOtypeSyns = rule230 _lhsItypeSyns-         _tlOwrappers = rule231 _lhsIwrappers-         __result_ = T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminals_s11 v10-   {-# INLINE rule177 #-}-   rule177 = \ ((_hdIappendCommon) ::  PP_Doc ) ((_tlIappendCommon) :: [PP_Doc]) ->-     _hdIappendCommon : _tlIappendCommon-   {-# INLINE rule178 #-}-   rule178 = \ ((_hdIappendMain) ::  PP_Doc ) ((_tlIappendMain) :: [PP_Doc]) ->-     _hdIappendMain : _tlIappendMain-   {-# INLINE rule179 #-}-   rule179 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _hdIchildvisit `Map.union` _tlIchildvisit-   {-# INLINE rule180 #-}-   rule180 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule181 #-}-   rule181 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _hdIfromToStates `mappend` _tlIfromToStates-   {-# INLINE rule182 #-}-   rule182 = \ ((_hdIgenProdIO) :: IO ()) ((_tlIgenProdIO) :: IO ()) ->-     _hdIgenProdIO >> _tlIgenProdIO-   {-# INLINE rule183 #-}-   rule183 = \ ((_hdIimports) :: [PP_Doc]) ((_tlIimports) :: [PP_Doc]) ->-     _hdIimports ++ _tlIimports-   {-# INLINE rule184 #-}-   rule184 = \ ((_hdIinitStates) :: Map NontermIdent Int) ((_tlIinitStates) :: Map NontermIdent Int) ->-     _hdIinitStates `mappend` _tlIinitStates-   {-# INLINE rule185 #-}-   rule185 = \ ((_hdIoutput) :: PP_Doc) ((_tlIoutput) :: PP_Doc) ->-     _hdIoutput >-< _tlIoutput-   {-# INLINE rule186 #-}-   rule186 = \ ((_hdIoutput_dcl) :: PP_Doc) ((_tlIoutput_dcl) :: PP_Doc) ->-     _hdIoutput_dcl >-< _tlIoutput_dcl-   {-# INLINE rule187 #-}-   rule187 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->-     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs-   {-# INLINE rule188 #-}-   rule188 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->-     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps-   {-# INLINE rule189 #-}-   rule189 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule190 #-}-   rule190 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs-   {-# INLINE rule191 #-}-   rule191 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisituses `uwSetUnion` _tlIvisituses-   {-# INLINE rule192 #-}-   rule192 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule193 #-}-   rule193 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule194 #-}-   rule194 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule195 #-}-   rule195 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule196 #-}-   rule196 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule197 #-}-   rule197 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule198 #-}-   rule198 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule199 #-}-   rule199 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule200 #-}-   rule200 = \ ((_lhsIderivings) :: Derivings) ->-     _lhsIderivings-   {-# INLINE rule201 #-}-   rule201 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule202 #-}-   rule202 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule203 #-}-   rule203 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule204 #-}-   rule204 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule205 #-}-   rule205 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule206 #-}-   rule206 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule207 #-}-   rule207 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule208 #-}-   rule208 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap-   {-# INLINE rule209 #-}-   rule209 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule210 #-}-   rule210 = \ ((_lhsItypeSyns) :: TypeSyns) ->-     _lhsItypeSyns-   {-# INLINE rule211 #-}-   rule211 = \ ((_lhsIwrappers) :: Set NontermIdent) ->-     _lhsIwrappers-   {-# INLINE rule212 #-}-   rule212 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule213 #-}-   rule213 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule214 #-}-   rule214 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule215 #-}-   rule215 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule216 #-}-   rule216 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule217 #-}-   rule217 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule218 #-}-   rule218 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule219 #-}-   rule219 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule220 #-}-   rule220 = \ ((_lhsIderivings) :: Derivings) ->-     _lhsIderivings-   {-# INLINE rule221 #-}-   rule221 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule222 #-}-   rule222 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule223 #-}-   rule223 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule224 #-}-   rule224 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule225 #-}-   rule225 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule226 #-}-   rule226 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule227 #-}-   rule227 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule228 #-}-   rule228 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap-   {-# INLINE rule229 #-}-   rule229 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule230 #-}-   rule230 = \ ((_lhsItypeSyns) :: TypeSyns) ->-     _lhsItypeSyns-   {-# INLINE rule231 #-}-   rule231 = \ ((_lhsIwrappers) :: Set NontermIdent) ->-     _lhsIwrappers-{-# NOINLINE sem_ENonterminals_Nil #-}-sem_ENonterminals_Nil ::  T_ENonterminals -sem_ENonterminals_Nil  = T_ENonterminals (return st11) where-   {-# NOINLINE st11 #-}-   st11 = let-      v10 :: T_ENonterminals_v10 -      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let-         _lhsOappendCommon :: [PP_Doc]-         _lhsOappendCommon = rule232  ()-         _lhsOappendMain :: [PP_Doc]-         _lhsOappendMain = rule233  ()-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule234  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule235  ()-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule236  ()-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule237  ()-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule238  ()-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule239  ()-         _lhsOoutput :: PP_Doc-         _lhsOoutput = rule240  ()-         _lhsOoutput_dcl :: PP_Doc-         _lhsOoutput_dcl = rule241  ()-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule242  ()-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule243  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule244  ()-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule245  ()-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule246  ()-         __result_ = T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminals_s11 v10-   {-# INLINE rule232 #-}-   rule232 = \  (_ :: ()) ->-     []-   {-# INLINE rule233 #-}-   rule233 = \  (_ :: ()) ->-     []-   {-# INLINE rule234 #-}-   rule234 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule235 #-}-   rule235 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule236 #-}-   rule236 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule237 #-}-   rule237 = \  (_ :: ()) ->-     return ()-   {-# INLINE rule238 #-}-   rule238 = \  (_ :: ()) ->-     []-   {-# INLINE rule239 #-}-   rule239 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule240 #-}-   rule240 = \  (_ :: ()) ->-     empty-   {-# INLINE rule241 #-}-   rule241 = \  (_ :: ()) ->-     empty-   {-# INLINE rule242 #-}-   rule242 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule243 #-}-   rule243 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule244 #-}-   rule244 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule245 #-}-   rule245 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule246 #-}-   rule246 = \  (_ :: ()) ->-     Map.empty---- EProduction ---------------------------------------------------- wrapper-data Inh_EProduction  = Inh_EProduction { allFromToStates_Inh_EProduction :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProduction :: (Map NontermIdent Attributes), allInitStates_Inh_EProduction :: (Map NontermIdent Int), allSynmap_Inh_EProduction :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProduction :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProduction :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allstates_Inh_EProduction :: (Set StateIdentifier), avisitdefs_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), classCtxs_Inh_EProduction :: (ClassContext), constructorTypeMap_Inh_EProduction :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_EProduction :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_EProduction :: (String -> String -> String -> Bool -> String), importBlocks_Inh_EProduction :: (PP_Doc), inhmap_Inh_EProduction :: (Attributes), initial_Inh_EProduction :: (StateIdentifier), localAttrTypes_Inh_EProduction :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProduction :: (String), mainName_Inh_EProduction :: (String), nextVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), nt_Inh_EProduction :: (NontermIdent), ntType_Inh_EProduction :: (Type), options_Inh_EProduction :: (Options), params_Inh_EProduction :: ([Identifier]), prevVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), rename_Inh_EProduction :: (Bool), synmap_Inh_EProduction :: (Attributes), textBlocks_Inh_EProduction :: (PP_Doc) }-data Syn_EProduction  = Syn_EProduction { allvisits_Syn_EProduction :: ([VisitStateState]), childvisit_Syn_EProduction :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), count_Syn_EProduction :: (Int), datatype_Syn_EProduction :: (PP_Doc), errors_Syn_EProduction :: (Seq Error), fromToStates_Syn_EProduction :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_EProduction :: (IO ()), imports_Syn_EProduction :: ([PP_Doc]), recordtype_Syn_EProduction :: (PP_Doc), semFunBndDefs_Syn_EProduction :: (Seq PP_Doc), semFunBndTps_Syn_EProduction :: (Seq PP_Doc), sem_nt_Syn_EProduction :: (PP_Doc), sem_prod_Syn_EProduction :: (PP_Doc), sem_prod_tys_Syn_EProduction :: (PP_Doc), t_visits_Syn_EProduction :: (PP_Doc), visitKinds_Syn_EProduction :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_EProduction #-}-wrap_EProduction :: T_EProduction  -> Inh_EProduction  -> (Syn_EProduction )-wrap_EProduction (T_EProduction act) (Inh_EProduction _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks-        (T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProduction_s14 sem arg)-        return (Syn_EProduction _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_EProduction #-}-sem_EProduction :: EProduction  -> T_EProduction -sem_EProduction ( EProduction con_ params_ constraints_ rules_ children_ visits_ ) = sem_EProduction_EProduction con_ params_ constraints_ ( sem_ERules rules_ ) ( sem_EChildren children_ ) ( sem_Visits visits_ )---- semantic domain-newtype T_EProduction  = T_EProduction {-                                       attach_T_EProduction :: Identity (T_EProduction_s14 )-                                       }-newtype T_EProduction_s14  = C_EProduction_s14 {-                                               inv_EProduction_s14 :: (T_EProduction_v13 )-                                               }-data T_EProduction_s15  = C_EProduction_s15-type T_EProduction_v13  = (T_EProduction_vIn13 ) -> (T_EProduction_vOut13 )-data T_EProduction_vIn13  = T_EProduction_vIn13 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Set StateIdentifier) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (ClassContext) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Bool) (Attributes) (PP_Doc)-data T_EProduction_vOut13  = T_EProduction_vOut13 ([VisitStateState]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Int) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_EProduction_EProduction #-}-sem_EProduction_EProduction :: (ConstructorIdent) -> ([Identifier]) -> ([Type]) -> T_ERules  -> T_EChildren  -> T_Visits  -> T_EProduction -sem_EProduction_EProduction arg_con_ arg_params_ arg_constraints_ arg_rules_ arg_children_ arg_visits_ = T_EProduction (return st14) where-   {-# NOINLINE st14 #-}-   st14 = let-      v13 :: T_EProduction_v13 -      v13 = \ (T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let-         _rulesX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_rules_))-         _childrenX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_children_))-         _visitsX56 = Control.Monad.Identity.runIdentity (attach_T_Visits (arg_visits_))-         (T_ERules_vOut22 _rulesIerrors _rulesImrules _rulesIruledefs _rulesIruleuses _rulesIsem_rules _rulesIusedArgs) = inv_ERules_s23 _rulesX23 (T_ERules_vIn22 _rulesOallInhmap _rulesOallSynmap _rulesOchildTypes _rulesOcon _rulesOconstructorTypeMap _rulesOdclModuleHeader _rulesOiclModuleHeader _rulesOimportBlocks _rulesOinhmap _rulesOlazyIntras _rulesOlocalAttrTypes _rulesOmainFile _rulesOmainName _rulesOnt _rulesOoptions _rulesOruleKinds _rulesOsynmap _rulesOtextBlocks _rulesOusageInfo)-         (T_EChildren_vOut4 _childrenIargnamesw _childrenIargpats _childrenIargtps _childrenIchildTypes _childrenIchildintros _childrenIdatatype _childrenIrecfields _childrenIrecordtype _childrenIterminaldefs _childrenIusedArgs) = inv_EChildren_s5 _childrenX5 (T_EChildren_vIn4 _childrenOallInitStates _childrenOcon _childrenOconstructorTypeMap _childrenOdclModuleHeader _childrenOiclModuleHeader _childrenOimportBlocks _childrenOmainFile _childrenOmainName _childrenOnt _childrenOoptions _childrenOtextBlocks)-         (T_Visits_vOut55 _visitsIallvisits _visitsIchildvisit _visitsIerrors _visitsIfromToStates _visitsIintramap _visitsIlazyIntras _visitsIruleKinds _visitsIruleUsage _visitsIsem_visit _visitsIt_visits _visitsIusedArgs _visitsIvisitKinds _visitsIvisitdefs _visitsIvisituses) = inv_Visits_s56 _visitsX56 (T_Visits_vIn55 _visitsOallFromToStates _visitsOallInhmap _visitsOallInitStates _visitsOallSynmap _visitsOallVisitKinds _visitsOallchildvisit _visitsOallintramap _visitsOavisitdefs _visitsOavisituses _visitsOchildTypes _visitsOchildintros _visitsOcon _visitsOinhmap _visitsOmrules _visitsOnextVisits _visitsOnt _visitsOoptions _visitsOparams _visitsOprevVisits _visitsOruledefs _visitsOruleuses _visitsOsynmap _visitsOterminaldefs)-         _childrenOcon = rule247 arg_con_-         _rulesOcon = rule248 arg_con_-         _visitsOcon = rule249 arg_con_-         _lhsOdatatype :: PP_Doc-         _lhsOdatatype = rule250 _childrenIdatatype _classPP1 _lhsInt _lhsIoptions _lhsIrename _quantPP1 arg_con_-         _lhsOrecordtype :: PP_Doc-         _lhsOrecordtype = rule251 _childrenIrecordtype _classPP1 _quantPP1-         _classPP1 = rule252 arg_constraints_-         _quantPP1 = rule253 arg_params_-         _lhsOcount :: Int-         _lhsOcount = rule254  ()-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule255 _childrenIargnamesw _childrenIargpats _childrenIrecfields _lhsIconstructorTypeMap _lhsInt _lhsIrename arg_con_-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule256 _semFunBndDef-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule257 _semFunBndTp-         _semFunBndDef = rule258 _semFunBndNm _semname-         _semFunBndTp = rule259 _semFunBndNm _sem_tp-         _semFunBndNm = rule260 _lhsInt arg_con_-         _t_type = rule261 _lhsInt-         _t_params = rule262 _lhsIparams-         _usedArgs = rule263 _childrenIusedArgs _rulesIusedArgs _visitsIusedArgs-         _args = rule264 _childrenIargpats _usedArgs-         _semname = rule265 _lhsInt arg_con_-         _sem_tp = rule266 _childrenIargtps _classPP2 _quantPP2 _t_params _t_type-         _classPP2 = rule267 _lhsIclassCtxs arg_constraints_-         _quantPP2 = rule268 _lhsIparams arg_params_-         _lhsOsem_prod_tys :: PP_Doc-         _lhsOsem_prod_tys = rule269 _sem_tp _semname-         _sem_prod = rule270 _args _lhsIinitial _mbInitializer _mkSemBody _outerlet _sem_tp _semname _t_type-         _mkSemBody = rule271  ()-         _mbInitializer = rule272 _lhsIoptions-         _outerlet = rule273 _rulesIsem_rules _statefns-         _statefns = rule274 _genstfn _lhsIallstates-         _genstfn = rule275 _addbang _lhsIinitial _lhsInextVisits _lhsInt _lhsIprevVisits _stargs _stks _stvs-         _stargs = rule276 _addbang _childTypes _lazyIntras _lhsIallInhmap _lhsIallSynmap _lhsIoptions _localAttrTypes _visitsIintramap-         _stks = rule277 _lhsInt _stvisits _t_params-         _stvisits = rule278 _visitsIallvisits-         _stvs = rule279 _visitsIsem_visit-         _visitsOmrules = rule280 _rulesImrules-         _visitsOchildintros = rule281 _childrenIchildintros-         _rulesOusageInfo = rule282 _visitsIruleUsage-         _rulesOruleKinds = rule283 _visitsIruleKinds-         _visitsOallintramap = rule284 _visitsIintramap-         _visitsOterminaldefs = rule285 _childrenIterminaldefs-         _visitsOruledefs = rule286 _rulesIruledefs-         _visitsOruleuses = rule287 _rulesIruleuses-         _lazyIntras = rule288 _visitsIlazyIntras-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule289 _moduleName-         _moduleName = rule290 _lhsImainName _suffix-         _suffix = rule291 _lhsInt arg_con_-         _outputfile = rule292 _lhsImainFile _suffix-         _ppMonadImports = rule293  ()-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule294 _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainName _outputfile _ppMonadImports _sem_prod _semname _suffix-         _addbang = rule295 _lhsIoptions-         _childTypes = rule296 _childrenIchildTypes _lhsIntType-         _localAttrTypes = rule297 _lhsIlocalAttrTypes arg_con_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule298 _visitsIchildvisit-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule299 _rulesIerrors _visitsIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule300 _visitsIfromToStates-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule301 _visitsIt_visits-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule302 _visitsIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule303 _visitsIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule304 _visitsIvisituses-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule305 _visitsIallvisits-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule306 _sem_prod-         _rulesOallInhmap = rule307 _lhsIallInhmap-         _rulesOallSynmap = rule308 _lhsIallSynmap-         _rulesOchildTypes = rule309 _childTypes-         _rulesOconstructorTypeMap = rule310 _lhsIconstructorTypeMap-         _rulesOdclModuleHeader = rule311 _lhsIdclModuleHeader-         _rulesOiclModuleHeader = rule312 _lhsIiclModuleHeader-         _rulesOimportBlocks = rule313 _lhsIimportBlocks-         _rulesOinhmap = rule314 _lhsIinhmap-         _rulesOlazyIntras = rule315 _lazyIntras-         _rulesOlocalAttrTypes = rule316 _localAttrTypes-         _rulesOmainFile = rule317 _lhsImainFile-         _rulesOmainName = rule318 _lhsImainName-         _rulesOnt = rule319 _lhsInt-         _rulesOoptions = rule320 _lhsIoptions-         _rulesOsynmap = rule321 _lhsIsynmap-         _rulesOtextBlocks = rule322 _lhsItextBlocks-         _childrenOallInitStates = rule323 _lhsIallInitStates-         _childrenOconstructorTypeMap = rule324 _lhsIconstructorTypeMap-         _childrenOdclModuleHeader = rule325 _lhsIdclModuleHeader-         _childrenOiclModuleHeader = rule326 _lhsIiclModuleHeader-         _childrenOimportBlocks = rule327 _lhsIimportBlocks-         _childrenOmainFile = rule328 _lhsImainFile-         _childrenOmainName = rule329 _lhsImainName-         _childrenOnt = rule330 _lhsInt-         _childrenOoptions = rule331 _lhsIoptions-         _childrenOtextBlocks = rule332 _lhsItextBlocks-         _visitsOallFromToStates = rule333 _lhsIallFromToStates-         _visitsOallInhmap = rule334 _lhsIallInhmap-         _visitsOallInitStates = rule335 _lhsIallInitStates-         _visitsOallSynmap = rule336 _lhsIallSynmap-         _visitsOallVisitKinds = rule337 _lhsIallVisitKinds-         _visitsOallchildvisit = rule338 _lhsIallchildvisit-         _visitsOavisitdefs = rule339 _lhsIavisitdefs-         _visitsOavisituses = rule340 _lhsIavisituses-         _visitsOchildTypes = rule341 _childTypes-         _visitsOinhmap = rule342 _lhsIinhmap-         _visitsOnextVisits = rule343 _lhsInextVisits-         _visitsOnt = rule344 _lhsInt-         _visitsOoptions = rule345 _lhsIoptions-         _visitsOparams = rule346 _lhsIparams-         _visitsOprevVisits = rule347 _lhsIprevVisits-         _visitsOsynmap = rule348 _lhsIsynmap-         __result_ = T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProduction_s14 v13-   {-# INLINE rule247 #-}-   {-# LINE 72 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule247 = \ con_ ->-                                 {-# LINE 72 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 con_-                                 {-# LINE 2369 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule248 #-}-   {-# LINE 73 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule248 = \ con_ ->-                                 {-# LINE 73 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 con_-                                 {-# LINE 2375 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule249 #-}-   {-# LINE 74 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule249 = \ con_ ->-                                 {-# LINE 74 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 con_-                                 {-# LINE 2381 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule250 #-}-   {-# LINE 215 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule250 = \ ((_childrenIdatatype) :: [PP_Doc]) _classPP1 ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIrename) :: Bool) _quantPP1 con_ ->-                                 {-# LINE 215 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _quantPP1     >#< _classPP1-                                 >#< conname _lhsIrename _lhsInt con_-                                 >#< ppConFields (dataRecords _lhsIoptions) _childrenIdatatype-                                 {-# LINE 2389 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule251 #-}-   {-# LINE 218 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule251 = \ ((_childrenIrecordtype) :: [PP_Doc]) _classPP1 _quantPP1 ->-                                   {-# LINE 218 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   _quantPP1     >#< _classPP1-                                   >#< ppConFields True _childrenIrecordtype-                                   {-# LINE 2396 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule252 #-}-   {-# LINE 220 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule252 = \ constraints_ ->-                                 {-# LINE 220 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 ppClasses (classConstrsToDocs constraints_)-                                 {-# LINE 2402 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule253 #-}-   {-# LINE 221 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule253 = \ params_ ->-                                 {-# LINE 221 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 ppQuants params_-                                 {-# LINE 2408 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule254 #-}-   {-# LINE 320 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule254 = \  (_ :: ()) ->-                                              {-# LINE 320 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                              1-                                              {-# LINE 2414 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule255 #-}-   {-# LINE 325 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule255 = \ ((_childrenIargnamesw) :: [PP_Doc]) ((_childrenIargpats) ::  [PP_Doc] ) ((_childrenIrecfields) ::  [Identifier] ) ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ((_lhsInt) :: NontermIdent) ((_lhsIrename) :: Bool) con_ ->-                               {-# LINE 325 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               let lhs   = "sem_" >|< _lhsInt-                                   rhs   = "=" >#< "sem_" >|< _lhsInt >|< "_" >|< con_ >#< ppSpaced _childrenIargnamesw-                                   cnnm  = conname _lhsIrename _lhsInt con_-                               in  if isRecordConstructor _lhsInt _lhsIconstructorTypeMap-                                     then  lhs >#< "{" >#< cnnm >#< "|" >#<-                                           pp_block "" "" "," (zipWith (\l r -> l >#< "=" >#< r) _childrenIrecfields _childrenIargpats) >#< "}" >#< rhs-                                     else  lhs >#< "(" >#< cnnm >#< ppSpaced _childrenIargpats >#< ")" >#< rhs-                               {-# LINE 2426 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule256 #-}-   {-# LINE 591 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule256 = \ _semFunBndDef ->-                        {-# LINE 591 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        Seq.singleton _semFunBndDef-                        {-# LINE 2432 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule257 #-}-   {-# LINE 592 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule257 = \ _semFunBndTp ->-                        {-# LINE 592 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        Seq.singleton _semFunBndTp-                        {-# LINE 2438 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule258 #-}-   {-# LINE 593 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule258 = \ _semFunBndNm _semname ->-                        {-# LINE 593 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        _semFunBndNm     >#< "=" >#< _semname-                        {-# LINE 2444 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule259 #-}-   {-# LINE 594 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule259 = \ _semFunBndNm _sem_tp ->-                        {-# LINE 594 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        _semFunBndNm     >#< "::" >#< _sem_tp-                        {-# LINE 2450 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule260 #-}-   {-# LINE 595 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule260 = \ ((_lhsInt) :: NontermIdent) con_ ->-                        {-# LINE 595 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        lateSemConLabel _lhsInt con_-                        {-# LINE 2456 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule261 #-}-   {-# LINE 659 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule261 = \ ((_lhsInt) :: NontermIdent) ->-                                 {-# LINE 659 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 "T_" >|< _lhsInt-                                 {-# LINE 2462 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule262 #-}-   {-# LINE 660 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule262 = \ ((_lhsIparams) :: [Identifier]) ->-                                 {-# LINE 660 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 ppSpaced _lhsIparams-                                 {-# LINE 2468 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule263 #-}-   {-# LINE 661 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule263 = \ ((_childrenIusedArgs) :: Set String) ((_rulesIusedArgs) :: Set String) ((_visitsIusedArgs) :: Set String) ->-                                 {-# LINE 661 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _childrenIusedArgs `Set.union` _visitsIusedArgs `Set.union` _rulesIusedArgs-                                 {-# LINE 2474 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule264 #-}-   {-# LINE 664 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule264 = \ ((_childrenIargpats) ::  [PP_Doc] ) _usedArgs ->-                                 {-# LINE 664 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 map (\x -> let (name,arg) = case show x of-                                                         ""       -> ("", empty)-                                                         '!':name -> ("arg_" ++ name, "!arg_" >|< name)-                                                         name     -> ("arg_" ++ name, "arg_"  >|< name)-                                            in  if null name || name `Set.member` _usedArgs-                                                              then arg-                                                              else text "_") _childrenIargpats-                                 {-# LINE 2486 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule265 #-}-   {-# LINE 671 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule265 = \ ((_lhsInt) :: NontermIdent) con_ ->-                                 {-# LINE 671 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 "sem_" ++ show _lhsInt ++ "_" ++ show con_-                                 {-# LINE 2492 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule266 #-}-   {-# LINE 672 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule266 = \ ((_childrenIargtps) ::  [PP_Doc] ) _classPP2 _quantPP2 _t_params _t_type ->-                                 {-# LINE 672 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _quantPP2     >#< _classPP2     >#< ppSpaced _childrenIargtps-                                 >#< (if length _childrenIargtps > 0 then "->" else "")-                                 >#< _t_type     >#< _t_params-                                 {-# LINE 2500 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule267 #-}-   {-# LINE 675 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule267 = \ ((_lhsIclassCtxs) :: ClassContext) constraints_ ->-                                 {-# LINE 675 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 ppClasses (classCtxsToDocs _lhsIclassCtxs ++ classConstrsToDocs constraints_)-                                 {-# LINE 2506 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule268 #-}-   {-# LINE 676 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule268 = \ ((_lhsIparams) :: [Identifier]) params_ ->-                                 {-# LINE 676 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 ppQuants (_lhsIparams ++ params_)-                                 {-# LINE 2512 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule269 #-}-   {-# LINE 678 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule269 = \ _sem_tp _semname ->-                                     {-# LINE 678 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     _semname     >#< " ::" >#< _sem_tp-                                     {-# LINE 2518 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule270 #-}-   {-# LINE 680 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule270 = \ _args ((_lhsIinitial) :: StateIdentifier) _mbInitializer _mkSemBody _outerlet _sem_tp _semname _t_type ->-                                 {-# LINE 680 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _semname     >#< " ::" >#< _sem_tp-                                 >-< _mkSemBody     (_semname     >#< ppSpaced _args     >#< "=" >#< _t_type    )-                                                    _mbInitializer     _outerlet     ("lift" >#< "st" >|< _lhsIinitial)-                                 {-# LINE 2526 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule271 #-}-   {-# LINE 683 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule271 = \  (_ :: ()) ->-                                  {-# LINE 683 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  \prefix mbInit outerlet ret ->-                                    case mbInit of-                                      Nothing -> prefix >#< pp_parens ret >#< "where"-                                                 >-< indent 3 outerlet-                                      Just m  -> prefix >#< "(" >#< "do"-                                                 >-< indent 1 (-                                                       m-                                                       >-< "let"-                                                       >-< indent 2 outerlet-                                                       >-< ret )-                                                 >-< indent 1 ")"-                                  {-# LINE 2542 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule272 #-}-   {-# LINE 695 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule272 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 695 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                        if parallelInvoke _lhsIoptions-                                        then (Nothing :: Maybe PP_Doc)-                                        else Nothing-                                        {-# LINE 2550 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule273 #-}-   {-# LINE 701 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule273 = \ ((_rulesIsem_rules) :: PP_Doc) _statefns ->-                                 {-# LINE 701 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 vlist _statefns     >-< _rulesIsem_rules-                                 {-# LINE 2556 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule274 #-}-   {-# LINE 702 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule274 = \ _genstfn ((_lhsIallstates) :: Set StateIdentifier) ->-                                 {-# LINE 702 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 map _genstfn     $ Set.toList _lhsIallstates-                                 {-# LINE 2562 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule275 #-}-   {-# LINE 703 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule275 = \ _addbang ((_lhsIinitial) :: StateIdentifier) ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ((_lhsInt) :: NontermIdent) ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) _stargs _stks _stvs ->-                                 {-# LINE 703 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 \st -> let nextVisitInfo = Map.findWithDefault ManyVis st _lhsInextVisits-                                            prevVisitInfo = Map.findWithDefault ManyVis st _lhsIprevVisits-                                            stNm = "st" >|< st-                                            lhs  = bang stNm >#< "=" >#<-                                                   (-                                                     if st == _lhsIinitial-                                                     then empty-                                                     else "\\" >#< _stargs     st >#< "->"-                                                   )-                                            cCon = "C_" >|< _lhsInt >|< "_s" >|< st-                                            bang | st == _lhsIinitial = _addbang-                                                 | otherwise          = id-                                        in case nextVisitInfo of-                                             NoneVis    ->-                                                           if st == _lhsIinitial-                                                           then lhs >#< cCon-                                                           else empty-                                             OneVis vId -> mklet lhs (_stvs     st False) (cCon >#< "v" >|< vId)-                                             ManyVis    -> mklet lhs (_stks     st >-< _stvs     st True) (cCon >#< "k" >|< st)-                                 {-# LINE 2586 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule276 #-}-   {-# LINE 731 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule276 = \ _addbang _childTypes _lazyIntras ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIoptions) :: Options) _localAttrTypes ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->-                                 {-# LINE 731 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 \st -> let attrs = maybe Map.empty id $ Map.lookup st _visitsIintramap-                                        in ppSpaced [ let match | str `Set.member` _lazyIntras     = pp str-                                                                | otherwise                        = _addbang     (pp str)-                                                      in case mbAttr of-                                                           Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->-                                                             case Map.lookup nm _localAttrTypes     of-                                                               Just tp -> pp_parens (pp_parens match >#< "::" >#< ppTp tp)-                                                               Nothing -> match-                                                           Just attr | not (noPerStateTypeSigs _lhsIoptions) ->-                                                             case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _childTypes     of-                                                               Just tpDoc -> pp_parens (pp_parens match >#< "::" >#< tpDoc)-                                                               Nothing    -> match-                                                           _ -> match-                                                   | (str,mbAttr) <- Map.assocs attrs-                                                   ] >#< dummyPat _lhsIoptions (Map.null attrs)-                                 {-# LINE 2606 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule277 #-}-   {-# LINE 747 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule277 = \ ((_lhsInt) :: NontermIdent) _stvisits _t_params ->-                                 {-# LINE 747 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 \st -> if null (_stvisits     st)-                                        then empty-                                        else "k" >|< st >#< "::" >#< "K_" >|< _lhsInt >|< "_s" >|< st >#< _t_params     >#< "t" >#< "->" >#< "t"-                                             >-< vlist (map (\(v,f,t) -> "k" >|< st >#< "K_" >|< _lhsInt >|< "_v" >|< v >#< "="-                                                                    >#< "v" >|< v) $ _stvisits     st)-                                 {-# LINE 2616 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule278 #-}-   {-# LINE 752 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule278 = \ ((_visitsIallvisits) :: [VisitStateState]) ->-                                 {-# LINE 752 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 \st -> filter (\(v,f,t) -> f == st) _visitsIallvisits-                                 {-# LINE 2622 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule279 #-}-   {-# LINE 753 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule279 = \ ((_visitsIsem_visit) ::  [(StateIdentifier,Bool -> PP_Doc)] ) ->-                                 {-# LINE 753 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 \st inlinePragma -> vlist [ppf inlinePragma | (f,ppf) <- _visitsIsem_visit, f == st]-                                 {-# LINE 2628 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule280 #-}-   {-# LINE 754 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule280 = \ ((_rulesImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-                                  {-# LINE 754 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  _rulesImrules-                                  {-# LINE 2634 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule281 #-}-   {-# LINE 942 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule281 = \ ((_childrenIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-                                       {-# LINE 942 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                       _childrenIchildintros-                                       {-# LINE 2640 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule282 #-}-   {-# LINE 1277 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule282 = \ ((_visitsIruleUsage) :: Map Identifier Int) ->-                                                   {-# LINE 1277 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                   _visitsIruleUsage-                                                   {-# LINE 2646 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule283 #-}-   {-# LINE 1292 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule283 = \ ((_visitsIruleKinds) :: Map Identifier (Set VisitKind)) ->-                      {-# LINE 1292 "./src-ag/ExecutionPlan2Clean.ag" #-}-                      _visitsIruleKinds-                      {-# LINE 2652 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule284 #-}-   {-# LINE 1321 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule284 = \ ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->-                          {-# LINE 1321 "./src-ag/ExecutionPlan2Clean.ag" #-}-                          _visitsIintramap-                          {-# LINE 2658 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule285 #-}-   {-# LINE 1322 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule285 = \ ((_childrenIterminaldefs) :: Set String) ->-                          {-# LINE 1322 "./src-ag/ExecutionPlan2Clean.ag" #-}-                          _childrenIterminaldefs-                          {-# LINE 2664 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule286 #-}-   {-# LINE 1346 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule286 = \ ((_rulesIruledefs) :: Map Identifier (Set String)) ->-                                    {-# LINE 1346 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                    _rulesIruledefs-                                    {-# LINE 2670 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule287 #-}-   {-# LINE 1347 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule287 = \ ((_rulesIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-                                    {-# LINE 1347 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                    _rulesIruleuses-                                    {-# LINE 2676 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule288 #-}-   {-# LINE 1401 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule288 = \ ((_visitsIlazyIntras) :: Set String) ->-                     {-# LINE 1401 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     _visitsIlazyIntras-                     {-# LINE 2682 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule289 #-}-   {-# LINE 1486 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule289 = \ _moduleName ->-                                   {-# LINE 1486 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   [pp $ "import " ++ _moduleName    ]-                                   {-# LINE 2688 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule290 #-}-   {-# LINE 1487 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule290 = \ ((_lhsImainName) :: String) _suffix ->-                                   {-# LINE 1487 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   _lhsImainName ++ _suffix-                                   {-# LINE 2694 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule291 #-}-   {-# LINE 1488 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule291 = \ ((_lhsInt) :: NontermIdent) con_ ->-                                   {-# LINE 1488 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   '_' : show _lhsInt ++ ('_' : show con_)-                                   {-# LINE 2700 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule292 #-}-   {-# LINE 1489 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule292 = \ ((_lhsImainFile) :: String) _suffix ->-                                   {-# LINE 1489 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ _suffix    )-                                   {-# LINE 2706 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule293 #-}-   {-# LINE 1490 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule293 = \  (_ :: ()) ->-                                        {-# LINE 1490 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                        pp "import qualified Control.Monad.Identity"-                                        {-# LINE 2712 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule294 #-}-   {-# LINE 1491 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule294 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) _outputfile _ppMonadImports _sem_prod _semname _suffix ->-                                   {-# LINE 1491 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   writeModule _outputfile-                                       [ pp $ _lhsIiclModuleHeader _lhsImainName _suffix     _semname     True-                                       , _lhsIimportBlocks-                                       , _ppMonadImports-                                       , pp $ "import " ++ _lhsImainName ++ "_common"-                                       , _sem_prod-                                       ]-                                   {-# LINE 2724 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule295 #-}-   {-# LINE 1567 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule295 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1567 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 2730 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule296 #-}-   {-# LINE 1617 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule296 = \ ((_childrenIchildTypes) :: Map Identifier Type) ((_lhsIntType) :: Type) ->-                     {-# LINE 1617 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     Map.singleton _LHS _lhsIntType `Map.union` _childrenIchildTypes-                     {-# LINE 2736 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule297 #-}-   {-# LINE 1634 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule297 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) con_ ->-                           {-# LINE 1634 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           Map.findWithDefault Map.empty con_ _lhsIlocalAttrTypes-                           {-# LINE 2742 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule298 #-}-   rule298 = \ ((_visitsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _visitsIchildvisit-   {-# INLINE rule299 #-}-   rule299 = \ ((_rulesIerrors) :: Seq Error) ((_visitsIerrors) :: Seq Error) ->-     _rulesIerrors Seq.>< _visitsIerrors-   {-# INLINE rule300 #-}-   rule300 = \ ((_visitsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _visitsIfromToStates-   {-# INLINE rule301 #-}-   rule301 = \ ((_visitsIt_visits) :: PP_Doc) ->-     _visitsIt_visits-   {-# INLINE rule302 #-}-   rule302 = \ ((_visitsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _visitsIvisitKinds-   {-# INLINE rule303 #-}-   rule303 = \ ((_visitsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _visitsIvisitdefs-   {-# INLINE rule304 #-}-   rule304 = \ ((_visitsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _visitsIvisituses-   {-# INLINE rule305 #-}-   rule305 = \ ((_visitsIallvisits) :: [VisitStateState]) ->-     _visitsIallvisits-   {-# INLINE rule306 #-}-   rule306 = \ _sem_prod ->-     _sem_prod-   {-# INLINE rule307 #-}-   rule307 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule308 #-}-   rule308 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule309 #-}-   rule309 = \ _childTypes ->-     _childTypes-   {-# INLINE rule310 #-}-   rule310 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule311 #-}-   rule311 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule312 #-}-   rule312 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule313 #-}-   rule313 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule314 #-}-   rule314 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule315 #-}-   rule315 = \ _lazyIntras ->-     _lazyIntras-   {-# INLINE rule316 #-}-   rule316 = \ _localAttrTypes ->-     _localAttrTypes-   {-# INLINE rule317 #-}-   rule317 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule318 #-}-   rule318 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule319 #-}-   rule319 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule320 #-}-   rule320 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule321 #-}-   rule321 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule322 #-}-   rule322 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule323 #-}-   rule323 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule324 #-}-   rule324 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule325 #-}-   rule325 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule326 #-}-   rule326 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule327 #-}-   rule327 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule328 #-}-   rule328 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule329 #-}-   rule329 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule330 #-}-   rule330 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule331 #-}-   rule331 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule332 #-}-   rule332 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule333 #-}-   rule333 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule334 #-}-   rule334 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule335 #-}-   rule335 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule336 #-}-   rule336 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule337 #-}-   rule337 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule338 #-}-   rule338 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule339 #-}-   rule339 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule340 #-}-   rule340 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule341 #-}-   rule341 = \ _childTypes ->-     _childTypes-   {-# INLINE rule342 #-}-   rule342 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule343 #-}-   rule343 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule344 #-}-   rule344 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule345 #-}-   rule345 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule346 #-}-   rule346 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule347 #-}-   rule347 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule348 #-}-   rule348 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap---- EProductions --------------------------------------------------- wrapper-data Inh_EProductions  = Inh_EProductions { allFromToStates_Inh_EProductions :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProductions :: (Map NontermIdent Attributes), allInitStates_Inh_EProductions :: (Map NontermIdent Int), allSynmap_Inh_EProductions :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProductions :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProductions :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allstates_Inh_EProductions :: (Set StateIdentifier), avisitdefs_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), classCtxs_Inh_EProductions :: (ClassContext), constructorTypeMap_Inh_EProductions :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_EProductions :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_EProductions :: (String -> String -> String -> Bool -> String), importBlocks_Inh_EProductions :: (PP_Doc), inhmap_Inh_EProductions :: (Attributes), initial_Inh_EProductions :: (StateIdentifier), localAttrTypes_Inh_EProductions :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProductions :: (String), mainName_Inh_EProductions :: (String), nextVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), nt_Inh_EProductions :: (NontermIdent), ntType_Inh_EProductions :: (Type), options_Inh_EProductions :: (Options), params_Inh_EProductions :: ([Identifier]), prevVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), rename_Inh_EProductions :: (Bool), synmap_Inh_EProductions :: (Attributes), textBlocks_Inh_EProductions :: (PP_Doc) }-data Syn_EProductions  = Syn_EProductions { allvisits_Syn_EProductions :: ([VisitStateState]), childvisit_Syn_EProductions :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), count_Syn_EProductions :: (Int), datatype_Syn_EProductions :: ([PP_Doc]), errors_Syn_EProductions :: (Seq Error), fromToStates_Syn_EProductions :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_EProductions :: (IO ()), imports_Syn_EProductions :: ([PP_Doc]), recordtype_Syn_EProductions :: (PP_Doc), semFunBndDefs_Syn_EProductions :: (Seq PP_Doc), semFunBndTps_Syn_EProductions :: (Seq PP_Doc), sem_nt_Syn_EProductions :: (PP_Doc), sem_prod_Syn_EProductions :: (PP_Doc), sem_prod_tys_Syn_EProductions :: (PP_Doc), t_visits_Syn_EProductions :: (PP_Doc), visitKinds_Syn_EProductions :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_EProductions #-}-wrap_EProductions :: T_EProductions  -> Inh_EProductions  -> (Syn_EProductions )-wrap_EProductions (T_EProductions act) (Inh_EProductions _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks-        (T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProductions_s17 sem arg)-        return (Syn_EProductions _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# NOINLINE sem_EProductions #-}-sem_EProductions :: EProductions  -> T_EProductions -sem_EProductions list = Prelude.foldr sem_EProductions_Cons sem_EProductions_Nil (Prelude.map sem_EProduction list)---- semantic domain-newtype T_EProductions  = T_EProductions {-                                         attach_T_EProductions :: Identity (T_EProductions_s17 )-                                         }-newtype T_EProductions_s17  = C_EProductions_s17 {-                                                 inv_EProductions_s17 :: (T_EProductions_v16 )-                                                 }-data T_EProductions_s18  = C_EProductions_s18-type T_EProductions_v16  = (T_EProductions_vIn16 ) -> (T_EProductions_vOut16 )-data T_EProductions_vIn16  = T_EProductions_vIn16 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Set StateIdentifier) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (ClassContext) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Bool) (Attributes) (PP_Doc)-data T_EProductions_vOut16  = T_EProductions_vOut16 ([VisitStateState]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Int) ([PP_Doc]) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_EProductions_Cons #-}-sem_EProductions_Cons :: T_EProduction  -> T_EProductions  -> T_EProductions -sem_EProductions_Cons arg_hd_ arg_tl_ = T_EProductions (return st17) where-   {-# NOINLINE st17 #-}-   st17 = let-      v16 :: T_EProductions_v16 -      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let-         _hdX14 = Control.Monad.Identity.runIdentity (attach_T_EProduction (arg_hd_))-         _tlX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_tl_))-         (T_EProduction_vOut13 _hdIallvisits _hdIchildvisit _hdIcount _hdIdatatype _hdIerrors _hdIfromToStates _hdIgenProdIO _hdIimports _hdIrecordtype _hdIsemFunBndDefs _hdIsemFunBndTps _hdIsem_nt _hdIsem_prod _hdIsem_prod_tys _hdIt_visits _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_EProduction_s14 _hdX14 (T_EProduction_vIn13 _hdOallFromToStates _hdOallInhmap _hdOallInitStates _hdOallSynmap _hdOallVisitKinds _hdOallchildvisit _hdOallstates _hdOavisitdefs _hdOavisituses _hdOclassCtxs _hdOconstructorTypeMap _hdOdclModuleHeader _hdOiclModuleHeader _hdOimportBlocks _hdOinhmap _hdOinitial _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOnextVisits _hdOnt _hdOntType _hdOoptions _hdOparams _hdOprevVisits _hdOrename _hdOsynmap _hdOtextBlocks)-         (T_EProductions_vOut16 _tlIallvisits _tlIchildvisit _tlIcount _tlIdatatype _tlIerrors _tlIfromToStates _tlIgenProdIO _tlIimports _tlIrecordtype _tlIsemFunBndDefs _tlIsemFunBndTps _tlIsem_nt _tlIsem_prod _tlIsem_prod_tys _tlIt_visits _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_EProductions_s17 _tlX17 (T_EProductions_vIn16 _tlOallFromToStates _tlOallInhmap _tlOallInitStates _tlOallSynmap _tlOallVisitKinds _tlOallchildvisit _tlOallstates _tlOavisitdefs _tlOavisituses _tlOclassCtxs _tlOconstructorTypeMap _tlOdclModuleHeader _tlOiclModuleHeader _tlOimportBlocks _tlOinhmap _tlOinitial _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOnextVisits _tlOnt _tlOntType _tlOoptions _tlOparams _tlOprevVisits _tlOrename _tlOsynmap _tlOtextBlocks)-         _lhsOrecordtype :: PP_Doc-         _lhsOrecordtype = rule349 _hdIrecordtype-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule350 _hdIallvisits-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule351 _hdIt_visits-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule352 _hdIchildvisit _tlIchildvisit-         _lhsOcount :: Int-         _lhsOcount = rule353 _hdIcount _tlIcount-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule354 _hdIdatatype _tlIdatatype-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule355 _hdIerrors _tlIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule356 _hdIfromToStates _tlIfromToStates-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule357 _hdIgenProdIO _tlIgenProdIO-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule358 _hdIimports _tlIimports-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule359 _hdIsemFunBndDefs _tlIsemFunBndDefs-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule360 _hdIsemFunBndTps _tlIsemFunBndTps-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule361 _hdIsem_nt _tlIsem_nt-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule362 _hdIsem_prod _tlIsem_prod-         _lhsOsem_prod_tys :: PP_Doc-         _lhsOsem_prod_tys = rule363 _hdIsem_prod_tys _tlIsem_prod_tys-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule364 _hdIvisitKinds _tlIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule365 _hdIvisitdefs _tlIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule366 _hdIvisituses _tlIvisituses-         _hdOallFromToStates = rule367 _lhsIallFromToStates-         _hdOallInhmap = rule368 _lhsIallInhmap-         _hdOallInitStates = rule369 _lhsIallInitStates-         _hdOallSynmap = rule370 _lhsIallSynmap-         _hdOallVisitKinds = rule371 _lhsIallVisitKinds-         _hdOallchildvisit = rule372 _lhsIallchildvisit-         _hdOallstates = rule373 _lhsIallstates-         _hdOavisitdefs = rule374 _lhsIavisitdefs-         _hdOavisituses = rule375 _lhsIavisituses-         _hdOclassCtxs = rule376 _lhsIclassCtxs-         _hdOconstructorTypeMap = rule377 _lhsIconstructorTypeMap-         _hdOdclModuleHeader = rule378 _lhsIdclModuleHeader-         _hdOiclModuleHeader = rule379 _lhsIiclModuleHeader-         _hdOimportBlocks = rule380 _lhsIimportBlocks-         _hdOinhmap = rule381 _lhsIinhmap-         _hdOinitial = rule382 _lhsIinitial-         _hdOlocalAttrTypes = rule383 _lhsIlocalAttrTypes-         _hdOmainFile = rule384 _lhsImainFile-         _hdOmainName = rule385 _lhsImainName-         _hdOnextVisits = rule386 _lhsInextVisits-         _hdOnt = rule387 _lhsInt-         _hdOntType = rule388 _lhsIntType-         _hdOoptions = rule389 _lhsIoptions-         _hdOparams = rule390 _lhsIparams-         _hdOprevVisits = rule391 _lhsIprevVisits-         _hdOrename = rule392 _lhsIrename-         _hdOsynmap = rule393 _lhsIsynmap-         _hdOtextBlocks = rule394 _lhsItextBlocks-         _tlOallFromToStates = rule395 _lhsIallFromToStates-         _tlOallInhmap = rule396 _lhsIallInhmap-         _tlOallInitStates = rule397 _lhsIallInitStates-         _tlOallSynmap = rule398 _lhsIallSynmap-         _tlOallVisitKinds = rule399 _lhsIallVisitKinds-         _tlOallchildvisit = rule400 _lhsIallchildvisit-         _tlOallstates = rule401 _lhsIallstates-         _tlOavisitdefs = rule402 _lhsIavisitdefs-         _tlOavisituses = rule403 _lhsIavisituses-         _tlOclassCtxs = rule404 _lhsIclassCtxs-         _tlOconstructorTypeMap = rule405 _lhsIconstructorTypeMap-         _tlOdclModuleHeader = rule406 _lhsIdclModuleHeader-         _tlOiclModuleHeader = rule407 _lhsIiclModuleHeader-         _tlOimportBlocks = rule408 _lhsIimportBlocks-         _tlOinhmap = rule409 _lhsIinhmap-         _tlOinitial = rule410 _lhsIinitial-         _tlOlocalAttrTypes = rule411 _lhsIlocalAttrTypes-         _tlOmainFile = rule412 _lhsImainFile-         _tlOmainName = rule413 _lhsImainName-         _tlOnextVisits = rule414 _lhsInextVisits-         _tlOnt = rule415 _lhsInt-         _tlOntType = rule416 _lhsIntType-         _tlOoptions = rule417 _lhsIoptions-         _tlOparams = rule418 _lhsIparams-         _tlOprevVisits = rule419 _lhsIprevVisits-         _tlOrename = rule420 _lhsIrename-         _tlOsynmap = rule421 _lhsIsynmap-         _tlOtextBlocks = rule422 _lhsItextBlocks-         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProductions_s17 v16-   {-# INLINE rule349 #-}-   {-# LINE 224 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule349 = \ ((_hdIrecordtype) :: PP_Doc) ->-                             {-# LINE 224 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             _hdIrecordtype-                             {-# LINE 3038 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule350 #-}-   {-# LINE 385 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule350 = \ ((_hdIallvisits) :: [VisitStateState]) ->-                           {-# LINE 385 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           _hdIallvisits-                           {-# LINE 3044 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule351 #-}-   {-# LINE 450 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule351 = \ ((_hdIt_visits) :: PP_Doc) ->-                          {-# LINE 450 "./src-ag/ExecutionPlan2Clean.ag" #-}-                          _hdIt_visits-                          {-# LINE 3050 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule352 #-}-   rule352 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _hdIchildvisit `Map.union` _tlIchildvisit-   {-# INLINE rule353 #-}-   rule353 = \ ((_hdIcount) :: Int) ((_tlIcount) :: Int) ->-     _hdIcount + _tlIcount-   {-# INLINE rule354 #-}-   rule354 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->-     _hdIdatatype : _tlIdatatype-   {-# INLINE rule355 #-}-   rule355 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule356 #-}-   rule356 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _hdIfromToStates `mappend` _tlIfromToStates-   {-# INLINE rule357 #-}-   rule357 = \ ((_hdIgenProdIO) :: IO ()) ((_tlIgenProdIO) :: IO ()) ->-     _hdIgenProdIO >> _tlIgenProdIO-   {-# INLINE rule358 #-}-   rule358 = \ ((_hdIimports) :: [PP_Doc]) ((_tlIimports) :: [PP_Doc]) ->-     _hdIimports ++ _tlIimports-   {-# INLINE rule359 #-}-   rule359 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->-     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs-   {-# INLINE rule360 #-}-   rule360 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->-     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps-   {-# INLINE rule361 #-}-   rule361 = \ ((_hdIsem_nt) :: PP_Doc) ((_tlIsem_nt) :: PP_Doc) ->-     _hdIsem_nt >-< _tlIsem_nt-   {-# INLINE rule362 #-}-   rule362 = \ ((_hdIsem_prod) :: PP_Doc) ((_tlIsem_prod) :: PP_Doc) ->-     _hdIsem_prod >-< _tlIsem_prod-   {-# INLINE rule363 #-}-   rule363 = \ ((_hdIsem_prod_tys) :: PP_Doc) ((_tlIsem_prod_tys) :: PP_Doc) ->-     _hdIsem_prod_tys >-< _tlIsem_prod_tys-   {-# INLINE rule364 #-}-   rule364 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule365 #-}-   rule365 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs-   {-# INLINE rule366 #-}-   rule366 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisituses `uwSetUnion` _tlIvisituses-   {-# INLINE rule367 #-}-   rule367 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule368 #-}-   rule368 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule369 #-}-   rule369 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule370 #-}-   rule370 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule371 #-}-   rule371 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule372 #-}-   rule372 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule373 #-}-   rule373 = \ ((_lhsIallstates) :: Set StateIdentifier) ->-     _lhsIallstates-   {-# INLINE rule374 #-}-   rule374 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule375 #-}-   rule375 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule376 #-}-   rule376 = \ ((_lhsIclassCtxs) :: ClassContext) ->-     _lhsIclassCtxs-   {-# INLINE rule377 #-}-   rule377 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule378 #-}-   rule378 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule379 #-}-   rule379 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule380 #-}-   rule380 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule381 #-}-   rule381 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule382 #-}-   rule382 = \ ((_lhsIinitial) :: StateIdentifier) ->-     _lhsIinitial-   {-# INLINE rule383 #-}-   rule383 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule384 #-}-   rule384 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule385 #-}-   rule385 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule386 #-}-   rule386 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule387 #-}-   rule387 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule388 #-}-   rule388 = \ ((_lhsIntType) :: Type) ->-     _lhsIntType-   {-# INLINE rule389 #-}-   rule389 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule390 #-}-   rule390 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule391 #-}-   rule391 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule392 #-}-   rule392 = \ ((_lhsIrename) :: Bool) ->-     _lhsIrename-   {-# INLINE rule393 #-}-   rule393 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule394 #-}-   rule394 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule395 #-}-   rule395 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule396 #-}-   rule396 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule397 #-}-   rule397 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule398 #-}-   rule398 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule399 #-}-   rule399 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule400 #-}-   rule400 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule401 #-}-   rule401 = \ ((_lhsIallstates) :: Set StateIdentifier) ->-     _lhsIallstates-   {-# INLINE rule402 #-}-   rule402 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule403 #-}-   rule403 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule404 #-}-   rule404 = \ ((_lhsIclassCtxs) :: ClassContext) ->-     _lhsIclassCtxs-   {-# INLINE rule405 #-}-   rule405 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule406 #-}-   rule406 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule407 #-}-   rule407 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule408 #-}-   rule408 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule409 #-}-   rule409 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule410 #-}-   rule410 = \ ((_lhsIinitial) :: StateIdentifier) ->-     _lhsIinitial-   {-# INLINE rule411 #-}-   rule411 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule412 #-}-   rule412 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule413 #-}-   rule413 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule414 #-}-   rule414 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule415 #-}-   rule415 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule416 #-}-   rule416 = \ ((_lhsIntType) :: Type) ->-     _lhsIntType-   {-# INLINE rule417 #-}-   rule417 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule418 #-}-   rule418 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule419 #-}-   rule419 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule420 #-}-   rule420 = \ ((_lhsIrename) :: Bool) ->-     _lhsIrename-   {-# INLINE rule421 #-}-   rule421 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule422 #-}-   rule422 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-{-# NOINLINE sem_EProductions_Nil #-}-sem_EProductions_Nil ::  T_EProductions -sem_EProductions_Nil  = T_EProductions (return st17) where-   {-# NOINLINE st17 #-}-   st17 = let-      v16 :: T_EProductions_v16 -      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let-         _lhsOrecordtype :: PP_Doc-         _lhsOrecordtype = rule423  ()-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule424  ()-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule425  ()-         _lhsOcount :: Int-         _lhsOcount = rule426  ()-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule427  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule428  ()-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule429  ()-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule430  ()-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule431  ()-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule432  ()-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule433  ()-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule434  ()-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule435  ()-         _lhsOsem_prod_tys :: PP_Doc-         _lhsOsem_prod_tys = rule436  ()-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule437  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule438  ()-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule439  ()-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule440  ()-         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProductions_s17 v16-   {-# INLINE rule423 #-}-   {-# LINE 225 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule423 = \  (_ :: ()) ->-                             {-# LINE 225 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             empty-                             {-# LINE 3315 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule424 #-}-   {-# LINE 386 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule424 = \  (_ :: ()) ->-                           {-# LINE 386 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           error "Every nonterminal should have at least 1 production"-                           {-# LINE 3321 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule425 #-}-   rule425 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule426 #-}-   rule426 = \  (_ :: ()) ->-     0-   {-# INLINE rule427 #-}-   rule427 = \  (_ :: ()) ->-     []-   {-# INLINE rule428 #-}-   rule428 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule429 #-}-   rule429 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule430 #-}-   rule430 = \  (_ :: ()) ->-     return ()-   {-# INLINE rule431 #-}-   rule431 = \  (_ :: ()) ->-     []-   {-# INLINE rule432 #-}-   rule432 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule433 #-}-   rule433 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule434 #-}-   rule434 = \  (_ :: ()) ->-     empty-   {-# INLINE rule435 #-}-   rule435 = \  (_ :: ()) ->-     empty-   {-# INLINE rule436 #-}-   rule436 = \  (_ :: ()) ->-     empty-   {-# INLINE rule437 #-}-   rule437 = \  (_ :: ()) ->-     empty-   {-# INLINE rule438 #-}-   rule438 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule439 #-}-   rule439 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule440 #-}-   rule440 = \  (_ :: ()) ->-     Map.empty---- ERule ---------------------------------------------------------- wrapper-data Inh_ERule  = Inh_ERule { allInhmap_Inh_ERule :: (Map NontermIdent Attributes), allSynmap_Inh_ERule :: (Map NontermIdent Attributes), childTypes_Inh_ERule :: (Map Identifier Type), con_Inh_ERule :: (ConstructorIdent), constructorTypeMap_Inh_ERule :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ERule :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_ERule :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ERule :: (PP_Doc), inhmap_Inh_ERule :: (Attributes), lazyIntras_Inh_ERule :: (Set String), localAttrTypes_Inh_ERule :: (Map Identifier Type), mainFile_Inh_ERule :: (String), mainName_Inh_ERule :: (String), nt_Inh_ERule :: (NontermIdent), options_Inh_ERule :: (Options), ruleKinds_Inh_ERule :: (Map Identifier (Set VisitKind)), synmap_Inh_ERule :: (Attributes), textBlocks_Inh_ERule :: (PP_Doc), usageInfo_Inh_ERule :: (Map Identifier Int) }-data Syn_ERule  = Syn_ERule { errors_Syn_ERule :: (Seq Error), mrules_Syn_ERule :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), ruledefs_Syn_ERule :: (Map Identifier (Set String)), ruleuses_Syn_ERule :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERule :: (PP_Doc), usedArgs_Syn_ERule :: (Set String) }-{-# INLINABLE wrap_ERule #-}-wrap_ERule :: T_ERule  -> Inh_ERule  -> (Syn_ERule )-wrap_ERule (T_ERule act) (Inh_ERule _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo-        (T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs) <- return (inv_ERule_s20 sem arg)-        return (Syn_ERule _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs)-   )---- cata-{-# INLINE sem_ERule #-}-sem_ERule :: ERule  -> T_ERule -sem_ERule ( ERule name_ pattern_ rhs_ owrt_ origin_ explicit_ pure_ mbError_ ) = sem_ERule_ERule name_ ( sem_Pattern pattern_ ) ( sem_Expression rhs_ ) owrt_ origin_ explicit_ pure_ mbError_---- semantic domain-newtype T_ERule  = T_ERule {-                           attach_T_ERule :: Identity (T_ERule_s20 )-                           }-newtype T_ERule_s20  = C_ERule_s20 {-                                   inv_ERule_s20 :: (T_ERule_v19 )-                                   }-data T_ERule_s21  = C_ERule_s21-type T_ERule_v19  = (T_ERule_vIn19 ) -> (T_ERule_vOut19 )-data T_ERule_vIn19  = T_ERule_vIn19 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Attributes) (Set String) (Map Identifier Type) (String) (String) (NontermIdent) (Options) (Map Identifier (Set VisitKind)) (Attributes) (PP_Doc) (Map Identifier Int)-data T_ERule_vOut19  = T_ERule_vOut19 (Seq Error) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc) (Set String)-{-# NOINLINE sem_ERule_ERule #-}-sem_ERule_ERule :: (Identifier) -> T_Pattern  -> T_Expression  -> (Bool) -> (String) -> (Bool) -> (Bool) -> (Maybe Error) -> T_ERule -sem_ERule_ERule arg_name_ arg_pattern_ arg_rhs_ _ _ arg_explicit_ arg_pure_ arg_mbError_ = T_ERule (return st20) where-   {-# NOINLINE st20 #-}-   st20 = let-      v19 :: T_ERule_v19 -      v19 = \ (T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let-         _patternX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pattern_))-         _rhsX29 = Control.Monad.Identity.runIdentity (attach_T_Expression (arg_rhs_))-         (T_Pattern_vOut40 _patternIattrTypes _patternIattrs _patternIcopy _patternIisUnderscore _patternIsem_lhs) = inv_Pattern_s41 _patternX41 (T_Pattern_vIn40 _patternOallInhmap _patternOallSynmap _patternOanyLazyKind _patternOinhmap _patternOlocalAttrTypes _patternOoptions _patternOsynmap)-         (T_Expression_vOut28 _rhsIattrs _rhsIpos _rhsIsemfunc _rhsItks) = inv_Expression_s29 _rhsX29 (T_Expression_vIn28 _rhsOoptions)-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule441 _usedArgs_augmented_f1 _usedArgs_augmented_syn-         _usedArgs_augmented_f1 = rule442 _rhsIattrs-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule443 _rulecode _used-         _rulecode = rule444 _endpragma _genpragma _lambda _pragma _rhsIpos _rhsIsemfunc-         _pragma = rule445 _rhsIpos-         _endpragma = rule446 _lhsImainFile-         _genpragma = rule447 _haspos _lhsIoptions arg_explicit_-         _haspos = rule448 _rhsIpos-         _lambda = rule449 _argPats _lhsIoptions _rhsIattrs arg_name_-         _argPats = rule450 _addbang1 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIlazyIntras _lhsIlocalAttrTypes _lhsIoptions _rhsIattrs-         _argExprs = rule451 _rhsIattrs-         _stepcode = rule452 _argExprs _lhsIoptions _patternIattrTypes _patternIsem_lhs _rhsIattrs arg_name_ arg_pure_-         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)-         _lhsOmrules = rule453 _stepcode arg_name_-         _used = rule454 _lhsIusageInfo arg_name_-         _kinds = rule455 _lhsIruleKinds arg_name_-         _anyLazyKind = rule456 _kinds-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule457 _patternIattrs arg_name_-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule458 _rhsIattrs arg_name_-         _addbang = rule459 _lhsIoptions-         _addbang1 = rule460 _addbang _anyLazyKind-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule461 _used arg_mbError_-         _usedArgs_augmented_syn = rule462  ()-         _patternOallInhmap = rule463 _lhsIallInhmap-         _patternOallSynmap = rule464 _lhsIallSynmap-         _patternOanyLazyKind = rule465 _anyLazyKind-         _patternOinhmap = rule466 _lhsIinhmap-         _patternOlocalAttrTypes = rule467 _lhsIlocalAttrTypes-         _patternOoptions = rule468 _lhsIoptions-         _patternOsynmap = rule469 _lhsIsynmap-         _rhsOoptions = rule470 _lhsIoptions-         __result_ = T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs-         in __result_ )-     in C_ERule_s20 v19-   {-# INLINE rule441 #-}-   rule441 = \ _usedArgs_augmented_f1 _usedArgs_augmented_syn ->-     foldr ($) _usedArgs_augmented_syn [_usedArgs_augmented_f1]-   {-# INLINE rule442 #-}-   rule442 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->-                        Set.union $ Map.keysSet $ Map.mapKeys (\a -> "arg_" ++ a) $ Map.filter isNothing _rhsIattrs-   {-# INLINE rule443 #-}-   {-# LINE 1011 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule443 = \ _rulecode _used ->-                          {-# LINE 1011 "./src-ag/ExecutionPlan2Clean.ag" #-}-                          if _used     == 0-                          then empty-                          else _rulecode-                          {-# LINE 3464 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule444 #-}-   {-# LINE 1014 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule444 = \ _endpragma _genpragma _lambda _pragma ((_rhsIpos) :: Pos) ((_rhsIsemfunc) :: PP_Doc) ->-                          {-# LINE 1014 "./src-ag/ExecutionPlan2Clean.ag" #-}-                          ( if _genpragma-                            then _pragma-                            else empty-                          )-                          >-< _lambda-                          >-< indent ((column _rhsIpos - 2) `max` 2)-                                ( if _genpragma-                                  then _pragma     >-< _rhsIsemfunc >-< _endpragma-                                  else _rhsIsemfunc-                                )-                          {-# LINE 3479 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule445 #-}-   {-# LINE 1026 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule445 = \ ((_rhsIpos) :: Pos) ->-                           {-# LINE 1026 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           "/*# LINE" >#< show (line _rhsIpos) >#< show (file _rhsIpos) >#< "#*/"-                           {-# LINE 3485 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule446 #-}-   {-# LINE 1027 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule446 = \ ((_lhsImainFile) :: String) ->-                           {-# LINE 1027 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           ppWithLineNr (\ln -> "/*# LINE " ++ show (ln+1) ++ " " ++ show _lhsImainFile ++ "#*/")-                           {-# LINE 3491 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule447 #-}-   {-# LINE 1028 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule447 = \ _haspos ((_lhsIoptions) :: Options) explicit_ ->-                           {-# LINE 1028 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           genLinePragmas _lhsIoptions && explicit_ && _haspos-                           {-# LINE 3497 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule448 #-}-   {-# LINE 1029 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule448 = \ ((_rhsIpos) :: Pos) ->-                           {-# LINE 1029 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           line _rhsIpos > 0 && column _rhsIpos >= 0 && not (null (file _rhsIpos))-                           {-# LINE 3503 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule449 #-}-   {-# LINE 1042 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule449 = \ _argPats ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->-                           {-# LINE 1042 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           name_ >#< _argPats     >#< dummyPat _lhsIoptions (Map.null _rhsIattrs) >#< "="-                           {-# LINE 3509 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule450 #-}-   {-# LINE 1044 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule450 = \ _addbang1 ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIchildTypes) :: Map Identifier Type) ((_lhsIlazyIntras) :: Set String) ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->-                           {-# LINE 1044 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           ppSpaced [ let match | str `Set.member` _lhsIlazyIntras = pp str-                                                | otherwise                        = _addbang1     (pp str)-                                      in case mbAttr of-                                           Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->-                                             case Map.lookup nm _lhsIlocalAttrTypes of-                                               Just tp -> pp_parens (pp_parens match)-                                               Nothing -> match-                                           Just attr | not (noPerRuleTypeSigs _lhsIoptions) ->-                                             case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes of-                                               Just tpDoc -> pp_parens (pp_parens match)-                                               Nothing    -> match-                                           _ -> match-                                    | (str,mbAttr) <- Map.assocs _rhsIattrs-                                    ]-                           {-# LINE 3528 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule451 #-}-   {-# LINE 1058 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule451 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->-                           {-# LINE 1058 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           ppSpaced [ case mbAttr of-                                        Nothing -> "arg_" >|< str-                                        _       -> text str-                                    | (str,mbAttr) <- Map.assocs _rhsIattrs-                                    ]-                           {-# LINE 3538 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule452 #-}-   {-# LINE 1063 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule452 = \ _argExprs ((_lhsIoptions) :: Options) ((_patternIattrTypes) :: PP_Doc) ((_patternIsem_lhs) ::  PP_Doc ) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ pure_ ->-                           {-# LINE 1063 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           \kind fmtMode -> if kind `compatibleRule` pure_-                                            then Right $ let oper | pure_     = "="-                                                                  | otherwise = "<-"-                                                             decl = _patternIsem_lhs >#< oper >#< name_ >#< _argExprs     >#< dummyArg _lhsIoptions (Map.null _rhsIattrs)-                                                             tp   = if pure_ && not (noPerRuleTypeSigs _lhsIoptions)-                                                                      then _patternIattrTypes-                                                                      else empty-                                                         in fmtDecl pure_ fmtMode (tp >-< decl)-                                            else Left $ IncompatibleRuleKind name_ kind-                           {-# LINE 3552 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule453 #-}-   {-# LINE 1073 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule453 = \ _stepcode name_ ->-                           {-# LINE 1073 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           Map.singleton name_ _stepcode-                           {-# LINE 3558 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule454 #-}-   {-# LINE 1279 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule454 = \ ((_lhsIusageInfo) :: Map Identifier Int) name_ ->-                                                 {-# LINE 1279 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                 Map.findWithDefault 0 name_ _lhsIusageInfo-                                                 {-# LINE 3564 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule455 #-}-   {-# LINE 1295 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule455 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) name_ ->-                {-# LINE 1295 "./src-ag/ExecutionPlan2Clean.ag" #-}-                Map.findWithDefault Set.empty name_ _lhsIruleKinds-                {-# LINE 3570 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule456 #-}-   {-# LINE 1296 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule456 = \ _kinds ->-                      {-# LINE 1296 "./src-ag/ExecutionPlan2Clean.ag" #-}-                      Set.fold (\k r -> isLazyKind k || r) False _kinds-                      {-# LINE 3576 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule457 #-}-   {-# LINE 1342 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule457 = \ ((_patternIattrs) :: Set String) name_ ->-                           {-# LINE 1342 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           Map.singleton name_ _patternIattrs-                           {-# LINE 3582 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule458 #-}-   {-# LINE 1343 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule458 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->-                           {-# LINE 1343 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           Map.singleton name_ _rhsIattrs-                           {-# LINE 3588 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule459 #-}-   {-# LINE 1564 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule459 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1564 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 3594 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule460 #-}-   {-# LINE 1575 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule460 = \ _addbang _anyLazyKind ->-                                                     {-# LINE 1575 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                     if _anyLazyKind     then id else _addbang-                                                     {-# LINE 3600 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule461 #-}-   {-# LINE 1681 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule461 = \ _used mbError_ ->-                 {-# LINE 1681 "./src-ag/ExecutionPlan2Clean.ag" #-}-                 case mbError_ of-                   Just e | _used     > 0 -> Seq.singleton e-                   _                      -> Seq.empty-                 {-# LINE 3608 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule462 #-}-   rule462 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule463 #-}-   rule463 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule464 #-}-   rule464 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule465 #-}-   rule465 = \ _anyLazyKind ->-     _anyLazyKind-   {-# INLINE rule466 #-}-   rule466 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule467 #-}-   rule467 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule468 #-}-   rule468 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule469 #-}-   rule469 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule470 #-}-   rule470 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions---- ERules --------------------------------------------------------- wrapper-data Inh_ERules  = Inh_ERules { allInhmap_Inh_ERules :: (Map NontermIdent Attributes), allSynmap_Inh_ERules :: (Map NontermIdent Attributes), childTypes_Inh_ERules :: (Map Identifier Type), con_Inh_ERules :: (ConstructorIdent), constructorTypeMap_Inh_ERules :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ERules :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_ERules :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ERules :: (PP_Doc), inhmap_Inh_ERules :: (Attributes), lazyIntras_Inh_ERules :: (Set String), localAttrTypes_Inh_ERules :: (Map Identifier Type), mainFile_Inh_ERules :: (String), mainName_Inh_ERules :: (String), nt_Inh_ERules :: (NontermIdent), options_Inh_ERules :: (Options), ruleKinds_Inh_ERules :: (Map Identifier (Set VisitKind)), synmap_Inh_ERules :: (Attributes), textBlocks_Inh_ERules :: (PP_Doc), usageInfo_Inh_ERules :: (Map Identifier Int) }-data Syn_ERules  = Syn_ERules { errors_Syn_ERules :: (Seq Error), mrules_Syn_ERules :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), ruledefs_Syn_ERules :: (Map Identifier (Set String)), ruleuses_Syn_ERules :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERules :: (PP_Doc), usedArgs_Syn_ERules :: (Set String) }-{-# INLINABLE wrap_ERules #-}-wrap_ERules :: T_ERules  -> Inh_ERules  -> (Syn_ERules )-wrap_ERules (T_ERules act) (Inh_ERules _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo-        (T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs) <- return (inv_ERules_s23 sem arg)-        return (Syn_ERules _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs)-   )---- cata-{-# NOINLINE sem_ERules #-}-sem_ERules :: ERules  -> T_ERules -sem_ERules list = Prelude.foldr sem_ERules_Cons sem_ERules_Nil (Prelude.map sem_ERule list)---- semantic domain-newtype T_ERules  = T_ERules {-                             attach_T_ERules :: Identity (T_ERules_s23 )-                             }-newtype T_ERules_s23  = C_ERules_s23 {-                                     inv_ERules_s23 :: (T_ERules_v22 )-                                     }-data T_ERules_s24  = C_ERules_s24-type T_ERules_v22  = (T_ERules_vIn22 ) -> (T_ERules_vOut22 )-data T_ERules_vIn22  = T_ERules_vIn22 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Attributes) (Set String) (Map Identifier Type) (String) (String) (NontermIdent) (Options) (Map Identifier (Set VisitKind)) (Attributes) (PP_Doc) (Map Identifier Int)-data T_ERules_vOut22  = T_ERules_vOut22 (Seq Error) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc) (Set String)-{-# NOINLINE sem_ERules_Cons #-}-sem_ERules_Cons :: T_ERule  -> T_ERules  -> T_ERules -sem_ERules_Cons arg_hd_ arg_tl_ = T_ERules (return st23) where-   {-# NOINLINE st23 #-}-   st23 = let-      v22 :: T_ERules_v22 -      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let-         _hdX20 = Control.Monad.Identity.runIdentity (attach_T_ERule (arg_hd_))-         _tlX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_tl_))-         (T_ERule_vOut19 _hdIerrors _hdImrules _hdIruledefs _hdIruleuses _hdIsem_rules _hdIusedArgs) = inv_ERule_s20 _hdX20 (T_ERule_vIn19 _hdOallInhmap _hdOallSynmap _hdOchildTypes _hdOcon _hdOconstructorTypeMap _hdOdclModuleHeader _hdOiclModuleHeader _hdOimportBlocks _hdOinhmap _hdOlazyIntras _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOnt _hdOoptions _hdOruleKinds _hdOsynmap _hdOtextBlocks _hdOusageInfo)-         (T_ERules_vOut22 _tlIerrors _tlImrules _tlIruledefs _tlIruleuses _tlIsem_rules _tlIusedArgs) = inv_ERules_s23 _tlX23 (T_ERules_vIn22 _tlOallInhmap _tlOallSynmap _tlOchildTypes _tlOcon _tlOconstructorTypeMap _tlOdclModuleHeader _tlOiclModuleHeader _tlOimportBlocks _tlOinhmap _tlOlazyIntras _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOnt _tlOoptions _tlOruleKinds _tlOsynmap _tlOtextBlocks _tlOusageInfo)-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule471 _hdIerrors _tlIerrors-         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)-         _lhsOmrules = rule472 _hdImrules _tlImrules-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule473 _hdIruledefs _tlIruledefs-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule474 _hdIruleuses _tlIruleuses-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule475 _hdIsem_rules _tlIsem_rules-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule476 _hdIusedArgs _tlIusedArgs-         _hdOallInhmap = rule477 _lhsIallInhmap-         _hdOallSynmap = rule478 _lhsIallSynmap-         _hdOchildTypes = rule479 _lhsIchildTypes-         _hdOcon = rule480 _lhsIcon-         _hdOconstructorTypeMap = rule481 _lhsIconstructorTypeMap-         _hdOdclModuleHeader = rule482 _lhsIdclModuleHeader-         _hdOiclModuleHeader = rule483 _lhsIiclModuleHeader-         _hdOimportBlocks = rule484 _lhsIimportBlocks-         _hdOinhmap = rule485 _lhsIinhmap-         _hdOlazyIntras = rule486 _lhsIlazyIntras-         _hdOlocalAttrTypes = rule487 _lhsIlocalAttrTypes-         _hdOmainFile = rule488 _lhsImainFile-         _hdOmainName = rule489 _lhsImainName-         _hdOnt = rule490 _lhsInt-         _hdOoptions = rule491 _lhsIoptions-         _hdOruleKinds = rule492 _lhsIruleKinds-         _hdOsynmap = rule493 _lhsIsynmap-         _hdOtextBlocks = rule494 _lhsItextBlocks-         _hdOusageInfo = rule495 _lhsIusageInfo-         _tlOallInhmap = rule496 _lhsIallInhmap-         _tlOallSynmap = rule497 _lhsIallSynmap-         _tlOchildTypes = rule498 _lhsIchildTypes-         _tlOcon = rule499 _lhsIcon-         _tlOconstructorTypeMap = rule500 _lhsIconstructorTypeMap-         _tlOdclModuleHeader = rule501 _lhsIdclModuleHeader-         _tlOiclModuleHeader = rule502 _lhsIiclModuleHeader-         _tlOimportBlocks = rule503 _lhsIimportBlocks-         _tlOinhmap = rule504 _lhsIinhmap-         _tlOlazyIntras = rule505 _lhsIlazyIntras-         _tlOlocalAttrTypes = rule506 _lhsIlocalAttrTypes-         _tlOmainFile = rule507 _lhsImainFile-         _tlOmainName = rule508 _lhsImainName-         _tlOnt = rule509 _lhsInt-         _tlOoptions = rule510 _lhsIoptions-         _tlOruleKinds = rule511 _lhsIruleKinds-         _tlOsynmap = rule512 _lhsIsynmap-         _tlOtextBlocks = rule513 _lhsItextBlocks-         _tlOusageInfo = rule514 _lhsIusageInfo-         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs-         in __result_ )-     in C_ERules_s23 v22-   {-# INLINE rule471 #-}-   rule471 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule472 #-}-   rule472 = \ ((_hdImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ((_tlImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _hdImrules `Map.union` _tlImrules-   {-# INLINE rule473 #-}-   rule473 = \ ((_hdIruledefs) :: Map Identifier (Set String)) ((_tlIruledefs) :: Map Identifier (Set String)) ->-     _hdIruledefs `uwSetUnion` _tlIruledefs-   {-# INLINE rule474 #-}-   rule474 = \ ((_hdIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ((_tlIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _hdIruleuses `uwMapUnion` _tlIruleuses-   {-# INLINE rule475 #-}-   rule475 = \ ((_hdIsem_rules) :: PP_Doc) ((_tlIsem_rules) :: PP_Doc) ->-     _hdIsem_rules >-< _tlIsem_rules-   {-# INLINE rule476 #-}-   rule476 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->-     _hdIusedArgs `Set.union` _tlIusedArgs-   {-# INLINE rule477 #-}-   rule477 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule478 #-}-   rule478 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule479 #-}-   rule479 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule480 #-}-   rule480 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule481 #-}-   rule481 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule482 #-}-   rule482 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule483 #-}-   rule483 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule484 #-}-   rule484 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule485 #-}-   rule485 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule486 #-}-   rule486 = \ ((_lhsIlazyIntras) :: Set String) ->-     _lhsIlazyIntras-   {-# INLINE rule487 #-}-   rule487 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule488 #-}-   rule488 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule489 #-}-   rule489 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule490 #-}-   rule490 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule491 #-}-   rule491 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule492 #-}-   rule492 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _lhsIruleKinds-   {-# INLINE rule493 #-}-   rule493 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule494 #-}-   rule494 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule495 #-}-   rule495 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->-     _lhsIusageInfo-   {-# INLINE rule496 #-}-   rule496 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule497 #-}-   rule497 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule498 #-}-   rule498 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule499 #-}-   rule499 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule500 #-}-   rule500 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule501 #-}-   rule501 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule502 #-}-   rule502 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule503 #-}-   rule503 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule504 #-}-   rule504 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule505 #-}-   rule505 = \ ((_lhsIlazyIntras) :: Set String) ->-     _lhsIlazyIntras-   {-# INLINE rule506 #-}-   rule506 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule507 #-}-   rule507 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule508 #-}-   rule508 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule509 #-}-   rule509 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule510 #-}-   rule510 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule511 #-}-   rule511 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _lhsIruleKinds-   {-# INLINE rule512 #-}-   rule512 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule513 #-}-   rule513 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule514 #-}-   rule514 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->-     _lhsIusageInfo-{-# NOINLINE sem_ERules_Nil #-}-sem_ERules_Nil ::  T_ERules -sem_ERules_Nil  = T_ERules (return st23) where-   {-# NOINLINE st23 #-}-   st23 = let-      v22 :: T_ERules_v22 -      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule515  ()-         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)-         _lhsOmrules = rule516  ()-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule517  ()-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule518  ()-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule519  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule520  ()-         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs-         in __result_ )-     in C_ERules_s23 v22-   {-# INLINE rule515 #-}-   rule515 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule516 #-}-   rule516 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule517 #-}-   rule517 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule518 #-}-   rule518 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule519 #-}-   rule519 = \  (_ :: ()) ->-     empty-   {-# INLINE rule520 #-}-   rule520 = \  (_ :: ()) ->-     Set.empty---- ExecutionPlan -------------------------------------------------- wrapper-data Inh_ExecutionPlan  = Inh_ExecutionPlan { constructorTypeMap_Inh_ExecutionPlan :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ExecutionPlan :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_ExecutionPlan :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ExecutionPlan :: (PP_Doc), inhmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), localAttrTypes_Inh_ExecutionPlan :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainBlocksDoc_Inh_ExecutionPlan :: (PP_Doc), mainFile_Inh_ExecutionPlan :: (String), mainName_Inh_ExecutionPlan :: (String), options_Inh_ExecutionPlan :: (Options), synmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), textBlockMap_Inh_ExecutionPlan :: (Map BlockInfo PP_Doc), textBlocks_Inh_ExecutionPlan :: (PP_Doc) }-data Syn_ExecutionPlan  = Syn_ExecutionPlan { errors_Syn_ExecutionPlan :: (Seq Error), genIO_Syn_ExecutionPlan :: (IO ()), output_Syn_ExecutionPlan :: (PP_Doc), output_dcl_Syn_ExecutionPlan :: (PP_Doc) }-{-# INLINABLE wrap_ExecutionPlan #-}-wrap_ExecutionPlan :: T_ExecutionPlan  -> Inh_ExecutionPlan  -> (Syn_ExecutionPlan )-wrap_ExecutionPlan (T_ExecutionPlan act) (Inh_ExecutionPlan _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ExecutionPlan_vIn25 _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks-        (T_ExecutionPlan_vOut25 _lhsOerrors _lhsOgenIO _lhsOoutput _lhsOoutput_dcl) <- return (inv_ExecutionPlan_s26 sem arg)-        return (Syn_ExecutionPlan _lhsOerrors _lhsOgenIO _lhsOoutput _lhsOoutput_dcl)-   )---- cata-{-# INLINE sem_ExecutionPlan #-}-sem_ExecutionPlan :: ExecutionPlan  -> T_ExecutionPlan -sem_ExecutionPlan ( ExecutionPlan nonts_ typeSyns_ wrappers_ derivings_ ) = sem_ExecutionPlan_ExecutionPlan ( sem_ENonterminals nonts_ ) typeSyns_ wrappers_ derivings_---- semantic domain-newtype T_ExecutionPlan  = T_ExecutionPlan {-                                           attach_T_ExecutionPlan :: Identity (T_ExecutionPlan_s26 )-                                           }-newtype T_ExecutionPlan_s26  = C_ExecutionPlan_s26 {-                                                   inv_ExecutionPlan_s26 :: (T_ExecutionPlan_v25 )-                                                   }-data T_ExecutionPlan_s27  = C_ExecutionPlan_s27-type T_ExecutionPlan_v25  = (T_ExecutionPlan_vIn25 ) -> (T_ExecutionPlan_vOut25 )-data T_ExecutionPlan_vIn25  = T_ExecutionPlan_vIn25 (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (PP_Doc) (String) (String) (Options) (Map NontermIdent Attributes) (Map BlockInfo PP_Doc) (PP_Doc)-data T_ExecutionPlan_vOut25  = T_ExecutionPlan_vOut25 (Seq Error) (IO ()) (PP_Doc) (PP_Doc)-{-# NOINLINE sem_ExecutionPlan_ExecutionPlan #-}-sem_ExecutionPlan_ExecutionPlan :: T_ENonterminals  -> (TypeSyns) -> (Set NontermIdent) -> (Derivings) -> T_ExecutionPlan -sem_ExecutionPlan_ExecutionPlan arg_nonts_ arg_typeSyns_ arg_wrappers_ arg_derivings_ = T_ExecutionPlan (return st26) where-   {-# NOINLINE st26 #-}-   st26 = let-      v25 :: T_ExecutionPlan_v25 -      v25 = \ (T_ExecutionPlan_vIn25 _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks) -> ( let-         _nontsX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_nonts_))-         (T_ENonterminals_vOut10 _nontsIappendCommon _nontsIappendMain _nontsIchildvisit _nontsIerrors _nontsIfromToStates _nontsIgenProdIO _nontsIimports _nontsIinitStates _nontsIoutput _nontsIoutput_dcl _nontsIsemFunBndDefs _nontsIsemFunBndTps _nontsIvisitKinds _nontsIvisitdefs _nontsIvisituses) = inv_ENonterminals_s11 _nontsX11 (T_ENonterminals_vIn10 _nontsOallFromToStates _nontsOallInitStates _nontsOallVisitKinds _nontsOallchildvisit _nontsOavisitdefs _nontsOavisituses _nontsOconstructorTypeMap _nontsOdclModuleHeader _nontsOderivings _nontsOiclModuleHeader _nontsOimportBlocks _nontsOinhmap _nontsOlocalAttrTypes _nontsOmainFile _nontsOmainName _nontsOoptions _nontsOsynmap _nontsOtextBlocks _nontsOtypeSyns _nontsOwrappers)-         _lhsOoutput :: PP_Doc-         _lhsOoutput = rule521 _commonExtra _nontsIoutput _wrappersExtra-         _lhsOoutput_dcl :: PP_Doc-         _lhsOoutput_dcl = rule522 _nontsIoutput_dcl-         _nontsOwrappers = rule523 arg_wrappers_-         _nontsOtypeSyns = rule524 arg_typeSyns_-         _nontsOderivings = rule525 arg_derivings_-         _wrappersExtra = rule526 _lateSemBndDef _lhsIoptions-         _commonExtra = rule527 _lateSemBndTp _lhsIoptions-         _lateSemBndTp = rule528 _lhsImainName _nontsIsemFunBndTps-         _lateSemBndDef = rule529 _lhsImainName _nontsIsemFunBndDefs-         _nontsOallchildvisit = rule530 _nontsIchildvisit-         _nontsOavisitdefs = rule531 _nontsIvisitdefs-         _nontsOavisituses = rule532 _nontsIvisituses-         _lhsOgenIO :: IO ()-         _lhsOgenIO = rule533 _genCommonModule _genMainModule _nontsIgenProdIO-         _mainModuleFile = rule534 _lhsImainFile-         _ppMonadImports = rule535  ()-         _genMainModule = rule536 _lhsIiclModuleHeader _lhsImainBlocksDoc _lhsImainName _mainModuleFile _nontsIappendMain _nontsIimports _ppMonadImports _wrappersExtra-         _commonFile = rule537 _lhsImainFile-         _genCommonModule = rule538 _commonExtra _commonFile _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainName _lhsItextBlocks _nontsIappendCommon _ppMonadImports-         _nontsOallFromToStates = rule539 _nontsIfromToStates-         _nontsOallVisitKinds = rule540 _nontsIvisitKinds-         _nontsOallInitStates = rule541 _nontsIinitStates-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule542 _nontsIerrors-         _nontsOconstructorTypeMap = rule543 _lhsIconstructorTypeMap-         _nontsOdclModuleHeader = rule544 _lhsIdclModuleHeader-         _nontsOiclModuleHeader = rule545 _lhsIiclModuleHeader-         _nontsOimportBlocks = rule546 _lhsIimportBlocks-         _nontsOinhmap = rule547 _lhsIinhmap-         _nontsOlocalAttrTypes = rule548 _lhsIlocalAttrTypes-         _nontsOmainFile = rule549 _lhsImainFile-         _nontsOmainName = rule550 _lhsImainName-         _nontsOoptions = rule551 _lhsIoptions-         _nontsOsynmap = rule552 _lhsIsynmap-         _nontsOtextBlocks = rule553 _lhsItextBlocks-         __result_ = T_ExecutionPlan_vOut25 _lhsOerrors _lhsOgenIO _lhsOoutput _lhsOoutput_dcl-         in __result_ )-     in C_ExecutionPlan_s26 v25-   {-# INLINE rule521 #-}-   {-# LINE 91 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule521 = \ _commonExtra ((_nontsIoutput) :: PP_Doc) _wrappersExtra ->-                                 {-# LINE 91 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _nontsIoutput >-< _commonExtra     >-< _wrappersExtra-                                 {-# LINE 3988 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule522 #-}-   {-# LINE 92 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule522 = \ ((_nontsIoutput_dcl) :: PP_Doc) ->-                                     {-# LINE 92 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     _nontsIoutput_dcl-                                     {-# LINE 3994 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule523 #-}-   {-# LINE 99 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule523 = \ wrappers_ ->-                                     {-# LINE 99 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     wrappers_-                                     {-# LINE 4000 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule524 #-}-   {-# LINE 159 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule524 = \ typeSyns_ ->-                                     {-# LINE 159 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     typeSyns_-                                     {-# LINE 4006 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule525 #-}-   {-# LINE 160 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule525 = \ derivings_ ->-                                      {-# LINE 160 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                      derivings_-                                      {-# LINE 4012 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule526 #-}-   {-# LINE 599 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule526 = \ _lateSemBndDef ((_lhsIoptions) :: Options) ->-                        {-# LINE 599 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        if lateHigherOrderBinding _lhsIoptions-                        then _lateSemBndDef-                        else empty-                        {-# LINE 4020 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule527 #-}-   {-# LINE 602 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule527 = \ _lateSemBndTp ((_lhsIoptions) :: Options) ->-                        {-# LINE 602 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        if lateHigherOrderBinding _lhsIoptions-                        then _lateSemBndTp-                        else empty-                        {-# LINE 4028 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule528 #-}-   {-# LINE 605 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule528 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndTps) :: Seq PP_Doc) ->-                       {-# LINE 605 "./src-ag/ExecutionPlan2Clean.ag" #-}-                       "::" >#< lateBindingTypeNm _lhsImainName >#< "=" >#< lateBindingTypeNm _lhsImainName-                        >-< (indent 2 $ pp_block "{" "}" "," $ toList _nontsIsemFunBndTps)-                       {-# LINE 4035 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule529 #-}-   {-# LINE 607 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule529 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndDefs) :: Seq PP_Doc) ->-                        {-# LINE 607 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        lateBindingFieldNm _lhsImainName >#< "::" >#< lateBindingTypeNm _lhsImainName-                        >-< lateBindingFieldNm _lhsImainName >#< "=" >#< lateBindingTypeNm _lhsImainName-                        >-< (indent 2 $ pp_block "{" "}" "," $ toList _nontsIsemFunBndDefs )-                        {-# LINE 4043 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule530 #-}-   {-# LINE 1223 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule530 = \ ((_nontsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-                                          {-# LINE 1223 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                          _nontsIchildvisit-                                          {-# LINE 4049 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule531 #-}-   {-# LINE 1367 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule531 = \ ((_nontsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-                                       {-# LINE 1367 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                       _nontsIvisitdefs-                                       {-# LINE 4055 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule532 #-}-   {-# LINE 1368 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule532 = \ ((_nontsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-                                       {-# LINE 1368 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                       _nontsIvisituses-                                       {-# LINE 4061 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule533 #-}-   {-# LINE 1439 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule533 = \ _genCommonModule _genMainModule ((_nontsIgenProdIO) :: IO ()) ->-                                          {-# LINE 1439 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                          do _genMainModule-                                             _genCommonModule-                                             _nontsIgenProdIO-                                          {-# LINE 4069 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule534 #-}-   {-# LINE 1442 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule534 = \ ((_lhsImainFile) :: String) ->-                                          {-# LINE 1442 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                          _lhsImainFile-                                          {-# LINE 4075 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule535 #-}-   {-# LINE 1443 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule535 = \  (_ :: ()) ->-                                          {-# LINE 1443 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                          pp "import qualified Control.Monad.Identity"-                                          {-# LINE 4081 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule536 #-}-   {-# LINE 1444 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule536 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ((_lhsImainBlocksDoc) :: PP_Doc) ((_lhsImainName) :: String) _mainModuleFile ((_nontsIappendMain) :: [PP_Doc]) ((_nontsIimports) :: [PP_Doc]) _ppMonadImports _wrappersExtra ->-                                          {-# LINE 1444 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                          writeModule _mainModuleFile-                                            ( [ pp $ _lhsIiclModuleHeader _lhsImainName "" "" False-                                              , _ppMonadImports-                                              , pp $ "import " ++ _lhsImainName ++ "_common"-                                              ]-                                              ++ _nontsIimports-                                              ++ [_lhsImainBlocksDoc]-                                              ++ [_wrappersExtra    ]-                                              ++ _nontsIappendMain-                                            )-                                          {-# LINE 4096 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule537 #-}-   {-# LINE 1454 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule537 = \ ((_lhsImainFile) :: String) ->-                                          {-# LINE 1454 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                          replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ "_common")-                                          {-# LINE 4102 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule538 #-}-   {-# LINE 1455 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule538 = \ _commonExtra _commonFile ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsItextBlocks) :: PP_Doc) ((_nontsIappendCommon) :: [PP_Doc]) _ppMonadImports ->-                                          {-# LINE 1455 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                          writeModule _commonFile-                                            ( [ pp $ _lhsIiclModuleHeader _lhsImainName "_common" "" True-                                              , _ppMonadImports-                                              , _lhsIimportBlocks-                                              , _lhsItextBlocks-                                              , _commonExtra-                                              ]-                                              ++ _nontsIappendCommon-                                            )-                                          {-# LINE 4116 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule539 #-}-   {-# LINE 1603 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule539 = \ ((_nontsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-                            {-# LINE 1603 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            _nontsIfromToStates-                            {-# LINE 4122 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule540 #-}-   {-# LINE 1647 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule540 = \ ((_nontsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-                          {-# LINE 1647 "./src-ag/ExecutionPlan2Clean.ag" #-}-                          _nontsIvisitKinds-                          {-# LINE 4128 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule541 #-}-   {-# LINE 1661 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule541 = \ ((_nontsIinitStates) :: Map NontermIdent Int) ->-                          {-# LINE 1661 "./src-ag/ExecutionPlan2Clean.ag" #-}-                          _nontsIinitStates-                          {-# LINE 4134 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule542 #-}-   rule542 = \ ((_nontsIerrors) :: Seq Error) ->-     _nontsIerrors-   {-# INLINE rule543 #-}-   rule543 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->-     _lhsIconstructorTypeMap-   {-# INLINE rule544 #-}-   rule544 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIdclModuleHeader-   {-# INLINE rule545 #-}-   rule545 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsIiclModuleHeader-   {-# INLINE rule546 #-}-   rule546 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule547 #-}-   rule547 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule548 #-}-   rule548 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule549 #-}-   rule549 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule550 #-}-   rule550 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule551 #-}-   rule551 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule552 #-}-   rule552 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap-   {-# INLINE rule553 #-}-   rule553 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks---- Expression ----------------------------------------------------- wrapper-data Inh_Expression  = Inh_Expression { options_Inh_Expression :: (Options) }-data Syn_Expression  = Syn_Expression { attrs_Syn_Expression :: (Map String (Maybe NonLocalAttr)), pos_Syn_Expression :: (Pos), semfunc_Syn_Expression :: (PP_Doc), tks_Syn_Expression :: ([HsToken]) }-{-# INLINABLE wrap_Expression #-}-wrap_Expression :: T_Expression  -> Inh_Expression  -> (Syn_Expression )-wrap_Expression (T_Expression act) (Inh_Expression _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Expression_vIn28 _lhsIoptions-        (T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks) <- return (inv_Expression_s29 sem arg)-        return (Syn_Expression _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks)-   )---- cata-{-# INLINE sem_Expression #-}-sem_Expression :: Expression  -> T_Expression -sem_Expression ( Expression pos_ tks_ ) = sem_Expression_Expression pos_ tks_---- semantic domain-newtype T_Expression  = T_Expression {-                                     attach_T_Expression :: Identity (T_Expression_s29 )-                                     }-newtype T_Expression_s29  = C_Expression_s29 {-                                             inv_Expression_s29 :: (T_Expression_v28 )-                                             }-data T_Expression_s30  = C_Expression_s30-type T_Expression_v28  = (T_Expression_vIn28 ) -> (T_Expression_vOut28 )-data T_Expression_vIn28  = T_Expression_vIn28 (Options)-data T_Expression_vOut28  = T_Expression_vOut28 (Map String (Maybe NonLocalAttr)) (Pos) (PP_Doc) ([HsToken])-{-# NOINLINE sem_Expression_Expression #-}-sem_Expression_Expression :: (Pos) -> ([HsToken]) -> T_Expression -sem_Expression_Expression arg_pos_ arg_tks_ = T_Expression (return st29) where-   {-# NOINLINE st29 #-}-   st29 = let-      v28 :: T_Expression_v28 -      v28 = \ (T_Expression_vIn28 _lhsIoptions) -> ( let-         _lhsOtks :: [HsToken]-         _lhsOtks = rule554 arg_tks_-         _lhsOpos :: Pos-         _lhsOpos = rule555 arg_pos_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule556 _inhhstoken arg_tks_-         _lhsOsemfunc :: PP_Doc-         _lhsOsemfunc = rule557 _inhhstoken arg_tks_-         _inhhstoken = rule558 _lhsIoptions-         __result_ = T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks-         in __result_ )-     in C_Expression_s29 v28-   {-# INLINE rule554 #-}-   {-# LINE 1077 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule554 = \ tks_ ->-                           {-# LINE 1077 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           tks_-                           {-# LINE 4226 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule555 #-}-   {-# LINE 1120 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule555 = \ pos_ ->-                                        {-# LINE 1120 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                        pos_-                                        {-# LINE 4232 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule556 #-}-   {-# LINE 1207 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule556 = \ _inhhstoken tks_ ->-                               {-# LINE 1207 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               Map.unions $ map (\tok -> attrs_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_-                               {-# LINE 4238 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule557 #-}-   {-# LINE 1208 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule557 = \ _inhhstoken tks_ ->-                               {-# LINE 1208 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               vlist $ showTokens $ map (\tok -> tok_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_-                               {-# LINE 4244 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule558 #-}-   {-# LINE 1209 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule558 = \ ((_lhsIoptions) :: Options) ->-                                  {-# LINE 1209 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  Inh_HsToken _lhsIoptions-                                  {-# LINE 4250 "dist/build/ExecutionPlan2Clean.hs"#-}---- HsToken -------------------------------------------------------- wrapper-data Inh_HsToken  = Inh_HsToken { options_Inh_HsToken :: (Options) }-data Syn_HsToken  = Syn_HsToken { attrs_Syn_HsToken :: (Map String (Maybe NonLocalAttr)), tok_Syn_HsToken :: ((Pos,String)) }-{-# INLINABLE wrap_HsToken #-}-wrap_HsToken :: T_HsToken  -> Inh_HsToken  -> (Syn_HsToken )-wrap_HsToken (T_HsToken act) (Inh_HsToken _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsToken_vIn31 _lhsIoptions-        (T_HsToken_vOut31 _lhsOattrs _lhsOtok) <- return (inv_HsToken_s32 sem arg)-        return (Syn_HsToken _lhsOattrs _lhsOtok)-   )---- cata-{-# NOINLINE sem_HsToken #-}-sem_HsToken :: HsToken  -> T_HsToken -sem_HsToken ( AGLocal var_ pos_ rdesc_ ) = sem_HsToken_AGLocal var_ pos_ rdesc_-sem_HsToken ( AGField field_ attr_ pos_ rdesc_ ) = sem_HsToken_AGField field_ attr_ pos_ rdesc_-sem_HsToken ( HsToken value_ pos_ ) = sem_HsToken_HsToken value_ pos_-sem_HsToken ( CharToken value_ pos_ ) = sem_HsToken_CharToken value_ pos_-sem_HsToken ( StrToken value_ pos_ ) = sem_HsToken_StrToken value_ pos_-sem_HsToken ( Err mesg_ pos_ ) = sem_HsToken_Err mesg_ pos_---- semantic domain-newtype T_HsToken  = T_HsToken {-                               attach_T_HsToken :: Identity (T_HsToken_s32 )-                               }-newtype T_HsToken_s32  = C_HsToken_s32 {-                                       inv_HsToken_s32 :: (T_HsToken_v31 )-                                       }-data T_HsToken_s33  = C_HsToken_s33-type T_HsToken_v31  = (T_HsToken_vIn31 ) -> (T_HsToken_vOut31 )-data T_HsToken_vIn31  = T_HsToken_vIn31 (Options)-data T_HsToken_vOut31  = T_HsToken_vOut31 (Map String (Maybe NonLocalAttr)) ((Pos,String))-{-# NOINLINE sem_HsToken_AGLocal #-}-sem_HsToken_AGLocal :: (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken -sem_HsToken_AGLocal arg_var_ arg_pos_ _ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule559 arg_var_-         _tok = rule560 arg_pos_ arg_var_-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule561 _tok-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule559 #-}-   {-# LINE 1166 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule559 = \ var_ ->-                              {-# LINE 1166 "./src-ag/ExecutionPlan2Clean.ag" #-}-                              Map.singleton (fieldname var_) Nothing-                              {-# LINE 4307 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule560 #-}-   {-# LINE 1412 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule560 = \ pos_ var_ ->-                          {-# LINE 1412 "./src-ag/ExecutionPlan2Clean.ag" #-}-                          (pos_,fieldname var_)-                          {-# LINE 4313 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule561 #-}-   rule561 = \ _tok ->-     _tok-{-# NOINLINE sem_HsToken_AGField #-}-sem_HsToken_AGField :: (Identifier) -> (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken -sem_HsToken_AGField arg_field_ arg_attr_ arg_pos_ arg_rdesc_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _mbAttr = rule562 arg_attr_ arg_field_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule563 _lhsIoptions _mbAttr arg_attr_ arg_field_-         _addTrace = rule564 arg_attr_ arg_field_ arg_rdesc_-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule565 _addTrace _lhsIoptions arg_attr_ arg_field_ arg_pos_-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule562 #-}-   {-# LINE 1167 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule562 = \ attr_ field_ ->-                              {-# LINE 1167 "./src-ag/ExecutionPlan2Clean.ag" #-}-                              if field_ == _INST || field_ == _FIELD || field_ == _INST'-                              then Nothing-                              else Just $ mkNonLocalAttr (field_ == _LHS) field_ attr_-                              {-# LINE 4340 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule563 #-}-   {-# LINE 1170 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule563 = \ ((_lhsIoptions) :: Options) _mbAttr attr_ field_ ->-                              {-# LINE 1170 "./src-ag/ExecutionPlan2Clean.ag" #-}-                              Map.singleton (attrname _lhsIoptions True field_ attr_) _mbAttr-                              {-# LINE 4346 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule564 #-}-   {-# LINE 1416 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule564 = \ attr_ field_ rdesc_ ->-                        {-# LINE 1416 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        case rdesc_ of-                          Just d  -> \x -> "(trace_n " ++ show (d ++ " -> " ++ show field_ ++ "." ++ show attr_) ++ " (" ++ x ++ "))"-                          Nothing -> id-                        {-# LINE 4354 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule565 #-}-   {-# LINE 1419 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule565 = \ _addTrace ((_lhsIoptions) :: Options) attr_ field_ pos_ ->-                   {-# LINE 1419 "./src-ag/ExecutionPlan2Clean.ag" #-}-                   (pos_, _addTrace     $ attrname _lhsIoptions True field_ attr_)-                   {-# LINE 4360 "dist/build/ExecutionPlan2Clean.hs"#-}-{-# NOINLINE sem_HsToken_HsToken #-}-sem_HsToken_HsToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_HsToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule566 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule567  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule566 #-}-   {-# LINE 1421 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule566 = \ pos_ value_ ->-                         {-# LINE 1421 "./src-ag/ExecutionPlan2Clean.ag" #-}-                         (pos_, value_)-                         {-# LINE 4380 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule567 #-}-   rule567 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_CharToken #-}-sem_HsToken_CharToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_CharToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule568 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule569  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule568 #-}-   {-# LINE 1423 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule568 = \ pos_ value_ ->-                           {-# LINE 1423 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           (pos_, if null value_-                                     then ""-                                     else showCharShort (head value_)-                           )-                           {-# LINE 4406 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule569 #-}-   rule569 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_StrToken #-}-sem_HsToken_StrToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_StrToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule570 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule571  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule570 #-}-   {-# LINE 1428 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule570 = \ pos_ value_ ->-                           {-# LINE 1428 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           (pos_, showStrShort value_)-                           {-# LINE 4429 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule571 #-}-   rule571 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_Err #-}-sem_HsToken_Err :: (String) -> (Pos) -> T_HsToken -sem_HsToken_Err _ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule572 arg_pos_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule573  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule572 #-}-   {-# LINE 1429 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule572 = \ pos_ ->-                           {-# LINE 1429 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           (pos_, "")-                           {-# LINE 4452 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule573 #-}-   rule573 = \  (_ :: ()) ->-     Map.empty---- HsTokens ------------------------------------------------------- wrapper-data Inh_HsTokens  = Inh_HsTokens { options_Inh_HsTokens :: (Options) }-data Syn_HsTokens  = Syn_HsTokens { tks_Syn_HsTokens :: ([(Pos,String)]) }-{-# INLINABLE wrap_HsTokens #-}-wrap_HsTokens :: T_HsTokens  -> Inh_HsTokens  -> (Syn_HsTokens )-wrap_HsTokens (T_HsTokens act) (Inh_HsTokens _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsTokens_vIn34 _lhsIoptions-        (T_HsTokens_vOut34 _lhsOtks) <- return (inv_HsTokens_s35 sem arg)-        return (Syn_HsTokens _lhsOtks)-   )---- cata-{-# NOINLINE sem_HsTokens #-}-sem_HsTokens :: HsTokens  -> T_HsTokens -sem_HsTokens list = Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list)---- semantic domain-newtype T_HsTokens  = T_HsTokens {-                                 attach_T_HsTokens :: Identity (T_HsTokens_s35 )-                                 }-newtype T_HsTokens_s35  = C_HsTokens_s35 {-                                         inv_HsTokens_s35 :: (T_HsTokens_v34 )-                                         }-data T_HsTokens_s36  = C_HsTokens_s36-type T_HsTokens_v34  = (T_HsTokens_vIn34 ) -> (T_HsTokens_vOut34 )-data T_HsTokens_vIn34  = T_HsTokens_vIn34 (Options)-data T_HsTokens_vOut34  = T_HsTokens_vOut34 ([(Pos,String)])-{-# NOINLINE sem_HsTokens_Cons #-}-sem_HsTokens_Cons :: T_HsToken  -> T_HsTokens  -> T_HsTokens -sem_HsTokens_Cons arg_hd_ arg_tl_ = T_HsTokens (return st35) where-   {-# NOINLINE st35 #-}-   st35 = let-      v34 :: T_HsTokens_v34 -      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let-         _hdX32 = Control.Monad.Identity.runIdentity (attach_T_HsToken (arg_hd_))-         _tlX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tl_))-         (T_HsToken_vOut31 _hdIattrs _hdItok) = inv_HsToken_s32 _hdX32 (T_HsToken_vIn31 _hdOoptions)-         (T_HsTokens_vOut34 _tlItks) = inv_HsTokens_s35 _tlX35 (T_HsTokens_vIn34 _tlOoptions)-         _lhsOtks :: [(Pos,String)]-         _lhsOtks = rule574 _hdItok _tlItks-         _hdOoptions = rule575 _lhsIoptions-         _tlOoptions = rule576 _lhsIoptions-         __result_ = T_HsTokens_vOut34 _lhsOtks-         in __result_ )-     in C_HsTokens_s35 v34-   {-# INLINE rule574 #-}-   {-# LINE 1408 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule574 = \ ((_hdItok) :: (Pos,String)) ((_tlItks) :: [(Pos,String)]) ->-                     {-# LINE 1408 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     _hdItok : _tlItks-                     {-# LINE 4510 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule575 #-}-   rule575 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule576 #-}-   rule576 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-{-# NOINLINE sem_HsTokens_Nil #-}-sem_HsTokens_Nil ::  T_HsTokens -sem_HsTokens_Nil  = T_HsTokens (return st35) where-   {-# NOINLINE st35 #-}-   st35 = let-      v34 :: T_HsTokens_v34 -      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let-         _lhsOtks :: [(Pos,String)]-         _lhsOtks = rule577  ()-         __result_ = T_HsTokens_vOut34 _lhsOtks-         in __result_ )-     in C_HsTokens_s35 v34-   {-# INLINE rule577 #-}-   {-# LINE 1409 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule577 = \  (_ :: ()) ->-                     {-# LINE 1409 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     []-                     {-# LINE 4534 "dist/build/ExecutionPlan2Clean.hs"#-}---- HsTokensRoot --------------------------------------------------- wrapper-data Inh_HsTokensRoot  = Inh_HsTokensRoot { options_Inh_HsTokensRoot :: (Options) }-data Syn_HsTokensRoot  = Syn_HsTokensRoot {  }-{-# INLINABLE wrap_HsTokensRoot #-}-wrap_HsTokensRoot :: T_HsTokensRoot  -> Inh_HsTokensRoot  -> (Syn_HsTokensRoot )-wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsTokensRoot_vIn37 _lhsIoptions-        (T_HsTokensRoot_vOut37 ) <- return (inv_HsTokensRoot_s38 sem arg)-        return (Syn_HsTokensRoot )-   )---- cata-{-# INLINE sem_HsTokensRoot #-}-sem_HsTokensRoot :: HsTokensRoot  -> T_HsTokensRoot -sem_HsTokensRoot ( HsTokensRoot tokens_ ) = sem_HsTokensRoot_HsTokensRoot ( sem_HsTokens tokens_ )---- semantic domain-newtype T_HsTokensRoot  = T_HsTokensRoot {-                                         attach_T_HsTokensRoot :: Identity (T_HsTokensRoot_s38 )-                                         }-newtype T_HsTokensRoot_s38  = C_HsTokensRoot_s38 {-                                                 inv_HsTokensRoot_s38 :: (T_HsTokensRoot_v37 )-                                                 }-data T_HsTokensRoot_s39  = C_HsTokensRoot_s39-type T_HsTokensRoot_v37  = (T_HsTokensRoot_vIn37 ) -> (T_HsTokensRoot_vOut37 )-data T_HsTokensRoot_vIn37  = T_HsTokensRoot_vIn37 (Options)-data T_HsTokensRoot_vOut37  = T_HsTokensRoot_vOut37 -{-# NOINLINE sem_HsTokensRoot_HsTokensRoot #-}-sem_HsTokensRoot_HsTokensRoot :: T_HsTokens  -> T_HsTokensRoot -sem_HsTokensRoot_HsTokensRoot arg_tokens_ = T_HsTokensRoot (return st38) where-   {-# NOINLINE st38 #-}-   st38 = let-      v37 :: T_HsTokensRoot_v37 -      v37 = \ (T_HsTokensRoot_vIn37 _lhsIoptions) -> ( let-         _tokensX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tokens_))-         (T_HsTokens_vOut34 _tokensItks) = inv_HsTokens_s35 _tokensX35 (T_HsTokens_vIn34 _tokensOoptions)-         _tokensOoptions = rule578 _lhsIoptions-         __result_ = T_HsTokensRoot_vOut37 -         in __result_ )-     in C_HsTokensRoot_s38 v37-   {-# INLINE rule578 #-}-   rule578 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions---- Pattern -------------------------------------------------------- wrapper-data Inh_Pattern  = Inh_Pattern { allInhmap_Inh_Pattern :: (Map NontermIdent Attributes), allSynmap_Inh_Pattern :: (Map NontermIdent Attributes), anyLazyKind_Inh_Pattern :: (Bool), inhmap_Inh_Pattern :: (Attributes), localAttrTypes_Inh_Pattern :: (Map Identifier Type), options_Inh_Pattern :: (Options), synmap_Inh_Pattern :: (Attributes) }-data Syn_Pattern  = Syn_Pattern { attrTypes_Syn_Pattern :: (PP_Doc), attrs_Syn_Pattern :: (Set String), copy_Syn_Pattern :: (Pattern), isUnderscore_Syn_Pattern :: (Bool), sem_lhs_Syn_Pattern :: ( PP_Doc ) }-{-# INLINABLE wrap_Pattern #-}-wrap_Pattern :: T_Pattern  -> Inh_Pattern  -> (Syn_Pattern )-wrap_Pattern (T_Pattern act) (Inh_Pattern _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap-        (T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs) <- return (inv_Pattern_s41 sem arg)-        return (Syn_Pattern _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs)-   )---- cata-{-# NOINLINE sem_Pattern #-}-sem_Pattern :: Pattern  -> T_Pattern -sem_Pattern ( Constr name_ pats_ ) = sem_Pattern_Constr name_ ( sem_Patterns pats_ )-sem_Pattern ( Product pos_ pats_ ) = sem_Pattern_Product pos_ ( sem_Patterns pats_ )-sem_Pattern ( Alias field_ attr_ pat_ ) = sem_Pattern_Alias field_ attr_ ( sem_Pattern pat_ )-sem_Pattern ( Irrefutable pat_ ) = sem_Pattern_Irrefutable ( sem_Pattern pat_ )-sem_Pattern ( Underscore pos_ ) = sem_Pattern_Underscore pos_---- semantic domain-newtype T_Pattern  = T_Pattern {-                               attach_T_Pattern :: Identity (T_Pattern_s41 )-                               }-newtype T_Pattern_s41  = C_Pattern_s41 {-                                       inv_Pattern_s41 :: (T_Pattern_v40 )-                                       }-data T_Pattern_s42  = C_Pattern_s42-type T_Pattern_v40  = (T_Pattern_vIn40 ) -> (T_Pattern_vOut40 )-data T_Pattern_vIn40  = T_Pattern_vIn40 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)-data T_Pattern_vOut40  = T_Pattern_vOut40 (PP_Doc) (Set String) (Pattern) (Bool) ( PP_Doc )-{-# NOINLINE sem_Pattern_Constr #-}-sem_Pattern_Constr :: (ConstructorIdent) -> T_Patterns  -> T_Pattern -sem_Pattern_Constr arg_name_ arg_pats_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))-         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule579 _addbang1 _patsIsem_lhs arg_name_-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule580  ()-         _addbang = rule581 _lhsIoptions-         _addbang1 = rule582 _addbang _lhsIanyLazyKind-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule583 _patsIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule584 _patsIattrs-         _copy = rule585 _patsIcopy arg_name_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule586 _copy-         _patsOallInhmap = rule587 _lhsIallInhmap-         _patsOallSynmap = rule588 _lhsIallSynmap-         _patsOanyLazyKind = rule589 _lhsIanyLazyKind-         _patsOinhmap = rule590 _lhsIinhmap-         _patsOlocalAttrTypes = rule591 _lhsIlocalAttrTypes-         _patsOoptions = rule592 _lhsIoptions-         _patsOsynmap = rule593 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule579 #-}-   {-# LINE 1134 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule579 = \ _addbang1 ((_patsIsem_lhs) :: [PP_Doc]) name_ ->-                                  {-# LINE 1134 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  _addbang1     $ pp_parens $ name_ >#< hv_sp _patsIsem_lhs-                                  {-# LINE 4654 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule580 #-}-   {-# LINE 1141 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule580 = \  (_ :: ()) ->-                                    {-# LINE 1141 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                    False-                                    {-# LINE 4660 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule581 #-}-   {-# LINE 1571 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule581 = \ ((_lhsIoptions) :: Options) ->-                                                     {-# LINE 1571 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                     {-# LINE 4666 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule582 #-}-   {-# LINE 1576 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule582 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->-                                                     {-# LINE 1576 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                     if _lhsIanyLazyKind then id else _addbang-                                                     {-# LINE 4672 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule583 #-}-   rule583 = \ ((_patsIattrTypes) :: PP_Doc) ->-     _patsIattrTypes-   {-# INLINE rule584 #-}-   rule584 = \ ((_patsIattrs) :: Set String) ->-     _patsIattrs-   {-# INLINE rule585 #-}-   rule585 = \ ((_patsIcopy) :: Patterns) name_ ->-     Constr name_ _patsIcopy-   {-# INLINE rule586 #-}-   rule586 = \ _copy ->-     _copy-   {-# INLINE rule587 #-}-   rule587 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule588 #-}-   rule588 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule589 #-}-   rule589 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule590 #-}-   rule590 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule591 #-}-   rule591 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule592 #-}-   rule592 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule593 #-}-   rule593 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Product #-}-sem_Pattern_Product :: (Pos) -> T_Patterns  -> T_Pattern -sem_Pattern_Product arg_pos_ arg_pats_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))-         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule594 _addbang1 _patsIsem_lhs-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule595  ()-         _addbang = rule596 _lhsIoptions-         _addbang1 = rule597 _addbang _lhsIanyLazyKind-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule598 _patsIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule599 _patsIattrs-         _copy = rule600 _patsIcopy arg_pos_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule601 _copy-         _patsOallInhmap = rule602 _lhsIallInhmap-         _patsOallSynmap = rule603 _lhsIallSynmap-         _patsOanyLazyKind = rule604 _lhsIanyLazyKind-         _patsOinhmap = rule605 _lhsIinhmap-         _patsOlocalAttrTypes = rule606 _lhsIlocalAttrTypes-         _patsOoptions = rule607 _lhsIoptions-         _patsOsynmap = rule608 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule594 #-}-   {-# LINE 1133 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule594 = \ _addbang1 ((_patsIsem_lhs) :: [PP_Doc]) ->-                                  {-# LINE 1133 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  _addbang1     $ pp_block "(" ")" "," _patsIsem_lhs-                                  {-# LINE 4743 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule595 #-}-   {-# LINE 1142 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule595 = \  (_ :: ()) ->-                                    {-# LINE 1142 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                    False-                                    {-# LINE 4749 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule596 #-}-   {-# LINE 1571 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule596 = \ ((_lhsIoptions) :: Options) ->-                                                     {-# LINE 1571 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                     {-# LINE 4755 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule597 #-}-   {-# LINE 1576 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule597 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->-                                                     {-# LINE 1576 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                     if _lhsIanyLazyKind then id else _addbang-                                                     {-# LINE 4761 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule598 #-}-   rule598 = \ ((_patsIattrTypes) :: PP_Doc) ->-     _patsIattrTypes-   {-# INLINE rule599 #-}-   rule599 = \ ((_patsIattrs) :: Set String) ->-     _patsIattrs-   {-# INLINE rule600 #-}-   rule600 = \ ((_patsIcopy) :: Patterns) pos_ ->-     Product pos_ _patsIcopy-   {-# INLINE rule601 #-}-   rule601 = \ _copy ->-     _copy-   {-# INLINE rule602 #-}-   rule602 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule603 #-}-   rule603 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule604 #-}-   rule604 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule605 #-}-   rule605 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule606 #-}-   rule606 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule607 #-}-   rule607 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule608 #-}-   rule608 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Alias #-}-sem_Pattern_Alias :: (Identifier) -> (Identifier) -> T_Pattern  -> T_Pattern -sem_Pattern_Alias arg_field_ arg_attr_ arg_pat_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))-         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)-         _varPat = rule609 _lhsIoptions arg_attr_ arg_field_-         _patExpr = rule610 _patIisUnderscore _patIsem_lhs _varPat-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule611 _addbang1 _patExpr-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule612  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule613 _lhsIoptions _patIattrs arg_attr_ arg_field_-         _mbTp = rule614 _lhsIlocalAttrTypes _lhsIsynmap arg_attr_ arg_field_-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule615  ()-         _addbang = rule616 _lhsIoptions-         _addbang1 = rule617 _addbang _lhsIanyLazyKind-         _copy = rule618 _patIcopy arg_attr_ arg_field_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule619 _copy-         _patOallInhmap = rule620 _lhsIallInhmap-         _patOallSynmap = rule621 _lhsIallSynmap-         _patOanyLazyKind = rule622 _lhsIanyLazyKind-         _patOinhmap = rule623 _lhsIinhmap-         _patOlocalAttrTypes = rule624 _lhsIlocalAttrTypes-         _patOoptions = rule625 _lhsIoptions-         _patOsynmap = rule626 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule609 #-}-   {-# LINE 1128 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule609 = \ ((_lhsIoptions) :: Options) attr_ field_ ->-                                  {-# LINE 1128 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  text $ attrname _lhsIoptions False field_ attr_-                                  {-# LINE 4835 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule610 #-}-   {-# LINE 1129 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule610 = \ ((_patIisUnderscore) :: Bool) ((_patIsem_lhs) ::  PP_Doc ) _varPat ->-                                  {-# LINE 1129 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  if _patIisUnderscore-                                  then _varPat-                                  else _varPat     >|< "@" >|< _patIsem_lhs-                                  {-# LINE 4843 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule611 #-}-   {-# LINE 1132 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule611 = \ _addbang1 _patExpr ->-                                  {-# LINE 1132 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  _addbang1     _patExpr-                                  {-# LINE 4849 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule612 #-}-   {-# LINE 1143 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule612 = \  (_ :: ()) ->-                                    {-# LINE 1143 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                    False-                                    {-# LINE 4855 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule613 #-}-   {-# LINE 1149 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule613 = \ ((_lhsIoptions) :: Options) ((_patIattrs) :: Set String) attr_ field_ ->-                    {-# LINE 1149 "./src-ag/ExecutionPlan2Clean.ag" #-}-                    Set.insert (attrname _lhsIoptions False field_ attr_) _patIattrs-                    {-# LINE 4861 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule614 #-}-   {-# LINE 1154 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule614 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIsynmap) :: Attributes) attr_ field_ ->-                    {-# LINE 1154 "./src-ag/ExecutionPlan2Clean.ag" #-}-                    if field_ == _LHS-                    then Map.lookup attr_ _lhsIsynmap-                    else if field_ == _LOC-                         then Map.lookup attr_ _lhsIlocalAttrTypes-                         else Nothing-                    {-# LINE 4871 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule615 #-}-   {-# LINE 1159 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule615 = \  (_ :: ()) ->-                    {-# LINE 1159 "./src-ag/ExecutionPlan2Clean.ag" #-}-                    empty-                    {-# LINE 4877 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule616 #-}-   {-# LINE 1571 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule616 = \ ((_lhsIoptions) :: Options) ->-                                                     {-# LINE 1571 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                     {-# LINE 4883 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule617 #-}-   {-# LINE 1576 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule617 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->-                                                     {-# LINE 1576 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                     if _lhsIanyLazyKind then id else _addbang-                                                     {-# LINE 4889 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule618 #-}-   rule618 = \ ((_patIcopy) :: Pattern) attr_ field_ ->-     Alias field_ attr_ _patIcopy-   {-# INLINE rule619 #-}-   rule619 = \ _copy ->-     _copy-   {-# INLINE rule620 #-}-   rule620 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule621 #-}-   rule621 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule622 #-}-   rule622 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule623 #-}-   rule623 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule624 #-}-   rule624 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule625 #-}-   rule625 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule626 #-}-   rule626 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Irrefutable #-}-sem_Pattern_Irrefutable :: T_Pattern  -> T_Pattern -sem_Pattern_Irrefutable arg_pat_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))-         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule627 _patIsem_lhs-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule628 _patIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule629 _patIattrs-         _copy = rule630 _patIcopy-         _lhsOcopy :: Pattern-         _lhsOcopy = rule631 _copy-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule632 _patIisUnderscore-         _patOallInhmap = rule633 _lhsIallInhmap-         _patOallSynmap = rule634 _lhsIallSynmap-         _patOanyLazyKind = rule635 _lhsIanyLazyKind-         _patOinhmap = rule636 _lhsIinhmap-         _patOlocalAttrTypes = rule637 _lhsIlocalAttrTypes-         _patOoptions = rule638 _lhsIoptions-         _patOsynmap = rule639 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule627 #-}-   {-# LINE 1136 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule627 = \ ((_patIsem_lhs) ::  PP_Doc ) ->-                                  {-# LINE 1136 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  text "~" >|< pp_parens _patIsem_lhs-                                  {-# LINE 4952 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule628 #-}-   rule628 = \ ((_patIattrTypes) :: PP_Doc) ->-     _patIattrTypes-   {-# INLINE rule629 #-}-   rule629 = \ ((_patIattrs) :: Set String) ->-     _patIattrs-   {-# INLINE rule630 #-}-   rule630 = \ ((_patIcopy) :: Pattern) ->-     Irrefutable _patIcopy-   {-# INLINE rule631 #-}-   rule631 = \ _copy ->-     _copy-   {-# INLINE rule632 #-}-   rule632 = \ ((_patIisUnderscore) :: Bool) ->-     _patIisUnderscore-   {-# INLINE rule633 #-}-   rule633 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule634 #-}-   rule634 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule635 #-}-   rule635 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule636 #-}-   rule636 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule637 #-}-   rule637 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule638 #-}-   rule638 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule639 #-}-   rule639 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Underscore #-}-sem_Pattern_Underscore :: (Pos) -> T_Pattern -sem_Pattern_Underscore arg_pos_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule640  ()-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule641  ()-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule642  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule643  ()-         _copy = rule644 arg_pos_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule645 _copy-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule640 #-}-   {-# LINE 1135 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule640 = \  (_ :: ()) ->-                                  {-# LINE 1135 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  text "_"-                                  {-# LINE 5015 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule641 #-}-   {-# LINE 1144 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule641 = \  (_ :: ()) ->-                                    {-# LINE 1144 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                    True-                                    {-# LINE 5021 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule642 #-}-   rule642 = \  (_ :: ()) ->-     empty-   {-# INLINE rule643 #-}-   rule643 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule644 #-}-   rule644 = \ pos_ ->-     Underscore pos_-   {-# INLINE rule645 #-}-   rule645 = \ _copy ->-     _copy---- Patterns ------------------------------------------------------- wrapper-data Inh_Patterns  = Inh_Patterns { allInhmap_Inh_Patterns :: (Map NontermIdent Attributes), allSynmap_Inh_Patterns :: (Map NontermIdent Attributes), anyLazyKind_Inh_Patterns :: (Bool), inhmap_Inh_Patterns :: (Attributes), localAttrTypes_Inh_Patterns :: (Map Identifier Type), options_Inh_Patterns :: (Options), synmap_Inh_Patterns :: (Attributes) }-data Syn_Patterns  = Syn_Patterns { attrTypes_Syn_Patterns :: (PP_Doc), attrs_Syn_Patterns :: (Set String), copy_Syn_Patterns :: (Patterns), sem_lhs_Syn_Patterns :: ([PP_Doc]) }-{-# INLINABLE wrap_Patterns #-}-wrap_Patterns :: T_Patterns  -> Inh_Patterns  -> (Syn_Patterns )-wrap_Patterns (T_Patterns act) (Inh_Patterns _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap-        (T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs) <- return (inv_Patterns_s44 sem arg)-        return (Syn_Patterns _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs)-   )---- cata-{-# NOINLINE sem_Patterns #-}-sem_Patterns :: Patterns  -> T_Patterns -sem_Patterns list = Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list)---- semantic domain-newtype T_Patterns  = T_Patterns {-                                 attach_T_Patterns :: Identity (T_Patterns_s44 )-                                 }-newtype T_Patterns_s44  = C_Patterns_s44 {-                                         inv_Patterns_s44 :: (T_Patterns_v43 )-                                         }-data T_Patterns_s45  = C_Patterns_s45-type T_Patterns_v43  = (T_Patterns_vIn43 ) -> (T_Patterns_vOut43 )-data T_Patterns_vIn43  = T_Patterns_vIn43 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)-data T_Patterns_vOut43  = T_Patterns_vOut43 (PP_Doc) (Set String) (Patterns) ([PP_Doc])-{-# NOINLINE sem_Patterns_Cons #-}-sem_Patterns_Cons :: T_Pattern  -> T_Patterns  -> T_Patterns -sem_Patterns_Cons arg_hd_ arg_tl_ = T_Patterns (return st44) where-   {-# NOINLINE st44 #-}-   st44 = let-      v43 :: T_Patterns_v43 -      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _hdX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_hd_))-         _tlX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_tl_))-         (T_Pattern_vOut40 _hdIattrTypes _hdIattrs _hdIcopy _hdIisUnderscore _hdIsem_lhs) = inv_Pattern_s41 _hdX41 (T_Pattern_vIn40 _hdOallInhmap _hdOallSynmap _hdOanyLazyKind _hdOinhmap _hdOlocalAttrTypes _hdOoptions _hdOsynmap)-         (T_Patterns_vOut43 _tlIattrTypes _tlIattrs _tlIcopy _tlIsem_lhs) = inv_Patterns_s44 _tlX44 (T_Patterns_vIn43 _tlOallInhmap _tlOallSynmap _tlOanyLazyKind _tlOinhmap _tlOlocalAttrTypes _tlOoptions _tlOsynmap)-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule646 _hdIattrTypes _tlIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule647 _hdIattrs _tlIattrs-         _lhsOsem_lhs :: [PP_Doc]-         _lhsOsem_lhs = rule648 _hdIsem_lhs _tlIsem_lhs-         _copy = rule649 _hdIcopy _tlIcopy-         _lhsOcopy :: Patterns-         _lhsOcopy = rule650 _copy-         _hdOallInhmap = rule651 _lhsIallInhmap-         _hdOallSynmap = rule652 _lhsIallSynmap-         _hdOanyLazyKind = rule653 _lhsIanyLazyKind-         _hdOinhmap = rule654 _lhsIinhmap-         _hdOlocalAttrTypes = rule655 _lhsIlocalAttrTypes-         _hdOoptions = rule656 _lhsIoptions-         _hdOsynmap = rule657 _lhsIsynmap-         _tlOallInhmap = rule658 _lhsIallInhmap-         _tlOallSynmap = rule659 _lhsIallSynmap-         _tlOanyLazyKind = rule660 _lhsIanyLazyKind-         _tlOinhmap = rule661 _lhsIinhmap-         _tlOlocalAttrTypes = rule662 _lhsIlocalAttrTypes-         _tlOoptions = rule663 _lhsIoptions-         _tlOsynmap = rule664 _lhsIsynmap-         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs-         in __result_ )-     in C_Patterns_s44 v43-   {-# INLINE rule646 #-}-   rule646 = \ ((_hdIattrTypes) :: PP_Doc) ((_tlIattrTypes) :: PP_Doc) ->-     _hdIattrTypes >-< _tlIattrTypes-   {-# INLINE rule647 #-}-   rule647 = \ ((_hdIattrs) :: Set String) ((_tlIattrs) :: Set String) ->-     _hdIattrs `Set.union` _tlIattrs-   {-# INLINE rule648 #-}-   rule648 = \ ((_hdIsem_lhs) ::  PP_Doc ) ((_tlIsem_lhs) :: [PP_Doc]) ->-     _hdIsem_lhs : _tlIsem_lhs-   {-# INLINE rule649 #-}-   rule649 = \ ((_hdIcopy) :: Pattern) ((_tlIcopy) :: Patterns) ->-     (:) _hdIcopy _tlIcopy-   {-# INLINE rule650 #-}-   rule650 = \ _copy ->-     _copy-   {-# INLINE rule651 #-}-   rule651 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule652 #-}-   rule652 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule653 #-}-   rule653 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule654 #-}-   rule654 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule655 #-}-   rule655 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule656 #-}-   rule656 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule657 #-}-   rule657 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule658 #-}-   rule658 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule659 #-}-   rule659 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule660 #-}-   rule660 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule661 #-}-   rule661 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule662 #-}-   rule662 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule663 #-}-   rule663 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule664 #-}-   rule664 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Patterns_Nil #-}-sem_Patterns_Nil ::  T_Patterns -sem_Patterns_Nil  = T_Patterns (return st44) where-   {-# NOINLINE st44 #-}-   st44 = let-      v43 :: T_Patterns_v43 -      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule665  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule666  ()-         _lhsOsem_lhs :: [PP_Doc]-         _lhsOsem_lhs = rule667  ()-         _copy = rule668  ()-         _lhsOcopy :: Patterns-         _lhsOcopy = rule669 _copy-         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs-         in __result_ )-     in C_Patterns_s44 v43-   {-# INLINE rule665 #-}-   rule665 = \  (_ :: ()) ->-     empty-   {-# INLINE rule666 #-}-   rule666 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule667 #-}-   rule667 = \  (_ :: ()) ->-     []-   {-# INLINE rule668 #-}-   rule668 = \  (_ :: ()) ->-     []-   {-# INLINE rule669 #-}-   rule669 = \ _copy ->-     _copy---- Visit ---------------------------------------------------------- wrapper-data Inh_Visit  = Inh_Visit { allFromToStates_Inh_Visit :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visit :: (Map NontermIdent Attributes), allInitStates_Inh_Visit :: (Map NontermIdent Int), allSynmap_Inh_Visit :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visit :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visit :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allintramap_Inh_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visit :: (Map Identifier Type), childintros_Inh_Visit :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visit :: (ConstructorIdent), inhmap_Inh_Visit :: (Attributes), mrules_Inh_Visit :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), nextVisits_Inh_Visit :: (Map StateIdentifier StateCtx), nt_Inh_Visit :: (NontermIdent), options_Inh_Visit :: (Options), params_Inh_Visit :: ([Identifier]), prevVisits_Inh_Visit :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visit :: (Map Identifier (Set String)), ruleuses_Inh_Visit :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visit :: (Attributes), terminaldefs_Inh_Visit :: (Set String) }-data Syn_Visit  = Syn_Visit { allvisits_Syn_Visit :: ( VisitStateState ), childvisit_Syn_Visit :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_Visit :: (Seq Error), fromToStates_Syn_Visit :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visit :: (Set String), ruleKinds_Syn_Visit :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visit :: (Map Identifier Int), sem_visit_Syn_Visit :: (  (StateIdentifier,Bool -> PP_Doc)  ), t_visits_Syn_Visit :: (PP_Doc), usedArgs_Syn_Visit :: (Set String), visitKinds_Syn_Visit :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visit :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visit :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_Visit #-}-wrap_Visit :: T_Visit  -> Inh_Visit  -> (Syn_Visit )-wrap_Visit (T_Visit act) (Inh_Visit _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs-        (T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visit_s47 sem arg)-        return (Syn_Visit _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_Visit #-}-sem_Visit :: Visit  -> T_Visit -sem_Visit ( Visit ident_ from_ to_ inh_ syn_ steps_ kind_ ) = sem_Visit_Visit ident_ from_ to_ inh_ syn_ ( sem_VisitSteps steps_ ) kind_---- semantic domain-newtype T_Visit  = T_Visit {-                           attach_T_Visit :: Identity (T_Visit_s47 )-                           }-newtype T_Visit_s47  = C_Visit_s47 {-                                   inv_Visit_s47 :: (T_Visit_v46 )-                                   }-data T_Visit_s48  = C_Visit_s48-type T_Visit_v46  = (T_Visit_vIn46 ) -> (T_Visit_vOut46 )-data T_Visit_vIn46  = T_Visit_vIn46 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (ConstructorIdent) (Attributes) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map StateIdentifier StateCtx) (NontermIdent) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Attributes) (Set String)-data T_Visit_vOut46  = T_Visit_vOut46 ( VisitStateState ) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (  (StateIdentifier,Bool -> PP_Doc)  ) (PP_Doc) (Set String) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_Visit_Visit #-}-sem_Visit_Visit :: (VisitIdentifier) -> (StateIdentifier) -> (StateIdentifier) -> (Set Identifier) -> (Set Identifier) -> T_VisitSteps  -> (VisitKind) -> T_Visit -sem_Visit_Visit arg_ident_ arg_from_ arg_to_ arg_inh_ arg_syn_ arg_steps_ arg_kind_ = T_Visit (return st47) where-   {-# NOINLINE st47 #-}-   st47 = let-      v46 :: T_Visit_v46 -      v46 = \ (T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOruledefs _stepsOruleuses)-         _lhsOallvisits ::  VisitStateState -         _lhsOallvisits = rule670 arg_from_ arg_ident_ arg_to_-         _nameT_visit = rule671 _lhsInt arg_ident_-         _nameTIn_visit = rule672 _lhsInt arg_ident_-         _nameTOut_visit = rule673 _lhsInt arg_ident_-         _nameTNext_visit = rule674 _lhsInt arg_to_-         _nextVisitInfo = rule675 _lhsInextVisits arg_to_-         _typecon = rule676 _lhsIoptions arg_kind_-         _t_params = rule677 _lhsIparams-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule678 _addbang1 _inhpart _lhsIoptions _nameTIn_visit _nameTNext_visit _nameTOut_visit _nameT_visit _nextVisitInfo _synpart _t_params _typecon-         _inhpart = rule679 _lhsIinhmap _ppTypeList arg_inh_-         _synpart = rule680 _lhsIsynmap _ppTypeList arg_syn_-         _ppTypeList = rule681 _addbang1-         _lhsOsem_visit ::   (StateIdentifier,Bool -> PP_Doc)  -         _lhsOsem_visit = rule682 _addbang _inhpats _lhsIoptions _nameTIn_visit _stepsClosing _stepsInitial _stepsIsem_steps arg_from_ arg_ident_-         _stepsInitial = rule683 arg_kind_-         _stepsClosing = rule684 _addbang _nextStBuild _resultval arg_kind_-         _vname = rule685 arg_ident_-         _inhpats = rule686 _lhsIoptions arg_inh_-         _inhargs = rule687 _lhsIoptions arg_inh_-         _synargs = rule688 _lhsIoptions arg_syn_-         _nextargsMp = rule689 _lhsIallintramap arg_to_-         _nextargs = rule690 _nextargsMp-         _nextst = rule691 _lhsIoptions _nextargs _nextargsMp arg_to_-         _resultval = rule692 _nameTOut_visit _nextStRef _synargs-         (_nextStBuild,_nextStRef) = rule693 _addbang _nextVisitInfo _nextst-         _stepsOkind = rule694 arg_kind_-         _stepsOfmtMode = rule695 arg_kind_-         _stepsOindex = rule696  ()-         _prevVisitInfo = rule697 _lhsInextVisits arg_from_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule698 _invokecode arg_ident_-         _invokecode = rule699 _addbang _inhargs _lhsInt _lhsIoptions _nameTIn_visit _nameTOut_visit _nextVisitInfo _prevVisitInfo arg_from_ arg_ident_ arg_kind_ arg_syn_ arg_to_-         _thisintra = rule700 _defsAsMap _nextintra _uses-         _lhsOintramap :: Map StateIdentifier (Map String (Maybe NonLocalAttr))-         _lhsOintramap = rule701 _thisintra arg_from_-         _nextintra = rule702 _lhsIallintramap arg_to_-         _uses = rule703 _lhsIoptions _stepsIuses arg_syn_-         _inhVarNms = rule704 _lhsIoptions arg_inh_-         _defs = rule705 _inhVarNms _lhsIterminaldefs _stepsIdefs-         _defsAsMap = rule706 _defs-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule707 arg_ident_ arg_syn_-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule708 arg_ident_ arg_inh_-         _lazyIntrasInh = rule709 _inhVarNms _stepsIdefs arg_kind_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule710 _lazyIntrasInh _stepsIlazyIntras-         _addbang = rule711 _lhsIoptions-         _addbang1 = rule712 _addbang arg_kind_-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule713 arg_from_ arg_ident_ arg_to_-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule714 arg_ident_ arg_kind_-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule715 _stepsIerrors-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule716 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule717 _stepsIruleUsage-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule718 _stepsIusedArgs-         _stepsOallFromToStates = rule719 _lhsIallFromToStates-         _stepsOallInitStates = rule720 _lhsIallInitStates-         _stepsOallVisitKinds = rule721 _lhsIallVisitKinds-         _stepsOallchildvisit = rule722 _lhsIallchildvisit-         _stepsOavisitdefs = rule723 _lhsIavisitdefs-         _stepsOavisituses = rule724 _lhsIavisituses-         _stepsOchildTypes = rule725 _lhsIchildTypes-         _stepsOchildintros = rule726 _lhsIchildintros-         _stepsOmrules = rule727 _lhsImrules-         _stepsOoptions = rule728 _lhsIoptions-         _stepsOruledefs = rule729 _lhsIruledefs-         _stepsOruleuses = rule730 _lhsIruleuses-         __result_ = T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_Visit_s47 v46-   {-# INLINE rule670 #-}-   {-# LINE 382 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule670 = \ from_ ident_ to_ ->-                            {-# LINE 382 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            (ident_, from_, to_)-                            {-# LINE 5316 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule671 #-}-   {-# LINE 453 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule671 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                                  {-# LINE 453 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  conNmTVisit _lhsInt ident_-                                  {-# LINE 5322 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule672 #-}-   {-# LINE 454 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule672 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                                  {-# LINE 454 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  conNmTVisitIn _lhsInt ident_-                                  {-# LINE 5328 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule673 #-}-   {-# LINE 455 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule673 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                                  {-# LINE 455 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  conNmTVisitOut _lhsInt ident_-                                  {-# LINE 5334 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule674 #-}-   {-# LINE 456 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule674 = \ ((_lhsInt) :: NontermIdent) to_ ->-                                  {-# LINE 456 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  conNmTNextVisit _lhsInt to_-                                  {-# LINE 5340 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule675 #-}-   {-# LINE 458 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule675 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) to_ ->-                                  {-# LINE 458 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  Map.findWithDefault ManyVis to_ _lhsInextVisits-                                  {-# LINE 5346 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule676 #-}-   {-# LINE 459 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule676 = \ ((_lhsIoptions) :: Options) kind_ ->-                                  {-# LINE 459 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  case kind_ of-                                    VisitPure _  -> empty-                                    VisitMonadic -> ppMonadType _lhsIoptions-                                  {-# LINE 5354 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule677 #-}-   {-# LINE 463 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule677 = \ ((_lhsIparams) :: [Identifier]) ->-                            {-# LINE 463 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            ppSpaced _lhsIparams-                            {-# LINE 5360 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule678 #-}-   {-# LINE 464 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule678 = \ _addbang1 _inhpart ((_lhsIoptions) :: Options) _nameTIn_visit _nameTNext_visit _nameTOut_visit _nameT_visit _nextVisitInfo _synpart _t_params _typecon ->-                           {-# LINE 464 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           "::" >#< _nameT_visit     >#< _t_params     >#< ":==" >#<-                             pp_parens (_nameTIn_visit     >#< _t_params    )-                               >#< ( if dummyTokenVisit _lhsIoptions-                                     then "->" >#< dummyType _lhsIoptions True-                                     else empty-                                   )-                               >#< "->" >#< _typecon     >#< pp_parens (_nameTOut_visit     >#< _t_params    )-                           >-< "::" >#< _nameTIn_visit     >#< _t_params     >#< "=" >#< _nameTIn_visit     >#<-                                _inhpart-                           >-< "::" >#< _nameTOut_visit     >#< _t_params     >#< "=" >#< _nameTOut_visit     >#<-                                _synpart     >#< case _nextVisitInfo     of-                                                   NoneVis    -> empty-                                                   _          -> _addbang1     $ pp_parens (_nameTNext_visit     >#< _t_params    )-                           {-# LINE 5378 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule679 #-}-   {-# LINE 478 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule679 = \ ((_lhsIinhmap) :: Attributes) _ppTypeList inh_ ->-                            {-# LINE 478 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            _ppTypeList     inh_ _lhsIinhmap-                            {-# LINE 5384 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule680 #-}-   {-# LINE 479 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule680 = \ ((_lhsIsynmap) :: Attributes) _ppTypeList syn_ ->-                            {-# LINE 479 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            _ppTypeList     syn_ _lhsIsynmap-                            {-# LINE 5390 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule681 #-}-   {-# LINE 480 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule681 = \ _addbang1 ->-                             {-# LINE 480 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             \s m -> ppSpaced $ map (\i -> _addbang1     $ pp_parens $ case Map.lookup i m of-                                                                                        Just tp -> ppTp tp ) $ Set.toList s-                             {-# LINE 5397 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule682 #-}-   {-# LINE 773 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule682 = \ _addbang _inhpats ((_lhsIoptions) :: Options) _nameTIn_visit _stepsClosing _stepsInitial ((_stepsIsem_steps) :: PP_Doc) from_ ident_ ->-                            {-# LINE 773 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            ( from_-                            , \_ ->-                                 "v" >|< ident_ >#< (_addbang     $ pp_parens (_nameTIn_visit     >#< _inhpats    )) >#< "="-                                 >#< ( if dummyTokenVisit _lhsIoptions-                                       then pp $ dummyPat _lhsIoptions True-                                       else empty-                                     )-                                 >-< indent 10 (_stepsInitial-                                 >-< indent 4 _stepsIsem_steps) >-< indent 10 _stepsClosing-                            )-                            {-# LINE 5412 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule683 #-}-   {-# LINE 791 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule683 = \ kind_ ->-                               {-# LINE 791 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               case kind_ of-                                 VisitPure False -> text "let"-                                 VisitPure True  -> empty-                                 VisitMonadic    -> text "do"-                               {-# LINE 5421 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule684 #-}-   {-# LINE 795 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule684 = \ _addbang _nextStBuild _resultval kind_ ->-                                {-# LINE 795 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                let decls =  _nextStBuild-                                             >-<  _addbang     (pp resultValName) >#< "=" >#< _resultval-                                in case kind_ of-                                     VisitPure False -> indent 4 decls-                                                        >-< "in" >#< resultValName-                                     VisitPure True  -> "let" >#< decls-                                                        >-< indent 1 ("in" >#< resultValName)-                                     VisitMonadic    -> "let" >#< decls-                                                        >-< "lift" >#< resultValName-                                {-# LINE 5435 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule685 #-}-   {-# LINE 804 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule685 = \ ident_ ->-                            {-# LINE 804 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            "v" >|< ident_-                            {-# LINE 5441 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule686 #-}-   {-# LINE 805 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule686 = \ ((_lhsIoptions) :: Options) inh_ ->-                            {-# LINE 805 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            ppSpaced $ map (\arg -> pp $ attrname _lhsIoptions True _LHS arg) $ Set.toList inh_-                            {-# LINE 5447 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule687 #-}-   {-# LINE 806 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule687 = \ ((_lhsIoptions) :: Options) inh_ ->-                            {-# LINE 806 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            \chn -> ppSpaced $ map (attrname _lhsIoptions False chn) $ Set.toList inh_-                            {-# LINE 5453 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule688 #-}-   {-# LINE 807 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule688 = \ ((_lhsIoptions) :: Options) syn_ ->-                            {-# LINE 807 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            ppSpaced $ map (\arg -> attrname _lhsIoptions False _LHS arg) $ Set.toList syn_-                            {-# LINE 5459 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule689 #-}-   {-# LINE 808 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule689 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->-                             {-# LINE 808 "./src-ag/ExecutionPlan2Clean.ag" #-}-                             maybe Map.empty id $ Map.lookup to_ _lhsIallintramap-                             {-# LINE 5465 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule690 #-}-   {-# LINE 809 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule690 = \ _nextargsMp ->-                            {-# LINE 809 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            ppSpaced $ Map.keys $ _nextargsMp-                            {-# LINE 5471 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule691 #-}-   {-# LINE 810 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule691 = \ ((_lhsIoptions) :: Options) _nextargs _nextargsMp to_ ->-                            {-# LINE 810 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            "st" >|< to_ >#< _nextargs     >#< dummyArg _lhsIoptions (Map.null _nextargsMp    )-                            {-# LINE 5477 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule692 #-}-   {-# LINE 811 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule692 = \ _nameTOut_visit _nextStRef _synargs ->-                            {-# LINE 811 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            _nameTOut_visit     >#< _synargs     >#< _nextStRef-                            {-# LINE 5483 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule693 #-}-   {-# LINE 813 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule693 = \ _addbang _nextVisitInfo _nextst ->-                {-# LINE 813 "./src-ag/ExecutionPlan2Clean.ag" #-}-                case _nextVisitInfo     of-                  NoneVis  -> (empty, empty)-                  _        -> (_addbang     (pp nextStName) >#< "=" >#< _nextst    , pp nextStName)-                {-# LINE 5491 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule694 #-}-   {-# LINE 827 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule694 = \ kind_ ->-                                  {-# LINE 827 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                  kind_-                                  {-# LINE 5497 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule695 #-}-   {-# LINE 868 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule695 = \ kind_ ->-                    {-# LINE 868 "./src-ag/ExecutionPlan2Clean.ag" #-}-                    case kind_ of-                      VisitPure False -> FormatLetDecl-                      VisitPure True  -> FormatLetLine-                      VisitMonadic    -> FormatDo-                    {-# LINE 5506 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule696 #-}-   {-# LINE 917 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule696 = \  (_ :: ()) ->-                                     {-# LINE 917 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     0-                                     {-# LINE 5512 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule697 #-}-   {-# LINE 1227 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule697 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) from_ ->-                           {-# LINE 1227 "./src-ag/ExecutionPlan2Clean.ag" #-}-                           Map.findWithDefault ManyVis from_ _lhsInextVisits-                           {-# LINE 5518 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule698 #-}-   {-# LINE 1228 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule698 = \ _invokecode ident_ ->-                        {-# LINE 1228 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        Map.singleton ident_ _invokecode-                        {-# LINE 5524 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule699 #-}-   {-# LINE 1229 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule699 = \ _addbang _inhargs ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTIn_visit _nameTOut_visit _nextVisitInfo _prevVisitInfo from_ ident_ kind_ syn_ to_ ->-                        {-# LINE 1229 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        \chn kind ->-                          if kind `compatibleKind` kind_-                          then Right $-                            let pat | isLazyKind kind_ = pat0-                                    | otherwise        = _addbang     pat0-                                pat0  = pp_parens pat1-                                pat1  = _nameTOut_visit     >#< (ppSpaced $ map (attrname _lhsIoptions True chn) $ Set.toList syn_)-                                                            >#< cont-                                cont  = case _nextVisitInfo     of-                                          NoneVis  -> empty-                                          _        -> ch1-                                ch0   = text $ stname chn from_-                                ch1   = text $ stname chn to_-                                expr  = case (kind, kind_) of-                                          (VisitPure _,  VisitPure _)  -> expr0-                                          (VisitPure _,  VisitMonadic) -> unMon _lhsIoptions >#< expr0-                                          (VisitMonadic, VisitPure _)  -> "lift" >#< expr0-                                          (VisitMonadic, VisitMonadic) -> expr0-                                expr0 = case _prevVisitInfo     of-                                          NoneVis  -> error "error: invocation of a visit from a state that has no next visits"-                                          OneVis _ -> "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< ch0 >#< args-                                          ManyVis  -> "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< ch0-                                                      >#< "K_" >|< _lhsInt >|< "_v" >|< ident_ >#< args-                                args  = pp_parens args0 >#< args1-                                args0 = _nameTIn_visit     >#< _inhargs     chn-                                args1 | dummyTokenVisit _lhsIoptions = pp $ dummyArg _lhsIoptions True-                                      | otherwise                    = empty-                            in (pat, expr)-                          else Left $ IncompatibleVisitKind chn ident_ kind kind_-                        {-# LINE 5558 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule700 #-}-   {-# LINE 1325 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule700 = \ _defsAsMap _nextintra _uses ->-                            {-# LINE 1325 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            (_uses     `Map.union` _nextintra    ) `Map.difference` _defsAsMap-                            {-# LINE 5564 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule701 #-}-   {-# LINE 1326 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule701 = \ _thisintra from_ ->-                            {-# LINE 1326 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            Map.singleton from_ _thisintra-                            {-# LINE 5570 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule702 #-}-   {-# LINE 1327 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule702 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->-                            {-# LINE 1327 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            maybe Map.empty id $ Map.lookup to_ _lhsIallintramap-                            {-# LINE 5576 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule703 #-}-   {-# LINE 1328 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule703 = \ ((_lhsIoptions) :: Options) ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) syn_ ->-                            {-# LINE 1328 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            let mp1 = _stepsIuses-                                mp2 = Map.fromList [ (lhsname _lhsIoptions False i, Just (AttrSyn _LHS i)) | i <- Set.elems syn_ ]-                            in mp1 `Map.union` mp2-                            {-# LINE 5584 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule704 #-}-   {-# LINE 1331 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule704 = \ ((_lhsIoptions) :: Options) inh_ ->-                            {-# LINE 1331 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            Set.map (lhsname _lhsIoptions True) inh_-                            {-# LINE 5590 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule705 #-}-   {-# LINE 1332 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule705 = \ _inhVarNms ((_lhsIterminaldefs) :: Set String) ((_stepsIdefs) :: Set String) ->-                            {-# LINE 1332 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            _stepsIdefs `Set.union` _inhVarNms     `Set.union` _lhsIterminaldefs-                            {-# LINE 5596 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule706 #-}-   {-# LINE 1333 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule706 = \ _defs ->-                            {-# LINE 1333 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            Map.fromList [ (a, Nothing) | a <- Set.elems _defs     ]-                            {-# LINE 5602 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule707 #-}-   {-# LINE 1357 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule707 = \ ident_ syn_ ->-                            {-# LINE 1357 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            Map.singleton ident_ syn_-                            {-# LINE 5608 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule708 #-}-   {-# LINE 1358 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule708 = \ ident_ inh_ ->-                            {-# LINE 1358 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            Map.singleton ident_ inh_-                            {-# LINE 5614 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule709 #-}-   {-# LINE 1390 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule709 = \ _inhVarNms ((_stepsIdefs) :: Set String) kind_ ->-                        {-# LINE 1390 "./src-ag/ExecutionPlan2Clean.ag" #-}-                        case kind_ of-                          VisitPure False -> _inhVarNms     `Set.union` _stepsIdefs-                          _               -> Set.empty-                        {-# LINE 5622 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule710 #-}-   {-# LINE 1393 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule710 = \ _lazyIntrasInh ((_stepsIlazyIntras) :: Set String) ->-                     {-# LINE 1393 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     _lazyIntrasInh     `Set.union` _stepsIlazyIntras-                     {-# LINE 5628 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule711 #-}-   {-# LINE 1565 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule711 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1565 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 5634 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule712 #-}-   {-# LINE 1573 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule712 = \ _addbang kind_ ->-                                                     {-# LINE 1573 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                     if isLazyKind kind_ then id else _addbang-                                                     {-# LINE 5640 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule713 #-}-   {-# LINE 1600 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule713 = \ from_ ident_ to_ ->-                       {-# LINE 1600 "./src-ag/ExecutionPlan2Clean.ag" #-}-                       Map.singleton ident_ (from_, to_)-                       {-# LINE 5646 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule714 #-}-   {-# LINE 1644 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule714 = \ ident_ kind_ ->-                     {-# LINE 1644 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     Map.singleton ident_ kind_-                     {-# LINE 5652 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule715 #-}-   rule715 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule716 #-}-   rule716 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule717 #-}-   rule717 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule718 #-}-   rule718 = \ ((_stepsIusedArgs) :: Set String) ->-     _stepsIusedArgs-   {-# INLINE rule719 #-}-   rule719 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule720 #-}-   rule720 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule721 #-}-   rule721 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule722 #-}-   rule722 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule723 #-}-   rule723 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule724 #-}-   rule724 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule725 #-}-   rule725 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule726 #-}-   rule726 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule727 #-}-   rule727 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule728 #-}-   rule728 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule729 #-}-   rule729 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule730 #-}-   rule730 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses---- VisitStep ------------------------------------------------------ wrapper-data Inh_VisitStep  = Inh_VisitStep { allFromToStates_Inh_VisitStep :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitStep :: (Map NontermIdent Int), allVisitKinds_Inh_VisitStep :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitStep :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitStep :: (Map Identifier Type), childintros_Inh_VisitStep :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), fmtMode_Inh_VisitStep :: (FormatMode), index_Inh_VisitStep :: (Int), isLast_Inh_VisitStep :: (Bool), kind_Inh_VisitStep :: (VisitKind), mrules_Inh_VisitStep :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), options_Inh_VisitStep :: (Options), ruledefs_Inh_VisitStep :: (Map Identifier (Set String)), ruleuses_Inh_VisitStep :: (Map Identifier (Map String (Maybe NonLocalAttr))) }-data Syn_VisitStep  = Syn_VisitStep { defs_Syn_VisitStep :: (Set String), errors_Syn_VisitStep :: (Seq Error), index_Syn_VisitStep :: (Int), isLast_Syn_VisitStep :: (Bool), lazyIntras_Syn_VisitStep :: (Set String), ruleKinds_Syn_VisitStep :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitStep :: (Map Identifier Int), sem_steps_Syn_VisitStep :: (PP_Doc), usedArgs_Syn_VisitStep :: (Set String), uses_Syn_VisitStep :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitStep :: (Map VisitIdentifier VisitKind) }-{-# INLINABLE wrap_VisitStep #-}-wrap_VisitStep :: T_VisitStep  -> Inh_VisitStep  -> (Syn_VisitStep )-wrap_VisitStep (T_VisitStep act) (Inh_VisitStep _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses-        (T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds) <- return (inv_VisitStep_s50 sem arg)-        return (Syn_VisitStep _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds)-   )---- cata-{-# NOINLINE sem_VisitStep #-}-sem_VisitStep :: VisitStep  -> T_VisitStep -sem_VisitStep ( Sem name_ ) = sem_VisitStep_Sem name_-sem_VisitStep ( ChildVisit child_ nonterm_ visit_ ) = sem_VisitStep_ChildVisit child_ nonterm_ visit_-sem_VisitStep ( PureGroup steps_ ordered_ ) = sem_VisitStep_PureGroup ( sem_VisitSteps steps_ ) ordered_-sem_VisitStep ( Sim steps_ ) = sem_VisitStep_Sim ( sem_VisitSteps steps_ )-sem_VisitStep ( ChildIntro child_ ) = sem_VisitStep_ChildIntro child_---- semantic domain-newtype T_VisitStep  = T_VisitStep {-                                   attach_T_VisitStep :: Identity (T_VisitStep_s50 )-                                   }-newtype T_VisitStep_s50  = C_VisitStep_s50 {-                                           inv_VisitStep_s50 :: (T_VisitStep_v49 )-                                           }-data T_VisitStep_s51  = C_VisitStep_s51-type T_VisitStep_v49  = (T_VisitStep_vIn49 ) -> (T_VisitStep_vOut49 )-data T_VisitStep_vIn49  = T_VisitStep_vIn49 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (FormatMode) (Int) (Bool) (VisitKind) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Options) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr)))-data T_VisitStep_vOut49  = T_VisitStep_vOut49 (Set String) (Seq Error) (Int) (Bool) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Set String) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)-{-# NOINLINE sem_VisitStep_Sem #-}-sem_VisitStep_Sem :: (Identifier) -> T_VisitStep -sem_VisitStep_Sem arg_name_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let-         _ruleItf = rule731 _lhsImrules arg_name_-         _lhsOerrors :: Seq Error-         (_lhsOerrors,_sem_steps) = rule732 _lhsIfmtMode _lhsIkind _ruleItf-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule733 arg_name_-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule734 _lhsIkind arg_name_-         _lhsOdefs :: Set String-         _lhsOdefs = rule735 _lhsIruledefs arg_name_-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule736 _lhsIruleuses arg_name_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule737  ()-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule738 _sem_steps-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule739  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule740  ()-         _lhsOindex :: Int-         _lhsOindex = rule741 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule742 _lhsIisLast-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule731 #-}-   {-# LINE 836 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule731 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) name_ ->-                               {-# LINE 836 "./src-ag/ExecutionPlan2Clean.ag" #-}-                               Map.findWithDefault (error $ "Rule "  ++ show name_  ++ " not found") name_ _lhsImrules-                               {-# LINE 5774 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule732 #-}-   {-# LINE 837 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule732 = \ ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) _ruleItf ->-                                               {-# LINE 837 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                               case _ruleItf     _lhsIkind _lhsIfmtMode of-                                                 Left e     -> (Seq.singleton e, empty)-                                                 Right stmt -> (Seq.empty, stmt)-                                               {-# LINE 5782 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule733 #-}-   {-# LINE 1278 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule733 = \ name_ ->-                                                 {-# LINE 1278 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                 Map.singleton name_ 1-                                                 {-# LINE 5788 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule734 #-}-   {-# LINE 1288 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule734 = \ ((_lhsIkind) :: VisitKind) name_ ->-                    {-# LINE 1288 "./src-ag/ExecutionPlan2Clean.ag" #-}-                    Map.singleton name_ (Set.singleton _lhsIkind)-                    {-# LINE 5794 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule735 #-}-   {-# LINE 1373 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule735 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) name_ ->-                            {-# LINE 1373 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruledefs-                            {-# LINE 5800 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule736 #-}-   {-# LINE 1374 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule736 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) name_ ->-                            {-# LINE 1374 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruleuses-                            {-# LINE 5806 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule737 #-}-   rule737 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule738 #-}-   rule738 = \ _sem_steps ->-     _sem_steps-   {-# INLINE rule739 #-}-   rule739 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule740 #-}-   rule740 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule741 #-}-   rule741 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule742 #-}-   rule742 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast-{-# NOINLINE sem_VisitStep_ChildVisit #-}-sem_VisitStep_ChildVisit :: (Identifier) -> (NontermIdent) -> (VisitIdentifier) -> T_VisitStep -sem_VisitStep_ChildVisit arg_child_ _ arg_visit_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let-         _visitItf = rule743 _lhsIallchildvisit arg_visit_-         _lhsOerrors :: Seq Error-         (_lhsOerrors,_patPP,_exprPP) = rule744 _lhsIkind _visitItf arg_child_-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule745 _exprPP _lhsIfmtMode _lhsIkind _patPP-         _convToMonad = rule746 _callKind-         _callKind = rule747 _lhsIallVisitKinds arg_visit_-         _lhsOdefs :: Set String-         _lhsOdefs = rule748 _lhsIavisitdefs _lhsIoptions _to arg_child_ arg_visit_-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule749 _from _lhsIavisituses _lhsIoptions arg_child_ arg_visit_-         _addbang = rule750 _lhsIoptions-         (_from,_to) = rule751 _lhsIallFromToStates arg_visit_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule752  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule753  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule754  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule755  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule756  ()-         _lhsOindex :: Int-         _lhsOindex = rule757 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule758 _lhsIisLast-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule743 #-}-   {-# LINE 845 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule743 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) visit_ ->-                                {-# LINE 845 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                Map.findWithDefault (error $ "Visit " ++ show visit_ ++ " not found") visit_ _lhsIallchildvisit-                                {-# LINE 5867 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule744 #-}-   {-# LINE 846 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule744 = \ ((_lhsIkind) :: VisitKind) _visitItf child_ ->-                                                       {-# LINE 846 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                       case _visitItf     child_ _lhsIkind of-                                                         Left e           -> (Seq.singleton e, empty, empty)-                                                         Right (pat,expr) -> (Seq.empty, pat, expr)-                                                       {-# LINE 5875 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule745 #-}-   {-# LINE 850 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule745 = \ _exprPP ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) _patPP ->-                                 {-# LINE 850 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 let decl = case _lhsIkind of-                                              VisitPure _  -> _patPP     >#< "=" >#< _exprPP-                                              VisitMonadic -> _exprPP     >#< ">>= \\" >#< _patPP     >#< "->"-                                 in fmtDecl False _lhsIfmtMode decl-                                 {-# LINE 5884 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule746 #-}-   {-# LINE 854 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule746 = \ _callKind ->-                                   {-# LINE 854 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                   case _callKind     of-                                     VisitPure _  -> text "lift"-                                     VisitMonadic -> empty-                                   {-# LINE 5892 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule747 #-}-   {-# LINE 857 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule747 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) visit_ ->-                                 {-# LINE 857 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 Map.findWithDefault (error "visit kind should be in the map") visit_ _lhsIallVisitKinds-                                 {-# LINE 5898 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule748 #-}-   {-# LINE 1375 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule748 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) _to child_ visit_ ->-                            {-# LINE 1375 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            Set.insert (stname child_ _to) $ maybe (error "Visit not found") (Set.map $ attrname _lhsIoptions True child_) $ Map.lookup visit_ _lhsIavisitdefs-                            {-# LINE 5904 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule749 #-}-   {-# LINE 1376 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule749 = \ _from ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) child_ visit_ ->-                            {-# LINE 1376 "./src-ag/ExecutionPlan2Clean.ag" #-}-                            let convert attrs = Map.fromList [ (attrname _lhsIoptions False child_ attr, Just $ mkNonLocalAttr True child_ attr) | attr <- Set.elems attrs ]-                            in Map.insert (stname child_ _from) Nothing $ convert $-                                 maybe (error "Visit not found") id $ Map.lookup visit_ _lhsIavisituses-                            {-# LINE 5912 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule750 #-}-   {-# LINE 1570 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule750 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1570 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 5918 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule751 #-}-   {-# LINE 1606 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule751 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) visit_ ->-                         {-# LINE 1606 "./src-ag/ExecutionPlan2Clean.ag" #-}-                         Map.findWithDefault (error "visit not in allFromToStates") visit_ _lhsIallFromToStates-                         {-# LINE 5924 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule752 #-}-   rule752 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule753 #-}-   rule753 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule754 #-}-   rule754 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule755 #-}-   rule755 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule756 #-}-   rule756 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule757 #-}-   rule757 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule758 #-}-   rule758 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast-{-# NOINLINE sem_VisitStep_PureGroup #-}-sem_VisitStep_PureGroup :: T_VisitSteps  -> (Bool) -> T_VisitStep -sem_VisitStep_PureGroup arg_steps_ arg_ordered_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOruledefs _stepsOruleuses)-         _stepsOkind = rule759 arg_ordered_-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule760 _lhsIfmtMode _stepsIsem_steps-         _stepsOfmtMode = rule761 _lhsIfmtMode-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule762 _stepsIdefs _stepsIlazyIntras arg_ordered_-         _lhsOdefs :: Set String-         _lhsOdefs = rule763 _stepsIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule764 _stepsIerrors-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule765 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule766 _stepsIruleUsage-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule767 _stepsIusedArgs-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule768 _stepsIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule769 _stepsIvisitKinds-         _lhsOindex :: Int-         _lhsOindex = rule770 _stepsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule771 _stepsIisLast-         _stepsOallFromToStates = rule772 _lhsIallFromToStates-         _stepsOallInitStates = rule773 _lhsIallInitStates-         _stepsOallVisitKinds = rule774 _lhsIallVisitKinds-         _stepsOallchildvisit = rule775 _lhsIallchildvisit-         _stepsOavisitdefs = rule776 _lhsIavisitdefs-         _stepsOavisituses = rule777 _lhsIavisituses-         _stepsOchildTypes = rule778 _lhsIchildTypes-         _stepsOchildintros = rule779 _lhsIchildintros-         _stepsOindex = rule780 _lhsIindex-         _stepsOmrules = rule781 _lhsImrules-         _stepsOoptions = rule782 _lhsIoptions-         _stepsOruledefs = rule783 _lhsIruledefs-         _stepsOruleuses = rule784 _lhsIruleuses-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule759 #-}-   {-# LINE 831 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule759 = \ ordered_ ->-                 {-# LINE 831 "./src-ag/ExecutionPlan2Clean.ag" #-}-                 VisitPure ordered_-                 {-# LINE 6000 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule760 #-}-   {-# LINE 859 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule760 = \ ((_lhsIfmtMode) :: FormatMode) ((_stepsIsem_steps) :: PP_Doc) ->-                                 {-# LINE 859 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 case _lhsIfmtMode of-                                   FormatDo -> "let" >#< _stepsIsem_steps-                                   _        -> _stepsIsem_steps-                                 {-# LINE 6008 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule761 #-}-   {-# LINE 874 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule761 = \ ((_lhsIfmtMode) :: FormatMode) ->-                    {-# LINE 874 "./src-ag/ExecutionPlan2Clean.ag" #-}-                    case _lhsIfmtMode of-                      FormatDo      -> FormatLetDecl-                      mode          -> mode-                    {-# LINE 6016 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule762 #-}-   {-# LINE 1396 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule762 = \ ((_stepsIdefs) :: Set String) ((_stepsIlazyIntras) :: Set String) ordered_ ->-                     {-# LINE 1396 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     if ordered_-                     then _stepsIlazyIntras-                     else _stepsIdefs-                     {-# LINE 6024 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule763 #-}-   rule763 = \ ((_stepsIdefs) :: Set String) ->-     _stepsIdefs-   {-# INLINE rule764 #-}-   rule764 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule765 #-}-   rule765 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule766 #-}-   rule766 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule767 #-}-   rule767 = \ ((_stepsIusedArgs) :: Set String) ->-     _stepsIusedArgs-   {-# INLINE rule768 #-}-   rule768 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->-     _stepsIuses-   {-# INLINE rule769 #-}-   rule769 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _stepsIvisitKinds-   {-# INLINE rule770 #-}-   rule770 = \ ((_stepsIindex) :: Int) ->-     _stepsIindex-   {-# INLINE rule771 #-}-   rule771 = \ ((_stepsIisLast) :: Bool) ->-     _stepsIisLast-   {-# INLINE rule772 #-}-   rule772 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule773 #-}-   rule773 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule774 #-}-   rule774 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule775 #-}-   rule775 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule776 #-}-   rule776 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule777 #-}-   rule777 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule778 #-}-   rule778 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule779 #-}-   rule779 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule780 #-}-   rule780 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule781 #-}-   rule781 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule782 #-}-   rule782 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule783 #-}-   rule783 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule784 #-}-   rule784 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-{-# NOINLINE sem_VisitStep_Sim #-}-sem_VisitStep_Sim :: T_VisitSteps  -> T_VisitStep -sem_VisitStep_Sim arg_steps_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOruledefs _stepsOruleuses)-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule785 _stepsIsem_steps-         _stepsOindex = rule786  ()-         _lhsOindex :: Int-         _lhsOindex = rule787 _lhsIindex-         _isMonadic = rule788 _lhsIkind-         _lhsOdefs :: Set String-         _lhsOdefs = rule789 _stepsIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule790 _stepsIerrors-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule791 _stepsIlazyIntras-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule792 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule793 _stepsIruleUsage-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule794 _stepsIusedArgs-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule795 _stepsIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule796 _stepsIvisitKinds-         _lhsOisLast :: Bool-         _lhsOisLast = rule797 _stepsIisLast-         _stepsOallFromToStates = rule798 _lhsIallFromToStates-         _stepsOallInitStates = rule799 _lhsIallInitStates-         _stepsOallVisitKinds = rule800 _lhsIallVisitKinds-         _stepsOallchildvisit = rule801 _lhsIallchildvisit-         _stepsOavisitdefs = rule802 _lhsIavisitdefs-         _stepsOavisituses = rule803 _lhsIavisituses-         _stepsOchildTypes = rule804 _lhsIchildTypes-         _stepsOchildintros = rule805 _lhsIchildintros-         _stepsOfmtMode = rule806 _lhsIfmtMode-         _stepsOkind = rule807 _lhsIkind-         _stepsOmrules = rule808 _lhsImrules-         _stepsOoptions = rule809 _lhsIoptions-         _stepsOruledefs = rule810 _lhsIruledefs-         _stepsOruleuses = rule811 _lhsIruleuses-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule785 #-}-   {-# LINE 858 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule785 = \ ((_stepsIsem_steps) :: PP_Doc) ->-                                 {-# LINE 858 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 _stepsIsem_steps-                                 {-# LINE 6146 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule786 #-}-   {-# LINE 918 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule786 = \  (_ :: ()) ->-                                     {-# LINE 918 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     0-                                     {-# LINE 6152 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule787 #-}-   {-# LINE 919 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule787 = \ ((_lhsIindex) :: Int) ->-                                     {-# LINE 919 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                     _lhsIindex-                                     {-# LINE 6158 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule788 #-}-   {-# LINE 930 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule788 = \ ((_lhsIkind) :: VisitKind) ->-                                         {-# LINE 930 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                         case _lhsIkind of-                                           VisitMonadic -> True-                                           _            -> False-                                         {-# LINE 6166 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule789 #-}-   rule789 = \ ((_stepsIdefs) :: Set String) ->-     _stepsIdefs-   {-# INLINE rule790 #-}-   rule790 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule791 #-}-   rule791 = \ ((_stepsIlazyIntras) :: Set String) ->-     _stepsIlazyIntras-   {-# INLINE rule792 #-}-   rule792 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule793 #-}-   rule793 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule794 #-}-   rule794 = \ ((_stepsIusedArgs) :: Set String) ->-     _stepsIusedArgs-   {-# INLINE rule795 #-}-   rule795 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->-     _stepsIuses-   {-# INLINE rule796 #-}-   rule796 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _stepsIvisitKinds-   {-# INLINE rule797 #-}-   rule797 = \ ((_stepsIisLast) :: Bool) ->-     _stepsIisLast-   {-# INLINE rule798 #-}-   rule798 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule799 #-}-   rule799 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule800 #-}-   rule800 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule801 #-}-   rule801 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule802 #-}-   rule802 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule803 #-}-   rule803 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule804 #-}-   rule804 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule805 #-}-   rule805 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule806 #-}-   rule806 = \ ((_lhsIfmtMode) :: FormatMode) ->-     _lhsIfmtMode-   {-# INLINE rule807 #-}-   rule807 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule808 #-}-   rule808 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule809 #-}-   rule809 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule810 #-}-   rule810 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule811 #-}-   rule811 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-{-# NOINLINE sem_VisitStep_ChildIntro #-}-sem_VisitStep_ChildIntro :: (Identifier) -> T_VisitStep -sem_VisitStep_ChildIntro arg_child_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let-         _attachItf = rule812 _lhsIchildintros arg_child_-         _lhsOerrors :: Seq Error-         _lhsOsem_steps :: PP_Doc-         _lhsOdefs :: Set String-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         (_lhsOerrors,_lhsOsem_steps,_lhsOdefs,_lhsOuses) = rule813 _attachItf _lhsIfmtMode _lhsIkind-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule814  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule815  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule816  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule817  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule818  ()-         _lhsOindex :: Int-         _lhsOindex = rule819 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule820 _lhsIisLast-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule812 #-}-   {-# LINE 840 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule812 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) child_ ->-                                 {-# LINE 840 "./src-ag/ExecutionPlan2Clean.ag" #-}-                                 Map.findWithDefault (error $ "Child " ++ show child_ ++ " not found") child_ _lhsIchildintros-                                 {-# LINE 6271 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule813 #-}-   {-# LINE 842 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule813 = \ _attachItf ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) ->-                     {-# LINE 842 "./src-ag/ExecutionPlan2Clean.ag" #-}-                     case _attachItf     _lhsIkind _lhsIfmtMode of-                       Left e                   -> (Seq.singleton e, empty, Set.empty, Map.empty)-                       Right (code, defs, uses) -> (Seq.empty, code, defs, uses)-                     {-# LINE 6279 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule814 #-}-   rule814 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule815 #-}-   rule815 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule816 #-}-   rule816 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule817 #-}-   rule817 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule818 #-}-   rule818 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule819 #-}-   rule819 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule820 #-}-   rule820 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast---- VisitSteps ----------------------------------------------------- wrapper-data Inh_VisitSteps  = Inh_VisitSteps { allFromToStates_Inh_VisitSteps :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitSteps :: (Map NontermIdent Int), allVisitKinds_Inh_VisitSteps :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitSteps :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitSteps :: (Map Identifier Type), childintros_Inh_VisitSteps :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), fmtMode_Inh_VisitSteps :: (FormatMode), index_Inh_VisitSteps :: (Int), kind_Inh_VisitSteps :: (VisitKind), mrules_Inh_VisitSteps :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), options_Inh_VisitSteps :: (Options), ruledefs_Inh_VisitSteps :: (Map Identifier (Set String)), ruleuses_Inh_VisitSteps :: (Map Identifier (Map String (Maybe NonLocalAttr))) }-data Syn_VisitSteps  = Syn_VisitSteps { defs_Syn_VisitSteps :: (Set String), errors_Syn_VisitSteps :: (Seq Error), index_Syn_VisitSteps :: (Int), isLast_Syn_VisitSteps :: (Bool), lazyIntras_Syn_VisitSteps :: (Set String), ruleKinds_Syn_VisitSteps :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitSteps :: (Map Identifier Int), sem_steps_Syn_VisitSteps :: (PP_Doc), size_Syn_VisitSteps :: (Int), usedArgs_Syn_VisitSteps :: (Set String), uses_Syn_VisitSteps :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitSteps :: (Map VisitIdentifier VisitKind) }-{-# INLINABLE wrap_VisitSteps #-}-wrap_VisitSteps :: T_VisitSteps  -> Inh_VisitSteps  -> (Syn_VisitSteps )-wrap_VisitSteps (T_VisitSteps act) (Inh_VisitSteps _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses-        (T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOusedArgs _lhsOuses _lhsOvisitKinds) <- return (inv_VisitSteps_s53 sem arg)-        return (Syn_VisitSteps _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOusedArgs _lhsOuses _lhsOvisitKinds)-   )---- cata-{-# NOINLINE sem_VisitSteps #-}-sem_VisitSteps :: VisitSteps  -> T_VisitSteps -sem_VisitSteps list = Prelude.foldr sem_VisitSteps_Cons sem_VisitSteps_Nil (Prelude.map sem_VisitStep list)---- semantic domain-newtype T_VisitSteps  = T_VisitSteps {-                                     attach_T_VisitSteps :: Identity (T_VisitSteps_s53 )-                                     }-newtype T_VisitSteps_s53  = C_VisitSteps_s53 {-                                             inv_VisitSteps_s53 :: (T_VisitSteps_v52 )-                                             }-data T_VisitSteps_s54  = C_VisitSteps_s54-type T_VisitSteps_v52  = (T_VisitSteps_vIn52 ) -> (T_VisitSteps_vOut52 )-data T_VisitSteps_vIn52  = T_VisitSteps_vIn52 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (FormatMode) (Int) (VisitKind) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Options) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr)))-data T_VisitSteps_vOut52  = T_VisitSteps_vOut52 (Set String) (Seq Error) (Int) (Bool) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Int) (Set String) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)-{-# NOINLINE sem_VisitSteps_Cons #-}-sem_VisitSteps_Cons :: T_VisitStep  -> T_VisitSteps  -> T_VisitSteps -sem_VisitSteps_Cons arg_hd_ arg_tl_ = T_VisitSteps (return st53) where-   {-# NOINLINE st53 #-}-   st53 = let-      v52 :: T_VisitSteps_v52 -      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let-         _hdX50 = Control.Monad.Identity.runIdentity (attach_T_VisitStep (arg_hd_))-         _tlX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_tl_))-         (T_VisitStep_vOut49 _hdIdefs _hdIerrors _hdIindex _hdIisLast _hdIlazyIntras _hdIruleKinds _hdIruleUsage _hdIsem_steps _hdIusedArgs _hdIuses _hdIvisitKinds) = inv_VisitStep_s50 _hdX50 (T_VisitStep_vIn49 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOchildTypes _hdOchildintros _hdOfmtMode _hdOindex _hdOisLast _hdOkind _hdOmrules _hdOoptions _hdOruledefs _hdOruleuses)-         (T_VisitSteps_vOut52 _tlIdefs _tlIerrors _tlIindex _tlIisLast _tlIlazyIntras _tlIruleKinds _tlIruleUsage _tlIsem_steps _tlIsize _tlIusedArgs _tlIuses _tlIvisitKinds) = inv_VisitSteps_s53 _tlX53 (T_VisitSteps_vIn52 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOchildTypes _tlOchildintros _tlOfmtMode _tlOindex _tlOkind _tlOmrules _tlOoptions _tlOruledefs _tlOruleuses)-         _lhsOsize :: Int-         _lhsOsize = rule821 _tlIsize-         _hdOindex = rule822 _lhsIindex-         _tlOindex = rule823 _lhsIindex-         _lhsOindex :: Int-         _lhsOindex = rule824 _tlIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule825  ()-         _hdOisLast = rule826 _tlIisLast-         _lhsOdefs :: Set String-         _lhsOdefs = rule827 _hdIdefs _tlIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule828 _hdIerrors _tlIerrors-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule829 _hdIlazyIntras _tlIlazyIntras-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule830 _hdIruleKinds _tlIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule831 _hdIruleUsage _tlIruleUsage-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule832 _hdIsem_steps _tlIsem_steps-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule833 _hdIusedArgs _tlIusedArgs-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule834 _hdIuses _tlIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule835 _hdIvisitKinds _tlIvisitKinds-         _hdOallFromToStates = rule836 _lhsIallFromToStates-         _hdOallInitStates = rule837 _lhsIallInitStates-         _hdOallVisitKinds = rule838 _lhsIallVisitKinds-         _hdOallchildvisit = rule839 _lhsIallchildvisit-         _hdOavisitdefs = rule840 _lhsIavisitdefs-         _hdOavisituses = rule841 _lhsIavisituses-         _hdOchildTypes = rule842 _lhsIchildTypes-         _hdOchildintros = rule843 _lhsIchildintros-         _hdOfmtMode = rule844 _lhsIfmtMode-         _hdOkind = rule845 _lhsIkind-         _hdOmrules = rule846 _lhsImrules-         _hdOoptions = rule847 _lhsIoptions-         _hdOruledefs = rule848 _lhsIruledefs-         _hdOruleuses = rule849 _lhsIruleuses-         _tlOallFromToStates = rule850 _lhsIallFromToStates-         _tlOallInitStates = rule851 _lhsIallInitStates-         _tlOallVisitKinds = rule852 _lhsIallVisitKinds-         _tlOallchildvisit = rule853 _lhsIallchildvisit-         _tlOavisitdefs = rule854 _lhsIavisitdefs-         _tlOavisituses = rule855 _lhsIavisituses-         _tlOchildTypes = rule856 _lhsIchildTypes-         _tlOchildintros = rule857 _lhsIchildintros-         _tlOfmtMode = rule858 _lhsIfmtMode-         _tlOkind = rule859 _lhsIkind-         _tlOmrules = rule860 _lhsImrules-         _tlOoptions = rule861 _lhsIoptions-         _tlOruledefs = rule862 _lhsIruledefs-         _tlOruleuses = rule863 _lhsIruleuses-         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitSteps_s53 v52-   {-# INLINE rule821 #-}-   {-# LINE 909 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule821 = \ ((_tlIsize) :: Int) ->-                      {-# LINE 909 "./src-ag/ExecutionPlan2Clean.ag" #-}-                      1 + _tlIsize-                      {-# LINE 6406 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule822 #-}-   {-# LINE 914 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule822 = \ ((_lhsIindex) :: Int) ->-                {-# LINE 914 "./src-ag/ExecutionPlan2Clean.ag" #-}-                _lhsIindex-                {-# LINE 6412 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule823 #-}-   {-# LINE 915 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule823 = \ ((_lhsIindex) :: Int) ->-                {-# LINE 915 "./src-ag/ExecutionPlan2Clean.ag" #-}-                1 + _lhsIindex-                {-# LINE 6418 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule824 #-}-   {-# LINE 916 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule824 = \ ((_tlIindex) :: Int) ->-                {-# LINE 916 "./src-ag/ExecutionPlan2Clean.ag" #-}-                _tlIindex-                {-# LINE 6424 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule825 #-}-   {-# LINE 926 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule825 = \  (_ :: ()) ->-                         {-# LINE 926 "./src-ag/ExecutionPlan2Clean.ag" #-}-                         False-                         {-# LINE 6430 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule826 #-}-   {-# LINE 927 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule826 = \ ((_tlIisLast) :: Bool) ->-                         {-# LINE 927 "./src-ag/ExecutionPlan2Clean.ag" #-}-                         _tlIisLast-                         {-# LINE 6436 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule827 #-}-   rule827 = \ ((_hdIdefs) :: Set String) ((_tlIdefs) :: Set String) ->-     _hdIdefs `Set.union` _tlIdefs-   {-# INLINE rule828 #-}-   rule828 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule829 #-}-   rule829 = \ ((_hdIlazyIntras) :: Set String) ((_tlIlazyIntras) :: Set String) ->-     _hdIlazyIntras `Set.union` _tlIlazyIntras-   {-# INLINE rule830 #-}-   rule830 = \ ((_hdIruleKinds) :: Map Identifier (Set VisitKind)) ((_tlIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _hdIruleKinds `unionWithMappend` _tlIruleKinds-   {-# INLINE rule831 #-}-   rule831 = \ ((_hdIruleUsage) :: Map Identifier Int) ((_tlIruleUsage) :: Map Identifier Int) ->-     _hdIruleUsage `unionWithSum` _tlIruleUsage-   {-# INLINE rule832 #-}-   rule832 = \ ((_hdIsem_steps) :: PP_Doc) ((_tlIsem_steps) :: PP_Doc) ->-     _hdIsem_steps >-< _tlIsem_steps-   {-# INLINE rule833 #-}-   rule833 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->-     _hdIusedArgs `Set.union` _tlIusedArgs-   {-# INLINE rule834 #-}-   rule834 = \ ((_hdIuses) :: Map String (Maybe NonLocalAttr)) ((_tlIuses) :: Map String (Maybe NonLocalAttr)) ->-     _hdIuses `Map.union` _tlIuses-   {-# INLINE rule835 #-}-   rule835 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule836 #-}-   rule836 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule837 #-}-   rule837 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule838 #-}-   rule838 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule839 #-}-   rule839 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule840 #-}-   rule840 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule841 #-}-   rule841 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule842 #-}-   rule842 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule843 #-}-   rule843 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule844 #-}-   rule844 = \ ((_lhsIfmtMode) :: FormatMode) ->-     _lhsIfmtMode-   {-# INLINE rule845 #-}-   rule845 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule846 #-}-   rule846 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule847 #-}-   rule847 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule848 #-}-   rule848 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule849 #-}-   rule849 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule850 #-}-   rule850 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule851 #-}-   rule851 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule852 #-}-   rule852 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule853 #-}-   rule853 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule854 #-}-   rule854 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule855 #-}-   rule855 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule856 #-}-   rule856 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule857 #-}-   rule857 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule858 #-}-   rule858 = \ ((_lhsIfmtMode) :: FormatMode) ->-     _lhsIfmtMode-   {-# INLINE rule859 #-}-   rule859 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule860 #-}-   rule860 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule861 #-}-   rule861 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule862 #-}-   rule862 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule863 #-}-   rule863 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-{-# NOINLINE sem_VisitSteps_Nil #-}-sem_VisitSteps_Nil ::  T_VisitSteps -sem_VisitSteps_Nil  = T_VisitSteps (return st53) where-   {-# NOINLINE st53 #-}-   st53 = let-      v52 :: T_VisitSteps_v52 -      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let-         _lhsOsize :: Int-         _lhsOsize = rule864  ()-         _lhsOisLast :: Bool-         _lhsOisLast = rule865  ()-         _lhsOdefs :: Set String-         _lhsOdefs = rule866  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule867  ()-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule868  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule869  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule870  ()-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule871  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule872  ()-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule873  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule874  ()-         _lhsOindex :: Int-         _lhsOindex = rule875 _lhsIindex-         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitSteps_s53 v52-   {-# INLINE rule864 #-}-   {-# LINE 908 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule864 = \  (_ :: ()) ->-                      {-# LINE 908 "./src-ag/ExecutionPlan2Clean.ag" #-}-                      0-                      {-# LINE 6587 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule865 #-}-   {-# LINE 925 "./src-ag/ExecutionPlan2Clean.ag" #-}-   rule865 = \  (_ :: ()) ->-                         {-# LINE 925 "./src-ag/ExecutionPlan2Clean.ag" #-}-                         True-                         {-# LINE 6593 "dist/build/ExecutionPlan2Clean.hs"#-}-   {-# INLINE rule866 #-}-   rule866 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule867 #-}-   rule867 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule868 #-}-   rule868 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule869 #-}-   rule869 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule870 #-}-   rule870 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule871 #-}-   rule871 = \  (_ :: ()) ->-     empty-   {-# INLINE rule872 #-}-   rule872 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule873 #-}-   rule873 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule874 #-}-   rule874 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule875 #-}-   rule875 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex---- Visits --------------------------------------------------------- wrapper-data Inh_Visits  = Inh_Visits { allFromToStates_Inh_Visits :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visits :: (Map NontermIdent Attributes), allInitStates_Inh_Visits :: (Map NontermIdent Int), allSynmap_Inh_Visits :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visits :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visits :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allintramap_Inh_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visits :: (Map Identifier Type), childintros_Inh_Visits :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visits :: (ConstructorIdent), inhmap_Inh_Visits :: (Attributes), mrules_Inh_Visits :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), nextVisits_Inh_Visits :: (Map StateIdentifier StateCtx), nt_Inh_Visits :: (NontermIdent), options_Inh_Visits :: (Options), params_Inh_Visits :: ([Identifier]), prevVisits_Inh_Visits :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visits :: (Map Identifier (Set String)), ruleuses_Inh_Visits :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visits :: (Attributes), terminaldefs_Inh_Visits :: (Set String) }-data Syn_Visits  = Syn_Visits { allvisits_Syn_Visits :: ([VisitStateState]), childvisit_Syn_Visits :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_Visits :: (Seq Error), fromToStates_Syn_Visits :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visits :: (Set String), ruleKinds_Syn_Visits :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visits :: (Map Identifier Int), sem_visit_Syn_Visits :: ( [(StateIdentifier,Bool -> PP_Doc)] ), t_visits_Syn_Visits :: (PP_Doc), usedArgs_Syn_Visits :: (Set String), visitKinds_Syn_Visits :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visits :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visits :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_Visits #-}-wrap_Visits :: T_Visits  -> Inh_Visits  -> (Syn_Visits )-wrap_Visits (T_Visits act) (Inh_Visits _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Visits_vIn55 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs-        (T_Visits_vOut55 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visits_s56 sem arg)+{-# LINE 2 "src-ag/HsToken.ag" #-}++import CommonTypes+import UU.Scanner.Position(Pos)+{-# LINE 10 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 2 "src-ag/Expression.ag" #-}++import UU.Scanner.Position(Pos)+import HsToken+{-# LINE 16 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 2 "src-ag/Patterns.ag" #-}++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)+{-# LINE 23 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 2 "src-ag/ExecutionPlan.ag" #-}++-- VisitSyntax.ag imports+import Patterns    (Pattern(..),Patterns)+import Expression  (Expression(..))+import CommonTypes+import ErrorMessages++import qualified Data.Set as Set+import Data.Set(Set)+import qualified Data.Map as Map+import Data.Map(Map)+{-# LINE 37 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 7 "src-ag/ExecutionPlan2Clean.ag" #-}++import ExecutionPlan+import Pretty+import PPUtil+import Options+import Data.Monoid(mappend,mempty)+import Data.Maybe+import Debug.Trace+import System.IO+import System.Directory+import System.FilePath+import UU.Scanner.Position++import TokenDef+import HsToken+import ErrorMessages++import Data.Set (Set)+import qualified Data.Set as Set+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Sequence(Seq)+import qualified Data.Sequence as Seq+import Data.Foldable(toList)+{-# LINE 64 "dist/build/ExecutionPlan2Clean.hs" #-}+import Control.Monad.Identity (Identity)+import qualified Control.Monad.Identity+{-# LINE 190 "src-ag/ExecutionPlan2Clean.ag" #-}++classCtxsToDocs :: ClassContext -> [PP_Doc]+classCtxsToDocs = map toDoc where+  toDoc (ident,args) = (ident >#< ppSpaced (map pp_parens args))++classConstrsToDocs :: [Type] -> [PP_Doc]+classConstrsToDocs = map ppTp++ppClasses :: [PP_Doc] -> PP_Doc+ppClasses [] = empty+ppClasses xs = "|" >#< pp_block "" "" "&" xs++ppQuants :: [Identifier] -> PP_Doc+ppQuants [] = empty+ppQuants ps = "E." >#< ppSpaced ps >#< ":"+{-# LINE 83 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 227 "src-ag/ExecutionPlan2Clean.ag" #-}++-- first parameter indicates: generate a record or not+ppConFields :: Bool -> [PP_Doc] -> PP_Doc+ppConFields True  flds = ppListSep "{" "}" ", " flds+ppConFields False flds = ppSpaced flds+{-# LINE 91 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 260 "src-ag/ExecutionPlan2Clean.ag" #-}++ppTp :: Type -> PP_Doc+ppTp = text . typeToHaskellString Nothing []+{-# LINE 97 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 333 "src-ag/ExecutionPlan2Clean.ag" #-}++isRecordConstructor :: NontermIdent -> Map NontermIdent ConstructorType -> Bool+isRecordConstructor nt ctm = Map.lookup nt ctm == Just RecordConstructor+{-# LINE 103 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 374 "src-ag/ExecutionPlan2Clean.ag" #-}+type VisitStateState = (VisitIdentifier,StateIdentifier, StateIdentifier)+{-# LINE 107 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 483 "src-ag/ExecutionPlan2Clean.ag" #-}++conNmTVisit nt vId      = "T_" >|< nt >|< "_v"    >|< vId+conNmTVisitIn nt vId    = "T_" >|< nt >|< "_vIn"  >|< vId+conNmTVisitOut nt vId   = "T_" >|< nt >|< "_vOut" >|< vId+conNmTNextVisit nt stId = "T_" >|< nt >|< "_s"    >|< stId++ppMonadType :: Options -> PP_Doc+ppMonadType opts+  | parallelInvoke opts = text "IO"+  | otherwise           = text "Identity"+{-# LINE 120 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 652 "src-ag/ExecutionPlan2Clean.ag" #-}++ppDefor :: Type -> PP_Doc+ppDefor (NT nt args _) = "T_" >|< nt >#< ppSpaced (map pp_parens args)+ppDefor (Haskell s)    = text s+{-# LINE 127 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 756 "src-ag/ExecutionPlan2Clean.ag" #-}++mklet :: (PP a, PP b, PP c) => a -> b -> c -> PP_Doc+mklet prefix defs body =+  prefix+  >-< indent (length (show prefix))+    ("let"+     >-< indent 4 defs+     >-< "in" >#< body)+{-# LINE 138 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 817 "src-ag/ExecutionPlan2Clean.ag" #-}++resultValName :: String+resultValName = "ag__result_"++nextStName :: String+nextStName = "ag__st_"+{-# LINE 147 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 878 "src-ag/ExecutionPlan2Clean.ag" #-}++parResultName :: String+parResultName = "__outcome_"++fmtDecl :: PP a => Bool -> FormatMode -> a -> PP_Doc+fmtDecl declPure fmt decl = case fmt of+  FormatLetDecl -> pp decl+  FormatLetLine -> "let" >#< decl >#< "in"+  FormatDo | declPure  -> "let" >#< decl >#< "in"+           | otherwise -> pp decl+{-# LINE 160 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 992 "src-ag/ExecutionPlan2Clean.ag" #-}++stname :: Identifier -> Int -> String+stname child st = "st_" ++ getName child ++ "X" ++ show st++-- should actually return some conversion info+compatibleAttach :: VisitKind -> NontermIdent -> Options -> Bool+compatibleAttach _ _ _ = True++unMon :: Options -> PP_Doc+unMon options+  | parallelInvoke options = text "'System.IO.Unsafe'.unsafePerformIO"    -- IO monad+  | otherwise              = text "'Control.Monad.Identity'.runIdentity"  -- identity monad+{-# LINE 175 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 1079 "src-ag/ExecutionPlan2Clean.ag" #-}++dummyPat :: Options -> Bool -> PP_Doc+dummyPat opts noArgs+  | not noArgs && tupleAsDummyToken opts = empty  -- no unnecessary tuples+  | tupleAsDummyToken opts = if strictDummyToken opts+                             then text "Void"+                             else text "(_)"+  | otherwise              = let match | strictDummyToken opts = "!_"+                                       | otherwise             = "_"+                             in pp_parens (match >#< "::" >#< dummyType opts noArgs)+  where match | strictDummyToken opts = "(!_)"+              | otherwise             = "_"++dummyArg :: Options -> Bool -> PP_Doc+dummyArg opts noArgs+  | not noArgs && tupleAsDummyToken opts = empty    -- no unnecessary tuples+  | tupleAsDummyToken opts = text "Void"+  | otherwise              = text "GHC.Prim.realWorld#"++dummyType :: Options -> Bool -> PP_Doc+dummyType opts noArgs+  | not noArgs && tupleAsDummyToken opts = empty     -- no unnecessary tuples+  | tupleAsDummyToken opts = text "Void"+  | otherwise              = text "(GHC.Prim.State# GHC.Prim.RealWorld)"+{-# LINE 202 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 1105 "src-ag/ExecutionPlan2Clean.ag" #-}++-- rules are "deinlined" to prevent needless code duplication.+-- if there is only a bit of duplication, we allow ghc to decide if it is worth it.+-- if the duplication crosses this threshold, however, we tell ghc definitely not to inline it.+ruleInlineThresholdSoft :: Int+ruleInlineThresholdSoft = 3++ruleInlineThresholdHard :: Int+ruleInlineThresholdHard = 5++reallyOftenUsedThreshold :: Int+reallyOftenUsedThreshold = 12+{-# LINE 217 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 1172 "src-ag/ExecutionPlan2Clean.ag" #-}++data NonLocalAttr+  = AttrInh Identifier Identifier+  | AttrSyn Identifier Identifier deriving Show++mkNonLocalAttr :: Bool -> Identifier -> Identifier -> NonLocalAttr+mkNonLocalAttr True  = AttrInh  -- True: inherited attr+mkNonLocalAttr False = AttrSyn++lookupAttrType :: NonLocalAttr -> Map Identifier Attributes -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc+lookupAttrType (AttrInh child name) inhs _ = lookupType child name inhs+lookupAttrType (AttrSyn child name) _ syns = lookupType child name syns++-- Note: if the child takes type parameters, the type of an attribute of this child may refer to these parameters. This means that+-- the actual type of the attribute needs to have its type parameters substituted with the actual type argument of the child.+-- However, for now we simply decide to return Nothing in this case, which skips the type annotation.+lookupType :: Identifier -> Identifier -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc+lookupType child name attrMp childMp+  | noParameters childTp = Just ppDoc+  | otherwise            = Nothing+  where+    attrTp     = Map.findWithDefault (error "lookupType: the attribute is not in the attrs of the child") name childAttrs+    childAttrs = Map.findWithDefault (error "lookupType: the attributes of the nonterm are not in the map") nonterm attrMp+    nonterm    = extractNonterminal childTp+    childTp    = Map.findWithDefault (error ("lookupType: the child " ++ show child ++ "is not in the appropriate map")) child childMp+    ppDoc      = ppTp attrTp++noParameters :: Type -> Bool+noParameters (Haskell _)   = True+noParameters (NT _ args _) = null args+{-# LINE 250 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 1259 "src-ag/ExecutionPlan2Clean.ag" #-}++-- a `compatibleKind` b  means: can kind b be invoked from a+compatibleKind :: VisitKind -> VisitKind -> Bool+compatibleKind _              _             = True++compatibleRule :: VisitKind -> Bool -> Bool+compatibleRule (VisitPure _) False = False+compatibleRule _             _     = True+{-# LINE 261 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 1281 "src-ag/ExecutionPlan2Clean.ag" #-}++unionWithSum = Map.unionWith (+)+{-# LINE 266 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 1304 "src-ag/ExecutionPlan2Clean.ag" #-}++uwSetUnion :: (Ord a, Ord b) => Map a (Set b) -> Map a (Set b) -> Map a (Set b)+uwSetUnion = Map.unionWith Set.union++uwMapUnion :: (Ord a, Ord b) => Map a (Map b c) -> Map a (Map b c) -> Map a (Map b c)+uwMapUnion = Map.unionWith Map.union+{-# LINE 275 "dist/build/ExecutionPlan2Clean.hs" #-}++{-# LINE 1499 "src-ag/ExecutionPlan2Clean.ag" #-}++renderDocs :: [PP_Doc] -> String+renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) ""++writeModule :: FilePath -> [PP_Doc] -> IO ()+writeModule path docs+  = do bExists <- doesFileExist path+       if bExists+        then do input <- readFile path+                seq (length input) (return ())+                if input /= output+                 then dumpIt+                 else return ()+        else dumpIt+  where+    output = renderDocs docs+    dumpIt = writeFile path output++cleanIclModuleHeader :: Options -> String -> String+cleanIclModuleHeader flags input+ = case moduleName flags+   of Name nm -> genMod nm+      Default -> genMod (defaultModuleName input)+      NoName  -> ""+   where genMod x = "implementation module " ++ x ++cleanDclModuleHeader :: Options -> String -> Maybe String -> String+cleanDclModuleHeader flags input export+ = case moduleName flags+   of Name nm -> genMod nm+      Default -> genMod (defaultModuleName input)+      NoName  -> ""+   where genMod x = "definition module " ++ x ++ genExp export x+         genExp Nothing _ = ""+         genExp (Just e) x = "(module " ++ x ++ ", module " ++ e ++ ")"++defaultModuleName :: String -> String+defaultModuleName = dropExtension++mkIclModuleHeader :: Maybe (String,String,String) -> String -> String -> String -> Bool -> String+mkIclModuleHeader Nothing defaultName suffix _ _+  = "implementation module " ++ defaultName ++ suffix+mkIclModuleHeader (Just (name, exports, imports)) _ suffix addExports replaceExports+  = "implementation module " ++ name ++ suffix ++ "\n" ++ imports ++ "\n"++mkDclModuleHeader :: Maybe (String,String,String) -> String -> String -> String -> Bool -> String+mkDclModuleHeader Nothing defaultName suffix _ _+  = "definition module " ++ defaultName ++ suffix+mkDclModuleHeader (Just (name, exports, _)) _ suffix addExports replaceExports+  = "definition module " ++ name ++ suffix ++ ex ++ "\n"+  where+    ex  = if null exports || (replaceExports && null addExports)+          then ""+          else if null addExports+               then exports+               else if replaceExports+                    then addExports+                    else exports ++ "," ++ addExports+{-# LINE 336 "dist/build/ExecutionPlan2Clean.hs" #-}+-- EChild ------------------------------------------------------+-- wrapper+data Inh_EChild  = Inh_EChild { allInitStates_Inh_EChild :: (Map NontermIdent Int), con_Inh_EChild :: (ConstructorIdent), constructorTypeMap_Inh_EChild :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_EChild :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_EChild :: (String -> String -> String -> Bool -> String), importBlocks_Inh_EChild :: (PP_Doc), mainFile_Inh_EChild :: (String), mainName_Inh_EChild :: (String), nt_Inh_EChild :: (NontermIdent), options_Inh_EChild :: (Options), textBlocks_Inh_EChild :: (PP_Doc) }+data Syn_EChild  = Syn_EChild { argnamesw_Syn_EChild :: ( PP_Doc ), argpats_Syn_EChild :: (  PP_Doc  ), argtps_Syn_EChild :: (  PP_Doc  ), childTypes_Syn_EChild :: (Map Identifier Type), childintros_Syn_EChild :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), datatype_Syn_EChild :: (PP_Doc), recfields_Syn_EChild :: ( [Identifier] ), recordtype_Syn_EChild :: (PP_Doc), terminaldefs_Syn_EChild :: (Set String), usedArgs_Syn_EChild :: (Set String) }+{-# INLINABLE wrap_EChild #-}+wrap_EChild :: T_EChild  -> Inh_EChild  -> (Syn_EChild )+wrap_EChild (T_EChild act) (Inh_EChild _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg1 = T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks+        (T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs) <- return (inv_EChild_s2 sem arg1)+        return (Syn_EChild _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs)+   )++-- cata+{-# NOINLINE sem_EChild #-}+sem_EChild :: EChild  -> T_EChild +sem_EChild ( EChild name_ tp_ kind_ hasAround_ merges_ isMerged_ ) = sem_EChild_EChild name_ tp_ kind_ hasAround_ merges_ isMerged_+sem_EChild ( ETerm name_ tp_ ) = sem_EChild_ETerm name_ tp_++-- semantic domain+newtype T_EChild  = T_EChild {+                             attach_T_EChild :: Identity (T_EChild_s2 )+                             }+newtype T_EChild_s2  = C_EChild_s2 {+                                   inv_EChild_s2 :: (T_EChild_v1 )+                                   }+data T_EChild_s3  = C_EChild_s3+type T_EChild_v1  = (T_EChild_vIn1 ) -> (T_EChild_vOut1 )+data T_EChild_vIn1  = T_EChild_vIn1 (Map NontermIdent Int) (ConstructorIdent) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (String) (String) (NontermIdent) (Options) (PP_Doc)+data T_EChild_vOut1  = T_EChild_vOut1 ( PP_Doc ) (  PP_Doc  ) (  PP_Doc  ) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (PP_Doc) ( [Identifier] ) (PP_Doc) (Set String) (Set String)+{-# NOINLINE sem_EChild_EChild #-}+sem_EChild_EChild :: (Identifier) -> (Type) -> (ChildKind) -> (Bool) -> (Maybe [Identifier]) -> (Bool) -> T_EChild +sem_EChild_EChild arg_name_ arg_tp_ arg_kind_ arg_hasAround_ _ _ = T_EChild (return st2) where+   {-# NOINLINE st2 #-}+   st2 = let+      v1 :: T_EChild_v1 +      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) -> ( let+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule0 _usedArgs_augmented_f1 _usedArgs_augmented_syn+         _usedArgs_augmented_f1 = rule1 arg_kind_ arg_name_+         _tpDoc = rule2 _addStrict arg_tp_+         _strNm = rule3 _lhsIcon _lhsInt arg_name_+         _field = rule4 _lhsIoptions _strNm _tpDoc+         _recordfield = rule5 _strNm _tpDoc+         _addStrict = rule6 _lhsIoptions+         _lhsOdatatype :: PP_Doc+         _lhsOdatatype = rule7 _field arg_kind_+         _lhsOrecordtype :: PP_Doc+         _lhsOrecordtype = rule8 _recordfield arg_kind_+         _lhsOargnamesw ::  PP_Doc +         _lhsOargnamesw = rule9 _nt arg_kind_ arg_name_+         _lhsOargtps ::   PP_Doc  +         _lhsOargtps = rule10 arg_kind_ arg_tp_+         _argpats = rule11 arg_kind_ arg_name_+         _lhsOrecfields ::  [Identifier] +         _lhsOrecfields = rule12 arg_kind_ arg_name_+         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule13 _introcode arg_name_+         _isDefor = rule14 arg_tp_+         _valcode = rule15 _isDefor _lhsIoptions _nt arg_kind_ arg_name_+         _aroundcode = rule16 _lhsIoptions arg_hasAround_ arg_name_+         _introcode = rule17 _addbang _aroundcode _initSt _isDefor _lhsIoptions _nt _valcode arg_hasAround_ arg_kind_ arg_name_+         _nt = rule18 arg_tp_+         _addbang = rule19 _lhsIoptions+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule20 arg_name_ arg_tp_+         _initSt = rule21 _lhsIallInitStates _nt+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule22  ()+         _usedArgs_augmented_syn = rule23  ()+         _lhsOargpats ::   PP_Doc  +         _lhsOargpats = rule24 _argpats+         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs+         in __result_ )+     in C_EChild_s2 v1+   {-# INLINE rule0 #-}+   rule0 = \ _usedArgs_augmented_f1 _usedArgs_augmented_syn ->+     foldr ($) _usedArgs_augmented_syn [_usedArgs_augmented_f1]+   {-# INLINE rule1 #-}+   rule1 = \ kind_ name_ ->+                         \s -> case kind_ of+                               ChildSyntax -> Set.insert ("arg_" ++ show name_ ++ "_") s+                               _           -> s+   {-# INLINE rule2 #-}+   {-# LINE 243 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule2 = \ _addStrict tp_ ->+                     {-# LINE 243 "src-ag/ExecutionPlan2Clean.ag" #-}+                     _addStrict     $ pp_parens $ ppTp $ removeDeforested tp_+                     {-# LINE 426 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule3 #-}+   {-# LINE 244 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule3 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->+                     {-# LINE 244 "src-ag/ExecutionPlan2Clean.ag" #-}+                     recordFieldname _lhsInt _lhsIcon name_+                     {-# LINE 432 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule4 #-}+   {-# LINE 245 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule4 = \ ((_lhsIoptions) :: Options) _strNm _tpDoc ->+                     {-# LINE 245 "src-ag/ExecutionPlan2Clean.ag" #-}+                     if dataRecords _lhsIoptions+                     then _strNm     >#< "::" >#< _tpDoc+                     else _tpDoc+                     {-# LINE 440 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule5 #-}+   {-# LINE 248 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule5 = \ _strNm _tpDoc ->+                           {-# LINE 248 "src-ag/ExecutionPlan2Clean.ag" #-}+                           _strNm     >#< "::" >#< _tpDoc+                           {-# LINE 446 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule6 #-}+   {-# LINE 249 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule6 = \ ((_lhsIoptions) :: Options) ->+                        {-# LINE 249 "src-ag/ExecutionPlan2Clean.ag" #-}+                        \x -> if strictData _lhsIoptions then "!" >|< x else x+                        {-# LINE 452 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule7 #-}+   {-# LINE 250 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule7 = \ _field kind_ ->+                             {-# LINE 250 "src-ag/ExecutionPlan2Clean.ag" #-}+                             case kind_ of+                               ChildAttr -> empty+                               _         -> _field+                             {-# LINE 460 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule8 #-}+   {-# LINE 254 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule8 = \ _recordfield kind_ ->+                               {-# LINE 254 "src-ag/ExecutionPlan2Clean.ag" #-}+                               case kind_ of+                                 ChildAttr -> empty+                                 _         -> _recordfield+                               {-# LINE 468 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule9 #-}+   {-# LINE 342 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule9 = \ _nt kind_ name_ ->+                             {-# LINE 342 "src-ag/ExecutionPlan2Clean.ag" #-}+                             case kind_ of+                               ChildSyntax     -> "(" >#< "sem_" >|< _nt     >#< name_ >|< "_" >#< ")"+                               ChildAttr       -> empty+                               ChildReplace tp -> "(" >#< "sem_" >|< extractNonterminal tp >#< name_ >|< "_" >#< ")"+                             {-# LINE 477 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule10 #-}+   {-# LINE 633 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule10 = \ kind_ tp_ ->+                            {-# LINE 633 "src-ag/ExecutionPlan2Clean.ag" #-}+                            case kind_ of+                              ChildSyntax     -> pp_parens $ ppDefor tp_+                              ChildReplace tp -> pp_parens $ ppDefor tp+                              _               -> empty+                            {-# LINE 486 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule11 #-}+   {-# LINE 637 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule11 = \ kind_ name_ ->+                           {-# LINE 637 "src-ag/ExecutionPlan2Clean.ag" #-}+                           case kind_ of+                             ChildSyntax    -> name_ >|< "_"+                             ChildReplace _ -> name_ >|< "_"+                             _              -> empty+                           {-# LINE 495 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule12 #-}+   {-# LINE 642 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule12 = \ kind_ name_ ->+                             {-# LINE 642 "src-ag/ExecutionPlan2Clean.ag" #-}+                             case kind_ of+                               ChildSyntax    -> [name_]+                               ChildReplace _ -> [name_]+                               _              -> []+                             {-# LINE 504 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule13 #-}+   {-# LINE 946 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule13 = \ _introcode name_ ->+                               {-# LINE 946 "src-ag/ExecutionPlan2Clean.ag" #-}+                               Map.singleton name_ _introcode+                               {-# LINE 510 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule14 #-}+   {-# LINE 947 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule14 = \ tp_ ->+                               {-# LINE 947 "src-ag/ExecutionPlan2Clean.ag" #-}+                               case tp_ of+                                 NT _ _ defor -> defor+                                 _            -> False+                               {-# LINE 518 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule15 #-}+   {-# LINE 950 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule15 = \ _isDefor ((_lhsIoptions) :: Options) _nt kind_ name_ ->+                               {-# LINE 950 "src-ag/ExecutionPlan2Clean.ag" #-}+                               case kind_ of+                                 ChildSyntax -> "arg_" >|< name_ >|< "_"+                                 ChildAttr   ->+                                                let prefix | not _isDefor     = if lateHigherOrderBinding _lhsIoptions+                                                                                then lateSemNtLabel _nt     >#< lhsname _lhsIoptions True idLateBindingAttr+                                                                                else "sem_" >|< _nt+                                                           | otherwise        = empty+                                                in pp_parens (prefix >#< instname name_)+                                 ChildReplace _ ->+                                                   pp_parens (instname name_ >#< name_ >|< "_")+                               {-# LINE 533 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule16 #-}+   {-# LINE 961 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule16 = \ ((_lhsIoptions) :: Options) hasAround_ name_ ->+                               {-# LINE 961 "src-ag/ExecutionPlan2Clean.ag" #-}+                               if hasAround_+                               then locname _lhsIoptions name_ >|< "_around"+                               else empty+                               {-# LINE 541 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule17 #-}+   {-# LINE 964 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule17 = \ _addbang _aroundcode _initSt _isDefor ((_lhsIoptions) :: Options) _nt _valcode hasAround_ kind_ name_ ->+                               {-# LINE 964 "src-ag/ExecutionPlan2Clean.ag" #-}+                               \kind fmtMode ->+                                        let pat       = text $ stname name_ _initSt+                                            patStrict = _addbang     pat+                                            attach    = "attach_T_" >|< _nt     >#< pp_parens (_aroundcode     >#< _valcode    )+                                            runAttach = unMon _lhsIoptions >#< pp_parens attach+                                            decl      = case kind of+                                                          VisitPure False -> pat >#< "=" >#< runAttach+                                                          VisitPure True  -> patStrict >#< "=" >#< runAttach+                                                          VisitMonadic    -> attach >#< ">>= \\" >#< patStrict >#< "->"+                                        in if compatibleAttach kind _nt     _lhsIoptions+                                           then Right ( fmtDecl False fmtMode decl+                                                      , Set.singleton (stname name_ _initSt    )+                                                      , case kind_ of+                                                          ChildAttr   -> Map.insert (instname name_) Nothing $+                                                                           ( if _isDefor     || not (lateHigherOrderBinding _lhsIoptions)+                                                                             then id+                                                                             else Map.insert (lhsname _lhsIoptions True idLateBindingAttr) (Just $ AttrInh _LHS idLateBindingAttr)+                                                                           ) $+                                                                           ( if hasAround_+                                                                             then Map.insert (locname _lhsIoptions (name_) ++ "_around") Nothing+                                                                             else id+                                                                           ) $ Map.empty+                                                          ChildReplace _ -> Map.singleton (instname name_) Nothing+                                                          ChildSyntax    -> Map.empty+                                                      )+                                           else Left $ IncompatibleAttachKind name_ kind+                               {-# LINE 572 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule18 #-}+   {-# LINE 990 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule18 = \ tp_ ->+                            {-# LINE 990 "src-ag/ExecutionPlan2Clean.ag" #-}+                            extractNonterminal tp_+                            {-# LINE 578 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule19 #-}+   {-# LINE 1568 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule19 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1568 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 584 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule20 #-}+   {-# LINE 1620 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule20 = \ name_ tp_ ->+                     {-# LINE 1620 "src-ag/ExecutionPlan2Clean.ag" #-}+                     Map.singleton name_ tp_+                     {-# LINE 590 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule21 #-}+   {-# LINE 1664 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule21 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) _nt ->+                 {-# LINE 1664 "src-ag/ExecutionPlan2Clean.ag" #-}+                 Map.findWithDefault (error "nonterminal not in allInitStates map") _nt     _lhsIallInitStates+                 {-# LINE 596 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule22 #-}+   rule22 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule23 #-}+   rule23 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule24 #-}+   rule24 = \ _argpats ->+     _argpats+{-# NOINLINE sem_EChild_ETerm #-}+sem_EChild_ETerm :: (Identifier) -> (Type) -> T_EChild +sem_EChild_ETerm arg_name_ arg_tp_ = T_EChild (return st2) where+   {-# NOINLINE st2 #-}+   st2 = let+      v1 :: T_EChild_v1 +      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) -> ( let+         _tpDoc = rule25 _addStrict arg_tp_+         _strNm = rule26 _lhsIcon _lhsInt arg_name_+         _field = rule27 _lhsIoptions _strNm _tpDoc+         _recordfield = rule28 _strNm _tpDoc+         _addStrict = rule29 _lhsIoptions+         _lhsOdatatype :: PP_Doc+         _lhsOdatatype = rule30 _field+         _lhsOrecordtype :: PP_Doc+         _lhsOrecordtype = rule31 _recordfield+         _lhsOargnamesw ::  PP_Doc +         _lhsOargnamesw = rule32 arg_name_+         _lhsOargtps ::   PP_Doc  +         _lhsOargtps = rule33 arg_tp_+         _argpats = rule34 _addbang arg_name_+         _lhsOrecfields ::  [Identifier] +         _lhsOrecfields = rule35 arg_name_+         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule36 arg_name_+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule37 arg_name_+         _addbang = rule38 _lhsIoptions+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule39 arg_name_ arg_tp_+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule40  ()+         _lhsOargpats ::   PP_Doc  +         _lhsOargpats = rule41 _argpats+         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs+         in __result_ )+     in C_EChild_s2 v1+   {-# INLINE rule25 #-}+   {-# LINE 243 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule25 = \ _addStrict tp_ ->+                     {-# LINE 243 "src-ag/ExecutionPlan2Clean.ag" #-}+                     _addStrict     $ pp_parens $ ppTp $ removeDeforested tp_+                     {-# LINE 648 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule26 #-}+   {-# LINE 244 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule26 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->+                     {-# LINE 244 "src-ag/ExecutionPlan2Clean.ag" #-}+                     recordFieldname _lhsInt _lhsIcon name_+                     {-# LINE 654 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule27 #-}+   {-# LINE 245 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule27 = \ ((_lhsIoptions) :: Options) _strNm _tpDoc ->+                     {-# LINE 245 "src-ag/ExecutionPlan2Clean.ag" #-}+                     if dataRecords _lhsIoptions+                     then _strNm     >#< "::" >#< _tpDoc+                     else _tpDoc+                     {-# LINE 662 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule28 #-}+   {-# LINE 248 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule28 = \ _strNm _tpDoc ->+                           {-# LINE 248 "src-ag/ExecutionPlan2Clean.ag" #-}+                           _strNm     >#< "::" >#< _tpDoc+                           {-# LINE 668 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule29 #-}+   {-# LINE 249 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule29 = \ ((_lhsIoptions) :: Options) ->+                        {-# LINE 249 "src-ag/ExecutionPlan2Clean.ag" #-}+                        \x -> if strictData _lhsIoptions then "!" >|< x else x+                        {-# LINE 674 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule30 #-}+   {-# LINE 257 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule30 = \ _field ->+                                {-# LINE 257 "src-ag/ExecutionPlan2Clean.ag" #-}+                                _field+                                {-# LINE 680 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule31 #-}+   {-# LINE 258 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule31 = \ _recordfield ->+                                {-# LINE 258 "src-ag/ExecutionPlan2Clean.ag" #-}+                                _recordfield+                                {-# LINE 686 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule32 #-}+   {-# LINE 346 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule32 = \ name_ ->+                             {-# LINE 346 "src-ag/ExecutionPlan2Clean.ag" #-}+                             text $ fieldname name_+                             {-# LINE 692 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule33 #-}+   {-# LINE 648 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule33 = \ tp_ ->+                             {-# LINE 648 "src-ag/ExecutionPlan2Clean.ag" #-}+                             pp_parens $ show tp_+                             {-# LINE 698 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule34 #-}+   {-# LINE 649 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule34 = \ _addbang name_ ->+                             {-# LINE 649 "src-ag/ExecutionPlan2Clean.ag" #-}+                             _addbang     $ text $ fieldname name_+                             {-# LINE 704 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule35 #-}+   {-# LINE 650 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule35 = \ name_ ->+                             {-# LINE 650 "src-ag/ExecutionPlan2Clean.ag" #-}+                             [name_]+                             {-# LINE 710 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule36 #-}+   {-# LINE 945 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule36 = \ name_ ->+                               {-# LINE 945 "src-ag/ExecutionPlan2Clean.ag" #-}+                               Map.singleton name_ (\_ _ -> Right (empty, Set.empty, Map.empty))+                               {-# LINE 716 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule37 #-}+   {-# LINE 1318 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule37 = \ name_ ->+                       {-# LINE 1318 "src-ag/ExecutionPlan2Clean.ag" #-}+                       Set.singleton $ fieldname name_+                       {-# LINE 722 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule38 #-}+   {-# LINE 1569 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule38 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1569 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 728 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule39 #-}+   {-# LINE 1620 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule39 = \ name_ tp_ ->+                     {-# LINE 1620 "src-ag/ExecutionPlan2Clean.ag" #-}+                     Map.singleton name_ tp_+                     {-# LINE 734 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule40 #-}+   rule40 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule41 #-}+   rule41 = \ _argpats ->+     _argpats++-- EChildren ---------------------------------------------------+-- wrapper+data Inh_EChildren  = Inh_EChildren { allInitStates_Inh_EChildren :: (Map NontermIdent Int), con_Inh_EChildren :: (ConstructorIdent), constructorTypeMap_Inh_EChildren :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_EChildren :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_EChildren :: (String -> String -> String -> Bool -> String), importBlocks_Inh_EChildren :: (PP_Doc), mainFile_Inh_EChildren :: (String), mainName_Inh_EChildren :: (String), nt_Inh_EChildren :: (NontermIdent), options_Inh_EChildren :: (Options), textBlocks_Inh_EChildren :: (PP_Doc) }+data Syn_EChildren  = Syn_EChildren { argnamesw_Syn_EChildren :: ([PP_Doc]), argpats_Syn_EChildren :: ( [PP_Doc] ), argtps_Syn_EChildren :: ( [PP_Doc] ), childTypes_Syn_EChildren :: (Map Identifier Type), childintros_Syn_EChildren :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), datatype_Syn_EChildren :: ([PP_Doc]), recfields_Syn_EChildren :: ( [Identifier] ), recordtype_Syn_EChildren :: ([PP_Doc]), terminaldefs_Syn_EChildren :: (Set String), usedArgs_Syn_EChildren :: (Set String) }+{-# INLINABLE wrap_EChildren #-}+wrap_EChildren :: T_EChildren  -> Inh_EChildren  -> (Syn_EChildren )+wrap_EChildren (T_EChildren act) (Inh_EChildren _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg4 = T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks+        (T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs) <- return (inv_EChildren_s5 sem arg4)+        return (Syn_EChildren _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs)+   )++-- cata+{-# NOINLINE sem_EChildren #-}+sem_EChildren :: EChildren  -> T_EChildren +sem_EChildren list = Prelude.foldr sem_EChildren_Cons sem_EChildren_Nil (Prelude.map sem_EChild list)++-- semantic domain+newtype T_EChildren  = T_EChildren {+                                   attach_T_EChildren :: Identity (T_EChildren_s5 )+                                   }+newtype T_EChildren_s5  = C_EChildren_s5 {+                                         inv_EChildren_s5 :: (T_EChildren_v4 )+                                         }+data T_EChildren_s6  = C_EChildren_s6+type T_EChildren_v4  = (T_EChildren_vIn4 ) -> (T_EChildren_vOut4 )+data T_EChildren_vIn4  = T_EChildren_vIn4 (Map NontermIdent Int) (ConstructorIdent) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (String) (String) (NontermIdent) (Options) (PP_Doc)+data T_EChildren_vOut4  = T_EChildren_vOut4 ([PP_Doc]) ( [PP_Doc] ) ( [PP_Doc] ) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ([PP_Doc]) ( [Identifier] ) ([PP_Doc]) (Set String) (Set String)+{-# NOINLINE sem_EChildren_Cons #-}+sem_EChildren_Cons :: T_EChild  -> T_EChildren  -> T_EChildren +sem_EChildren_Cons arg_hd_ arg_tl_ = T_EChildren (return st5) where+   {-# NOINLINE st5 #-}+   st5 = let+      v4 :: T_EChildren_v4 +      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) -> ( let+         _hdX2 = Control.Monad.Identity.runIdentity (attach_T_EChild (arg_hd_))+         _tlX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_tl_))+         (T_EChild_vOut1 _hdIargnamesw _hdIargpats _hdIargtps _hdIchildTypes _hdIchildintros _hdIdatatype _hdIrecfields _hdIrecordtype _hdIterminaldefs _hdIusedArgs) = inv_EChild_s2 _hdX2 (T_EChild_vIn1 _hdOallInitStates _hdOcon _hdOconstructorTypeMap _hdOdclModuleHeader _hdOiclModuleHeader _hdOimportBlocks _hdOmainFile _hdOmainName _hdOnt _hdOoptions _hdOtextBlocks)+         (T_EChildren_vOut4 _tlIargnamesw _tlIargpats _tlIargtps _tlIchildTypes _tlIchildintros _tlIdatatype _tlIrecfields _tlIrecordtype _tlIterminaldefs _tlIusedArgs) = inv_EChildren_s5 _tlX5 (T_EChildren_vIn4 _tlOallInitStates _tlOcon _tlOconstructorTypeMap _tlOdclModuleHeader _tlOiclModuleHeader _tlOimportBlocks _tlOmainFile _tlOmainName _tlOnt _tlOoptions _tlOtextBlocks)+         _lhsOargnamesw :: [PP_Doc]+         _lhsOargnamesw = rule42 _hdIargnamesw _tlIargnamesw+         _lhsOargpats ::  [PP_Doc] +         _lhsOargpats = rule43 _hdIargpats _tlIargpats+         _lhsOargtps ::  [PP_Doc] +         _lhsOargtps = rule44 _hdIargtps _tlIargtps+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule45 _hdIchildTypes _tlIchildTypes+         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule46 _hdIchildintros _tlIchildintros+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule47 _hdIdatatype _tlIdatatype+         _lhsOrecfields ::  [Identifier] +         _lhsOrecfields = rule48 _hdIrecfields _tlIrecfields+         _lhsOrecordtype :: [PP_Doc]+         _lhsOrecordtype = rule49 _hdIrecordtype _tlIrecordtype+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule50 _hdIterminaldefs _tlIterminaldefs+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule51 _hdIusedArgs _tlIusedArgs+         _hdOallInitStates = rule52 _lhsIallInitStates+         _hdOcon = rule53 _lhsIcon+         _hdOconstructorTypeMap = rule54 _lhsIconstructorTypeMap+         _hdOdclModuleHeader = rule55 _lhsIdclModuleHeader+         _hdOiclModuleHeader = rule56 _lhsIiclModuleHeader+         _hdOimportBlocks = rule57 _lhsIimportBlocks+         _hdOmainFile = rule58 _lhsImainFile+         _hdOmainName = rule59 _lhsImainName+         _hdOnt = rule60 _lhsInt+         _hdOoptions = rule61 _lhsIoptions+         _hdOtextBlocks = rule62 _lhsItextBlocks+         _tlOallInitStates = rule63 _lhsIallInitStates+         _tlOcon = rule64 _lhsIcon+         _tlOconstructorTypeMap = rule65 _lhsIconstructorTypeMap+         _tlOdclModuleHeader = rule66 _lhsIdclModuleHeader+         _tlOiclModuleHeader = rule67 _lhsIiclModuleHeader+         _tlOimportBlocks = rule68 _lhsIimportBlocks+         _tlOmainFile = rule69 _lhsImainFile+         _tlOmainName = rule70 _lhsImainName+         _tlOnt = rule71 _lhsInt+         _tlOoptions = rule72 _lhsIoptions+         _tlOtextBlocks = rule73 _lhsItextBlocks+         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs+         in __result_ )+     in C_EChildren_s5 v4+   {-# INLINE rule42 #-}+   rule42 = \ ((_hdIargnamesw) ::  PP_Doc ) ((_tlIargnamesw) :: [PP_Doc]) ->+     _hdIargnamesw : _tlIargnamesw+   {-# INLINE rule43 #-}+   rule43 = \ ((_hdIargpats) ::   PP_Doc  ) ((_tlIargpats) ::  [PP_Doc] ) ->+     _hdIargpats : _tlIargpats+   {-# INLINE rule44 #-}+   rule44 = \ ((_hdIargtps) ::   PP_Doc  ) ((_tlIargtps) ::  [PP_Doc] ) ->+     _hdIargtps : _tlIargtps+   {-# INLINE rule45 #-}+   rule45 = \ ((_hdIchildTypes) :: Map Identifier Type) ((_tlIchildTypes) :: Map Identifier Type) ->+     _hdIchildTypes `mappend` _tlIchildTypes+   {-# INLINE rule46 #-}+   rule46 = \ ((_hdIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ((_tlIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _hdIchildintros `Map.union` _tlIchildintros+   {-# INLINE rule47 #-}+   rule47 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->+     _hdIdatatype : _tlIdatatype+   {-# INLINE rule48 #-}+   rule48 = \ ((_hdIrecfields) ::  [Identifier] ) ((_tlIrecfields) ::  [Identifier] ) ->+     _hdIrecfields ++ _tlIrecfields+   {-# INLINE rule49 #-}+   rule49 = \ ((_hdIrecordtype) :: PP_Doc) ((_tlIrecordtype) :: [PP_Doc]) ->+     _hdIrecordtype : _tlIrecordtype+   {-# INLINE rule50 #-}+   rule50 = \ ((_hdIterminaldefs) :: Set String) ((_tlIterminaldefs) :: Set String) ->+     _hdIterminaldefs `Set.union` _tlIterminaldefs+   {-# INLINE rule51 #-}+   rule51 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->+     _hdIusedArgs `Set.union` _tlIusedArgs+   {-# INLINE rule52 #-}+   rule52 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule53 #-}+   rule53 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule54 #-}+   rule54 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule55 #-}+   rule55 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule56 #-}+   rule56 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule57 #-}+   rule57 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule58 #-}+   rule58 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule59 #-}+   rule59 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule60 #-}+   rule60 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule61 #-}+   rule61 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule62 #-}+   rule62 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule63 #-}+   rule63 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule64 #-}+   rule64 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule65 #-}+   rule65 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule66 #-}+   rule66 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule67 #-}+   rule67 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule68 #-}+   rule68 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule69 #-}+   rule69 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule70 #-}+   rule70 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule71 #-}+   rule71 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule72 #-}+   rule72 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule73 #-}+   rule73 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+{-# NOINLINE sem_EChildren_Nil #-}+sem_EChildren_Nil ::  T_EChildren +sem_EChildren_Nil  = T_EChildren (return st5) where+   {-# NOINLINE st5 #-}+   st5 = let+      v4 :: T_EChildren_v4 +      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsItextBlocks) -> ( let+         _lhsOargnamesw :: [PP_Doc]+         _lhsOargnamesw = rule74  ()+         _lhsOargpats ::  [PP_Doc] +         _lhsOargpats = rule75  ()+         _lhsOargtps ::  [PP_Doc] +         _lhsOargtps = rule76  ()+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule77  ()+         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule78  ()+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule79  ()+         _lhsOrecfields ::  [Identifier] +         _lhsOrecfields = rule80  ()+         _lhsOrecordtype :: [PP_Doc]+         _lhsOrecordtype = rule81  ()+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule82  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule83  ()+         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOrecfields _lhsOrecordtype _lhsOterminaldefs _lhsOusedArgs+         in __result_ )+     in C_EChildren_s5 v4+   {-# INLINE rule74 #-}+   rule74 = \  (_ :: ()) ->+     []+   {-# INLINE rule75 #-}+   rule75 = \  (_ :: ()) ->+     []+   {-# INLINE rule76 #-}+   rule76 = \  (_ :: ()) ->+     []+   {-# INLINE rule77 #-}+   rule77 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule78 #-}+   rule78 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule79 #-}+   rule79 = \  (_ :: ()) ->+     []+   {-# INLINE rule80 #-}+   rule80 = \  (_ :: ()) ->+     []+   {-# INLINE rule81 #-}+   rule81 = \  (_ :: ()) ->+     []+   {-# INLINE rule82 #-}+   rule82 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule83 #-}+   rule83 = \  (_ :: ()) ->+     Set.empty++-- ENonterminal ------------------------------------------------+-- wrapper+data Inh_ENonterminal  = Inh_ENonterminal { allFromToStates_Inh_ENonterminal :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminal :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminal :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminal :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), constructorTypeMap_Inh_ENonterminal :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ENonterminal :: (String -> String -> String -> Bool -> String), derivings_Inh_ENonterminal :: (Derivings), iclModuleHeader_Inh_ENonterminal :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ENonterminal :: (PP_Doc), inhmap_Inh_ENonterminal :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminal :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminal :: (String), mainName_Inh_ENonterminal :: (String), options_Inh_ENonterminal :: (Options), synmap_Inh_ENonterminal :: (Map NontermIdent Attributes), textBlocks_Inh_ENonterminal :: (PP_Doc), typeSyns_Inh_ENonterminal :: (TypeSyns), wrappers_Inh_ENonterminal :: (Set NontermIdent) }+data Syn_ENonterminal  = Syn_ENonterminal { appendCommon_Syn_ENonterminal :: ( PP_Doc ), appendMain_Syn_ENonterminal :: ( PP_Doc ), childvisit_Syn_ENonterminal :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_ENonterminal :: (Seq Error), fromToStates_Syn_ENonterminal :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_ENonterminal :: (IO ()), imports_Syn_ENonterminal :: ([PP_Doc]), initStates_Syn_ENonterminal :: (Map NontermIdent Int), output_Syn_ENonterminal :: (PP_Doc), output_dcl_Syn_ENonterminal :: (PP_Doc), semFunBndDefs_Syn_ENonterminal :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminal :: (Seq PP_Doc), visitKinds_Syn_ENonterminal :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_ENonterminal #-}+wrap_ENonterminal :: T_ENonterminal  -> Inh_ENonterminal  -> (Syn_ENonterminal )+wrap_ENonterminal (T_ENonterminal act) (Inh_ENonterminal _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg7 = T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers+        (T_ENonterminal_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminal_s8 sem arg7)+        return (Syn_ENonterminal _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_ENonterminal #-}+sem_ENonterminal :: ENonterminal  -> T_ENonterminal +sem_ENonterminal ( ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ prods_ recursive_ hoInfo_ ) = sem_ENonterminal_ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ ( sem_EProductions prods_ ) recursive_ hoInfo_++-- semantic domain+newtype T_ENonterminal  = T_ENonterminal {+                                         attach_T_ENonterminal :: Identity (T_ENonterminal_s8 )+                                         }+newtype T_ENonterminal_s8  = C_ENonterminal_s8 {+                                               inv_ENonterminal_s8 :: (T_ENonterminal_v7 )+                                               }+data T_ENonterminal_s9  = C_ENonterminal_s9+type T_ENonterminal_v7  = (T_ENonterminal_vIn7 ) -> (T_ENonterminal_vOut7 )+data T_ENonterminal_vIn7  = T_ENonterminal_vIn7 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (Derivings) (String -> String -> String -> Bool -> String) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes) (PP_Doc) (TypeSyns) (Set NontermIdent)+data T_ENonterminal_vOut7  = T_ENonterminal_vOut7 ( PP_Doc ) ( PP_Doc ) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Map NontermIdent Int) (PP_Doc) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_ENonterminal_ENonterminal #-}+sem_ENonterminal_ENonterminal :: (NontermIdent) -> ([Identifier]) -> (ClassContext) -> (StateIdentifier) -> ([VisitIdentifier]) -> (Map StateIdentifier StateCtx) -> (Map StateIdentifier StateCtx) -> T_EProductions  -> (Bool) -> (HigherOrderInfo) -> T_ENonterminal +sem_ENonterminal_ENonterminal arg_nt_ arg_params_ arg_classCtxs_ arg_initial_ arg_initialv_ arg_nextVisits_ arg_prevVisits_ arg_prods_ _ _ = T_ENonterminal (return st8) where+   {-# NOINLINE st8 #-}+   st8 = let+      v7 :: T_ENonterminal_v7 +      v7 = \ (T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let+         _prodsX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_prods_))+         (T_EProductions_vOut16 _prodsIallvisits _prodsIchildvisit _prodsIcount _prodsIdatatype _prodsIerrors _prodsIfromToStates _prodsIgenProdIO _prodsIimports _prodsIrecordtype _prodsIsemFunBndDefs _prodsIsemFunBndTps _prodsIsem_nt _prodsIsem_prod _prodsIsem_prod_tys _prodsIt_visits _prodsIvisitKinds _prodsIvisitdefs _prodsIvisituses) = inv_EProductions_s17 _prodsX17 (T_EProductions_vIn16 _prodsOallFromToStates _prodsOallInhmap _prodsOallInitStates _prodsOallSynmap _prodsOallVisitKinds _prodsOallchildvisit _prodsOallstates _prodsOavisitdefs _prodsOavisituses _prodsOclassCtxs _prodsOconstructorTypeMap _prodsOdclModuleHeader _prodsOiclModuleHeader _prodsOimportBlocks _prodsOinhmap _prodsOinitial _prodsOlocalAttrTypes _prodsOmainFile _prodsOmainName _prodsOnextVisits _prodsOnt _prodsOntType _prodsOoptions _prodsOparams _prodsOprevVisits _prodsOrename _prodsOsynmap _prodsOtextBlocks)+         _prodsOrename = rule84 _lhsIoptions+         _prodsOnt = rule85 arg_nt_+         _prodsOparams = rule86 arg_params_+         _prodsOclassCtxs = rule87 arg_classCtxs_+         _lhsOoutput :: PP_Doc+         _lhsOoutput = rule88 _hasWrapper _k_states _lhsIoptions _prodsIsem_prod _sem_nt _t_init_icl _t_states_icl _wr_inh_icl _wr_syn_icl _wrapper_icl arg_nt_+         _hasWrapper = rule89 _lhsIwrappers arg_nt_+         _lhsOoutput_dcl :: PP_Doc+         _lhsOoutput_dcl = rule90 _datatype _hasWrapper _lhsIoptions _prodsIsem_prod_tys _prodsIt_visits _sem_tp _semname _t_init_dcl _t_states_dcl _wr_inh_dcl _wr_syn_dcl _wrapper_dcl arg_nt_+         _classPP = rule91 arg_classCtxs_+         _aliasPre = rule92 _classPP _t_params arg_nt_+         _datatype = rule93 _aliasPre _classPP _derivings _lhsIconstructorTypeMap _lhsItypeSyns _prodsIdatatype _prodsIrecordtype _t_params arg_nt_+         _derivings = rule94 _lhsIderivings arg_nt_+         _fsemname = rule95  ()+         _semname = rule96 _fsemname arg_nt_+         _frecarg = rule97 _fsemname+         _sem_tp = rule98 _classPP _quantPP _t_params _t_type arg_nt_+         _quantPP = rule99 arg_params_+         _sem_nt = rule100 _frecarg _fsemname _lhsItypeSyns _prodsIsem_nt _sem_tp _semname arg_nt_+         (Just _prodsOinhmap) = rule101 _lhsIinhmap arg_nt_+         (Just _prodsOsynmap) = rule102 _lhsIsynmap arg_nt_+         _prodsOallInhmap = rule103 _lhsIinhmap+         _prodsOallSynmap = rule104 _lhsIsynmap+         _outedges = rule105 _prodsIallvisits+         _inedges = rule106 _prodsIallvisits+         _allstates = rule107 _inedges _outedges arg_initial_+         _stvisits = rule108 _prodsIallvisits+         _t_type = rule109 arg_nt_+         _lt_type = rule110 arg_nt_+         _t_params = rule111 arg_params_+         _t_init_icl = rule112 _lt_type _t_init_dcl _t_type+         _t_init_dcl = rule113 _lhsIoptions _t_params _t_type arg_initial_+         _t_states_icl = rule114 _allstates arg_nextVisits_ arg_nt_+         _t_states_dcl = rule115 _allstates _t_params arg_nextVisits_ arg_nt_+         _k_type = rule116 arg_nt_+         _k_states = rule117 _allstates _k_type _prodsIallvisits _t_params _t_type arg_nextVisits_ arg_nt_+         _wr_inh_icl = rule118 _genwrap_icl _wr_inhs+         _wr_syn_icl = rule119 _genwrap_icl _wr_syns+         _genwrap_icl = rule120 _addbang arg_nt_+         _wr_inh_dcl = rule121 _genwrap_dcl _wr_inhs+         _wr_syn_dcl = rule122 _genwrap_dcl _wr_syns+         _genwrap_dcl = rule123 _addbang _t_params arg_nt_+         _synAttrs = rule124 _lhsIinhmap arg_nt_+         _wr_inhs = rule125 _synAttrs _wr_filter+         _wr_inhs1 = rule126 _synAttrs+         _wr_filter = rule127 _lhsIoptions+         _wr_syns = rule128 _lhsIsynmap arg_nt_+         _inhlist = rule129 _lhsIoptions _wr_inhs+         _inhlist1 = rule130 _lhsIoptions _wr_inhs1+         _synlist = rule131 _lhsIoptions _wr_syns+         _wrapname = rule132 arg_nt_+         _inhname = rule133 arg_nt_+         _synname = rule134 arg_nt_+         _firstVisitInfo = rule135 arg_initial_ arg_nextVisits_+         _wrapper_icl = rule136 _addbang _addbangWrap _classPP _firstVisitInfo _inhlist _inhlist1 _inhname _k_type _lhsIallVisitKinds _lhsImainName _lhsIoptions _quantPP _synlist _synname _t_params _t_type _wrapname arg_initial_ arg_initialv_ arg_nt_+         _wrapper_dcl = rule137 _classPP _inhname _lhsIoptions _quantPP _synname _t_params _t_type _wrapname+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule138 _prodsIsemFunBndDefs _semFunBndDef+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule139 _prodsIsemFunBndTps _semFunBndTp+         _semFunBndDef = rule140 _semFunBndNm _semname+         _semFunBndTp = rule141 _semFunBndNm _sem_tp+         _semFunBndNm = rule142 arg_nt_+         _prodsOinitial = rule143 arg_initial_+         _prodsOallstates = rule144 _allstates+         _lhsOappendMain ::  PP_Doc +         _lhsOappendMain = rule145 _lhsIwrappers _sem_nt _wr_inh_icl _wr_syn_icl _wrapper_icl arg_nt_+         _lhsOappendCommon ::  PP_Doc +         _lhsOappendCommon = rule146 _datatype _k_states _lhsIoptions _prodsIt_visits _t_init_icl _t_states_icl+         _addbang = rule147 _lhsIoptions+         _addbangWrap = rule148  ()+         _prodsOnextVisits = rule149 arg_nextVisits_+         _prodsOprevVisits = rule150 arg_prevVisits_+         _prodsOlocalAttrTypes = rule151 _lhsIlocalAttrTypes arg_nt_+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule152 arg_initial_ arg_nt_+         _ntType = rule153 arg_nt_ arg_params_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule154 _prodsIchildvisit+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule155 _prodsIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule156 _prodsIfromToStates+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule157 _prodsIgenProdIO+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule158 _prodsIimports+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule159 _prodsIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule160 _prodsIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule161 _prodsIvisituses+         _prodsOallFromToStates = rule162 _lhsIallFromToStates+         _prodsOallInitStates = rule163 _lhsIallInitStates+         _prodsOallVisitKinds = rule164 _lhsIallVisitKinds+         _prodsOallchildvisit = rule165 _lhsIallchildvisit+         _prodsOavisitdefs = rule166 _lhsIavisitdefs+         _prodsOavisituses = rule167 _lhsIavisituses+         _prodsOconstructorTypeMap = rule168 _lhsIconstructorTypeMap+         _prodsOdclModuleHeader = rule169 _lhsIdclModuleHeader+         _prodsOiclModuleHeader = rule170 _lhsIiclModuleHeader+         _prodsOimportBlocks = rule171 _lhsIimportBlocks+         _prodsOmainFile = rule172 _lhsImainFile+         _prodsOmainName = rule173 _lhsImainName+         _prodsOntType = rule174 _ntType+         _prodsOoptions = rule175 _lhsIoptions+         _prodsOtextBlocks = rule176 _lhsItextBlocks+         __result_ = T_ENonterminal_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminal_s8 v7+   {-# INLINE rule84 #-}+   {-# LINE 58 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule84 = \ ((_lhsIoptions) :: Options) ->+                                  {-# LINE 58 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  rename _lhsIoptions+                                  {-# LINE 1140 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule85 #-}+   {-# LINE 66 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule85 = \ nt_ ->+                              {-# LINE 66 "src-ag/ExecutionPlan2Clean.ag" #-}+                              nt_+                              {-# LINE 1146 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule86 #-}+   {-# LINE 78 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule86 = \ params_ ->+                   {-# LINE 78 "src-ag/ExecutionPlan2Clean.ag" #-}+                   params_+                   {-# LINE 1152 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule87 #-}+   {-# LINE 82 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule87 = \ classCtxs_ ->+                      {-# LINE 82 "src-ag/ExecutionPlan2Clean.ag" #-}+                      classCtxs_+                      {-# LINE 1158 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule88 #-}+   {-# LINE 102 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule88 = \ _hasWrapper _k_states ((_lhsIoptions) :: Options) ((_prodsIsem_prod) :: PP_Doc) _sem_nt _t_init_icl _t_states_icl _wr_inh_icl _wr_syn_icl _wrapper_icl nt_ ->+                                {-# LINE 102 "src-ag/ExecutionPlan2Clean.ag" #-}+                                ("// " ++ getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-')+                                >-< (if _hasWrapper+                                     then "// wrapper"+                                          >-< _wr_inh_icl+                                          >-< _wr_syn_icl+                                          >-< _wrapper_icl+                                          >-< ""+                                     else empty)+                                >-< (if   folds _lhsIoptions+                                     then "// cata"+                                          >-< _sem_nt+                                          >-< ""+                                     else empty)+                                >-< (if   semfuns _lhsIoptions+                                     then "// semantic domain"+                                          >-< _t_init_icl+                                          >-< _t_states_icl+                                          >-< _k_states+                                          >-< _prodsIsem_prod+                                          >-< ""+                                     else empty)+                                {-# LINE 1184 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule89 #-}+   {-# LINE 123 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule89 = \ ((_lhsIwrappers) :: Set NontermIdent) nt_ ->+                                    {-# LINE 123 "src-ag/ExecutionPlan2Clean.ag" #-}+                                    nt_ `Set.member` _lhsIwrappers+                                    {-# LINE 1190 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule90 #-}+   {-# LINE 125 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule90 = \ _datatype _hasWrapper ((_lhsIoptions) :: Options) ((_prodsIsem_prod_tys) :: PP_Doc) ((_prodsIt_visits) :: PP_Doc) _sem_tp _semname _t_init_dcl _t_states_dcl _wr_inh_dcl _wr_syn_dcl _wrapper_dcl nt_ ->+                                    {-# LINE 125 "src-ag/ExecutionPlan2Clean.ag" #-}+                                    ("// " ++ getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-')+                                    >-< (if dataTypes _lhsIoptions+                                         then "// data"+                                              >-< _datatype+                                              >-< ""+                                         else empty)+                                    >-< (if _hasWrapper+                                         then "// wrapper"+                                              >-< _wr_inh_dcl+                                              >-< _wr_syn_dcl+                                              >-< _wrapper_dcl+                                              >-< ""+                                         else empty)+                                    >-< (if   folds _lhsIoptions+                                         then "// cata"+                                              >-< _semname     >#< "::" >#< _sem_tp+                                              >-< ""+                                         else empty)+                                    >-< (if   semfuns _lhsIoptions+                                         then "// semantic domain"+                                              >-< _t_init_dcl+                                              >-< _t_states_dcl+                                              >-< _prodsIt_visits+                                              >-< _prodsIsem_prod_tys+                                              >-< ""+                                         else empty)+                                    {-# LINE 1221 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule91 #-}+   {-# LINE 163 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule91 = \ classCtxs_ ->+                                  {-# LINE 163 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  ppClasses $ classCtxsToDocs classCtxs_+                                  {-# LINE 1227 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule92 #-}+   {-# LINE 164 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule92 = \ _classPP _t_params nt_ ->+                                  {-# LINE 164 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  "::" >#< _classPP     >#< nt_ >#< _t_params     >#< ":=="+                                  {-# LINE 1233 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule93 #-}+   {-# LINE 165 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule93 = \ _aliasPre _classPP _derivings ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdatatype) :: [PP_Doc]) ((_prodsIrecordtype) :: PP_Doc) _t_params nt_ ->+                                  {-# LINE 165 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  case lookup nt_ _lhsItypeSyns of+                                     Nothing -> "::" >#< _classPP     >#< nt_ >#< _t_params+                                                >-< ( if null _prodsIdatatype+                                                      then empty+                                                      else if isRecordConstructor nt_ _lhsIconstructorTypeMap+                                                             then  indent 2 $ "=" >#< _prodsIrecordtype+                                                             else  indent 2 $ vlist $ ( ("=" >#< head _prodsIdatatype)+                                                                                    : (map ("|" >#<) $ tail _prodsIdatatype))+                                                    )+                                                >-< indent 2 _derivings+                                     Just (List t)     -> _aliasPre     >#< "[" >#< show t >#< "]"+                                     Just (Maybe t)    -> _aliasPre     >#< "Data.Maybe" >#< pp_parens (show t)+                                     Just (Tuple ts)   -> _aliasPre     >#< pp_parens (ppCommas $ map (show . snd) ts)+                                     Just (Either l r) -> _aliasPre     >#< "Data.Either" >#< pp_parens (show l) >#< pp_parens (show r)+                                     Just (Map k v)    -> _aliasPre     >#< "Data.Map" >#< pp_parens (show k) >#< pp_parens (show v)+                                     Just (IntMap t)   -> _aliasPre     >#< "Data.IntMap.IntMap" >#< pp_parens (show t)+                                     Just (OrdSet t)   -> _aliasPre     >#< "Data.Set.Set" >#< pp_parens (show t)+                                     Just IntSet       -> _aliasPre     >#< "Data.IntSet.IntSet"+                                  {-# LINE 1256 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule94 #-}+   {-# LINE 184 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule94 = \ ((_lhsIderivings) :: Derivings) nt_ ->+                                   {-# LINE 184 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   case Map.lookup nt_ _lhsIderivings of+                                      Nothing -> empty+                                      Just s  -> if   Set.null s+                                                 then empty+                                                 else "deriving" >#< (pp_parens $ ppCommas $ map pp $ Set.toList s)+                                   {-# LINE 1266 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule95 #-}+   {-# LINE 269 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule95 = \  (_ :: ()) ->+                                  {-# LINE 269 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  \x -> "sem_" ++ show x+                                  {-# LINE 1272 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule96 #-}+   {-# LINE 270 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule96 = \ _fsemname nt_ ->+                                 {-# LINE 270 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _fsemname     nt_+                                 {-# LINE 1278 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule97 #-}+   {-# LINE 271 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule97 = \ _fsemname ->+                                 {-# LINE 271 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 \t x -> case t of+                                            NT nt _ _ -> pp_parens (_fsemname nt >#< x)+                                            _         -> pp x+                                 {-# LINE 1286 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule98 #-}+   {-# LINE 277 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule98 = \ _classPP _quantPP _t_params _t_type nt_ ->+                                 {-# LINE 277 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _quantPP     >#< _classPP     >#< nt_ >#< _t_params     >#< "->" >#< _t_type     >#< _t_params+                                 {-# LINE 1292 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule99 #-}+   {-# LINE 278 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule99 = \ params_ ->+                                 {-# LINE 278 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 ppQuants params_+                                 {-# LINE 1298 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule100 #-}+   {-# LINE 280 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule100 = \ _frecarg _fsemname ((_lhsItypeSyns) :: TypeSyns) ((_prodsIsem_nt) :: PP_Doc) _sem_tp _semname nt_ ->+                                 {-# LINE 280 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _semname     >#< "::" >#< _sem_tp+                                 >-< case lookup nt_ _lhsItypeSyns of+                                        Nothing -> _prodsIsem_nt+                                        Just (List t) -> _semname     >#< "list" >#< "=" >#< "foldr" >#< _semname     >|< "_Cons"+                                                         >#< _semname     >|< "_Nil"+                                                         >#< case t of+                                                                NT nt _ _ -> pp_parens ("map" >#< _fsemname nt >#< "list")+                                                                _         -> pp "list"+                                        Just (Maybe t) -> _semname     >#< "'Data.Maybe'.Nothing" >#< "=" >#< _semname     >|< "_Nothing"+                                                          >-< _semname     >#< pp_parens ("'Data.Maybe'.Just just") >#< "="+                                                          >#< _semname     >|< "_Just" >#< _frecarg t "just"+                                        Just (Tuple ts) -> _semname     >#< pp_parens (ppCommas $ map fst ts) >#< "="+                                                           >#< _semname     >|< "_Tuple" >#< ppSpaced (map (\t -> _frecarg (snd t) (show $ fst t)) ts)+                                        Just (Either l r) -> _semname     >#< "('Data.Either'.Left left)" >#< "=" >#< _semname     >|< "_Left" >#< _frecarg l "left"+                                                             >-< _semname     >#< "('Data.Either'.Right right)" >#< "=" >#< _semname     >|< "_Right" >#< _frecarg r "right"+                                        Just (Map k v) -> _semname     >#< "m" >#< "=" >#< "'Data.Map'.foldrWithKey"+                                                          >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil"+                                                          >#< case v of+                                                                 NT nt _ _ -> pp_parens ("'Data.Map'.map" >#< _fsemname nt >#< "m")+                                                                 _         -> pp "m"+                                        Just (IntMap v) -> _semname     >#< "m" >#< "=" >#< "'Data.IntMap'.foldWithKey"+                                                           >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil"+                                                           >#< case v of+                                                                  NT nt _ _ -> pp_parens ("'Data.IntMap'.map" >#< _fsemname nt >#< "m")+                                                                  _         -> pp "m"+                                        Just (OrdSet t) -> _semname     >#< "s" >#< "=" >#< "foldr" >#< _semname     >|< "_Entry"+                                                           >#< _semname     >|< "_Nil"+                                                           >#< pp_parens (+                                                                 ( case t of+                                                                     NT nt _ _ -> pp_parens ("map" >#< _fsemname nt)+                                                                     _         -> empty+                                                                 ) >#< pp_parens ("'Data.IntSet'.elems" >#< "s")+                                                               )+                                        Just IntSet     -> _semname     >#< "s" >#< "=" >#< "foldr" >#< _semname     >|< "_Entry"+                                                           >#< _semname     >|< "_Nil"+                                                           >#< pp_parens ("'Data.IntSet'.elems" >#< "s")+                                 {-# LINE 1339 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule101 #-}+   {-# LINE 366 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule101 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->+                                         {-# LINE 366 "src-ag/ExecutionPlan2Clean.ag" #-}+                                         Map.lookup nt_ _lhsIinhmap+                                         {-# LINE 1345 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule102 #-}+   {-# LINE 367 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule102 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->+                                         {-# LINE 367 "src-ag/ExecutionPlan2Clean.ag" #-}+                                         Map.lookup nt_ _lhsIsynmap+                                         {-# LINE 1351 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule103 #-}+   {-# LINE 368 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule103 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+                                     {-# LINE 368 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     _lhsIinhmap+                                     {-# LINE 1357 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule104 #-}+   {-# LINE 369 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule104 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+                                     {-# LINE 369 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     _lhsIsynmap+                                     {-# LINE 1363 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule105 #-}+   {-# LINE 390 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule105 = \ ((_prodsIallvisits) :: [VisitStateState]) ->+                                   {-# LINE 390 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   Set.fromList $ map (\(_,f,_) -> f) _prodsIallvisits+                                   {-# LINE 1369 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule106 #-}+   {-# LINE 391 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule106 = \ ((_prodsIallvisits) :: [VisitStateState]) ->+                                   {-# LINE 391 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   Set.fromList $ map (\(_,_,t) -> t) _prodsIallvisits+                                   {-# LINE 1375 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule107 #-}+   {-# LINE 392 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule107 = \ _inedges _outedges initial_ ->+                                   {-# LINE 392 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   Set.insert initial_ $ _inedges     `Set.union` _outedges+                                   {-# LINE 1381 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule108 #-}+   {-# LINE 393 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule108 = \ ((_prodsIallvisits) :: [VisitStateState]) ->+                                   {-# LINE 393 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   \st -> filter (\(v,f,t) -> f == st) _prodsIallvisits+                                   {-# LINE 1387 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule109 #-}+   {-# LINE 394 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule109 = \ nt_ ->+                                   {-# LINE 394 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   "T_" >|< nt_+                                   {-# LINE 1393 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule110 #-}+   {-# LINE 395 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule110 = \ nt_ ->+                                   {-# LINE 395 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   "t_" >|< nt_+                                   {-# LINE 1399 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule111 #-}+   {-# LINE 396 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule111 = \ params_ ->+                                   {-# LINE 396 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   ppSpaced params_+                                   {-# LINE 1405 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule112 #-}+   {-# LINE 397 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule112 = \ _lt_type _t_init_dcl _t_type ->+                                       {-# LINE 397 "src-ag/ExecutionPlan2Clean.ag" #-}+                                       _t_init_dcl     >-<+                                       "attach_" >|< _t_type     >#< pp_parens (_t_type     >#< _lt_type    ) >#< "=" >#< _lt_type+                                       {-# LINE 1412 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule113 #-}+   {-# LINE 399 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule113 = \ ((_lhsIoptions) :: Options) _t_params _t_type initial_ ->+                                       {-# LINE 399 "src-ag/ExecutionPlan2Clean.ag" #-}+                                       "::" >#< _t_type     >#< _t_params     >#< "=" >#< _t_type+                                       >#<+                                       pp_parens (+                                       ppMonadType _lhsIoptions >#< pp_parens (_t_type     >|< "_s" >|< initial_ >#< _t_params    ))+                                       {-# LINE 1421 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule114 #-}+   {-# LINE 403 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule114 = \ _allstates nextVisits_ nt_ ->+                                       {-# LINE 403 "src-ag/ExecutionPlan2Clean.ag" #-}+                                       vlist $ map (\st ->+                                         let nt_st = nt_ >|< "_s" >|< st+                                             c_st  = "C_" >|< nt_st+                                             inv_st  = "inv_" >|< nt_st+                                             nextVisit = Map.findWithDefault ManyVis st nextVisits_+                                         in  case nextVisit of+                                               NoneVis    -> empty+                                               OneVis vId -> inv_st >#< pp_parens (c_st >#< "x") >#< "=" >#< "x"+                                               ManyVis    -> empty+                                             ) $ Set.toList _allstates+                                       {-# LINE 1436 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule115 #-}+   {-# LINE 413 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule115 = \ _allstates _t_params nextVisits_ nt_ ->+                                       {-# LINE 413 "src-ag/ExecutionPlan2Clean.ag" #-}+                                       vlist $ map (\st ->+                                         let nt_st   = nt_ >|< "_s" >|< st+                                             t_st    = "T_" >|< nt_st+                                             k_st    = "K_" >|< nt_st+                                             c_st    = "C_" >|< nt_st+                                             inv_st  = "inv_" >|< nt_st+                                             nextVisit = Map.findWithDefault ManyVis st nextVisits_+                                         in  case nextVisit of+                                               NoneVis    -> "::" >#< t_st >#< _t_params     >#< "=" >#< c_st+                                               OneVis vId -> "::" >#< t_st >#< _t_params     >#< "=" >#< c_st >#< (pp_parens (conNmTVisit nt_ vId >#< _t_params    ))+                                               ManyVis    -> "::" >#< t_st >#< _t_params     >#< "where" >#< c_st >#< "::"+                                                               >#< (pp_braces $ inv_st >#< "::" >#< "!" >|< pp_parens ("E.t:" >#< k_st >#< _t_params     >#< "t" >#< "->" >#< "t"))+                                                               >#< "->" >#< t_st >#< _t_params+                                             ) $ Set.toList _allstates+                                       {-# LINE 1455 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule116 #-}+   {-# LINE 430 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule116 = \ nt_ ->+                                  {-# LINE 430 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  "K_" ++ show nt_+                                  {-# LINE 1461 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule117 #-}+   {-# LINE 431 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule117 = \ _allstates _k_type ((_prodsIallvisits) :: [VisitStateState]) _t_params _t_type nextVisits_ nt_ ->+                                  {-# LINE 431 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  vlist $ map (\st ->+                                     let nt_st = nt_ >|< "_s" >|< st+                                         k_st  = "K_" >|< nt_st+                                         outg  = filter (\(v,f,t) -> f == st) _prodsIallvisits+                                         visitlist = vlist $ map (\(v,f,t) ->+                                             _k_type     >|< "_v" >|< v >#< "::" >#< k_st >#< _t_params     >#< pp_parens (_t_type     >|< "_v" >|< v >#< _t_params    )+                                              ) outg+                                         nextVisit = Map.findWithDefault ManyVis st nextVisits_+                                         decl = "::" >#< k_st >#< "k" >#< _t_params     >#< "where" >-< indent 3 visitlist+                                     in  case nextVisit of+                                           NoneVis  -> empty+                                           OneVis _ -> empty+                                           ManyVis  -> decl+                                     ) $ Set.toList _allstates+                                  {-# LINE 1480 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule118 #-}+   {-# LINE 499 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule118 = \ _genwrap_icl _wr_inhs ->+                                      {-# LINE 499 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      _genwrap_icl     "Inh" _wr_inhs+                                      {-# LINE 1486 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule119 #-}+   {-# LINE 500 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule119 = \ _genwrap_icl _wr_syns ->+                                      {-# LINE 500 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      _genwrap_icl     "Syn" _wr_syns+                                      {-# LINE 1492 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule120 #-}+   {-# LINE 501 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule120 = \ _addbang nt_ ->+                                      {-# LINE 501 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      \nm attr ->+                                        let tyConName = nm >|< "_" >|< nt_+                                        in  (let (d, _, _) = foldr (\(i, t) (d, c, n) -> (d >-<+                                                               i >|< "_" >|< tyConName >#< "::" >#< tyConName >#< "->" >#< (_addbang     $ pp_parens $ typeToHaskellString (Just nt_) [] t)+                                                               >-< i >|< "_" >|< tyConName >#< pp_parens (tyConName >#< unwords (replicate (n - c - 1) "_" ++ ["x"] ++ replicate c "_")) >#< "= x"+                                                               , c + 1, n)+                                                               ) (empty, 0, length attr) attr+                                            in  d)+                                      {-# LINE 1505 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule121 #-}+   {-# LINE 509 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule121 = \ _genwrap_dcl _wr_inhs ->+                                      {-# LINE 509 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      _genwrap_dcl     "Inh" _wr_inhs+                                      {-# LINE 1511 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule122 #-}+   {-# LINE 510 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule122 = \ _genwrap_dcl _wr_syns ->+                                      {-# LINE 510 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      _genwrap_dcl     "Syn" _wr_syns+                                      {-# LINE 1517 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule123 #-}+   {-# LINE 511 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule123 = \ _addbang _t_params nt_ ->+                                      {-# LINE 511 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      \nm attr ->+                                        let tyConName = nm >|< "_" >|< nt_+                                        in  "::" >#< tyConName >#< _t_params     >#< "=" >#< tyConName+                                            >#< (ppSpaced $ map (\(_,t) -> _addbang     $ pp_parens $ typeToHaskellString (Just nt_) [] t) attr)+                                            >-<+                                                (let (d, _, _) = foldr (\(i, t) (d, c, n) -> (d >-<+                                                                  i >|< "_" >|< tyConName >#< "::" >#< tyConName >#< "->" >#< (_addbang     $ pp_parens $ typeToHaskellString (Just nt_) [] t)+                                                                  , c + 1, n)+                                                                  ) (empty, 0, length attr) attr+                                                in  d)+                                      {-# LINE 1532 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule124 #-}+   {-# LINE 521 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule124 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->+                                  {-# LINE 521 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  fromJust $ Map.lookup nt_ _lhsIinhmap+                                  {-# LINE 1538 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule125 #-}+   {-# LINE 522 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule125 = \ _synAttrs _wr_filter ->+                                  {-# LINE 522 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  Map.toList $ _wr_filter     $ _synAttrs+                                  {-# LINE 1544 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule126 #-}+   {-# LINE 523 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule126 = \ _synAttrs ->+                                  {-# LINE 523 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  Map.toList _synAttrs+                                  {-# LINE 1550 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule127 #-}+   {-# LINE 524 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule127 = \ ((_lhsIoptions) :: Options) ->+                                   {-# LINE 524 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   if lateHigherOrderBinding _lhsIoptions+                                   then Map.delete idLateBindingAttr+                                   else id+                                   {-# LINE 1558 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule128 #-}+   {-# LINE 527 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule128 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->+                                  {-# LINE 527 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  Map.toList $ fromJust $ Map.lookup nt_ _lhsIsynmap+                                  {-# LINE 1564 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule129 #-}+   {-# LINE 528 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule129 = \ ((_lhsIoptions) :: Options) _wr_inhs ->+                                  {-# LINE 528 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  map (lhsname _lhsIoptions True . fst) _wr_inhs+                                  {-# LINE 1570 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule130 #-}+   {-# LINE 529 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule130 = \ ((_lhsIoptions) :: Options) _wr_inhs1 ->+                                  {-# LINE 529 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  map (lhsname _lhsIoptions True . fst) _wr_inhs1+                                  {-# LINE 1576 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule131 #-}+   {-# LINE 530 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule131 = \ ((_lhsIoptions) :: Options) _wr_syns ->+                                  {-# LINE 530 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  map (lhsname _lhsIoptions False . fst) _wr_syns+                                  {-# LINE 1582 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule132 #-}+   {-# LINE 531 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule132 = \ nt_ ->+                                  {-# LINE 531 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  "wrap_" ++ show nt_+                                  {-# LINE 1588 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule133 #-}+   {-# LINE 532 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule133 = \ nt_ ->+                                  {-# LINE 532 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  "Inh_" ++ show nt_+                                  {-# LINE 1594 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule134 #-}+   {-# LINE 533 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule134 = \ nt_ ->+                                  {-# LINE 533 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  "Syn_" ++ show nt_+                                  {-# LINE 1600 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule135 #-}+   {-# LINE 534 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule135 = \ initial_ nextVisits_ ->+                                        {-# LINE 534 "src-ag/ExecutionPlan2Clean.ag" #-}+                                        Map.findWithDefault ManyVis initial_ nextVisits_+                                        {-# LINE 1606 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule136 #-}+   {-# LINE 535 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule136 = \ _addbang _addbangWrap _classPP _firstVisitInfo _inhlist _inhlist1 _inhname _k_type ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ((_lhsImainName) :: String) ((_lhsIoptions) :: Options) _quantPP _synlist _synname _t_params _t_type _wrapname initial_ initialv_ nt_ ->+                                      {-# LINE 535 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      (_wrapname     >#< "::" >#< _quantPP     >#< _classPP     >#< _t_type     >#< _t_params+                                            >#< _inhname     >#< _t_params     >#< "->" >#< ( if monadicWrappers _lhsIoptions then ppMonadType _lhsIoptions else empty) >#< pp_parens (_synname     >#< _t_params    ))+                                      >-< (_wrapname     >#< (_addbang     $ pp_parens (_t_type     >#< pp "act"))+                                          >#< (_addbang     $ pp_parens (_inhname+                                                 >#< (ppSpaced $ map (_addbangWrap     . pp) _inhlist    )) >#< "="))+                                      >-<+                                      indent 3 (case initialv_ of+                                        [] -> text _synname+                                        (initv:_) ->+                                          let inCon  = conNmTVisitIn nt_ initv+                                              outCon = conNmTVisitOut nt_ initv+                                              pat    = _addbang     $ pp_parens $ pat0+                                              pat0   = outCon >#< ppSpaced _synlist+                                              arg    = inCon >#< ppSpaced _inhlist1+                                              ind    = case _firstVisitInfo     of+                                                         NoneVis  -> error "wrapper: initial state should have a next visit but it has none"+                                                         OneVis _ -> empty+                                                         ManyVis  -> _k_type     >|< "_v" >|< initv+                                              extra  = if dummyTokenVisit _lhsIoptions+                                                       then pp $ dummyArg _lhsIoptions True+                                                       else empty+                                              convert = case Map.lookup initv _lhsIallVisitKinds of+                                                          Just kind -> case kind of+                                                                         VisitPure _  -> text "lift"+                                                                         VisitMonadic -> empty+                                                          _         -> empty+                                              unMonad | monadicWrappers _lhsIoptions = empty+                                                      | otherwise                    = unMon _lhsIoptions+                                          in unMonad >#< "("+                                             >-< indent 2+                                                   ("act >>= \\" >#< _addbang     (pp "sem") >#< "->"+                                                   >-< "lift" >#< pp_parens arg >#< ">>= \\" >#< _addbangWrap     (pp "arg") >#< "->"+                                                   >-< convert >#< pp_parens ("inv_" >|< nt_ >|< "_s" >|< initial_ >#< "sem" >#< ind >#< "arg" >#< extra) >#< ">>= \\" >#< pat >#< "->"+                                                   >-< "lift" >#< pp_parens (_synname     >#< ppSpaced _synlist    )+                                                   )+                                             >-< ")" )+                                      >-< if lateHigherOrderBinding _lhsIoptions+                                          then indent 2 ("where" >#< lhsname _lhsIoptions True idLateBindingAttr >#< "=" >#< lateBindingFieldNm _lhsImainName)+                                          else empty+                                      {-# LINE 1650 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule137 #-}+   {-# LINE 575 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule137 = \ _classPP _inhname ((_lhsIoptions) :: Options) _quantPP _synname _t_params _t_type _wrapname ->+                                      {-# LINE 575 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      (_wrapname     >#< "::" >#< _quantPP     >#< _classPP     >#< _t_type     >#< _t_params+                                            >#< _inhname     >#< _t_params     >#< "->" >#< ( if monadicWrappers _lhsIoptions then ppMonadType _lhsIoptions else empty) >#< pp_parens (_synname     >#< _t_params    ))+                                      {-# LINE 1657 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule138 #-}+   {-# LINE 584 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule138 = \ ((_prodsIsemFunBndDefs) :: Seq PP_Doc) _semFunBndDef ->+                        {-# LINE 584 "src-ag/ExecutionPlan2Clean.ag" #-}+                        _semFunBndDef     Seq.<| _prodsIsemFunBndDefs+                        {-# LINE 1663 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule139 #-}+   {-# LINE 585 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule139 = \ ((_prodsIsemFunBndTps) :: Seq PP_Doc) _semFunBndTp ->+                        {-# LINE 585 "src-ag/ExecutionPlan2Clean.ag" #-}+                        _semFunBndTp     Seq.<| _prodsIsemFunBndTps+                        {-# LINE 1669 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule140 #-}+   {-# LINE 586 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule140 = \ _semFunBndNm _semname ->+                        {-# LINE 586 "src-ag/ExecutionPlan2Clean.ag" #-}+                        _semFunBndNm     >#< "=" >#< _semname+                        {-# LINE 1675 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule141 #-}+   {-# LINE 587 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule141 = \ _semFunBndNm _sem_tp ->+                        {-# LINE 587 "src-ag/ExecutionPlan2Clean.ag" #-}+                        _semFunBndNm     >#< "::" >#< _sem_tp+                        {-# LINE 1681 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule142 #-}+   {-# LINE 588 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule142 = \ nt_ ->+                        {-# LINE 588 "src-ag/ExecutionPlan2Clean.ag" #-}+                        lateSemNtLabel nt_+                        {-# LINE 1687 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule143 #-}+   {-# LINE 622 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule143 = \ initial_ ->+                                     {-# LINE 622 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     initial_+                                     {-# LINE 1693 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule144 #-}+   {-# LINE 623 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule144 = \ _allstates ->+                                     {-# LINE 623 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     _allstates+                                     {-# LINE 1699 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule145 #-}+   {-# LINE 1469 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule145 = \ ((_lhsIwrappers) :: Set NontermIdent) _sem_nt _wr_inh_icl _wr_syn_icl _wrapper_icl nt_ ->+                                      {-# LINE 1469 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      (if nt_ `Set.member` _lhsIwrappers+                                       then     _wr_inh_icl+                                            >-< _wr_syn_icl+                                            >-< _wrapper_icl+                                       else empty)+                                      >-< _sem_nt+                                      {-# LINE 1710 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule146 #-}+   {-# LINE 1475 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule146 = \ _datatype _k_states ((_lhsIoptions) :: Options) ((_prodsIt_visits) :: PP_Doc) _t_init_icl _t_states_icl ->+                                      {-# LINE 1475 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      (if dataTypes _lhsIoptions then _datatype     else empty)+                                      >-< _t_init_icl+                                      >-< _t_states_icl+                                      >-< _k_states+                                      >-< _prodsIt_visits+                                      {-# LINE 1720 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule147 #-}+   {-# LINE 1566 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule147 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1566 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 1726 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule148 #-}+   {-# LINE 1574 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule148 = \  (_ :: ()) ->+                                                        {-# LINE 1574 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                        id+                                                        {-# LINE 1732 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule149 #-}+   {-# LINE 1586 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule149 = \ nextVisits_ ->+                       {-# LINE 1586 "src-ag/ExecutionPlan2Clean.ag" #-}+                       nextVisits_+                       {-# LINE 1738 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule150 #-}+   {-# LINE 1587 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule150 = \ prevVisits_ ->+                       {-# LINE 1587 "src-ag/ExecutionPlan2Clean.ag" #-}+                       prevVisits_+                       {-# LINE 1744 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule151 #-}+   {-# LINE 1631 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule151 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) nt_ ->+                           {-# LINE 1631 "src-ag/ExecutionPlan2Clean.ag" #-}+                           Map.findWithDefault Map.empty nt_ _lhsIlocalAttrTypes+                           {-# LINE 1750 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule152 #-}+   {-# LINE 1658 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule152 = \ initial_ nt_ ->+                     {-# LINE 1658 "src-ag/ExecutionPlan2Clean.ag" #-}+                     Map.singleton nt_ initial_+                     {-# LINE 1756 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule153 #-}+   {-# LINE 1672 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule153 = \ nt_ params_ ->+                 {-# LINE 1672 "src-ag/ExecutionPlan2Clean.ag" #-}+                 NT nt_ (map show params_) False+                 {-# LINE 1762 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule154 #-}+   rule154 = \ ((_prodsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _prodsIchildvisit+   {-# INLINE rule155 #-}+   rule155 = \ ((_prodsIerrors) :: Seq Error) ->+     _prodsIerrors+   {-# INLINE rule156 #-}+   rule156 = \ ((_prodsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _prodsIfromToStates+   {-# INLINE rule157 #-}+   rule157 = \ ((_prodsIgenProdIO) :: IO ()) ->+     _prodsIgenProdIO+   {-# INLINE rule158 #-}+   rule158 = \ ((_prodsIimports) :: [PP_Doc]) ->+     _prodsIimports+   {-# INLINE rule159 #-}+   rule159 = \ ((_prodsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _prodsIvisitKinds+   {-# INLINE rule160 #-}+   rule160 = \ ((_prodsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _prodsIvisitdefs+   {-# INLINE rule161 #-}+   rule161 = \ ((_prodsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _prodsIvisituses+   {-# INLINE rule162 #-}+   rule162 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule163 #-}+   rule163 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule164 #-}+   rule164 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule165 #-}+   rule165 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule166 #-}+   rule166 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule167 #-}+   rule167 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule168 #-}+   rule168 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule169 #-}+   rule169 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule170 #-}+   rule170 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule171 #-}+   rule171 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule172 #-}+   rule172 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule173 #-}+   rule173 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule174 #-}+   rule174 = \ _ntType ->+     _ntType+   {-# INLINE rule175 #-}+   rule175 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule176 #-}+   rule176 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks++-- ENonterminals -----------------------------------------------+-- wrapper+data Inh_ENonterminals  = Inh_ENonterminals { allFromToStates_Inh_ENonterminals :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminals :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminals :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminals :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), constructorTypeMap_Inh_ENonterminals :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ENonterminals :: (String -> String -> String -> Bool -> String), derivings_Inh_ENonterminals :: (Derivings), iclModuleHeader_Inh_ENonterminals :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ENonterminals :: (PP_Doc), inhmap_Inh_ENonterminals :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminals :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminals :: (String), mainName_Inh_ENonterminals :: (String), options_Inh_ENonterminals :: (Options), synmap_Inh_ENonterminals :: (Map NontermIdent Attributes), textBlocks_Inh_ENonterminals :: (PP_Doc), typeSyns_Inh_ENonterminals :: (TypeSyns), wrappers_Inh_ENonterminals :: (Set NontermIdent) }+data Syn_ENonterminals  = Syn_ENonterminals { appendCommon_Syn_ENonterminals :: ([PP_Doc]), appendMain_Syn_ENonterminals :: ([PP_Doc]), childvisit_Syn_ENonterminals :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_ENonterminals :: (Seq Error), fromToStates_Syn_ENonterminals :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_ENonterminals :: (IO ()), imports_Syn_ENonterminals :: ([PP_Doc]), initStates_Syn_ENonterminals :: (Map NontermIdent Int), output_Syn_ENonterminals :: (PP_Doc), output_dcl_Syn_ENonterminals :: (PP_Doc), semFunBndDefs_Syn_ENonterminals :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminals :: (Seq PP_Doc), visitKinds_Syn_ENonterminals :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_ENonterminals #-}+wrap_ENonterminals :: T_ENonterminals  -> Inh_ENonterminals  -> (Syn_ENonterminals )+wrap_ENonterminals (T_ENonterminals act) (Inh_ENonterminals _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg10 = T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers+        (T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminals_s11 sem arg10)+        return (Syn_ENonterminals _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# NOINLINE sem_ENonterminals #-}+sem_ENonterminals :: ENonterminals  -> T_ENonterminals +sem_ENonterminals list = Prelude.foldr sem_ENonterminals_Cons sem_ENonterminals_Nil (Prelude.map sem_ENonterminal list)++-- semantic domain+newtype T_ENonterminals  = T_ENonterminals {+                                           attach_T_ENonterminals :: Identity (T_ENonterminals_s11 )+                                           }+newtype T_ENonterminals_s11  = C_ENonterminals_s11 {+                                                   inv_ENonterminals_s11 :: (T_ENonterminals_v10 )+                                                   }+data T_ENonterminals_s12  = C_ENonterminals_s12+type T_ENonterminals_v10  = (T_ENonterminals_vIn10 ) -> (T_ENonterminals_vOut10 )+data T_ENonterminals_vIn10  = T_ENonterminals_vIn10 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (Derivings) (String -> String -> String -> Bool -> String) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (Options) (Map NontermIdent Attributes) (PP_Doc) (TypeSyns) (Set NontermIdent)+data T_ENonterminals_vOut10  = T_ENonterminals_vOut10 ([PP_Doc]) ([PP_Doc]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Map NontermIdent Int) (PP_Doc) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_ENonterminals_Cons #-}+sem_ENonterminals_Cons :: T_ENonterminal  -> T_ENonterminals  -> T_ENonterminals +sem_ENonterminals_Cons arg_hd_ arg_tl_ = T_ENonterminals (return st11) where+   {-# NOINLINE st11 #-}+   st11 = let+      v10 :: T_ENonterminals_v10 +      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let+         _hdX8 = Control.Monad.Identity.runIdentity (attach_T_ENonterminal (arg_hd_))+         _tlX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_tl_))+         (T_ENonterminal_vOut7 _hdIappendCommon _hdIappendMain _hdIchildvisit _hdIerrors _hdIfromToStates _hdIgenProdIO _hdIimports _hdIinitStates _hdIoutput _hdIoutput_dcl _hdIsemFunBndDefs _hdIsemFunBndTps _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_ENonterminal_s8 _hdX8 (T_ENonterminal_vIn7 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOconstructorTypeMap _hdOdclModuleHeader _hdOderivings _hdOiclModuleHeader _hdOimportBlocks _hdOinhmap _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOoptions _hdOsynmap _hdOtextBlocks _hdOtypeSyns _hdOwrappers)+         (T_ENonterminals_vOut10 _tlIappendCommon _tlIappendMain _tlIchildvisit _tlIerrors _tlIfromToStates _tlIgenProdIO _tlIimports _tlIinitStates _tlIoutput _tlIoutput_dcl _tlIsemFunBndDefs _tlIsemFunBndTps _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_ENonterminals_s11 _tlX11 (T_ENonterminals_vIn10 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOconstructorTypeMap _tlOdclModuleHeader _tlOderivings _tlOiclModuleHeader _tlOimportBlocks _tlOinhmap _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOoptions _tlOsynmap _tlOtextBlocks _tlOtypeSyns _tlOwrappers)+         _lhsOappendCommon :: [PP_Doc]+         _lhsOappendCommon = rule177 _hdIappendCommon _tlIappendCommon+         _lhsOappendMain :: [PP_Doc]+         _lhsOappendMain = rule178 _hdIappendMain _tlIappendMain+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule179 _hdIchildvisit _tlIchildvisit+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule180 _hdIerrors _tlIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule181 _hdIfromToStates _tlIfromToStates+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule182 _hdIgenProdIO _tlIgenProdIO+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule183 _hdIimports _tlIimports+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule184 _hdIinitStates _tlIinitStates+         _lhsOoutput :: PP_Doc+         _lhsOoutput = rule185 _hdIoutput _tlIoutput+         _lhsOoutput_dcl :: PP_Doc+         _lhsOoutput_dcl = rule186 _hdIoutput_dcl _tlIoutput_dcl+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule187 _hdIsemFunBndDefs _tlIsemFunBndDefs+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule188 _hdIsemFunBndTps _tlIsemFunBndTps+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule189 _hdIvisitKinds _tlIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule190 _hdIvisitdefs _tlIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule191 _hdIvisituses _tlIvisituses+         _hdOallFromToStates = rule192 _lhsIallFromToStates+         _hdOallInitStates = rule193 _lhsIallInitStates+         _hdOallVisitKinds = rule194 _lhsIallVisitKinds+         _hdOallchildvisit = rule195 _lhsIallchildvisit+         _hdOavisitdefs = rule196 _lhsIavisitdefs+         _hdOavisituses = rule197 _lhsIavisituses+         _hdOconstructorTypeMap = rule198 _lhsIconstructorTypeMap+         _hdOdclModuleHeader = rule199 _lhsIdclModuleHeader+         _hdOderivings = rule200 _lhsIderivings+         _hdOiclModuleHeader = rule201 _lhsIiclModuleHeader+         _hdOimportBlocks = rule202 _lhsIimportBlocks+         _hdOinhmap = rule203 _lhsIinhmap+         _hdOlocalAttrTypes = rule204 _lhsIlocalAttrTypes+         _hdOmainFile = rule205 _lhsImainFile+         _hdOmainName = rule206 _lhsImainName+         _hdOoptions = rule207 _lhsIoptions+         _hdOsynmap = rule208 _lhsIsynmap+         _hdOtextBlocks = rule209 _lhsItextBlocks+         _hdOtypeSyns = rule210 _lhsItypeSyns+         _hdOwrappers = rule211 _lhsIwrappers+         _tlOallFromToStates = rule212 _lhsIallFromToStates+         _tlOallInitStates = rule213 _lhsIallInitStates+         _tlOallVisitKinds = rule214 _lhsIallVisitKinds+         _tlOallchildvisit = rule215 _lhsIallchildvisit+         _tlOavisitdefs = rule216 _lhsIavisitdefs+         _tlOavisituses = rule217 _lhsIavisituses+         _tlOconstructorTypeMap = rule218 _lhsIconstructorTypeMap+         _tlOdclModuleHeader = rule219 _lhsIdclModuleHeader+         _tlOderivings = rule220 _lhsIderivings+         _tlOiclModuleHeader = rule221 _lhsIiclModuleHeader+         _tlOimportBlocks = rule222 _lhsIimportBlocks+         _tlOinhmap = rule223 _lhsIinhmap+         _tlOlocalAttrTypes = rule224 _lhsIlocalAttrTypes+         _tlOmainFile = rule225 _lhsImainFile+         _tlOmainName = rule226 _lhsImainName+         _tlOoptions = rule227 _lhsIoptions+         _tlOsynmap = rule228 _lhsIsynmap+         _tlOtextBlocks = rule229 _lhsItextBlocks+         _tlOtypeSyns = rule230 _lhsItypeSyns+         _tlOwrappers = rule231 _lhsIwrappers+         __result_ = T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminals_s11 v10+   {-# INLINE rule177 #-}+   rule177 = \ ((_hdIappendCommon) ::  PP_Doc ) ((_tlIappendCommon) :: [PP_Doc]) ->+     _hdIappendCommon : _tlIappendCommon+   {-# INLINE rule178 #-}+   rule178 = \ ((_hdIappendMain) ::  PP_Doc ) ((_tlIappendMain) :: [PP_Doc]) ->+     _hdIappendMain : _tlIappendMain+   {-# INLINE rule179 #-}+   rule179 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _hdIchildvisit `Map.union` _tlIchildvisit+   {-# INLINE rule180 #-}+   rule180 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule181 #-}+   rule181 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _hdIfromToStates `mappend` _tlIfromToStates+   {-# INLINE rule182 #-}+   rule182 = \ ((_hdIgenProdIO) :: IO ()) ((_tlIgenProdIO) :: IO ()) ->+     _hdIgenProdIO >> _tlIgenProdIO+   {-# INLINE rule183 #-}+   rule183 = \ ((_hdIimports) :: [PP_Doc]) ((_tlIimports) :: [PP_Doc]) ->+     _hdIimports ++ _tlIimports+   {-# INLINE rule184 #-}+   rule184 = \ ((_hdIinitStates) :: Map NontermIdent Int) ((_tlIinitStates) :: Map NontermIdent Int) ->+     _hdIinitStates `mappend` _tlIinitStates+   {-# INLINE rule185 #-}+   rule185 = \ ((_hdIoutput) :: PP_Doc) ((_tlIoutput) :: PP_Doc) ->+     _hdIoutput >-< _tlIoutput+   {-# INLINE rule186 #-}+   rule186 = \ ((_hdIoutput_dcl) :: PP_Doc) ((_tlIoutput_dcl) :: PP_Doc) ->+     _hdIoutput_dcl >-< _tlIoutput_dcl+   {-# INLINE rule187 #-}+   rule187 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->+     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs+   {-# INLINE rule188 #-}+   rule188 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->+     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps+   {-# INLINE rule189 #-}+   rule189 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule190 #-}+   rule190 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs+   {-# INLINE rule191 #-}+   rule191 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisituses `uwSetUnion` _tlIvisituses+   {-# INLINE rule192 #-}+   rule192 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule193 #-}+   rule193 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule194 #-}+   rule194 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule195 #-}+   rule195 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule196 #-}+   rule196 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule197 #-}+   rule197 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule198 #-}+   rule198 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule199 #-}+   rule199 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule200 #-}+   rule200 = \ ((_lhsIderivings) :: Derivings) ->+     _lhsIderivings+   {-# INLINE rule201 #-}+   rule201 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule202 #-}+   rule202 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule203 #-}+   rule203 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule204 #-}+   rule204 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule205 #-}+   rule205 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule206 #-}+   rule206 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule207 #-}+   rule207 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule208 #-}+   rule208 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap+   {-# INLINE rule209 #-}+   rule209 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule210 #-}+   rule210 = \ ((_lhsItypeSyns) :: TypeSyns) ->+     _lhsItypeSyns+   {-# INLINE rule211 #-}+   rule211 = \ ((_lhsIwrappers) :: Set NontermIdent) ->+     _lhsIwrappers+   {-# INLINE rule212 #-}+   rule212 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule213 #-}+   rule213 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule214 #-}+   rule214 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule215 #-}+   rule215 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule216 #-}+   rule216 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule217 #-}+   rule217 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule218 #-}+   rule218 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule219 #-}+   rule219 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule220 #-}+   rule220 = \ ((_lhsIderivings) :: Derivings) ->+     _lhsIderivings+   {-# INLINE rule221 #-}+   rule221 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule222 #-}+   rule222 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule223 #-}+   rule223 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule224 #-}+   rule224 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule225 #-}+   rule225 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule226 #-}+   rule226 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule227 #-}+   rule227 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule228 #-}+   rule228 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap+   {-# INLINE rule229 #-}+   rule229 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule230 #-}+   rule230 = \ ((_lhsItypeSyns) :: TypeSyns) ->+     _lhsItypeSyns+   {-# INLINE rule231 #-}+   rule231 = \ ((_lhsIwrappers) :: Set NontermIdent) ->+     _lhsIwrappers+{-# NOINLINE sem_ENonterminals_Nil #-}+sem_ENonterminals_Nil ::  T_ENonterminals +sem_ENonterminals_Nil  = T_ENonterminals (return st11) where+   {-# NOINLINE st11 #-}+   st11 = let+      v10 :: T_ENonterminals_v10 +      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIderivings _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let+         _lhsOappendCommon :: [PP_Doc]+         _lhsOappendCommon = rule232  ()+         _lhsOappendMain :: [PP_Doc]+         _lhsOappendMain = rule233  ()+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule234  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule235  ()+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule236  ()+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule237  ()+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule238  ()+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule239  ()+         _lhsOoutput :: PP_Doc+         _lhsOoutput = rule240  ()+         _lhsOoutput_dcl :: PP_Doc+         _lhsOoutput_dcl = rule241  ()+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule242  ()+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule243  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule244  ()+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule245  ()+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule246  ()+         __result_ = T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOoutput_dcl _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminals_s11 v10+   {-# INLINE rule232 #-}+   rule232 = \  (_ :: ()) ->+     []+   {-# INLINE rule233 #-}+   rule233 = \  (_ :: ()) ->+     []+   {-# INLINE rule234 #-}+   rule234 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule235 #-}+   rule235 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule236 #-}+   rule236 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule237 #-}+   rule237 = \  (_ :: ()) ->+     return ()+   {-# INLINE rule238 #-}+   rule238 = \  (_ :: ()) ->+     []+   {-# INLINE rule239 #-}+   rule239 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule240 #-}+   rule240 = \  (_ :: ()) ->+     empty+   {-# INLINE rule241 #-}+   rule241 = \  (_ :: ()) ->+     empty+   {-# INLINE rule242 #-}+   rule242 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule243 #-}+   rule243 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule244 #-}+   rule244 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule245 #-}+   rule245 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule246 #-}+   rule246 = \  (_ :: ()) ->+     Map.empty++-- EProduction -------------------------------------------------+-- wrapper+data Inh_EProduction  = Inh_EProduction { allFromToStates_Inh_EProduction :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProduction :: (Map NontermIdent Attributes), allInitStates_Inh_EProduction :: (Map NontermIdent Int), allSynmap_Inh_EProduction :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProduction :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProduction :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allstates_Inh_EProduction :: (Set StateIdentifier), avisitdefs_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), classCtxs_Inh_EProduction :: (ClassContext), constructorTypeMap_Inh_EProduction :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_EProduction :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_EProduction :: (String -> String -> String -> Bool -> String), importBlocks_Inh_EProduction :: (PP_Doc), inhmap_Inh_EProduction :: (Attributes), initial_Inh_EProduction :: (StateIdentifier), localAttrTypes_Inh_EProduction :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProduction :: (String), mainName_Inh_EProduction :: (String), nextVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), nt_Inh_EProduction :: (NontermIdent), ntType_Inh_EProduction :: (Type), options_Inh_EProduction :: (Options), params_Inh_EProduction :: ([Identifier]), prevVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), rename_Inh_EProduction :: (Bool), synmap_Inh_EProduction :: (Attributes), textBlocks_Inh_EProduction :: (PP_Doc) }+data Syn_EProduction  = Syn_EProduction { allvisits_Syn_EProduction :: ([VisitStateState]), childvisit_Syn_EProduction :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), count_Syn_EProduction :: (Int), datatype_Syn_EProduction :: (PP_Doc), errors_Syn_EProduction :: (Seq Error), fromToStates_Syn_EProduction :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_EProduction :: (IO ()), imports_Syn_EProduction :: ([PP_Doc]), recordtype_Syn_EProduction :: (PP_Doc), semFunBndDefs_Syn_EProduction :: (Seq PP_Doc), semFunBndTps_Syn_EProduction :: (Seq PP_Doc), sem_nt_Syn_EProduction :: (PP_Doc), sem_prod_Syn_EProduction :: (PP_Doc), sem_prod_tys_Syn_EProduction :: (PP_Doc), t_visits_Syn_EProduction :: (PP_Doc), visitKinds_Syn_EProduction :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_EProduction #-}+wrap_EProduction :: T_EProduction  -> Inh_EProduction  -> (Syn_EProduction )+wrap_EProduction (T_EProduction act) (Inh_EProduction _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg13 = T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks+        (T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProduction_s14 sem arg13)+        return (Syn_EProduction _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_EProduction #-}+sem_EProduction :: EProduction  -> T_EProduction +sem_EProduction ( EProduction con_ params_ constraints_ rules_ children_ visits_ ) = sem_EProduction_EProduction con_ params_ constraints_ ( sem_ERules rules_ ) ( sem_EChildren children_ ) ( sem_Visits visits_ )++-- semantic domain+newtype T_EProduction  = T_EProduction {+                                       attach_T_EProduction :: Identity (T_EProduction_s14 )+                                       }+newtype T_EProduction_s14  = C_EProduction_s14 {+                                               inv_EProduction_s14 :: (T_EProduction_v13 )+                                               }+data T_EProduction_s15  = C_EProduction_s15+type T_EProduction_v13  = (T_EProduction_vIn13 ) -> (T_EProduction_vOut13 )+data T_EProduction_vIn13  = T_EProduction_vIn13 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Set StateIdentifier) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (ClassContext) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Bool) (Attributes) (PP_Doc)+data T_EProduction_vOut13  = T_EProduction_vOut13 ([VisitStateState]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Int) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_EProduction_EProduction #-}+sem_EProduction_EProduction :: (ConstructorIdent) -> ([Identifier]) -> ([Type]) -> T_ERules  -> T_EChildren  -> T_Visits  -> T_EProduction +sem_EProduction_EProduction arg_con_ arg_params_ arg_constraints_ arg_rules_ arg_children_ arg_visits_ = T_EProduction (return st14) where+   {-# NOINLINE st14 #-}+   st14 = let+      v13 :: T_EProduction_v13 +      v13 = \ (T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let+         _rulesX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_rules_))+         _childrenX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_children_))+         _visitsX56 = Control.Monad.Identity.runIdentity (attach_T_Visits (arg_visits_))+         (T_ERules_vOut22 _rulesIerrors _rulesImrules _rulesIruledefs _rulesIruleuses _rulesIsem_rules _rulesIusedArgs) = inv_ERules_s23 _rulesX23 (T_ERules_vIn22 _rulesOallInhmap _rulesOallSynmap _rulesOchildTypes _rulesOcon _rulesOconstructorTypeMap _rulesOdclModuleHeader _rulesOiclModuleHeader _rulesOimportBlocks _rulesOinhmap _rulesOlazyIntras _rulesOlocalAttrTypes _rulesOmainFile _rulesOmainName _rulesOnt _rulesOoptions _rulesOruleKinds _rulesOsynmap _rulesOtextBlocks _rulesOusageInfo)+         (T_EChildren_vOut4 _childrenIargnamesw _childrenIargpats _childrenIargtps _childrenIchildTypes _childrenIchildintros _childrenIdatatype _childrenIrecfields _childrenIrecordtype _childrenIterminaldefs _childrenIusedArgs) = inv_EChildren_s5 _childrenX5 (T_EChildren_vIn4 _childrenOallInitStates _childrenOcon _childrenOconstructorTypeMap _childrenOdclModuleHeader _childrenOiclModuleHeader _childrenOimportBlocks _childrenOmainFile _childrenOmainName _childrenOnt _childrenOoptions _childrenOtextBlocks)+         (T_Visits_vOut55 _visitsIallvisits _visitsIchildvisit _visitsIerrors _visitsIfromToStates _visitsIintramap _visitsIlazyIntras _visitsIruleKinds _visitsIruleUsage _visitsIsem_visit _visitsIt_visits _visitsIusedArgs _visitsIvisitKinds _visitsIvisitdefs _visitsIvisituses) = inv_Visits_s56 _visitsX56 (T_Visits_vIn55 _visitsOallFromToStates _visitsOallInhmap _visitsOallInitStates _visitsOallSynmap _visitsOallVisitKinds _visitsOallchildvisit _visitsOallintramap _visitsOavisitdefs _visitsOavisituses _visitsOchildTypes _visitsOchildintros _visitsOcon _visitsOinhmap _visitsOmrules _visitsOnextVisits _visitsOnt _visitsOoptions _visitsOparams _visitsOprevVisits _visitsOruledefs _visitsOruleuses _visitsOsynmap _visitsOterminaldefs)+         _childrenOcon = rule247 arg_con_+         _rulesOcon = rule248 arg_con_+         _visitsOcon = rule249 arg_con_+         _lhsOdatatype :: PP_Doc+         _lhsOdatatype = rule250 _childrenIdatatype _classPP1 _lhsInt _lhsIoptions _lhsIrename _quantPP1 arg_con_+         _lhsOrecordtype :: PP_Doc+         _lhsOrecordtype = rule251 _childrenIrecordtype _classPP1 _quantPP1+         _classPP1 = rule252 arg_constraints_+         _quantPP1 = rule253 arg_params_+         _lhsOcount :: Int+         _lhsOcount = rule254  ()+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule255 _childrenIargnamesw _childrenIargpats _childrenIrecfields _lhsIconstructorTypeMap _lhsInt _lhsIrename arg_con_+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule256 _semFunBndDef+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule257 _semFunBndTp+         _semFunBndDef = rule258 _semFunBndNm _semname+         _semFunBndTp = rule259 _semFunBndNm _sem_tp+         _semFunBndNm = rule260 _lhsInt arg_con_+         _t_type = rule261 _lhsInt+         _t_params = rule262 _lhsIparams+         _usedArgs = rule263 _childrenIusedArgs _rulesIusedArgs _visitsIusedArgs+         _args = rule264 _childrenIargpats _usedArgs+         _semname = rule265 _lhsInt arg_con_+         _sem_tp = rule266 _childrenIargtps _classPP2 _quantPP2 _t_params _t_type+         _classPP2 = rule267 _lhsIclassCtxs arg_constraints_+         _quantPP2 = rule268 _lhsIparams arg_params_+         _lhsOsem_prod_tys :: PP_Doc+         _lhsOsem_prod_tys = rule269 _sem_tp _semname+         _sem_prod = rule270 _args _lhsIinitial _mbInitializer _mkSemBody _outerlet _sem_tp _semname _t_type+         _mkSemBody = rule271  ()+         _mbInitializer = rule272 _lhsIoptions+         _outerlet = rule273 _rulesIsem_rules _statefns+         _statefns = rule274 _genstfn _lhsIallstates+         _genstfn = rule275 _addbang _lhsIinitial _lhsInextVisits _lhsInt _lhsIprevVisits _stargs _stks _stvs+         _stargs = rule276 _addbang _childTypes _lazyIntras _lhsIallInhmap _lhsIallSynmap _lhsIoptions _localAttrTypes _visitsIintramap+         _stks = rule277 _lhsInt _stvisits _t_params+         _stvisits = rule278 _visitsIallvisits+         _stvs = rule279 _visitsIsem_visit+         _visitsOmrules = rule280 _rulesImrules+         _visitsOchildintros = rule281 _childrenIchildintros+         _rulesOusageInfo = rule282 _visitsIruleUsage+         _rulesOruleKinds = rule283 _visitsIruleKinds+         _visitsOallintramap = rule284 _visitsIintramap+         _visitsOterminaldefs = rule285 _childrenIterminaldefs+         _visitsOruledefs = rule286 _rulesIruledefs+         _visitsOruleuses = rule287 _rulesIruleuses+         _lazyIntras = rule288 _visitsIlazyIntras+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule289 _moduleName+         _moduleName = rule290 _lhsImainName _suffix+         _suffix = rule291 _lhsInt arg_con_+         _outputfile = rule292 _lhsImainFile _suffix+         _ppMonadImports = rule293  ()+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule294 _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainName _outputfile _ppMonadImports _sem_prod _semname _suffix+         _addbang = rule295 _lhsIoptions+         _childTypes = rule296 _childrenIchildTypes _lhsIntType+         _localAttrTypes = rule297 _lhsIlocalAttrTypes arg_con_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule298 _visitsIchildvisit+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule299 _rulesIerrors _visitsIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule300 _visitsIfromToStates+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule301 _visitsIt_visits+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule302 _visitsIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule303 _visitsIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule304 _visitsIvisituses+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule305 _visitsIallvisits+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule306 _sem_prod+         _rulesOallInhmap = rule307 _lhsIallInhmap+         _rulesOallSynmap = rule308 _lhsIallSynmap+         _rulesOchildTypes = rule309 _childTypes+         _rulesOconstructorTypeMap = rule310 _lhsIconstructorTypeMap+         _rulesOdclModuleHeader = rule311 _lhsIdclModuleHeader+         _rulesOiclModuleHeader = rule312 _lhsIiclModuleHeader+         _rulesOimportBlocks = rule313 _lhsIimportBlocks+         _rulesOinhmap = rule314 _lhsIinhmap+         _rulesOlazyIntras = rule315 _lazyIntras+         _rulesOlocalAttrTypes = rule316 _localAttrTypes+         _rulesOmainFile = rule317 _lhsImainFile+         _rulesOmainName = rule318 _lhsImainName+         _rulesOnt = rule319 _lhsInt+         _rulesOoptions = rule320 _lhsIoptions+         _rulesOsynmap = rule321 _lhsIsynmap+         _rulesOtextBlocks = rule322 _lhsItextBlocks+         _childrenOallInitStates = rule323 _lhsIallInitStates+         _childrenOconstructorTypeMap = rule324 _lhsIconstructorTypeMap+         _childrenOdclModuleHeader = rule325 _lhsIdclModuleHeader+         _childrenOiclModuleHeader = rule326 _lhsIiclModuleHeader+         _childrenOimportBlocks = rule327 _lhsIimportBlocks+         _childrenOmainFile = rule328 _lhsImainFile+         _childrenOmainName = rule329 _lhsImainName+         _childrenOnt = rule330 _lhsInt+         _childrenOoptions = rule331 _lhsIoptions+         _childrenOtextBlocks = rule332 _lhsItextBlocks+         _visitsOallFromToStates = rule333 _lhsIallFromToStates+         _visitsOallInhmap = rule334 _lhsIallInhmap+         _visitsOallInitStates = rule335 _lhsIallInitStates+         _visitsOallSynmap = rule336 _lhsIallSynmap+         _visitsOallVisitKinds = rule337 _lhsIallVisitKinds+         _visitsOallchildvisit = rule338 _lhsIallchildvisit+         _visitsOavisitdefs = rule339 _lhsIavisitdefs+         _visitsOavisituses = rule340 _lhsIavisituses+         _visitsOchildTypes = rule341 _childTypes+         _visitsOinhmap = rule342 _lhsIinhmap+         _visitsOnextVisits = rule343 _lhsInextVisits+         _visitsOnt = rule344 _lhsInt+         _visitsOoptions = rule345 _lhsIoptions+         _visitsOparams = rule346 _lhsIparams+         _visitsOprevVisits = rule347 _lhsIprevVisits+         _visitsOsynmap = rule348 _lhsIsynmap+         __result_ = T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProduction_s14 v13+   {-# INLINE rule247 #-}+   {-# LINE 72 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule247 = \ con_ ->+                                 {-# LINE 72 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 con_+                                 {-# LINE 2369 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule248 #-}+   {-# LINE 73 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule248 = \ con_ ->+                                 {-# LINE 73 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 con_+                                 {-# LINE 2375 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule249 #-}+   {-# LINE 74 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule249 = \ con_ ->+                                 {-# LINE 74 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 con_+                                 {-# LINE 2381 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule250 #-}+   {-# LINE 215 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule250 = \ ((_childrenIdatatype) :: [PP_Doc]) _classPP1 ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIrename) :: Bool) _quantPP1 con_ ->+                                 {-# LINE 215 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _quantPP1     >#< _classPP1+                                 >#< conname _lhsIrename _lhsInt con_+                                 >#< ppConFields (dataRecords _lhsIoptions) _childrenIdatatype+                                 {-# LINE 2389 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule251 #-}+   {-# LINE 218 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule251 = \ ((_childrenIrecordtype) :: [PP_Doc]) _classPP1 _quantPP1 ->+                                   {-# LINE 218 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   _quantPP1     >#< _classPP1+                                   >#< ppConFields True _childrenIrecordtype+                                   {-# LINE 2396 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule252 #-}+   {-# LINE 220 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule252 = \ constraints_ ->+                                 {-# LINE 220 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 ppClasses (classConstrsToDocs constraints_)+                                 {-# LINE 2402 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule253 #-}+   {-# LINE 221 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule253 = \ params_ ->+                                 {-# LINE 221 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 ppQuants params_+                                 {-# LINE 2408 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule254 #-}+   {-# LINE 320 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule254 = \  (_ :: ()) ->+                                              {-# LINE 320 "src-ag/ExecutionPlan2Clean.ag" #-}+                                              1+                                              {-# LINE 2414 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule255 #-}+   {-# LINE 325 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule255 = \ ((_childrenIargnamesw) :: [PP_Doc]) ((_childrenIargpats) ::  [PP_Doc] ) ((_childrenIrecfields) ::  [Identifier] ) ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ((_lhsInt) :: NontermIdent) ((_lhsIrename) :: Bool) con_ ->+                               {-# LINE 325 "src-ag/ExecutionPlan2Clean.ag" #-}+                               let lhs   = "sem_" >|< _lhsInt+                                   rhs   = "=" >#< "sem_" >|< _lhsInt >|< "_" >|< con_ >#< ppSpaced _childrenIargnamesw+                                   cnnm  = conname _lhsIrename _lhsInt con_+                               in  if isRecordConstructor _lhsInt _lhsIconstructorTypeMap+                                     then  lhs >#< "{" >#< cnnm >#< "|" >#<+                                           pp_block "" "" "," (zipWith (\l r -> l >#< "=" >#< r) _childrenIrecfields _childrenIargpats) >#< "}" >#< rhs+                                     else  lhs >#< "(" >#< cnnm >#< ppSpaced _childrenIargpats >#< ")" >#< rhs+                               {-# LINE 2426 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule256 #-}+   {-# LINE 591 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule256 = \ _semFunBndDef ->+                        {-# LINE 591 "src-ag/ExecutionPlan2Clean.ag" #-}+                        Seq.singleton _semFunBndDef+                        {-# LINE 2432 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule257 #-}+   {-# LINE 592 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule257 = \ _semFunBndTp ->+                        {-# LINE 592 "src-ag/ExecutionPlan2Clean.ag" #-}+                        Seq.singleton _semFunBndTp+                        {-# LINE 2438 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule258 #-}+   {-# LINE 593 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule258 = \ _semFunBndNm _semname ->+                        {-# LINE 593 "src-ag/ExecutionPlan2Clean.ag" #-}+                        _semFunBndNm     >#< "=" >#< _semname+                        {-# LINE 2444 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule259 #-}+   {-# LINE 594 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule259 = \ _semFunBndNm _sem_tp ->+                        {-# LINE 594 "src-ag/ExecutionPlan2Clean.ag" #-}+                        _semFunBndNm     >#< "::" >#< _sem_tp+                        {-# LINE 2450 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule260 #-}+   {-# LINE 595 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule260 = \ ((_lhsInt) :: NontermIdent) con_ ->+                        {-# LINE 595 "src-ag/ExecutionPlan2Clean.ag" #-}+                        lateSemConLabel _lhsInt con_+                        {-# LINE 2456 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule261 #-}+   {-# LINE 659 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule261 = \ ((_lhsInt) :: NontermIdent) ->+                                 {-# LINE 659 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 "T_" >|< _lhsInt+                                 {-# LINE 2462 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule262 #-}+   {-# LINE 660 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule262 = \ ((_lhsIparams) :: [Identifier]) ->+                                 {-# LINE 660 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 ppSpaced _lhsIparams+                                 {-# LINE 2468 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule263 #-}+   {-# LINE 661 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule263 = \ ((_childrenIusedArgs) :: Set String) ((_rulesIusedArgs) :: Set String) ((_visitsIusedArgs) :: Set String) ->+                                 {-# LINE 661 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _childrenIusedArgs `Set.union` _visitsIusedArgs `Set.union` _rulesIusedArgs+                                 {-# LINE 2474 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule264 #-}+   {-# LINE 664 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule264 = \ ((_childrenIargpats) ::  [PP_Doc] ) _usedArgs ->+                                 {-# LINE 664 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 map (\x -> let (name,arg) = case show x of+                                                         ""       -> ("", empty)+                                                         '!':name -> ("arg_" ++ name, "!arg_" >|< name)+                                                         name     -> ("arg_" ++ name, "arg_"  >|< name)+                                            in  if null name || name `Set.member` _usedArgs+                                                              then arg+                                                              else text "_") _childrenIargpats+                                 {-# LINE 2486 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule265 #-}+   {-# LINE 671 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule265 = \ ((_lhsInt) :: NontermIdent) con_ ->+                                 {-# LINE 671 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 "sem_" ++ show _lhsInt ++ "_" ++ show con_+                                 {-# LINE 2492 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule266 #-}+   {-# LINE 672 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule266 = \ ((_childrenIargtps) ::  [PP_Doc] ) _classPP2 _quantPP2 _t_params _t_type ->+                                 {-# LINE 672 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _quantPP2     >#< _classPP2     >#< ppSpaced _childrenIargtps+                                 >#< (if length _childrenIargtps > 0 then "->" else "")+                                 >#< _t_type     >#< _t_params+                                 {-# LINE 2500 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule267 #-}+   {-# LINE 675 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule267 = \ ((_lhsIclassCtxs) :: ClassContext) constraints_ ->+                                 {-# LINE 675 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 ppClasses (classCtxsToDocs _lhsIclassCtxs ++ classConstrsToDocs constraints_)+                                 {-# LINE 2506 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule268 #-}+   {-# LINE 676 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule268 = \ ((_lhsIparams) :: [Identifier]) params_ ->+                                 {-# LINE 676 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 ppQuants (_lhsIparams ++ params_)+                                 {-# LINE 2512 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule269 #-}+   {-# LINE 678 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule269 = \ _sem_tp _semname ->+                                     {-# LINE 678 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     _semname     >#< " ::" >#< _sem_tp+                                     {-# LINE 2518 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule270 #-}+   {-# LINE 680 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule270 = \ _args ((_lhsIinitial) :: StateIdentifier) _mbInitializer _mkSemBody _outerlet _sem_tp _semname _t_type ->+                                 {-# LINE 680 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _semname     >#< " ::" >#< _sem_tp+                                 >-< _mkSemBody     (_semname     >#< ppSpaced _args     >#< "=" >#< _t_type    )+                                                    _mbInitializer     _outerlet     ("lift" >#< "st" >|< _lhsIinitial)+                                 {-# LINE 2526 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule271 #-}+   {-# LINE 683 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule271 = \  (_ :: ()) ->+                                  {-# LINE 683 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  \prefix mbInit outerlet ret ->+                                    case mbInit of+                                      Nothing -> prefix >#< pp_parens ret >#< "where"+                                                 >-< indent 3 outerlet+                                      Just m  -> prefix >#< "(" >#< "do"+                                                 >-< indent 1 (+                                                       m+                                                       >-< "let"+                                                       >-< indent 2 outerlet+                                                       >-< ret )+                                                 >-< indent 1 ")"+                                  {-# LINE 2542 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule272 #-}+   {-# LINE 695 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule272 = \ ((_lhsIoptions) :: Options) ->+                                        {-# LINE 695 "src-ag/ExecutionPlan2Clean.ag" #-}+                                        if parallelInvoke _lhsIoptions+                                        then (Nothing :: Maybe PP_Doc)+                                        else Nothing+                                        {-# LINE 2550 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule273 #-}+   {-# LINE 701 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule273 = \ ((_rulesIsem_rules) :: PP_Doc) _statefns ->+                                 {-# LINE 701 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 vlist _statefns     >-< _rulesIsem_rules+                                 {-# LINE 2556 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule274 #-}+   {-# LINE 702 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule274 = \ _genstfn ((_lhsIallstates) :: Set StateIdentifier) ->+                                 {-# LINE 702 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 map _genstfn     $ Set.toList _lhsIallstates+                                 {-# LINE 2562 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule275 #-}+   {-# LINE 703 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule275 = \ _addbang ((_lhsIinitial) :: StateIdentifier) ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ((_lhsInt) :: NontermIdent) ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) _stargs _stks _stvs ->+                                 {-# LINE 703 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 \st -> let nextVisitInfo = Map.findWithDefault ManyVis st _lhsInextVisits+                                            prevVisitInfo = Map.findWithDefault ManyVis st _lhsIprevVisits+                                            stNm = "st" >|< st+                                            lhs  = bang stNm >#< "=" >#<+                                                   (+                                                     if st == _lhsIinitial+                                                     then empty+                                                     else "\\" >#< _stargs     st >#< "->"+                                                   )+                                            cCon = "C_" >|< _lhsInt >|< "_s" >|< st+                                            bang | st == _lhsIinitial = _addbang+                                                 | otherwise          = id+                                        in case nextVisitInfo of+                                             NoneVis    ->+                                                           if st == _lhsIinitial+                                                           then lhs >#< cCon+                                                           else empty+                                             OneVis vId -> mklet lhs (_stvs     st False) (cCon >#< "v" >|< vId)+                                             ManyVis    -> mklet lhs (_stks     st >-< _stvs     st True) (cCon >#< "k" >|< st)+                                 {-# LINE 2586 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule276 #-}+   {-# LINE 731 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule276 = \ _addbang _childTypes _lazyIntras ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIoptions) :: Options) _localAttrTypes ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->+                                 {-# LINE 731 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 \st -> let attrs = maybe Map.empty id $ Map.lookup st _visitsIintramap+                                        in ppSpaced [ let match | str `Set.member` _lazyIntras     = pp str+                                                                | otherwise                        = _addbang     (pp str)+                                                      in case mbAttr of+                                                           Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->+                                                             case Map.lookup nm _localAttrTypes     of+                                                               Just tp -> pp_parens (pp_parens match >#< "::" >#< ppTp tp)+                                                               Nothing -> match+                                                           Just attr | not (noPerStateTypeSigs _lhsIoptions) ->+                                                             case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _childTypes     of+                                                               Just tpDoc -> pp_parens (pp_parens match >#< "::" >#< tpDoc)+                                                               Nothing    -> match+                                                           _ -> match+                                                   | (str,mbAttr) <- Map.assocs attrs+                                                   ] >#< dummyPat _lhsIoptions (Map.null attrs)+                                 {-# LINE 2606 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule277 #-}+   {-# LINE 747 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule277 = \ ((_lhsInt) :: NontermIdent) _stvisits _t_params ->+                                 {-# LINE 747 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 \st -> if null (_stvisits     st)+                                        then empty+                                        else "k" >|< st >#< "::" >#< "K_" >|< _lhsInt >|< "_s" >|< st >#< _t_params     >#< "t" >#< "->" >#< "t"+                                             >-< vlist (map (\(v,f,t) -> "k" >|< st >#< "K_" >|< _lhsInt >|< "_v" >|< v >#< "="+                                                                    >#< "v" >|< v) $ _stvisits     st)+                                 {-# LINE 2616 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule278 #-}+   {-# LINE 752 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule278 = \ ((_visitsIallvisits) :: [VisitStateState]) ->+                                 {-# LINE 752 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 \st -> filter (\(v,f,t) -> f == st) _visitsIallvisits+                                 {-# LINE 2622 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule279 #-}+   {-# LINE 753 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule279 = \ ((_visitsIsem_visit) ::  [(StateIdentifier,Bool -> PP_Doc)] ) ->+                                 {-# LINE 753 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 \st inlinePragma -> vlist [ppf inlinePragma | (f,ppf) <- _visitsIsem_visit, f == st]+                                 {-# LINE 2628 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule280 #-}+   {-# LINE 754 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule280 = \ ((_rulesImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+                                  {-# LINE 754 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  _rulesImrules+                                  {-# LINE 2634 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule281 #-}+   {-# LINE 942 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule281 = \ ((_childrenIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+                                       {-# LINE 942 "src-ag/ExecutionPlan2Clean.ag" #-}+                                       _childrenIchildintros+                                       {-# LINE 2640 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule282 #-}+   {-# LINE 1277 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule282 = \ ((_visitsIruleUsage) :: Map Identifier Int) ->+                                                   {-# LINE 1277 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                   _visitsIruleUsage+                                                   {-# LINE 2646 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule283 #-}+   {-# LINE 1292 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule283 = \ ((_visitsIruleKinds) :: Map Identifier (Set VisitKind)) ->+                      {-# LINE 1292 "src-ag/ExecutionPlan2Clean.ag" #-}+                      _visitsIruleKinds+                      {-# LINE 2652 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule284 #-}+   {-# LINE 1321 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule284 = \ ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->+                          {-# LINE 1321 "src-ag/ExecutionPlan2Clean.ag" #-}+                          _visitsIintramap+                          {-# LINE 2658 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule285 #-}+   {-# LINE 1322 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule285 = \ ((_childrenIterminaldefs) :: Set String) ->+                          {-# LINE 1322 "src-ag/ExecutionPlan2Clean.ag" #-}+                          _childrenIterminaldefs+                          {-# LINE 2664 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule286 #-}+   {-# LINE 1346 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule286 = \ ((_rulesIruledefs) :: Map Identifier (Set String)) ->+                                    {-# LINE 1346 "src-ag/ExecutionPlan2Clean.ag" #-}+                                    _rulesIruledefs+                                    {-# LINE 2670 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule287 #-}+   {-# LINE 1347 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule287 = \ ((_rulesIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+                                    {-# LINE 1347 "src-ag/ExecutionPlan2Clean.ag" #-}+                                    _rulesIruleuses+                                    {-# LINE 2676 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule288 #-}+   {-# LINE 1401 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule288 = \ ((_visitsIlazyIntras) :: Set String) ->+                     {-# LINE 1401 "src-ag/ExecutionPlan2Clean.ag" #-}+                     _visitsIlazyIntras+                     {-# LINE 2682 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule289 #-}+   {-# LINE 1486 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule289 = \ _moduleName ->+                                   {-# LINE 1486 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   [pp $ "import " ++ _moduleName    ]+                                   {-# LINE 2688 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule290 #-}+   {-# LINE 1487 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule290 = \ ((_lhsImainName) :: String) _suffix ->+                                   {-# LINE 1487 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   _lhsImainName ++ _suffix+                                   {-# LINE 2694 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule291 #-}+   {-# LINE 1488 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule291 = \ ((_lhsInt) :: NontermIdent) con_ ->+                                   {-# LINE 1488 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   '_' : show _lhsInt ++ ('_' : show con_)+                                   {-# LINE 2700 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule292 #-}+   {-# LINE 1489 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule292 = \ ((_lhsImainFile) :: String) _suffix ->+                                   {-# LINE 1489 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ _suffix    )+                                   {-# LINE 2706 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule293 #-}+   {-# LINE 1490 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule293 = \  (_ :: ()) ->+                                        {-# LINE 1490 "src-ag/ExecutionPlan2Clean.ag" #-}+                                        pp "import qualified Control.Monad.Identity"+                                        {-# LINE 2712 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule294 #-}+   {-# LINE 1491 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule294 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) _outputfile _ppMonadImports _sem_prod _semname _suffix ->+                                   {-# LINE 1491 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   writeModule _outputfile+                                       [ pp $ _lhsIiclModuleHeader _lhsImainName _suffix     _semname     True+                                       , _lhsIimportBlocks+                                       , _ppMonadImports+                                       , pp $ "import " ++ _lhsImainName ++ "_common"+                                       , _sem_prod+                                       ]+                                   {-# LINE 2724 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule295 #-}+   {-# LINE 1567 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule295 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1567 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 2730 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule296 #-}+   {-# LINE 1617 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule296 = \ ((_childrenIchildTypes) :: Map Identifier Type) ((_lhsIntType) :: Type) ->+                     {-# LINE 1617 "src-ag/ExecutionPlan2Clean.ag" #-}+                     Map.singleton _LHS _lhsIntType `Map.union` _childrenIchildTypes+                     {-# LINE 2736 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule297 #-}+   {-# LINE 1634 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule297 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) con_ ->+                           {-# LINE 1634 "src-ag/ExecutionPlan2Clean.ag" #-}+                           Map.findWithDefault Map.empty con_ _lhsIlocalAttrTypes+                           {-# LINE 2742 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule298 #-}+   rule298 = \ ((_visitsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _visitsIchildvisit+   {-# INLINE rule299 #-}+   rule299 = \ ((_rulesIerrors) :: Seq Error) ((_visitsIerrors) :: Seq Error) ->+     _rulesIerrors Seq.>< _visitsIerrors+   {-# INLINE rule300 #-}+   rule300 = \ ((_visitsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _visitsIfromToStates+   {-# INLINE rule301 #-}+   rule301 = \ ((_visitsIt_visits) :: PP_Doc) ->+     _visitsIt_visits+   {-# INLINE rule302 #-}+   rule302 = \ ((_visitsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _visitsIvisitKinds+   {-# INLINE rule303 #-}+   rule303 = \ ((_visitsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _visitsIvisitdefs+   {-# INLINE rule304 #-}+   rule304 = \ ((_visitsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _visitsIvisituses+   {-# INLINE rule305 #-}+   rule305 = \ ((_visitsIallvisits) :: [VisitStateState]) ->+     _visitsIallvisits+   {-# INLINE rule306 #-}+   rule306 = \ _sem_prod ->+     _sem_prod+   {-# INLINE rule307 #-}+   rule307 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule308 #-}+   rule308 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule309 #-}+   rule309 = \ _childTypes ->+     _childTypes+   {-# INLINE rule310 #-}+   rule310 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule311 #-}+   rule311 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule312 #-}+   rule312 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule313 #-}+   rule313 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule314 #-}+   rule314 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule315 #-}+   rule315 = \ _lazyIntras ->+     _lazyIntras+   {-# INLINE rule316 #-}+   rule316 = \ _localAttrTypes ->+     _localAttrTypes+   {-# INLINE rule317 #-}+   rule317 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule318 #-}+   rule318 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule319 #-}+   rule319 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule320 #-}+   rule320 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule321 #-}+   rule321 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule322 #-}+   rule322 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule323 #-}+   rule323 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule324 #-}+   rule324 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule325 #-}+   rule325 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule326 #-}+   rule326 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule327 #-}+   rule327 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule328 #-}+   rule328 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule329 #-}+   rule329 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule330 #-}+   rule330 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule331 #-}+   rule331 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule332 #-}+   rule332 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule333 #-}+   rule333 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule334 #-}+   rule334 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule335 #-}+   rule335 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule336 #-}+   rule336 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule337 #-}+   rule337 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule338 #-}+   rule338 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule339 #-}+   rule339 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule340 #-}+   rule340 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule341 #-}+   rule341 = \ _childTypes ->+     _childTypes+   {-# INLINE rule342 #-}+   rule342 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule343 #-}+   rule343 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule344 #-}+   rule344 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule345 #-}+   rule345 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule346 #-}+   rule346 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule347 #-}+   rule347 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule348 #-}+   rule348 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap++-- EProductions ------------------------------------------------+-- wrapper+data Inh_EProductions  = Inh_EProductions { allFromToStates_Inh_EProductions :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProductions :: (Map NontermIdent Attributes), allInitStates_Inh_EProductions :: (Map NontermIdent Int), allSynmap_Inh_EProductions :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProductions :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProductions :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allstates_Inh_EProductions :: (Set StateIdentifier), avisitdefs_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), classCtxs_Inh_EProductions :: (ClassContext), constructorTypeMap_Inh_EProductions :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_EProductions :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_EProductions :: (String -> String -> String -> Bool -> String), importBlocks_Inh_EProductions :: (PP_Doc), inhmap_Inh_EProductions :: (Attributes), initial_Inh_EProductions :: (StateIdentifier), localAttrTypes_Inh_EProductions :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProductions :: (String), mainName_Inh_EProductions :: (String), nextVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), nt_Inh_EProductions :: (NontermIdent), ntType_Inh_EProductions :: (Type), options_Inh_EProductions :: (Options), params_Inh_EProductions :: ([Identifier]), prevVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), rename_Inh_EProductions :: (Bool), synmap_Inh_EProductions :: (Attributes), textBlocks_Inh_EProductions :: (PP_Doc) }+data Syn_EProductions  = Syn_EProductions { allvisits_Syn_EProductions :: ([VisitStateState]), childvisit_Syn_EProductions :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), count_Syn_EProductions :: (Int), datatype_Syn_EProductions :: ([PP_Doc]), errors_Syn_EProductions :: (Seq Error), fromToStates_Syn_EProductions :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_EProductions :: (IO ()), imports_Syn_EProductions :: ([PP_Doc]), recordtype_Syn_EProductions :: (PP_Doc), semFunBndDefs_Syn_EProductions :: (Seq PP_Doc), semFunBndTps_Syn_EProductions :: (Seq PP_Doc), sem_nt_Syn_EProductions :: (PP_Doc), sem_prod_Syn_EProductions :: (PP_Doc), sem_prod_tys_Syn_EProductions :: (PP_Doc), t_visits_Syn_EProductions :: (PP_Doc), visitKinds_Syn_EProductions :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_EProductions #-}+wrap_EProductions :: T_EProductions  -> Inh_EProductions  -> (Syn_EProductions )+wrap_EProductions (T_EProductions act) (Inh_EProductions _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg16 = T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks+        (T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProductions_s17 sem arg16)+        return (Syn_EProductions _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# NOINLINE sem_EProductions #-}+sem_EProductions :: EProductions  -> T_EProductions +sem_EProductions list = Prelude.foldr sem_EProductions_Cons sem_EProductions_Nil (Prelude.map sem_EProduction list)++-- semantic domain+newtype T_EProductions  = T_EProductions {+                                         attach_T_EProductions :: Identity (T_EProductions_s17 )+                                         }+newtype T_EProductions_s17  = C_EProductions_s17 {+                                                 inv_EProductions_s17 :: (T_EProductions_v16 )+                                                 }+data T_EProductions_s18  = C_EProductions_s18+type T_EProductions_v16  = (T_EProductions_vIn16 ) -> (T_EProductions_vOut16 )+data T_EProductions_vIn16  = T_EProductions_vIn16 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Set StateIdentifier) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (ClassContext) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Bool) (Attributes) (PP_Doc)+data T_EProductions_vOut16  = T_EProductions_vOut16 ([VisitStateState]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Int) ([PP_Doc]) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_EProductions_Cons #-}+sem_EProductions_Cons :: T_EProduction  -> T_EProductions  -> T_EProductions +sem_EProductions_Cons arg_hd_ arg_tl_ = T_EProductions (return st17) where+   {-# NOINLINE st17 #-}+   st17 = let+      v16 :: T_EProductions_v16 +      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let+         _hdX14 = Control.Monad.Identity.runIdentity (attach_T_EProduction (arg_hd_))+         _tlX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_tl_))+         (T_EProduction_vOut13 _hdIallvisits _hdIchildvisit _hdIcount _hdIdatatype _hdIerrors _hdIfromToStates _hdIgenProdIO _hdIimports _hdIrecordtype _hdIsemFunBndDefs _hdIsemFunBndTps _hdIsem_nt _hdIsem_prod _hdIsem_prod_tys _hdIt_visits _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_EProduction_s14 _hdX14 (T_EProduction_vIn13 _hdOallFromToStates _hdOallInhmap _hdOallInitStates _hdOallSynmap _hdOallVisitKinds _hdOallchildvisit _hdOallstates _hdOavisitdefs _hdOavisituses _hdOclassCtxs _hdOconstructorTypeMap _hdOdclModuleHeader _hdOiclModuleHeader _hdOimportBlocks _hdOinhmap _hdOinitial _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOnextVisits _hdOnt _hdOntType _hdOoptions _hdOparams _hdOprevVisits _hdOrename _hdOsynmap _hdOtextBlocks)+         (T_EProductions_vOut16 _tlIallvisits _tlIchildvisit _tlIcount _tlIdatatype _tlIerrors _tlIfromToStates _tlIgenProdIO _tlIimports _tlIrecordtype _tlIsemFunBndDefs _tlIsemFunBndTps _tlIsem_nt _tlIsem_prod _tlIsem_prod_tys _tlIt_visits _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_EProductions_s17 _tlX17 (T_EProductions_vIn16 _tlOallFromToStates _tlOallInhmap _tlOallInitStates _tlOallSynmap _tlOallVisitKinds _tlOallchildvisit _tlOallstates _tlOavisitdefs _tlOavisituses _tlOclassCtxs _tlOconstructorTypeMap _tlOdclModuleHeader _tlOiclModuleHeader _tlOimportBlocks _tlOinhmap _tlOinitial _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOnextVisits _tlOnt _tlOntType _tlOoptions _tlOparams _tlOprevVisits _tlOrename _tlOsynmap _tlOtextBlocks)+         _lhsOrecordtype :: PP_Doc+         _lhsOrecordtype = rule349 _hdIrecordtype+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule350 _hdIallvisits+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule351 _hdIt_visits+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule352 _hdIchildvisit _tlIchildvisit+         _lhsOcount :: Int+         _lhsOcount = rule353 _hdIcount _tlIcount+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule354 _hdIdatatype _tlIdatatype+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule355 _hdIerrors _tlIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule356 _hdIfromToStates _tlIfromToStates+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule357 _hdIgenProdIO _tlIgenProdIO+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule358 _hdIimports _tlIimports+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule359 _hdIsemFunBndDefs _tlIsemFunBndDefs+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule360 _hdIsemFunBndTps _tlIsemFunBndTps+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule361 _hdIsem_nt _tlIsem_nt+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule362 _hdIsem_prod _tlIsem_prod+         _lhsOsem_prod_tys :: PP_Doc+         _lhsOsem_prod_tys = rule363 _hdIsem_prod_tys _tlIsem_prod_tys+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule364 _hdIvisitKinds _tlIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule365 _hdIvisitdefs _tlIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule366 _hdIvisituses _tlIvisituses+         _hdOallFromToStates = rule367 _lhsIallFromToStates+         _hdOallInhmap = rule368 _lhsIallInhmap+         _hdOallInitStates = rule369 _lhsIallInitStates+         _hdOallSynmap = rule370 _lhsIallSynmap+         _hdOallVisitKinds = rule371 _lhsIallVisitKinds+         _hdOallchildvisit = rule372 _lhsIallchildvisit+         _hdOallstates = rule373 _lhsIallstates+         _hdOavisitdefs = rule374 _lhsIavisitdefs+         _hdOavisituses = rule375 _lhsIavisituses+         _hdOclassCtxs = rule376 _lhsIclassCtxs+         _hdOconstructorTypeMap = rule377 _lhsIconstructorTypeMap+         _hdOdclModuleHeader = rule378 _lhsIdclModuleHeader+         _hdOiclModuleHeader = rule379 _lhsIiclModuleHeader+         _hdOimportBlocks = rule380 _lhsIimportBlocks+         _hdOinhmap = rule381 _lhsIinhmap+         _hdOinitial = rule382 _lhsIinitial+         _hdOlocalAttrTypes = rule383 _lhsIlocalAttrTypes+         _hdOmainFile = rule384 _lhsImainFile+         _hdOmainName = rule385 _lhsImainName+         _hdOnextVisits = rule386 _lhsInextVisits+         _hdOnt = rule387 _lhsInt+         _hdOntType = rule388 _lhsIntType+         _hdOoptions = rule389 _lhsIoptions+         _hdOparams = rule390 _lhsIparams+         _hdOprevVisits = rule391 _lhsIprevVisits+         _hdOrename = rule392 _lhsIrename+         _hdOsynmap = rule393 _lhsIsynmap+         _hdOtextBlocks = rule394 _lhsItextBlocks+         _tlOallFromToStates = rule395 _lhsIallFromToStates+         _tlOallInhmap = rule396 _lhsIallInhmap+         _tlOallInitStates = rule397 _lhsIallInitStates+         _tlOallSynmap = rule398 _lhsIallSynmap+         _tlOallVisitKinds = rule399 _lhsIallVisitKinds+         _tlOallchildvisit = rule400 _lhsIallchildvisit+         _tlOallstates = rule401 _lhsIallstates+         _tlOavisitdefs = rule402 _lhsIavisitdefs+         _tlOavisituses = rule403 _lhsIavisituses+         _tlOclassCtxs = rule404 _lhsIclassCtxs+         _tlOconstructorTypeMap = rule405 _lhsIconstructorTypeMap+         _tlOdclModuleHeader = rule406 _lhsIdclModuleHeader+         _tlOiclModuleHeader = rule407 _lhsIiclModuleHeader+         _tlOimportBlocks = rule408 _lhsIimportBlocks+         _tlOinhmap = rule409 _lhsIinhmap+         _tlOinitial = rule410 _lhsIinitial+         _tlOlocalAttrTypes = rule411 _lhsIlocalAttrTypes+         _tlOmainFile = rule412 _lhsImainFile+         _tlOmainName = rule413 _lhsImainName+         _tlOnextVisits = rule414 _lhsInextVisits+         _tlOnt = rule415 _lhsInt+         _tlOntType = rule416 _lhsIntType+         _tlOoptions = rule417 _lhsIoptions+         _tlOparams = rule418 _lhsIparams+         _tlOprevVisits = rule419 _lhsIprevVisits+         _tlOrename = rule420 _lhsIrename+         _tlOsynmap = rule421 _lhsIsynmap+         _tlOtextBlocks = rule422 _lhsItextBlocks+         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProductions_s17 v16+   {-# INLINE rule349 #-}+   {-# LINE 224 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule349 = \ ((_hdIrecordtype) :: PP_Doc) ->+                             {-# LINE 224 "src-ag/ExecutionPlan2Clean.ag" #-}+                             _hdIrecordtype+                             {-# LINE 3038 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule350 #-}+   {-# LINE 385 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule350 = \ ((_hdIallvisits) :: [VisitStateState]) ->+                           {-# LINE 385 "src-ag/ExecutionPlan2Clean.ag" #-}+                           _hdIallvisits+                           {-# LINE 3044 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule351 #-}+   {-# LINE 450 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule351 = \ ((_hdIt_visits) :: PP_Doc) ->+                          {-# LINE 450 "src-ag/ExecutionPlan2Clean.ag" #-}+                          _hdIt_visits+                          {-# LINE 3050 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule352 #-}+   rule352 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _hdIchildvisit `Map.union` _tlIchildvisit+   {-# INLINE rule353 #-}+   rule353 = \ ((_hdIcount) :: Int) ((_tlIcount) :: Int) ->+     _hdIcount + _tlIcount+   {-# INLINE rule354 #-}+   rule354 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->+     _hdIdatatype : _tlIdatatype+   {-# INLINE rule355 #-}+   rule355 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule356 #-}+   rule356 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _hdIfromToStates `mappend` _tlIfromToStates+   {-# INLINE rule357 #-}+   rule357 = \ ((_hdIgenProdIO) :: IO ()) ((_tlIgenProdIO) :: IO ()) ->+     _hdIgenProdIO >> _tlIgenProdIO+   {-# INLINE rule358 #-}+   rule358 = \ ((_hdIimports) :: [PP_Doc]) ((_tlIimports) :: [PP_Doc]) ->+     _hdIimports ++ _tlIimports+   {-# INLINE rule359 #-}+   rule359 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->+     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs+   {-# INLINE rule360 #-}+   rule360 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->+     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps+   {-# INLINE rule361 #-}+   rule361 = \ ((_hdIsem_nt) :: PP_Doc) ((_tlIsem_nt) :: PP_Doc) ->+     _hdIsem_nt >-< _tlIsem_nt+   {-# INLINE rule362 #-}+   rule362 = \ ((_hdIsem_prod) :: PP_Doc) ((_tlIsem_prod) :: PP_Doc) ->+     _hdIsem_prod >-< _tlIsem_prod+   {-# INLINE rule363 #-}+   rule363 = \ ((_hdIsem_prod_tys) :: PP_Doc) ((_tlIsem_prod_tys) :: PP_Doc) ->+     _hdIsem_prod_tys >-< _tlIsem_prod_tys+   {-# INLINE rule364 #-}+   rule364 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule365 #-}+   rule365 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs+   {-# INLINE rule366 #-}+   rule366 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisituses `uwSetUnion` _tlIvisituses+   {-# INLINE rule367 #-}+   rule367 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule368 #-}+   rule368 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule369 #-}+   rule369 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule370 #-}+   rule370 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule371 #-}+   rule371 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule372 #-}+   rule372 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule373 #-}+   rule373 = \ ((_lhsIallstates) :: Set StateIdentifier) ->+     _lhsIallstates+   {-# INLINE rule374 #-}+   rule374 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule375 #-}+   rule375 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule376 #-}+   rule376 = \ ((_lhsIclassCtxs) :: ClassContext) ->+     _lhsIclassCtxs+   {-# INLINE rule377 #-}+   rule377 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule378 #-}+   rule378 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule379 #-}+   rule379 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule380 #-}+   rule380 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule381 #-}+   rule381 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule382 #-}+   rule382 = \ ((_lhsIinitial) :: StateIdentifier) ->+     _lhsIinitial+   {-# INLINE rule383 #-}+   rule383 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule384 #-}+   rule384 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule385 #-}+   rule385 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule386 #-}+   rule386 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule387 #-}+   rule387 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule388 #-}+   rule388 = \ ((_lhsIntType) :: Type) ->+     _lhsIntType+   {-# INLINE rule389 #-}+   rule389 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule390 #-}+   rule390 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule391 #-}+   rule391 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule392 #-}+   rule392 = \ ((_lhsIrename) :: Bool) ->+     _lhsIrename+   {-# INLINE rule393 #-}+   rule393 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule394 #-}+   rule394 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule395 #-}+   rule395 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule396 #-}+   rule396 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule397 #-}+   rule397 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule398 #-}+   rule398 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule399 #-}+   rule399 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule400 #-}+   rule400 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule401 #-}+   rule401 = \ ((_lhsIallstates) :: Set StateIdentifier) ->+     _lhsIallstates+   {-# INLINE rule402 #-}+   rule402 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule403 #-}+   rule403 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule404 #-}+   rule404 = \ ((_lhsIclassCtxs) :: ClassContext) ->+     _lhsIclassCtxs+   {-# INLINE rule405 #-}+   rule405 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule406 #-}+   rule406 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule407 #-}+   rule407 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule408 #-}+   rule408 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule409 #-}+   rule409 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule410 #-}+   rule410 = \ ((_lhsIinitial) :: StateIdentifier) ->+     _lhsIinitial+   {-# INLINE rule411 #-}+   rule411 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule412 #-}+   rule412 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule413 #-}+   rule413 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule414 #-}+   rule414 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule415 #-}+   rule415 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule416 #-}+   rule416 = \ ((_lhsIntType) :: Type) ->+     _lhsIntType+   {-# INLINE rule417 #-}+   rule417 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule418 #-}+   rule418 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule419 #-}+   rule419 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule420 #-}+   rule420 = \ ((_lhsIrename) :: Bool) ->+     _lhsIrename+   {-# INLINE rule421 #-}+   rule421 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule422 #-}+   rule422 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+{-# NOINLINE sem_EProductions_Nil #-}+sem_EProductions_Nil ::  T_EProductions +sem_EProductions_Nil  = T_EProductions (return st17) where+   {-# NOINLINE st17 #-}+   st17 = let+      v16 :: T_EProductions_v16 +      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let+         _lhsOrecordtype :: PP_Doc+         _lhsOrecordtype = rule423  ()+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule424  ()+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule425  ()+         _lhsOcount :: Int+         _lhsOcount = rule426  ()+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule427  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule428  ()+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule429  ()+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule430  ()+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule431  ()+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule432  ()+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule433  ()+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule434  ()+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule435  ()+         _lhsOsem_prod_tys :: PP_Doc+         _lhsOsem_prod_tys = rule436  ()+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule437  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule438  ()+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule439  ()+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule440  ()+         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOrecordtype _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOsem_prod_tys _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProductions_s17 v16+   {-# INLINE rule423 #-}+   {-# LINE 225 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule423 = \  (_ :: ()) ->+                             {-# LINE 225 "src-ag/ExecutionPlan2Clean.ag" #-}+                             empty+                             {-# LINE 3315 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule424 #-}+   {-# LINE 386 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule424 = \  (_ :: ()) ->+                           {-# LINE 386 "src-ag/ExecutionPlan2Clean.ag" #-}+                           error "Every nonterminal should have at least 1 production"+                           {-# LINE 3321 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule425 #-}+   rule425 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule426 #-}+   rule426 = \  (_ :: ()) ->+     0+   {-# INLINE rule427 #-}+   rule427 = \  (_ :: ()) ->+     []+   {-# INLINE rule428 #-}+   rule428 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule429 #-}+   rule429 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule430 #-}+   rule430 = \  (_ :: ()) ->+     return ()+   {-# INLINE rule431 #-}+   rule431 = \  (_ :: ()) ->+     []+   {-# INLINE rule432 #-}+   rule432 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule433 #-}+   rule433 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule434 #-}+   rule434 = \  (_ :: ()) ->+     empty+   {-# INLINE rule435 #-}+   rule435 = \  (_ :: ()) ->+     empty+   {-# INLINE rule436 #-}+   rule436 = \  (_ :: ()) ->+     empty+   {-# INLINE rule437 #-}+   rule437 = \  (_ :: ()) ->+     empty+   {-# INLINE rule438 #-}+   rule438 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule439 #-}+   rule439 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule440 #-}+   rule440 = \  (_ :: ()) ->+     Map.empty++-- ERule -------------------------------------------------------+-- wrapper+data Inh_ERule  = Inh_ERule { allInhmap_Inh_ERule :: (Map NontermIdent Attributes), allSynmap_Inh_ERule :: (Map NontermIdent Attributes), childTypes_Inh_ERule :: (Map Identifier Type), con_Inh_ERule :: (ConstructorIdent), constructorTypeMap_Inh_ERule :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ERule :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_ERule :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ERule :: (PP_Doc), inhmap_Inh_ERule :: (Attributes), lazyIntras_Inh_ERule :: (Set String), localAttrTypes_Inh_ERule :: (Map Identifier Type), mainFile_Inh_ERule :: (String), mainName_Inh_ERule :: (String), nt_Inh_ERule :: (NontermIdent), options_Inh_ERule :: (Options), ruleKinds_Inh_ERule :: (Map Identifier (Set VisitKind)), synmap_Inh_ERule :: (Attributes), textBlocks_Inh_ERule :: (PP_Doc), usageInfo_Inh_ERule :: (Map Identifier Int) }+data Syn_ERule  = Syn_ERule { errors_Syn_ERule :: (Seq Error), mrules_Syn_ERule :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), ruledefs_Syn_ERule :: (Map Identifier (Set String)), ruleuses_Syn_ERule :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERule :: (PP_Doc), usedArgs_Syn_ERule :: (Set String) }+{-# INLINABLE wrap_ERule #-}+wrap_ERule :: T_ERule  -> Inh_ERule  -> (Syn_ERule )+wrap_ERule (T_ERule act) (Inh_ERule _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg19 = T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo+        (T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs) <- return (inv_ERule_s20 sem arg19)+        return (Syn_ERule _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs)+   )++-- cata+{-# INLINE sem_ERule #-}+sem_ERule :: ERule  -> T_ERule +sem_ERule ( ERule name_ pattern_ rhs_ owrt_ origin_ explicit_ pure_ mbError_ ) = sem_ERule_ERule name_ ( sem_Pattern pattern_ ) ( sem_Expression rhs_ ) owrt_ origin_ explicit_ pure_ mbError_++-- semantic domain+newtype T_ERule  = T_ERule {+                           attach_T_ERule :: Identity (T_ERule_s20 )+                           }+newtype T_ERule_s20  = C_ERule_s20 {+                                   inv_ERule_s20 :: (T_ERule_v19 )+                                   }+data T_ERule_s21  = C_ERule_s21+type T_ERule_v19  = (T_ERule_vIn19 ) -> (T_ERule_vOut19 )+data T_ERule_vIn19  = T_ERule_vIn19 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Attributes) (Set String) (Map Identifier Type) (String) (String) (NontermIdent) (Options) (Map Identifier (Set VisitKind)) (Attributes) (PP_Doc) (Map Identifier Int)+data T_ERule_vOut19  = T_ERule_vOut19 (Seq Error) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc) (Set String)+{-# NOINLINE sem_ERule_ERule #-}+sem_ERule_ERule :: (Identifier) -> T_Pattern  -> T_Expression  -> (Bool) -> (String) -> (Bool) -> (Bool) -> (Maybe Error) -> T_ERule +sem_ERule_ERule arg_name_ arg_pattern_ arg_rhs_ _ _ arg_explicit_ arg_pure_ arg_mbError_ = T_ERule (return st20) where+   {-# NOINLINE st20 #-}+   st20 = let+      v19 :: T_ERule_v19 +      v19 = \ (T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let+         _patternX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pattern_))+         _rhsX29 = Control.Monad.Identity.runIdentity (attach_T_Expression (arg_rhs_))+         (T_Pattern_vOut40 _patternIattrTypes _patternIattrs _patternIcopy _patternIisUnderscore _patternIsem_lhs) = inv_Pattern_s41 _patternX41 (T_Pattern_vIn40 _patternOallInhmap _patternOallSynmap _patternOanyLazyKind _patternOinhmap _patternOlocalAttrTypes _patternOoptions _patternOsynmap)+         (T_Expression_vOut28 _rhsIattrs _rhsIpos _rhsIsemfunc _rhsItks) = inv_Expression_s29 _rhsX29 (T_Expression_vIn28 _rhsOoptions)+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule441 _usedArgs_augmented_f1 _usedArgs_augmented_syn+         _usedArgs_augmented_f1 = rule442 _rhsIattrs+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule443 _rulecode _used+         _rulecode = rule444 _endpragma _genpragma _lambda _pragma _rhsIpos _rhsIsemfunc+         _pragma = rule445 _rhsIpos+         _endpragma = rule446 _lhsImainFile+         _genpragma = rule447 _haspos _lhsIoptions arg_explicit_+         _haspos = rule448 _rhsIpos+         _lambda = rule449 _argPats _lhsIoptions _rhsIattrs arg_name_+         _argPats = rule450 _addbang1 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIlazyIntras _lhsIlocalAttrTypes _lhsIoptions _rhsIattrs+         _argExprs = rule451 _rhsIattrs+         _stepcode = rule452 _argExprs _lhsIoptions _patternIattrTypes _patternIsem_lhs _rhsIattrs arg_name_ arg_pure_+         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)+         _lhsOmrules = rule453 _stepcode arg_name_+         _used = rule454 _lhsIusageInfo arg_name_+         _kinds = rule455 _lhsIruleKinds arg_name_+         _anyLazyKind = rule456 _kinds+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule457 _patternIattrs arg_name_+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule458 _rhsIattrs arg_name_+         _addbang = rule459 _lhsIoptions+         _addbang1 = rule460 _addbang _anyLazyKind+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule461 _used arg_mbError_+         _usedArgs_augmented_syn = rule462  ()+         _patternOallInhmap = rule463 _lhsIallInhmap+         _patternOallSynmap = rule464 _lhsIallSynmap+         _patternOanyLazyKind = rule465 _anyLazyKind+         _patternOinhmap = rule466 _lhsIinhmap+         _patternOlocalAttrTypes = rule467 _lhsIlocalAttrTypes+         _patternOoptions = rule468 _lhsIoptions+         _patternOsynmap = rule469 _lhsIsynmap+         _rhsOoptions = rule470 _lhsIoptions+         __result_ = T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs+         in __result_ )+     in C_ERule_s20 v19+   {-# INLINE rule441 #-}+   rule441 = \ _usedArgs_augmented_f1 _usedArgs_augmented_syn ->+     foldr ($) _usedArgs_augmented_syn [_usedArgs_augmented_f1]+   {-# INLINE rule442 #-}+   rule442 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->+                        Set.union $ Map.keysSet $ Map.mapKeys (\a -> "arg_" ++ a) $ Map.filter isNothing _rhsIattrs+   {-# INLINE rule443 #-}+   {-# LINE 1011 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule443 = \ _rulecode _used ->+                          {-# LINE 1011 "src-ag/ExecutionPlan2Clean.ag" #-}+                          if _used     == 0+                          then empty+                          else _rulecode+                          {-# LINE 3464 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule444 #-}+   {-# LINE 1014 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule444 = \ _endpragma _genpragma _lambda _pragma ((_rhsIpos) :: Pos) ((_rhsIsemfunc) :: PP_Doc) ->+                          {-# LINE 1014 "src-ag/ExecutionPlan2Clean.ag" #-}+                          ( if _genpragma+                            then _pragma+                            else empty+                          )+                          >-< _lambda+                          >-< indent ((column _rhsIpos - 2) `max` 2)+                                ( if _genpragma+                                  then _pragma     >-< _rhsIsemfunc >-< _endpragma+                                  else _rhsIsemfunc+                                )+                          {-# LINE 3479 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule445 #-}+   {-# LINE 1026 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule445 = \ ((_rhsIpos) :: Pos) ->+                           {-# LINE 1026 "src-ag/ExecutionPlan2Clean.ag" #-}+                           "/*# LINE" >#< show (line _rhsIpos) >#< show (file _rhsIpos) >#< "#*/"+                           {-# LINE 3485 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule446 #-}+   {-# LINE 1027 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule446 = \ ((_lhsImainFile) :: String) ->+                           {-# LINE 1027 "src-ag/ExecutionPlan2Clean.ag" #-}+                           ppWithLineNr (\ln -> "/*# LINE " ++ show (ln+1) ++ " " ++ show _lhsImainFile ++ "#*/")+                           {-# LINE 3491 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule447 #-}+   {-# LINE 1028 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule447 = \ _haspos ((_lhsIoptions) :: Options) explicit_ ->+                           {-# LINE 1028 "src-ag/ExecutionPlan2Clean.ag" #-}+                           genLinePragmas _lhsIoptions && explicit_ && _haspos+                           {-# LINE 3497 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule448 #-}+   {-# LINE 1029 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule448 = \ ((_rhsIpos) :: Pos) ->+                           {-# LINE 1029 "src-ag/ExecutionPlan2Clean.ag" #-}+                           line _rhsIpos > 0 && column _rhsIpos >= 0 && not (null (file _rhsIpos))+                           {-# LINE 3503 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule449 #-}+   {-# LINE 1042 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule449 = \ _argPats ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->+                           {-# LINE 1042 "src-ag/ExecutionPlan2Clean.ag" #-}+                           name_ >#< _argPats     >#< dummyPat _lhsIoptions (Map.null _rhsIattrs) >#< "="+                           {-# LINE 3509 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule450 #-}+   {-# LINE 1044 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule450 = \ _addbang1 ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIchildTypes) :: Map Identifier Type) ((_lhsIlazyIntras) :: Set String) ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->+                           {-# LINE 1044 "src-ag/ExecutionPlan2Clean.ag" #-}+                           ppSpaced [ let match | str `Set.member` _lhsIlazyIntras = pp str+                                                | otherwise                        = _addbang1     (pp str)+                                      in case mbAttr of+                                           Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->+                                             case Map.lookup nm _lhsIlocalAttrTypes of+                                               Just tp -> pp_parens (pp_parens match)+                                               Nothing -> match+                                           Just attr | not (noPerRuleTypeSigs _lhsIoptions) ->+                                             case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes of+                                               Just tpDoc -> pp_parens (pp_parens match)+                                               Nothing    -> match+                                           _ -> match+                                    | (str,mbAttr) <- Map.assocs _rhsIattrs+                                    ]+                           {-# LINE 3528 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule451 #-}+   {-# LINE 1058 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule451 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->+                           {-# LINE 1058 "src-ag/ExecutionPlan2Clean.ag" #-}+                           ppSpaced [ case mbAttr of+                                        Nothing -> "arg_" >|< str+                                        _       -> text str+                                    | (str,mbAttr) <- Map.assocs _rhsIattrs+                                    ]+                           {-# LINE 3538 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule452 #-}+   {-# LINE 1063 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule452 = \ _argExprs ((_lhsIoptions) :: Options) ((_patternIattrTypes) :: PP_Doc) ((_patternIsem_lhs) ::  PP_Doc ) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ pure_ ->+                           {-# LINE 1063 "src-ag/ExecutionPlan2Clean.ag" #-}+                           \kind fmtMode -> if kind `compatibleRule` pure_+                                            then Right $ let oper | pure_     = "="+                                                                  | otherwise = "<-"+                                                             decl = _patternIsem_lhs >#< oper >#< name_ >#< _argExprs     >#< dummyArg _lhsIoptions (Map.null _rhsIattrs)+                                                             tp   = if pure_ && not (noPerRuleTypeSigs _lhsIoptions)+                                                                      then _patternIattrTypes+                                                                      else empty+                                                         in fmtDecl pure_ fmtMode (tp >-< decl)+                                            else Left $ IncompatibleRuleKind name_ kind+                           {-# LINE 3552 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule453 #-}+   {-# LINE 1073 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule453 = \ _stepcode name_ ->+                           {-# LINE 1073 "src-ag/ExecutionPlan2Clean.ag" #-}+                           Map.singleton name_ _stepcode+                           {-# LINE 3558 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule454 #-}+   {-# LINE 1279 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule454 = \ ((_lhsIusageInfo) :: Map Identifier Int) name_ ->+                                                 {-# LINE 1279 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                 Map.findWithDefault 0 name_ _lhsIusageInfo+                                                 {-# LINE 3564 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule455 #-}+   {-# LINE 1295 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule455 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) name_ ->+                {-# LINE 1295 "src-ag/ExecutionPlan2Clean.ag" #-}+                Map.findWithDefault Set.empty name_ _lhsIruleKinds+                {-# LINE 3570 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule456 #-}+   {-# LINE 1296 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule456 = \ _kinds ->+                      {-# LINE 1296 "src-ag/ExecutionPlan2Clean.ag" #-}+                      Set.fold (\k r -> isLazyKind k || r) False _kinds+                      {-# LINE 3576 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule457 #-}+   {-# LINE 1342 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule457 = \ ((_patternIattrs) :: Set String) name_ ->+                           {-# LINE 1342 "src-ag/ExecutionPlan2Clean.ag" #-}+                           Map.singleton name_ _patternIattrs+                           {-# LINE 3582 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule458 #-}+   {-# LINE 1343 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule458 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->+                           {-# LINE 1343 "src-ag/ExecutionPlan2Clean.ag" #-}+                           Map.singleton name_ _rhsIattrs+                           {-# LINE 3588 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule459 #-}+   {-# LINE 1564 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule459 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1564 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 3594 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule460 #-}+   {-# LINE 1575 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule460 = \ _addbang _anyLazyKind ->+                                                     {-# LINE 1575 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                     if _anyLazyKind     then id else _addbang+                                                     {-# LINE 3600 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule461 #-}+   {-# LINE 1681 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule461 = \ _used mbError_ ->+                 {-# LINE 1681 "src-ag/ExecutionPlan2Clean.ag" #-}+                 case mbError_ of+                   Just e | _used     > 0 -> Seq.singleton e+                   _                      -> Seq.empty+                 {-# LINE 3608 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule462 #-}+   rule462 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule463 #-}+   rule463 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule464 #-}+   rule464 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule465 #-}+   rule465 = \ _anyLazyKind ->+     _anyLazyKind+   {-# INLINE rule466 #-}+   rule466 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule467 #-}+   rule467 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule468 #-}+   rule468 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule469 #-}+   rule469 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule470 #-}+   rule470 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions++-- ERules ------------------------------------------------------+-- wrapper+data Inh_ERules  = Inh_ERules { allInhmap_Inh_ERules :: (Map NontermIdent Attributes), allSynmap_Inh_ERules :: (Map NontermIdent Attributes), childTypes_Inh_ERules :: (Map Identifier Type), con_Inh_ERules :: (ConstructorIdent), constructorTypeMap_Inh_ERules :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ERules :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_ERules :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ERules :: (PP_Doc), inhmap_Inh_ERules :: (Attributes), lazyIntras_Inh_ERules :: (Set String), localAttrTypes_Inh_ERules :: (Map Identifier Type), mainFile_Inh_ERules :: (String), mainName_Inh_ERules :: (String), nt_Inh_ERules :: (NontermIdent), options_Inh_ERules :: (Options), ruleKinds_Inh_ERules :: (Map Identifier (Set VisitKind)), synmap_Inh_ERules :: (Attributes), textBlocks_Inh_ERules :: (PP_Doc), usageInfo_Inh_ERules :: (Map Identifier Int) }+data Syn_ERules  = Syn_ERules { errors_Syn_ERules :: (Seq Error), mrules_Syn_ERules :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), ruledefs_Syn_ERules :: (Map Identifier (Set String)), ruleuses_Syn_ERules :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERules :: (PP_Doc), usedArgs_Syn_ERules :: (Set String) }+{-# INLINABLE wrap_ERules #-}+wrap_ERules :: T_ERules  -> Inh_ERules  -> (Syn_ERules )+wrap_ERules (T_ERules act) (Inh_ERules _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg22 = T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo+        (T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs) <- return (inv_ERules_s23 sem arg22)+        return (Syn_ERules _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs)+   )++-- cata+{-# NOINLINE sem_ERules #-}+sem_ERules :: ERules  -> T_ERules +sem_ERules list = Prelude.foldr sem_ERules_Cons sem_ERules_Nil (Prelude.map sem_ERule list)++-- semantic domain+newtype T_ERules  = T_ERules {+                             attach_T_ERules :: Identity (T_ERules_s23 )+                             }+newtype T_ERules_s23  = C_ERules_s23 {+                                     inv_ERules_s23 :: (T_ERules_v22 )+                                     }+data T_ERules_s24  = C_ERules_s24+type T_ERules_v22  = (T_ERules_vIn22 ) -> (T_ERules_vOut22 )+data T_ERules_vIn22  = T_ERules_vIn22 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Attributes) (Set String) (Map Identifier Type) (String) (String) (NontermIdent) (Options) (Map Identifier (Set VisitKind)) (Attributes) (PP_Doc) (Map Identifier Int)+data T_ERules_vOut22  = T_ERules_vOut22 (Seq Error) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc) (Set String)+{-# NOINLINE sem_ERules_Cons #-}+sem_ERules_Cons :: T_ERule  -> T_ERules  -> T_ERules +sem_ERules_Cons arg_hd_ arg_tl_ = T_ERules (return st23) where+   {-# NOINLINE st23 #-}+   st23 = let+      v22 :: T_ERules_v22 +      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let+         _hdX20 = Control.Monad.Identity.runIdentity (attach_T_ERule (arg_hd_))+         _tlX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_tl_))+         (T_ERule_vOut19 _hdIerrors _hdImrules _hdIruledefs _hdIruleuses _hdIsem_rules _hdIusedArgs) = inv_ERule_s20 _hdX20 (T_ERule_vIn19 _hdOallInhmap _hdOallSynmap _hdOchildTypes _hdOcon _hdOconstructorTypeMap _hdOdclModuleHeader _hdOiclModuleHeader _hdOimportBlocks _hdOinhmap _hdOlazyIntras _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOnt _hdOoptions _hdOruleKinds _hdOsynmap _hdOtextBlocks _hdOusageInfo)+         (T_ERules_vOut22 _tlIerrors _tlImrules _tlIruledefs _tlIruleuses _tlIsem_rules _tlIusedArgs) = inv_ERules_s23 _tlX23 (T_ERules_vIn22 _tlOallInhmap _tlOallSynmap _tlOchildTypes _tlOcon _tlOconstructorTypeMap _tlOdclModuleHeader _tlOiclModuleHeader _tlOimportBlocks _tlOinhmap _tlOlazyIntras _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOnt _tlOoptions _tlOruleKinds _tlOsynmap _tlOtextBlocks _tlOusageInfo)+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule471 _hdIerrors _tlIerrors+         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)+         _lhsOmrules = rule472 _hdImrules _tlImrules+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule473 _hdIruledefs _tlIruledefs+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule474 _hdIruleuses _tlIruleuses+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule475 _hdIsem_rules _tlIsem_rules+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule476 _hdIusedArgs _tlIusedArgs+         _hdOallInhmap = rule477 _lhsIallInhmap+         _hdOallSynmap = rule478 _lhsIallSynmap+         _hdOchildTypes = rule479 _lhsIchildTypes+         _hdOcon = rule480 _lhsIcon+         _hdOconstructorTypeMap = rule481 _lhsIconstructorTypeMap+         _hdOdclModuleHeader = rule482 _lhsIdclModuleHeader+         _hdOiclModuleHeader = rule483 _lhsIiclModuleHeader+         _hdOimportBlocks = rule484 _lhsIimportBlocks+         _hdOinhmap = rule485 _lhsIinhmap+         _hdOlazyIntras = rule486 _lhsIlazyIntras+         _hdOlocalAttrTypes = rule487 _lhsIlocalAttrTypes+         _hdOmainFile = rule488 _lhsImainFile+         _hdOmainName = rule489 _lhsImainName+         _hdOnt = rule490 _lhsInt+         _hdOoptions = rule491 _lhsIoptions+         _hdOruleKinds = rule492 _lhsIruleKinds+         _hdOsynmap = rule493 _lhsIsynmap+         _hdOtextBlocks = rule494 _lhsItextBlocks+         _hdOusageInfo = rule495 _lhsIusageInfo+         _tlOallInhmap = rule496 _lhsIallInhmap+         _tlOallSynmap = rule497 _lhsIallSynmap+         _tlOchildTypes = rule498 _lhsIchildTypes+         _tlOcon = rule499 _lhsIcon+         _tlOconstructorTypeMap = rule500 _lhsIconstructorTypeMap+         _tlOdclModuleHeader = rule501 _lhsIdclModuleHeader+         _tlOiclModuleHeader = rule502 _lhsIiclModuleHeader+         _tlOimportBlocks = rule503 _lhsIimportBlocks+         _tlOinhmap = rule504 _lhsIinhmap+         _tlOlazyIntras = rule505 _lhsIlazyIntras+         _tlOlocalAttrTypes = rule506 _lhsIlocalAttrTypes+         _tlOmainFile = rule507 _lhsImainFile+         _tlOmainName = rule508 _lhsImainName+         _tlOnt = rule509 _lhsInt+         _tlOoptions = rule510 _lhsIoptions+         _tlOruleKinds = rule511 _lhsIruleKinds+         _tlOsynmap = rule512 _lhsIsynmap+         _tlOtextBlocks = rule513 _lhsItextBlocks+         _tlOusageInfo = rule514 _lhsIusageInfo+         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs+         in __result_ )+     in C_ERules_s23 v22+   {-# INLINE rule471 #-}+   rule471 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule472 #-}+   rule472 = \ ((_hdImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ((_tlImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _hdImrules `Map.union` _tlImrules+   {-# INLINE rule473 #-}+   rule473 = \ ((_hdIruledefs) :: Map Identifier (Set String)) ((_tlIruledefs) :: Map Identifier (Set String)) ->+     _hdIruledefs `uwSetUnion` _tlIruledefs+   {-# INLINE rule474 #-}+   rule474 = \ ((_hdIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ((_tlIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _hdIruleuses `uwMapUnion` _tlIruleuses+   {-# INLINE rule475 #-}+   rule475 = \ ((_hdIsem_rules) :: PP_Doc) ((_tlIsem_rules) :: PP_Doc) ->+     _hdIsem_rules >-< _tlIsem_rules+   {-# INLINE rule476 #-}+   rule476 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->+     _hdIusedArgs `Set.union` _tlIusedArgs+   {-# INLINE rule477 #-}+   rule477 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule478 #-}+   rule478 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule479 #-}+   rule479 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule480 #-}+   rule480 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule481 #-}+   rule481 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule482 #-}+   rule482 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule483 #-}+   rule483 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule484 #-}+   rule484 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule485 #-}+   rule485 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule486 #-}+   rule486 = \ ((_lhsIlazyIntras) :: Set String) ->+     _lhsIlazyIntras+   {-# INLINE rule487 #-}+   rule487 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule488 #-}+   rule488 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule489 #-}+   rule489 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule490 #-}+   rule490 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule491 #-}+   rule491 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule492 #-}+   rule492 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _lhsIruleKinds+   {-# INLINE rule493 #-}+   rule493 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule494 #-}+   rule494 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule495 #-}+   rule495 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->+     _lhsIusageInfo+   {-# INLINE rule496 #-}+   rule496 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule497 #-}+   rule497 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule498 #-}+   rule498 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule499 #-}+   rule499 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule500 #-}+   rule500 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule501 #-}+   rule501 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule502 #-}+   rule502 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule503 #-}+   rule503 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule504 #-}+   rule504 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule505 #-}+   rule505 = \ ((_lhsIlazyIntras) :: Set String) ->+     _lhsIlazyIntras+   {-# INLINE rule506 #-}+   rule506 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule507 #-}+   rule507 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule508 #-}+   rule508 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule509 #-}+   rule509 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule510 #-}+   rule510 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule511 #-}+   rule511 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _lhsIruleKinds+   {-# INLINE rule512 #-}+   rule512 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule513 #-}+   rule513 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule514 #-}+   rule514 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->+     _lhsIusageInfo+{-# NOINLINE sem_ERules_Nil #-}+sem_ERules_Nil ::  T_ERules +sem_ERules_Nil  = T_ERules (return st23) where+   {-# NOINLINE st23 #-}+   st23 = let+      v22 :: T_ERules_v22 +      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsInt _lhsIoptions _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule515  ()+         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)+         _lhsOmrules = rule516  ()+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule517  ()+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule518  ()+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule519  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule520  ()+         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs+         in __result_ )+     in C_ERules_s23 v22+   {-# INLINE rule515 #-}+   rule515 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule516 #-}+   rule516 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule517 #-}+   rule517 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule518 #-}+   rule518 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule519 #-}+   rule519 = \  (_ :: ()) ->+     empty+   {-# INLINE rule520 #-}+   rule520 = \  (_ :: ()) ->+     Set.empty++-- ExecutionPlan -----------------------------------------------+-- wrapper+data Inh_ExecutionPlan  = Inh_ExecutionPlan { constructorTypeMap_Inh_ExecutionPlan :: (Map NontermIdent ConstructorType), dclModuleHeader_Inh_ExecutionPlan :: (String -> String -> String -> Bool -> String), iclModuleHeader_Inh_ExecutionPlan :: (String -> String -> String -> Bool -> String), importBlocks_Inh_ExecutionPlan :: (PP_Doc), inhmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), localAttrTypes_Inh_ExecutionPlan :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainBlocksDoc_Inh_ExecutionPlan :: (PP_Doc), mainFile_Inh_ExecutionPlan :: (String), mainName_Inh_ExecutionPlan :: (String), options_Inh_ExecutionPlan :: (Options), synmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), textBlockMap_Inh_ExecutionPlan :: (Map BlockInfo PP_Doc), textBlocks_Inh_ExecutionPlan :: (PP_Doc) }+data Syn_ExecutionPlan  = Syn_ExecutionPlan { errors_Syn_ExecutionPlan :: (Seq Error), genIO_Syn_ExecutionPlan :: (IO ()), output_Syn_ExecutionPlan :: (PP_Doc), output_dcl_Syn_ExecutionPlan :: (PP_Doc) }+{-# INLINABLE wrap_ExecutionPlan #-}+wrap_ExecutionPlan :: T_ExecutionPlan  -> Inh_ExecutionPlan  -> (Syn_ExecutionPlan )+wrap_ExecutionPlan (T_ExecutionPlan act) (Inh_ExecutionPlan _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg25 = T_ExecutionPlan_vIn25 _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks+        (T_ExecutionPlan_vOut25 _lhsOerrors _lhsOgenIO _lhsOoutput _lhsOoutput_dcl) <- return (inv_ExecutionPlan_s26 sem arg25)+        return (Syn_ExecutionPlan _lhsOerrors _lhsOgenIO _lhsOoutput _lhsOoutput_dcl)+   )++-- cata+{-# INLINE sem_ExecutionPlan #-}+sem_ExecutionPlan :: ExecutionPlan  -> T_ExecutionPlan +sem_ExecutionPlan ( ExecutionPlan nonts_ typeSyns_ wrappers_ derivings_ ) = sem_ExecutionPlan_ExecutionPlan ( sem_ENonterminals nonts_ ) typeSyns_ wrappers_ derivings_++-- semantic domain+newtype T_ExecutionPlan  = T_ExecutionPlan {+                                           attach_T_ExecutionPlan :: Identity (T_ExecutionPlan_s26 )+                                           }+newtype T_ExecutionPlan_s26  = C_ExecutionPlan_s26 {+                                                   inv_ExecutionPlan_s26 :: (T_ExecutionPlan_v25 )+                                                   }+data T_ExecutionPlan_s27  = C_ExecutionPlan_s27+type T_ExecutionPlan_v25  = (T_ExecutionPlan_vIn25 ) -> (T_ExecutionPlan_vOut25 )+data T_ExecutionPlan_vIn25  = T_ExecutionPlan_vIn25 (Map NontermIdent ConstructorType) (String -> String -> String -> Bool -> String) (String -> String -> String -> Bool -> String) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (PP_Doc) (String) (String) (Options) (Map NontermIdent Attributes) (Map BlockInfo PP_Doc) (PP_Doc)+data T_ExecutionPlan_vOut25  = T_ExecutionPlan_vOut25 (Seq Error) (IO ()) (PP_Doc) (PP_Doc)+{-# NOINLINE sem_ExecutionPlan_ExecutionPlan #-}+sem_ExecutionPlan_ExecutionPlan :: T_ENonterminals  -> (TypeSyns) -> (Set NontermIdent) -> (Derivings) -> T_ExecutionPlan +sem_ExecutionPlan_ExecutionPlan arg_nonts_ arg_typeSyns_ arg_wrappers_ arg_derivings_ = T_ExecutionPlan (return st26) where+   {-# NOINLINE st26 #-}+   st26 = let+      v25 :: T_ExecutionPlan_v25 +      v25 = \ (T_ExecutionPlan_vIn25 _lhsIconstructorTypeMap _lhsIdclModuleHeader _lhsIiclModuleHeader _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsIoptions _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks) -> ( let+         _nontsX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_nonts_))+         (T_ENonterminals_vOut10 _nontsIappendCommon _nontsIappendMain _nontsIchildvisit _nontsIerrors _nontsIfromToStates _nontsIgenProdIO _nontsIimports _nontsIinitStates _nontsIoutput _nontsIoutput_dcl _nontsIsemFunBndDefs _nontsIsemFunBndTps _nontsIvisitKinds _nontsIvisitdefs _nontsIvisituses) = inv_ENonterminals_s11 _nontsX11 (T_ENonterminals_vIn10 _nontsOallFromToStates _nontsOallInitStates _nontsOallVisitKinds _nontsOallchildvisit _nontsOavisitdefs _nontsOavisituses _nontsOconstructorTypeMap _nontsOdclModuleHeader _nontsOderivings _nontsOiclModuleHeader _nontsOimportBlocks _nontsOinhmap _nontsOlocalAttrTypes _nontsOmainFile _nontsOmainName _nontsOoptions _nontsOsynmap _nontsOtextBlocks _nontsOtypeSyns _nontsOwrappers)+         _lhsOoutput :: PP_Doc+         _lhsOoutput = rule521 _commonExtra _nontsIoutput _wrappersExtra+         _lhsOoutput_dcl :: PP_Doc+         _lhsOoutput_dcl = rule522 _nontsIoutput_dcl+         _nontsOwrappers = rule523 arg_wrappers_+         _nontsOtypeSyns = rule524 arg_typeSyns_+         _nontsOderivings = rule525 arg_derivings_+         _wrappersExtra = rule526 _lateSemBndDef _lhsIoptions+         _commonExtra = rule527 _lateSemBndTp _lhsIoptions+         _lateSemBndTp = rule528 _lhsImainName _nontsIsemFunBndTps+         _lateSemBndDef = rule529 _lhsImainName _nontsIsemFunBndDefs+         _nontsOallchildvisit = rule530 _nontsIchildvisit+         _nontsOavisitdefs = rule531 _nontsIvisitdefs+         _nontsOavisituses = rule532 _nontsIvisituses+         _lhsOgenIO :: IO ()+         _lhsOgenIO = rule533 _genCommonModule _genMainModule _nontsIgenProdIO+         _mainModuleFile = rule534 _lhsImainFile+         _ppMonadImports = rule535  ()+         _genMainModule = rule536 _lhsIiclModuleHeader _lhsImainBlocksDoc _lhsImainName _mainModuleFile _nontsIappendMain _nontsIimports _ppMonadImports _wrappersExtra+         _commonFile = rule537 _lhsImainFile+         _genCommonModule = rule538 _commonExtra _commonFile _lhsIiclModuleHeader _lhsIimportBlocks _lhsImainName _lhsItextBlocks _nontsIappendCommon _ppMonadImports+         _nontsOallFromToStates = rule539 _nontsIfromToStates+         _nontsOallVisitKinds = rule540 _nontsIvisitKinds+         _nontsOallInitStates = rule541 _nontsIinitStates+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule542 _nontsIerrors+         _nontsOconstructorTypeMap = rule543 _lhsIconstructorTypeMap+         _nontsOdclModuleHeader = rule544 _lhsIdclModuleHeader+         _nontsOiclModuleHeader = rule545 _lhsIiclModuleHeader+         _nontsOimportBlocks = rule546 _lhsIimportBlocks+         _nontsOinhmap = rule547 _lhsIinhmap+         _nontsOlocalAttrTypes = rule548 _lhsIlocalAttrTypes+         _nontsOmainFile = rule549 _lhsImainFile+         _nontsOmainName = rule550 _lhsImainName+         _nontsOoptions = rule551 _lhsIoptions+         _nontsOsynmap = rule552 _lhsIsynmap+         _nontsOtextBlocks = rule553 _lhsItextBlocks+         __result_ = T_ExecutionPlan_vOut25 _lhsOerrors _lhsOgenIO _lhsOoutput _lhsOoutput_dcl+         in __result_ )+     in C_ExecutionPlan_s26 v25+   {-# INLINE rule521 #-}+   {-# LINE 91 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule521 = \ _commonExtra ((_nontsIoutput) :: PP_Doc) _wrappersExtra ->+                                 {-# LINE 91 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _nontsIoutput >-< _commonExtra     >-< _wrappersExtra+                                 {-# LINE 3988 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule522 #-}+   {-# LINE 92 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule522 = \ ((_nontsIoutput_dcl) :: PP_Doc) ->+                                     {-# LINE 92 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     _nontsIoutput_dcl+                                     {-# LINE 3994 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule523 #-}+   {-# LINE 99 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule523 = \ wrappers_ ->+                                     {-# LINE 99 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     wrappers_+                                     {-# LINE 4000 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule524 #-}+   {-# LINE 159 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule524 = \ typeSyns_ ->+                                     {-# LINE 159 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     typeSyns_+                                     {-# LINE 4006 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule525 #-}+   {-# LINE 160 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule525 = \ derivings_ ->+                                      {-# LINE 160 "src-ag/ExecutionPlan2Clean.ag" #-}+                                      derivings_+                                      {-# LINE 4012 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule526 #-}+   {-# LINE 599 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule526 = \ _lateSemBndDef ((_lhsIoptions) :: Options) ->+                        {-# LINE 599 "src-ag/ExecutionPlan2Clean.ag" #-}+                        if lateHigherOrderBinding _lhsIoptions+                        then _lateSemBndDef+                        else empty+                        {-# LINE 4020 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule527 #-}+   {-# LINE 602 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule527 = \ _lateSemBndTp ((_lhsIoptions) :: Options) ->+                        {-# LINE 602 "src-ag/ExecutionPlan2Clean.ag" #-}+                        if lateHigherOrderBinding _lhsIoptions+                        then _lateSemBndTp+                        else empty+                        {-# LINE 4028 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule528 #-}+   {-# LINE 605 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule528 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndTps) :: Seq PP_Doc) ->+                       {-# LINE 605 "src-ag/ExecutionPlan2Clean.ag" #-}+                       "::" >#< lateBindingTypeNm _lhsImainName >#< "=" >#< lateBindingTypeNm _lhsImainName+                        >-< (indent 2 $ pp_block "{" "}" "," $ toList _nontsIsemFunBndTps)+                       {-# LINE 4035 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule529 #-}+   {-# LINE 607 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule529 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndDefs) :: Seq PP_Doc) ->+                        {-# LINE 607 "src-ag/ExecutionPlan2Clean.ag" #-}+                        lateBindingFieldNm _lhsImainName >#< "::" >#< lateBindingTypeNm _lhsImainName+                        >-< lateBindingFieldNm _lhsImainName >#< "=" >#< lateBindingTypeNm _lhsImainName+                        >-< (indent 2 $ pp_block "{" "}" "," $ toList _nontsIsemFunBndDefs )+                        {-# LINE 4043 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule530 #-}+   {-# LINE 1223 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule530 = \ ((_nontsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+                                          {-# LINE 1223 "src-ag/ExecutionPlan2Clean.ag" #-}+                                          _nontsIchildvisit+                                          {-# LINE 4049 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule531 #-}+   {-# LINE 1367 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule531 = \ ((_nontsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+                                       {-# LINE 1367 "src-ag/ExecutionPlan2Clean.ag" #-}+                                       _nontsIvisitdefs+                                       {-# LINE 4055 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule532 #-}+   {-# LINE 1368 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule532 = \ ((_nontsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+                                       {-# LINE 1368 "src-ag/ExecutionPlan2Clean.ag" #-}+                                       _nontsIvisituses+                                       {-# LINE 4061 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule533 #-}+   {-# LINE 1439 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule533 = \ _genCommonModule _genMainModule ((_nontsIgenProdIO) :: IO ()) ->+                                          {-# LINE 1439 "src-ag/ExecutionPlan2Clean.ag" #-}+                                          do _genMainModule+                                             _genCommonModule+                                             _nontsIgenProdIO+                                          {-# LINE 4069 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule534 #-}+   {-# LINE 1442 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule534 = \ ((_lhsImainFile) :: String) ->+                                          {-# LINE 1442 "src-ag/ExecutionPlan2Clean.ag" #-}+                                          _lhsImainFile+                                          {-# LINE 4075 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule535 #-}+   {-# LINE 1443 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule535 = \  (_ :: ()) ->+                                          {-# LINE 1443 "src-ag/ExecutionPlan2Clean.ag" #-}+                                          pp "import qualified Control.Monad.Identity"+                                          {-# LINE 4081 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule536 #-}+   {-# LINE 1444 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule536 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ((_lhsImainBlocksDoc) :: PP_Doc) ((_lhsImainName) :: String) _mainModuleFile ((_nontsIappendMain) :: [PP_Doc]) ((_nontsIimports) :: [PP_Doc]) _ppMonadImports _wrappersExtra ->+                                          {-# LINE 1444 "src-ag/ExecutionPlan2Clean.ag" #-}+                                          writeModule _mainModuleFile+                                            ( [ pp $ _lhsIiclModuleHeader _lhsImainName "" "" False+                                              , _ppMonadImports+                                              , pp $ "import " ++ _lhsImainName ++ "_common"+                                              ]+                                              ++ _nontsIimports+                                              ++ [_lhsImainBlocksDoc]+                                              ++ [_wrappersExtra    ]+                                              ++ _nontsIappendMain+                                            )+                                          {-# LINE 4096 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule537 #-}+   {-# LINE 1454 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule537 = \ ((_lhsImainFile) :: String) ->+                                          {-# LINE 1454 "src-ag/ExecutionPlan2Clean.ag" #-}+                                          replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ "_common")+                                          {-# LINE 4102 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule538 #-}+   {-# LINE 1455 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule538 = \ _commonExtra _commonFile ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsItextBlocks) :: PP_Doc) ((_nontsIappendCommon) :: [PP_Doc]) _ppMonadImports ->+                                          {-# LINE 1455 "src-ag/ExecutionPlan2Clean.ag" #-}+                                          writeModule _commonFile+                                            ( [ pp $ _lhsIiclModuleHeader _lhsImainName "_common" "" True+                                              , _ppMonadImports+                                              , _lhsIimportBlocks+                                              , _lhsItextBlocks+                                              , _commonExtra+                                              ]+                                              ++ _nontsIappendCommon+                                            )+                                          {-# LINE 4116 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule539 #-}+   {-# LINE 1603 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule539 = \ ((_nontsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+                            {-# LINE 1603 "src-ag/ExecutionPlan2Clean.ag" #-}+                            _nontsIfromToStates+                            {-# LINE 4122 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule540 #-}+   {-# LINE 1647 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule540 = \ ((_nontsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+                          {-# LINE 1647 "src-ag/ExecutionPlan2Clean.ag" #-}+                          _nontsIvisitKinds+                          {-# LINE 4128 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule541 #-}+   {-# LINE 1661 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule541 = \ ((_nontsIinitStates) :: Map NontermIdent Int) ->+                          {-# LINE 1661 "src-ag/ExecutionPlan2Clean.ag" #-}+                          _nontsIinitStates+                          {-# LINE 4134 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule542 #-}+   rule542 = \ ((_nontsIerrors) :: Seq Error) ->+     _nontsIerrors+   {-# INLINE rule543 #-}+   rule543 = \ ((_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->+     _lhsIconstructorTypeMap+   {-# INLINE rule544 #-}+   rule544 = \ ((_lhsIdclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIdclModuleHeader+   {-# INLINE rule545 #-}+   rule545 = \ ((_lhsIiclModuleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsIiclModuleHeader+   {-# INLINE rule546 #-}+   rule546 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule547 #-}+   rule547 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule548 #-}+   rule548 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule549 #-}+   rule549 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule550 #-}+   rule550 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule551 #-}+   rule551 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule552 #-}+   rule552 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap+   {-# INLINE rule553 #-}+   rule553 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks++-- Expression --------------------------------------------------+-- wrapper+data Inh_Expression  = Inh_Expression { options_Inh_Expression :: (Options) }+data Syn_Expression  = Syn_Expression { attrs_Syn_Expression :: (Map String (Maybe NonLocalAttr)), pos_Syn_Expression :: (Pos), semfunc_Syn_Expression :: (PP_Doc), tks_Syn_Expression :: ([HsToken]) }+{-# INLINABLE wrap_Expression #-}+wrap_Expression :: T_Expression  -> Inh_Expression  -> (Syn_Expression )+wrap_Expression (T_Expression act) (Inh_Expression _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg28 = T_Expression_vIn28 _lhsIoptions+        (T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks) <- return (inv_Expression_s29 sem arg28)+        return (Syn_Expression _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks)+   )++-- cata+{-# INLINE sem_Expression #-}+sem_Expression :: Expression  -> T_Expression +sem_Expression ( Expression pos_ tks_ ) = sem_Expression_Expression pos_ tks_++-- semantic domain+newtype T_Expression  = T_Expression {+                                     attach_T_Expression :: Identity (T_Expression_s29 )+                                     }+newtype T_Expression_s29  = C_Expression_s29 {+                                             inv_Expression_s29 :: (T_Expression_v28 )+                                             }+data T_Expression_s30  = C_Expression_s30+type T_Expression_v28  = (T_Expression_vIn28 ) -> (T_Expression_vOut28 )+data T_Expression_vIn28  = T_Expression_vIn28 (Options)+data T_Expression_vOut28  = T_Expression_vOut28 (Map String (Maybe NonLocalAttr)) (Pos) (PP_Doc) ([HsToken])+{-# NOINLINE sem_Expression_Expression #-}+sem_Expression_Expression :: (Pos) -> ([HsToken]) -> T_Expression +sem_Expression_Expression arg_pos_ arg_tks_ = T_Expression (return st29) where+   {-# NOINLINE st29 #-}+   st29 = let+      v28 :: T_Expression_v28 +      v28 = \ (T_Expression_vIn28 _lhsIoptions) -> ( let+         _lhsOtks :: [HsToken]+         _lhsOtks = rule554 arg_tks_+         _lhsOpos :: Pos+         _lhsOpos = rule555 arg_pos_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule556 _inhhstoken arg_tks_+         _lhsOsemfunc :: PP_Doc+         _lhsOsemfunc = rule557 _inhhstoken arg_tks_+         _inhhstoken = rule558 _lhsIoptions+         __result_ = T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks+         in __result_ )+     in C_Expression_s29 v28+   {-# INLINE rule554 #-}+   {-# LINE 1077 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule554 = \ tks_ ->+                           {-# LINE 1077 "src-ag/ExecutionPlan2Clean.ag" #-}+                           tks_+                           {-# LINE 4226 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule555 #-}+   {-# LINE 1120 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule555 = \ pos_ ->+                                        {-# LINE 1120 "src-ag/ExecutionPlan2Clean.ag" #-}+                                        pos_+                                        {-# LINE 4232 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule556 #-}+   {-# LINE 1207 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule556 = \ _inhhstoken tks_ ->+                               {-# LINE 1207 "src-ag/ExecutionPlan2Clean.ag" #-}+                               Map.unions $ map (\tok -> attrs_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_+                               {-# LINE 4238 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule557 #-}+   {-# LINE 1208 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule557 = \ _inhhstoken tks_ ->+                               {-# LINE 1208 "src-ag/ExecutionPlan2Clean.ag" #-}+                               vlist $ showTokens $ map (\tok -> tok_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_+                               {-# LINE 4244 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule558 #-}+   {-# LINE 1209 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule558 = \ ((_lhsIoptions) :: Options) ->+                                  {-# LINE 1209 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  Inh_HsToken _lhsIoptions+                                  {-# LINE 4250 "dist/build/ExecutionPlan2Clean.hs"#-}++-- HsToken -----------------------------------------------------+-- wrapper+data Inh_HsToken  = Inh_HsToken { options_Inh_HsToken :: (Options) }+data Syn_HsToken  = Syn_HsToken { attrs_Syn_HsToken :: (Map String (Maybe NonLocalAttr)), tok_Syn_HsToken :: ((Pos,String)) }+{-# INLINABLE wrap_HsToken #-}+wrap_HsToken :: T_HsToken  -> Inh_HsToken  -> (Syn_HsToken )+wrap_HsToken (T_HsToken act) (Inh_HsToken _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg31 = T_HsToken_vIn31 _lhsIoptions+        (T_HsToken_vOut31 _lhsOattrs _lhsOtok) <- return (inv_HsToken_s32 sem arg31)+        return (Syn_HsToken _lhsOattrs _lhsOtok)+   )++-- cata+{-# NOINLINE sem_HsToken #-}+sem_HsToken :: HsToken  -> T_HsToken +sem_HsToken ( AGLocal var_ pos_ rdesc_ ) = sem_HsToken_AGLocal var_ pos_ rdesc_+sem_HsToken ( AGField field_ attr_ pos_ rdesc_ ) = sem_HsToken_AGField field_ attr_ pos_ rdesc_+sem_HsToken ( HsToken value_ pos_ ) = sem_HsToken_HsToken value_ pos_+sem_HsToken ( CharToken value_ pos_ ) = sem_HsToken_CharToken value_ pos_+sem_HsToken ( StrToken value_ pos_ ) = sem_HsToken_StrToken value_ pos_+sem_HsToken ( Err mesg_ pos_ ) = sem_HsToken_Err mesg_ pos_++-- semantic domain+newtype T_HsToken  = T_HsToken {+                               attach_T_HsToken :: Identity (T_HsToken_s32 )+                               }+newtype T_HsToken_s32  = C_HsToken_s32 {+                                       inv_HsToken_s32 :: (T_HsToken_v31 )+                                       }+data T_HsToken_s33  = C_HsToken_s33+type T_HsToken_v31  = (T_HsToken_vIn31 ) -> (T_HsToken_vOut31 )+data T_HsToken_vIn31  = T_HsToken_vIn31 (Options)+data T_HsToken_vOut31  = T_HsToken_vOut31 (Map String (Maybe NonLocalAttr)) ((Pos,String))+{-# NOINLINE sem_HsToken_AGLocal #-}+sem_HsToken_AGLocal :: (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken +sem_HsToken_AGLocal arg_var_ arg_pos_ _ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule559 arg_var_+         _tok = rule560 arg_pos_ arg_var_+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule561 _tok+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule559 #-}+   {-# LINE 1166 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule559 = \ var_ ->+                              {-# LINE 1166 "src-ag/ExecutionPlan2Clean.ag" #-}+                              Map.singleton (fieldname var_) Nothing+                              {-# LINE 4307 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule560 #-}+   {-# LINE 1412 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule560 = \ pos_ var_ ->+                          {-# LINE 1412 "src-ag/ExecutionPlan2Clean.ag" #-}+                          (pos_,fieldname var_)+                          {-# LINE 4313 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule561 #-}+   rule561 = \ _tok ->+     _tok+{-# NOINLINE sem_HsToken_AGField #-}+sem_HsToken_AGField :: (Identifier) -> (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken +sem_HsToken_AGField arg_field_ arg_attr_ arg_pos_ arg_rdesc_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _mbAttr = rule562 arg_attr_ arg_field_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule563 _lhsIoptions _mbAttr arg_attr_ arg_field_+         _addTrace = rule564 arg_attr_ arg_field_ arg_rdesc_+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule565 _addTrace _lhsIoptions arg_attr_ arg_field_ arg_pos_+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule562 #-}+   {-# LINE 1167 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule562 = \ attr_ field_ ->+                              {-# LINE 1167 "src-ag/ExecutionPlan2Clean.ag" #-}+                              if field_ == _INST || field_ == _FIELD || field_ == _INST'+                              then Nothing+                              else Just $ mkNonLocalAttr (field_ == _LHS) field_ attr_+                              {-# LINE 4340 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule563 #-}+   {-# LINE 1170 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule563 = \ ((_lhsIoptions) :: Options) _mbAttr attr_ field_ ->+                              {-# LINE 1170 "src-ag/ExecutionPlan2Clean.ag" #-}+                              Map.singleton (attrname _lhsIoptions True field_ attr_) _mbAttr+                              {-# LINE 4346 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule564 #-}+   {-# LINE 1416 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule564 = \ attr_ field_ rdesc_ ->+                        {-# LINE 1416 "src-ag/ExecutionPlan2Clean.ag" #-}+                        case rdesc_ of+                          Just d  -> \x -> "(trace_n " ++ show (d ++ " -> " ++ show field_ ++ "." ++ show attr_) ++ " (" ++ x ++ "))"+                          Nothing -> id+                        {-# LINE 4354 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule565 #-}+   {-# LINE 1419 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule565 = \ _addTrace ((_lhsIoptions) :: Options) attr_ field_ pos_ ->+                   {-# LINE 1419 "src-ag/ExecutionPlan2Clean.ag" #-}+                   (pos_, _addTrace     $ attrname _lhsIoptions True field_ attr_)+                   {-# LINE 4360 "dist/build/ExecutionPlan2Clean.hs"#-}+{-# NOINLINE sem_HsToken_HsToken #-}+sem_HsToken_HsToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_HsToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule566 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule567  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule566 #-}+   {-# LINE 1421 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule566 = \ pos_ value_ ->+                         {-# LINE 1421 "src-ag/ExecutionPlan2Clean.ag" #-}+                         (pos_, value_)+                         {-# LINE 4380 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule567 #-}+   rule567 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_CharToken #-}+sem_HsToken_CharToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_CharToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule568 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule569  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule568 #-}+   {-# LINE 1423 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule568 = \ pos_ value_ ->+                           {-# LINE 1423 "src-ag/ExecutionPlan2Clean.ag" #-}+                           (pos_, if null value_+                                     then ""+                                     else showCharShort (head value_)+                           )+                           {-# LINE 4406 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule569 #-}+   rule569 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_StrToken #-}+sem_HsToken_StrToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_StrToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule570 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule571  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule570 #-}+   {-# LINE 1428 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule570 = \ pos_ value_ ->+                           {-# LINE 1428 "src-ag/ExecutionPlan2Clean.ag" #-}+                           (pos_, showStrShort value_)+                           {-# LINE 4429 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule571 #-}+   rule571 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_Err #-}+sem_HsToken_Err :: (String) -> (Pos) -> T_HsToken +sem_HsToken_Err _ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule572 arg_pos_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule573  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule572 #-}+   {-# LINE 1429 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule572 = \ pos_ ->+                           {-# LINE 1429 "src-ag/ExecutionPlan2Clean.ag" #-}+                           (pos_, "")+                           {-# LINE 4452 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule573 #-}+   rule573 = \  (_ :: ()) ->+     Map.empty++-- HsTokens ----------------------------------------------------+-- wrapper+data Inh_HsTokens  = Inh_HsTokens { options_Inh_HsTokens :: (Options) }+data Syn_HsTokens  = Syn_HsTokens { tks_Syn_HsTokens :: ([(Pos,String)]) }+{-# INLINABLE wrap_HsTokens #-}+wrap_HsTokens :: T_HsTokens  -> Inh_HsTokens  -> (Syn_HsTokens )+wrap_HsTokens (T_HsTokens act) (Inh_HsTokens _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg34 = T_HsTokens_vIn34 _lhsIoptions+        (T_HsTokens_vOut34 _lhsOtks) <- return (inv_HsTokens_s35 sem arg34)+        return (Syn_HsTokens _lhsOtks)+   )++-- cata+{-# NOINLINE sem_HsTokens #-}+sem_HsTokens :: HsTokens  -> T_HsTokens +sem_HsTokens list = Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list)++-- semantic domain+newtype T_HsTokens  = T_HsTokens {+                                 attach_T_HsTokens :: Identity (T_HsTokens_s35 )+                                 }+newtype T_HsTokens_s35  = C_HsTokens_s35 {+                                         inv_HsTokens_s35 :: (T_HsTokens_v34 )+                                         }+data T_HsTokens_s36  = C_HsTokens_s36+type T_HsTokens_v34  = (T_HsTokens_vIn34 ) -> (T_HsTokens_vOut34 )+data T_HsTokens_vIn34  = T_HsTokens_vIn34 (Options)+data T_HsTokens_vOut34  = T_HsTokens_vOut34 ([(Pos,String)])+{-# NOINLINE sem_HsTokens_Cons #-}+sem_HsTokens_Cons :: T_HsToken  -> T_HsTokens  -> T_HsTokens +sem_HsTokens_Cons arg_hd_ arg_tl_ = T_HsTokens (return st35) where+   {-# NOINLINE st35 #-}+   st35 = let+      v34 :: T_HsTokens_v34 +      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let+         _hdX32 = Control.Monad.Identity.runIdentity (attach_T_HsToken (arg_hd_))+         _tlX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tl_))+         (T_HsToken_vOut31 _hdIattrs _hdItok) = inv_HsToken_s32 _hdX32 (T_HsToken_vIn31 _hdOoptions)+         (T_HsTokens_vOut34 _tlItks) = inv_HsTokens_s35 _tlX35 (T_HsTokens_vIn34 _tlOoptions)+         _lhsOtks :: [(Pos,String)]+         _lhsOtks = rule574 _hdItok _tlItks+         _hdOoptions = rule575 _lhsIoptions+         _tlOoptions = rule576 _lhsIoptions+         __result_ = T_HsTokens_vOut34 _lhsOtks+         in __result_ )+     in C_HsTokens_s35 v34+   {-# INLINE rule574 #-}+   {-# LINE 1408 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule574 = \ ((_hdItok) :: (Pos,String)) ((_tlItks) :: [(Pos,String)]) ->+                     {-# LINE 1408 "src-ag/ExecutionPlan2Clean.ag" #-}+                     _hdItok : _tlItks+                     {-# LINE 4510 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule575 #-}+   rule575 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule576 #-}+   rule576 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+{-# NOINLINE sem_HsTokens_Nil #-}+sem_HsTokens_Nil ::  T_HsTokens +sem_HsTokens_Nil  = T_HsTokens (return st35) where+   {-# NOINLINE st35 #-}+   st35 = let+      v34 :: T_HsTokens_v34 +      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let+         _lhsOtks :: [(Pos,String)]+         _lhsOtks = rule577  ()+         __result_ = T_HsTokens_vOut34 _lhsOtks+         in __result_ )+     in C_HsTokens_s35 v34+   {-# INLINE rule577 #-}+   {-# LINE 1409 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule577 = \  (_ :: ()) ->+                     {-# LINE 1409 "src-ag/ExecutionPlan2Clean.ag" #-}+                     []+                     {-# LINE 4534 "dist/build/ExecutionPlan2Clean.hs"#-}++-- HsTokensRoot ------------------------------------------------+-- wrapper+data Inh_HsTokensRoot  = Inh_HsTokensRoot { options_Inh_HsTokensRoot :: (Options) }+data Syn_HsTokensRoot  = Syn_HsTokensRoot {  }+{-# INLINABLE wrap_HsTokensRoot #-}+wrap_HsTokensRoot :: T_HsTokensRoot  -> Inh_HsTokensRoot  -> (Syn_HsTokensRoot )+wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg37 = T_HsTokensRoot_vIn37 _lhsIoptions+        (T_HsTokensRoot_vOut37 ) <- return (inv_HsTokensRoot_s38 sem arg37)+        return (Syn_HsTokensRoot )+   )++-- cata+{-# INLINE sem_HsTokensRoot #-}+sem_HsTokensRoot :: HsTokensRoot  -> T_HsTokensRoot +sem_HsTokensRoot ( HsTokensRoot tokens_ ) = sem_HsTokensRoot_HsTokensRoot ( sem_HsTokens tokens_ )++-- semantic domain+newtype T_HsTokensRoot  = T_HsTokensRoot {+                                         attach_T_HsTokensRoot :: Identity (T_HsTokensRoot_s38 )+                                         }+newtype T_HsTokensRoot_s38  = C_HsTokensRoot_s38 {+                                                 inv_HsTokensRoot_s38 :: (T_HsTokensRoot_v37 )+                                                 }+data T_HsTokensRoot_s39  = C_HsTokensRoot_s39+type T_HsTokensRoot_v37  = (T_HsTokensRoot_vIn37 ) -> (T_HsTokensRoot_vOut37 )+data T_HsTokensRoot_vIn37  = T_HsTokensRoot_vIn37 (Options)+data T_HsTokensRoot_vOut37  = T_HsTokensRoot_vOut37 +{-# NOINLINE sem_HsTokensRoot_HsTokensRoot #-}+sem_HsTokensRoot_HsTokensRoot :: T_HsTokens  -> T_HsTokensRoot +sem_HsTokensRoot_HsTokensRoot arg_tokens_ = T_HsTokensRoot (return st38) where+   {-# NOINLINE st38 #-}+   st38 = let+      v37 :: T_HsTokensRoot_v37 +      v37 = \ (T_HsTokensRoot_vIn37 _lhsIoptions) -> ( let+         _tokensX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tokens_))+         (T_HsTokens_vOut34 _tokensItks) = inv_HsTokens_s35 _tokensX35 (T_HsTokens_vIn34 _tokensOoptions)+         _tokensOoptions = rule578 _lhsIoptions+         __result_ = T_HsTokensRoot_vOut37 +         in __result_ )+     in C_HsTokensRoot_s38 v37+   {-# INLINE rule578 #-}+   rule578 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions++-- Pattern -----------------------------------------------------+-- wrapper+data Inh_Pattern  = Inh_Pattern { allInhmap_Inh_Pattern :: (Map NontermIdent Attributes), allSynmap_Inh_Pattern :: (Map NontermIdent Attributes), anyLazyKind_Inh_Pattern :: (Bool), inhmap_Inh_Pattern :: (Attributes), localAttrTypes_Inh_Pattern :: (Map Identifier Type), options_Inh_Pattern :: (Options), synmap_Inh_Pattern :: (Attributes) }+data Syn_Pattern  = Syn_Pattern { attrTypes_Syn_Pattern :: (PP_Doc), attrs_Syn_Pattern :: (Set String), copy_Syn_Pattern :: (Pattern), isUnderscore_Syn_Pattern :: (Bool), sem_lhs_Syn_Pattern :: ( PP_Doc ) }+{-# INLINABLE wrap_Pattern #-}+wrap_Pattern :: T_Pattern  -> Inh_Pattern  -> (Syn_Pattern )+wrap_Pattern (T_Pattern act) (Inh_Pattern _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg40 = T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap+        (T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs) <- return (inv_Pattern_s41 sem arg40)+        return (Syn_Pattern _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs)+   )++-- cata+{-# NOINLINE sem_Pattern #-}+sem_Pattern :: Pattern  -> T_Pattern +sem_Pattern ( Constr name_ pats_ ) = sem_Pattern_Constr name_ ( sem_Patterns pats_ )+sem_Pattern ( Product pos_ pats_ ) = sem_Pattern_Product pos_ ( sem_Patterns pats_ )+sem_Pattern ( Alias field_ attr_ pat_ ) = sem_Pattern_Alias field_ attr_ ( sem_Pattern pat_ )+sem_Pattern ( Irrefutable pat_ ) = sem_Pattern_Irrefutable ( sem_Pattern pat_ )+sem_Pattern ( Underscore pos_ ) = sem_Pattern_Underscore pos_++-- semantic domain+newtype T_Pattern  = T_Pattern {+                               attach_T_Pattern :: Identity (T_Pattern_s41 )+                               }+newtype T_Pattern_s41  = C_Pattern_s41 {+                                       inv_Pattern_s41 :: (T_Pattern_v40 )+                                       }+data T_Pattern_s42  = C_Pattern_s42+type T_Pattern_v40  = (T_Pattern_vIn40 ) -> (T_Pattern_vOut40 )+data T_Pattern_vIn40  = T_Pattern_vIn40 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)+data T_Pattern_vOut40  = T_Pattern_vOut40 (PP_Doc) (Set String) (Pattern) (Bool) ( PP_Doc )+{-# NOINLINE sem_Pattern_Constr #-}+sem_Pattern_Constr :: (ConstructorIdent) -> T_Patterns  -> T_Pattern +sem_Pattern_Constr arg_name_ arg_pats_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))+         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule579 _addbang1 _patsIsem_lhs arg_name_+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule580  ()+         _addbang = rule581 _lhsIoptions+         _addbang1 = rule582 _addbang _lhsIanyLazyKind+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule583 _patsIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule584 _patsIattrs+         _copy = rule585 _patsIcopy arg_name_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule586 _copy+         _patsOallInhmap = rule587 _lhsIallInhmap+         _patsOallSynmap = rule588 _lhsIallSynmap+         _patsOanyLazyKind = rule589 _lhsIanyLazyKind+         _patsOinhmap = rule590 _lhsIinhmap+         _patsOlocalAttrTypes = rule591 _lhsIlocalAttrTypes+         _patsOoptions = rule592 _lhsIoptions+         _patsOsynmap = rule593 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule579 #-}+   {-# LINE 1134 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule579 = \ _addbang1 ((_patsIsem_lhs) :: [PP_Doc]) name_ ->+                                  {-# LINE 1134 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  _addbang1     $ pp_parens $ name_ >#< hv_sp _patsIsem_lhs+                                  {-# LINE 4654 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule580 #-}+   {-# LINE 1141 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule580 = \  (_ :: ()) ->+                                    {-# LINE 1141 "src-ag/ExecutionPlan2Clean.ag" #-}+                                    False+                                    {-# LINE 4660 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule581 #-}+   {-# LINE 1571 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule581 = \ ((_lhsIoptions) :: Options) ->+                                                     {-# LINE 1571 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                     {-# LINE 4666 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule582 #-}+   {-# LINE 1576 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule582 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->+                                                     {-# LINE 1576 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                     if _lhsIanyLazyKind then id else _addbang+                                                     {-# LINE 4672 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule583 #-}+   rule583 = \ ((_patsIattrTypes) :: PP_Doc) ->+     _patsIattrTypes+   {-# INLINE rule584 #-}+   rule584 = \ ((_patsIattrs) :: Set String) ->+     _patsIattrs+   {-# INLINE rule585 #-}+   rule585 = \ ((_patsIcopy) :: Patterns) name_ ->+     Constr name_ _patsIcopy+   {-# INLINE rule586 #-}+   rule586 = \ _copy ->+     _copy+   {-# INLINE rule587 #-}+   rule587 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule588 #-}+   rule588 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule589 #-}+   rule589 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule590 #-}+   rule590 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule591 #-}+   rule591 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule592 #-}+   rule592 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule593 #-}+   rule593 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Product #-}+sem_Pattern_Product :: (Pos) -> T_Patterns  -> T_Pattern +sem_Pattern_Product arg_pos_ arg_pats_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))+         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule594 _addbang1 _patsIsem_lhs+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule595  ()+         _addbang = rule596 _lhsIoptions+         _addbang1 = rule597 _addbang _lhsIanyLazyKind+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule598 _patsIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule599 _patsIattrs+         _copy = rule600 _patsIcopy arg_pos_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule601 _copy+         _patsOallInhmap = rule602 _lhsIallInhmap+         _patsOallSynmap = rule603 _lhsIallSynmap+         _patsOanyLazyKind = rule604 _lhsIanyLazyKind+         _patsOinhmap = rule605 _lhsIinhmap+         _patsOlocalAttrTypes = rule606 _lhsIlocalAttrTypes+         _patsOoptions = rule607 _lhsIoptions+         _patsOsynmap = rule608 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule594 #-}+   {-# LINE 1133 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule594 = \ _addbang1 ((_patsIsem_lhs) :: [PP_Doc]) ->+                                  {-# LINE 1133 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  _addbang1     $ pp_block "(" ")" "," _patsIsem_lhs+                                  {-# LINE 4743 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule595 #-}+   {-# LINE 1142 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule595 = \  (_ :: ()) ->+                                    {-# LINE 1142 "src-ag/ExecutionPlan2Clean.ag" #-}+                                    False+                                    {-# LINE 4749 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule596 #-}+   {-# LINE 1571 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule596 = \ ((_lhsIoptions) :: Options) ->+                                                     {-# LINE 1571 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                     {-# LINE 4755 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule597 #-}+   {-# LINE 1576 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule597 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->+                                                     {-# LINE 1576 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                     if _lhsIanyLazyKind then id else _addbang+                                                     {-# LINE 4761 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule598 #-}+   rule598 = \ ((_patsIattrTypes) :: PP_Doc) ->+     _patsIattrTypes+   {-# INLINE rule599 #-}+   rule599 = \ ((_patsIattrs) :: Set String) ->+     _patsIattrs+   {-# INLINE rule600 #-}+   rule600 = \ ((_patsIcopy) :: Patterns) pos_ ->+     Product pos_ _patsIcopy+   {-# INLINE rule601 #-}+   rule601 = \ _copy ->+     _copy+   {-# INLINE rule602 #-}+   rule602 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule603 #-}+   rule603 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule604 #-}+   rule604 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule605 #-}+   rule605 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule606 #-}+   rule606 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule607 #-}+   rule607 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule608 #-}+   rule608 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Alias #-}+sem_Pattern_Alias :: (Identifier) -> (Identifier) -> T_Pattern  -> T_Pattern +sem_Pattern_Alias arg_field_ arg_attr_ arg_pat_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))+         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)+         _varPat = rule609 _lhsIoptions arg_attr_ arg_field_+         _patExpr = rule610 _patIisUnderscore _patIsem_lhs _varPat+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule611 _addbang1 _patExpr+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule612  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule613 _lhsIoptions _patIattrs arg_attr_ arg_field_+         _mbTp = rule614 _lhsIlocalAttrTypes _lhsIsynmap arg_attr_ arg_field_+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule615  ()+         _addbang = rule616 _lhsIoptions+         _addbang1 = rule617 _addbang _lhsIanyLazyKind+         _copy = rule618 _patIcopy arg_attr_ arg_field_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule619 _copy+         _patOallInhmap = rule620 _lhsIallInhmap+         _patOallSynmap = rule621 _lhsIallSynmap+         _patOanyLazyKind = rule622 _lhsIanyLazyKind+         _patOinhmap = rule623 _lhsIinhmap+         _patOlocalAttrTypes = rule624 _lhsIlocalAttrTypes+         _patOoptions = rule625 _lhsIoptions+         _patOsynmap = rule626 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule609 #-}+   {-# LINE 1128 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule609 = \ ((_lhsIoptions) :: Options) attr_ field_ ->+                                  {-# LINE 1128 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  text $ attrname _lhsIoptions False field_ attr_+                                  {-# LINE 4835 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule610 #-}+   {-# LINE 1129 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule610 = \ ((_patIisUnderscore) :: Bool) ((_patIsem_lhs) ::  PP_Doc ) _varPat ->+                                  {-# LINE 1129 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  if _patIisUnderscore+                                  then _varPat+                                  else _varPat     >|< "@" >|< _patIsem_lhs+                                  {-# LINE 4843 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule611 #-}+   {-# LINE 1132 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule611 = \ _addbang1 _patExpr ->+                                  {-# LINE 1132 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  _addbang1     _patExpr+                                  {-# LINE 4849 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule612 #-}+   {-# LINE 1143 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule612 = \  (_ :: ()) ->+                                    {-# LINE 1143 "src-ag/ExecutionPlan2Clean.ag" #-}+                                    False+                                    {-# LINE 4855 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule613 #-}+   {-# LINE 1149 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule613 = \ ((_lhsIoptions) :: Options) ((_patIattrs) :: Set String) attr_ field_ ->+                    {-# LINE 1149 "src-ag/ExecutionPlan2Clean.ag" #-}+                    Set.insert (attrname _lhsIoptions False field_ attr_) _patIattrs+                    {-# LINE 4861 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule614 #-}+   {-# LINE 1154 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule614 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIsynmap) :: Attributes) attr_ field_ ->+                    {-# LINE 1154 "src-ag/ExecutionPlan2Clean.ag" #-}+                    if field_ == _LHS+                    then Map.lookup attr_ _lhsIsynmap+                    else if field_ == _LOC+                         then Map.lookup attr_ _lhsIlocalAttrTypes+                         else Nothing+                    {-# LINE 4871 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule615 #-}+   {-# LINE 1159 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule615 = \  (_ :: ()) ->+                    {-# LINE 1159 "src-ag/ExecutionPlan2Clean.ag" #-}+                    empty+                    {-# LINE 4877 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule616 #-}+   {-# LINE 1571 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule616 = \ ((_lhsIoptions) :: Options) ->+                                                     {-# LINE 1571 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                     {-# LINE 4883 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule617 #-}+   {-# LINE 1576 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule617 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->+                                                     {-# LINE 1576 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                     if _lhsIanyLazyKind then id else _addbang+                                                     {-# LINE 4889 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule618 #-}+   rule618 = \ ((_patIcopy) :: Pattern) attr_ field_ ->+     Alias field_ attr_ _patIcopy+   {-# INLINE rule619 #-}+   rule619 = \ _copy ->+     _copy+   {-# INLINE rule620 #-}+   rule620 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule621 #-}+   rule621 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule622 #-}+   rule622 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule623 #-}+   rule623 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule624 #-}+   rule624 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule625 #-}+   rule625 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule626 #-}+   rule626 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Irrefutable #-}+sem_Pattern_Irrefutable :: T_Pattern  -> T_Pattern +sem_Pattern_Irrefutable arg_pat_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))+         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule627 _patIsem_lhs+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule628 _patIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule629 _patIattrs+         _copy = rule630 _patIcopy+         _lhsOcopy :: Pattern+         _lhsOcopy = rule631 _copy+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule632 _patIisUnderscore+         _patOallInhmap = rule633 _lhsIallInhmap+         _patOallSynmap = rule634 _lhsIallSynmap+         _patOanyLazyKind = rule635 _lhsIanyLazyKind+         _patOinhmap = rule636 _lhsIinhmap+         _patOlocalAttrTypes = rule637 _lhsIlocalAttrTypes+         _patOoptions = rule638 _lhsIoptions+         _patOsynmap = rule639 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule627 #-}+   {-# LINE 1136 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule627 = \ ((_patIsem_lhs) ::  PP_Doc ) ->+                                  {-# LINE 1136 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  text "~" >|< pp_parens _patIsem_lhs+                                  {-# LINE 4952 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule628 #-}+   rule628 = \ ((_patIattrTypes) :: PP_Doc) ->+     _patIattrTypes+   {-# INLINE rule629 #-}+   rule629 = \ ((_patIattrs) :: Set String) ->+     _patIattrs+   {-# INLINE rule630 #-}+   rule630 = \ ((_patIcopy) :: Pattern) ->+     Irrefutable _patIcopy+   {-# INLINE rule631 #-}+   rule631 = \ _copy ->+     _copy+   {-# INLINE rule632 #-}+   rule632 = \ ((_patIisUnderscore) :: Bool) ->+     _patIisUnderscore+   {-# INLINE rule633 #-}+   rule633 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule634 #-}+   rule634 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule635 #-}+   rule635 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule636 #-}+   rule636 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule637 #-}+   rule637 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule638 #-}+   rule638 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule639 #-}+   rule639 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Underscore #-}+sem_Pattern_Underscore :: (Pos) -> T_Pattern +sem_Pattern_Underscore arg_pos_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule640  ()+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule641  ()+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule642  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule643  ()+         _copy = rule644 arg_pos_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule645 _copy+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule640 #-}+   {-# LINE 1135 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule640 = \  (_ :: ()) ->+                                  {-# LINE 1135 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  text "_"+                                  {-# LINE 5015 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule641 #-}+   {-# LINE 1144 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule641 = \  (_ :: ()) ->+                                    {-# LINE 1144 "src-ag/ExecutionPlan2Clean.ag" #-}+                                    True+                                    {-# LINE 5021 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule642 #-}+   rule642 = \  (_ :: ()) ->+     empty+   {-# INLINE rule643 #-}+   rule643 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule644 #-}+   rule644 = \ pos_ ->+     Underscore pos_+   {-# INLINE rule645 #-}+   rule645 = \ _copy ->+     _copy++-- Patterns ----------------------------------------------------+-- wrapper+data Inh_Patterns  = Inh_Patterns { allInhmap_Inh_Patterns :: (Map NontermIdent Attributes), allSynmap_Inh_Patterns :: (Map NontermIdent Attributes), anyLazyKind_Inh_Patterns :: (Bool), inhmap_Inh_Patterns :: (Attributes), localAttrTypes_Inh_Patterns :: (Map Identifier Type), options_Inh_Patterns :: (Options), synmap_Inh_Patterns :: (Attributes) }+data Syn_Patterns  = Syn_Patterns { attrTypes_Syn_Patterns :: (PP_Doc), attrs_Syn_Patterns :: (Set String), copy_Syn_Patterns :: (Patterns), sem_lhs_Syn_Patterns :: ([PP_Doc]) }+{-# INLINABLE wrap_Patterns #-}+wrap_Patterns :: T_Patterns  -> Inh_Patterns  -> (Syn_Patterns )+wrap_Patterns (T_Patterns act) (Inh_Patterns _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg43 = T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap+        (T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs) <- return (inv_Patterns_s44 sem arg43)+        return (Syn_Patterns _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs)+   )++-- cata+{-# NOINLINE sem_Patterns #-}+sem_Patterns :: Patterns  -> T_Patterns +sem_Patterns list = Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list)++-- semantic domain+newtype T_Patterns  = T_Patterns {+                                 attach_T_Patterns :: Identity (T_Patterns_s44 )+                                 }+newtype T_Patterns_s44  = C_Patterns_s44 {+                                         inv_Patterns_s44 :: (T_Patterns_v43 )+                                         }+data T_Patterns_s45  = C_Patterns_s45+type T_Patterns_v43  = (T_Patterns_vIn43 ) -> (T_Patterns_vOut43 )+data T_Patterns_vIn43  = T_Patterns_vIn43 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)+data T_Patterns_vOut43  = T_Patterns_vOut43 (PP_Doc) (Set String) (Patterns) ([PP_Doc])+{-# NOINLINE sem_Patterns_Cons #-}+sem_Patterns_Cons :: T_Pattern  -> T_Patterns  -> T_Patterns +sem_Patterns_Cons arg_hd_ arg_tl_ = T_Patterns (return st44) where+   {-# NOINLINE st44 #-}+   st44 = let+      v43 :: T_Patterns_v43 +      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _hdX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_hd_))+         _tlX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_tl_))+         (T_Pattern_vOut40 _hdIattrTypes _hdIattrs _hdIcopy _hdIisUnderscore _hdIsem_lhs) = inv_Pattern_s41 _hdX41 (T_Pattern_vIn40 _hdOallInhmap _hdOallSynmap _hdOanyLazyKind _hdOinhmap _hdOlocalAttrTypes _hdOoptions _hdOsynmap)+         (T_Patterns_vOut43 _tlIattrTypes _tlIattrs _tlIcopy _tlIsem_lhs) = inv_Patterns_s44 _tlX44 (T_Patterns_vIn43 _tlOallInhmap _tlOallSynmap _tlOanyLazyKind _tlOinhmap _tlOlocalAttrTypes _tlOoptions _tlOsynmap)+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule646 _hdIattrTypes _tlIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule647 _hdIattrs _tlIattrs+         _lhsOsem_lhs :: [PP_Doc]+         _lhsOsem_lhs = rule648 _hdIsem_lhs _tlIsem_lhs+         _copy = rule649 _hdIcopy _tlIcopy+         _lhsOcopy :: Patterns+         _lhsOcopy = rule650 _copy+         _hdOallInhmap = rule651 _lhsIallInhmap+         _hdOallSynmap = rule652 _lhsIallSynmap+         _hdOanyLazyKind = rule653 _lhsIanyLazyKind+         _hdOinhmap = rule654 _lhsIinhmap+         _hdOlocalAttrTypes = rule655 _lhsIlocalAttrTypes+         _hdOoptions = rule656 _lhsIoptions+         _hdOsynmap = rule657 _lhsIsynmap+         _tlOallInhmap = rule658 _lhsIallInhmap+         _tlOallSynmap = rule659 _lhsIallSynmap+         _tlOanyLazyKind = rule660 _lhsIanyLazyKind+         _tlOinhmap = rule661 _lhsIinhmap+         _tlOlocalAttrTypes = rule662 _lhsIlocalAttrTypes+         _tlOoptions = rule663 _lhsIoptions+         _tlOsynmap = rule664 _lhsIsynmap+         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs+         in __result_ )+     in C_Patterns_s44 v43+   {-# INLINE rule646 #-}+   rule646 = \ ((_hdIattrTypes) :: PP_Doc) ((_tlIattrTypes) :: PP_Doc) ->+     _hdIattrTypes >-< _tlIattrTypes+   {-# INLINE rule647 #-}+   rule647 = \ ((_hdIattrs) :: Set String) ((_tlIattrs) :: Set String) ->+     _hdIattrs `Set.union` _tlIattrs+   {-# INLINE rule648 #-}+   rule648 = \ ((_hdIsem_lhs) ::  PP_Doc ) ((_tlIsem_lhs) :: [PP_Doc]) ->+     _hdIsem_lhs : _tlIsem_lhs+   {-# INLINE rule649 #-}+   rule649 = \ ((_hdIcopy) :: Pattern) ((_tlIcopy) :: Patterns) ->+     (:) _hdIcopy _tlIcopy+   {-# INLINE rule650 #-}+   rule650 = \ _copy ->+     _copy+   {-# INLINE rule651 #-}+   rule651 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule652 #-}+   rule652 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule653 #-}+   rule653 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule654 #-}+   rule654 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule655 #-}+   rule655 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule656 #-}+   rule656 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule657 #-}+   rule657 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule658 #-}+   rule658 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule659 #-}+   rule659 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule660 #-}+   rule660 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule661 #-}+   rule661 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule662 #-}+   rule662 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule663 #-}+   rule663 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule664 #-}+   rule664 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Patterns_Nil #-}+sem_Patterns_Nil ::  T_Patterns +sem_Patterns_Nil  = T_Patterns (return st44) where+   {-# NOINLINE st44 #-}+   st44 = let+      v43 :: T_Patterns_v43 +      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule665  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule666  ()+         _lhsOsem_lhs :: [PP_Doc]+         _lhsOsem_lhs = rule667  ()+         _copy = rule668  ()+         _lhsOcopy :: Patterns+         _lhsOcopy = rule669 _copy+         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs+         in __result_ )+     in C_Patterns_s44 v43+   {-# INLINE rule665 #-}+   rule665 = \  (_ :: ()) ->+     empty+   {-# INLINE rule666 #-}+   rule666 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule667 #-}+   rule667 = \  (_ :: ()) ->+     []+   {-# INLINE rule668 #-}+   rule668 = \  (_ :: ()) ->+     []+   {-# INLINE rule669 #-}+   rule669 = \ _copy ->+     _copy++-- Visit -------------------------------------------------------+-- wrapper+data Inh_Visit  = Inh_Visit { allFromToStates_Inh_Visit :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visit :: (Map NontermIdent Attributes), allInitStates_Inh_Visit :: (Map NontermIdent Int), allSynmap_Inh_Visit :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visit :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visit :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allintramap_Inh_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visit :: (Map Identifier Type), childintros_Inh_Visit :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visit :: (ConstructorIdent), inhmap_Inh_Visit :: (Attributes), mrules_Inh_Visit :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), nextVisits_Inh_Visit :: (Map StateIdentifier StateCtx), nt_Inh_Visit :: (NontermIdent), options_Inh_Visit :: (Options), params_Inh_Visit :: ([Identifier]), prevVisits_Inh_Visit :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visit :: (Map Identifier (Set String)), ruleuses_Inh_Visit :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visit :: (Attributes), terminaldefs_Inh_Visit :: (Set String) }+data Syn_Visit  = Syn_Visit { allvisits_Syn_Visit :: ( VisitStateState ), childvisit_Syn_Visit :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_Visit :: (Seq Error), fromToStates_Syn_Visit :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visit :: (Set String), ruleKinds_Syn_Visit :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visit :: (Map Identifier Int), sem_visit_Syn_Visit :: (  (StateIdentifier,Bool -> PP_Doc)  ), t_visits_Syn_Visit :: (PP_Doc), usedArgs_Syn_Visit :: (Set String), visitKinds_Syn_Visit :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visit :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visit :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_Visit #-}+wrap_Visit :: T_Visit  -> Inh_Visit  -> (Syn_Visit )+wrap_Visit (T_Visit act) (Inh_Visit _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg46 = T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs+        (T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visit_s47 sem arg46)+        return (Syn_Visit _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_Visit #-}+sem_Visit :: Visit  -> T_Visit +sem_Visit ( Visit ident_ from_ to_ inh_ syn_ steps_ kind_ ) = sem_Visit_Visit ident_ from_ to_ inh_ syn_ ( sem_VisitSteps steps_ ) kind_++-- semantic domain+newtype T_Visit  = T_Visit {+                           attach_T_Visit :: Identity (T_Visit_s47 )+                           }+newtype T_Visit_s47  = C_Visit_s47 {+                                   inv_Visit_s47 :: (T_Visit_v46 )+                                   }+data T_Visit_s48  = C_Visit_s48+type T_Visit_v46  = (T_Visit_vIn46 ) -> (T_Visit_vOut46 )+data T_Visit_vIn46  = T_Visit_vIn46 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (ConstructorIdent) (Attributes) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map StateIdentifier StateCtx) (NontermIdent) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Attributes) (Set String)+data T_Visit_vOut46  = T_Visit_vOut46 ( VisitStateState ) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (  (StateIdentifier,Bool -> PP_Doc)  ) (PP_Doc) (Set String) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_Visit_Visit #-}+sem_Visit_Visit :: (VisitIdentifier) -> (StateIdentifier) -> (StateIdentifier) -> (Set Identifier) -> (Set Identifier) -> T_VisitSteps  -> (VisitKind) -> T_Visit +sem_Visit_Visit arg_ident_ arg_from_ arg_to_ arg_inh_ arg_syn_ arg_steps_ arg_kind_ = T_Visit (return st47) where+   {-# NOINLINE st47 #-}+   st47 = let+      v46 :: T_Visit_v46 +      v46 = \ (T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOruledefs _stepsOruleuses)+         _lhsOallvisits ::  VisitStateState +         _lhsOallvisits = rule670 arg_from_ arg_ident_ arg_to_+         _nameT_visit = rule671 _lhsInt arg_ident_+         _nameTIn_visit = rule672 _lhsInt arg_ident_+         _nameTOut_visit = rule673 _lhsInt arg_ident_+         _nameTNext_visit = rule674 _lhsInt arg_to_+         _nextVisitInfo = rule675 _lhsInextVisits arg_to_+         _typecon = rule676 _lhsIoptions arg_kind_+         _t_params = rule677 _lhsIparams+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule678 _addbang1 _inhpart _lhsIoptions _nameTIn_visit _nameTNext_visit _nameTOut_visit _nameT_visit _nextVisitInfo _synpart _t_params _typecon+         _inhpart = rule679 _lhsIinhmap _ppTypeList arg_inh_+         _synpart = rule680 _lhsIsynmap _ppTypeList arg_syn_+         _ppTypeList = rule681 _addbang1+         _lhsOsem_visit ::   (StateIdentifier,Bool -> PP_Doc)  +         _lhsOsem_visit = rule682 _addbang _inhpats _lhsIoptions _nameTIn_visit _stepsClosing _stepsInitial _stepsIsem_steps arg_from_ arg_ident_+         _stepsInitial = rule683 arg_kind_+         _stepsClosing = rule684 _addbang _nextStBuild _resultval arg_kind_+         _vname = rule685 arg_ident_+         _inhpats = rule686 _lhsIoptions arg_inh_+         _inhargs = rule687 _lhsIoptions arg_inh_+         _synargs = rule688 _lhsIoptions arg_syn_+         _nextargsMp = rule689 _lhsIallintramap arg_to_+         _nextargs = rule690 _nextargsMp+         _nextst = rule691 _lhsIoptions _nextargs _nextargsMp arg_to_+         _resultval = rule692 _nameTOut_visit _nextStRef _synargs+         (_nextStBuild,_nextStRef) = rule693 _addbang _nextVisitInfo _nextst+         _stepsOkind = rule694 arg_kind_+         _stepsOfmtMode = rule695 arg_kind_+         _stepsOindex = rule696  ()+         _prevVisitInfo = rule697 _lhsInextVisits arg_from_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule698 _invokecode arg_ident_+         _invokecode = rule699 _addbang _inhargs _lhsInt _lhsIoptions _nameTIn_visit _nameTOut_visit _nextVisitInfo _prevVisitInfo arg_from_ arg_ident_ arg_kind_ arg_syn_ arg_to_+         _thisintra = rule700 _defsAsMap _nextintra _uses+         _lhsOintramap :: Map StateIdentifier (Map String (Maybe NonLocalAttr))+         _lhsOintramap = rule701 _thisintra arg_from_+         _nextintra = rule702 _lhsIallintramap arg_to_+         _uses = rule703 _lhsIoptions _stepsIuses arg_syn_+         _inhVarNms = rule704 _lhsIoptions arg_inh_+         _defs = rule705 _inhVarNms _lhsIterminaldefs _stepsIdefs+         _defsAsMap = rule706 _defs+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule707 arg_ident_ arg_syn_+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule708 arg_ident_ arg_inh_+         _lazyIntrasInh = rule709 _inhVarNms _stepsIdefs arg_kind_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule710 _lazyIntrasInh _stepsIlazyIntras+         _addbang = rule711 _lhsIoptions+         _addbang1 = rule712 _addbang arg_kind_+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule713 arg_from_ arg_ident_ arg_to_+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule714 arg_ident_ arg_kind_+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule715 _stepsIerrors+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule716 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule717 _stepsIruleUsage+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule718 _stepsIusedArgs+         _stepsOallFromToStates = rule719 _lhsIallFromToStates+         _stepsOallInitStates = rule720 _lhsIallInitStates+         _stepsOallVisitKinds = rule721 _lhsIallVisitKinds+         _stepsOallchildvisit = rule722 _lhsIallchildvisit+         _stepsOavisitdefs = rule723 _lhsIavisitdefs+         _stepsOavisituses = rule724 _lhsIavisituses+         _stepsOchildTypes = rule725 _lhsIchildTypes+         _stepsOchildintros = rule726 _lhsIchildintros+         _stepsOmrules = rule727 _lhsImrules+         _stepsOoptions = rule728 _lhsIoptions+         _stepsOruledefs = rule729 _lhsIruledefs+         _stepsOruleuses = rule730 _lhsIruleuses+         __result_ = T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_Visit_s47 v46+   {-# INLINE rule670 #-}+   {-# LINE 382 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule670 = \ from_ ident_ to_ ->+                            {-# LINE 382 "src-ag/ExecutionPlan2Clean.ag" #-}+                            (ident_, from_, to_)+                            {-# LINE 5316 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule671 #-}+   {-# LINE 453 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule671 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                                  {-# LINE 453 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  conNmTVisit _lhsInt ident_+                                  {-# LINE 5322 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule672 #-}+   {-# LINE 454 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule672 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                                  {-# LINE 454 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  conNmTVisitIn _lhsInt ident_+                                  {-# LINE 5328 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule673 #-}+   {-# LINE 455 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule673 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                                  {-# LINE 455 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  conNmTVisitOut _lhsInt ident_+                                  {-# LINE 5334 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule674 #-}+   {-# LINE 456 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule674 = \ ((_lhsInt) :: NontermIdent) to_ ->+                                  {-# LINE 456 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  conNmTNextVisit _lhsInt to_+                                  {-# LINE 5340 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule675 #-}+   {-# LINE 458 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule675 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) to_ ->+                                  {-# LINE 458 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  Map.findWithDefault ManyVis to_ _lhsInextVisits+                                  {-# LINE 5346 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule676 #-}+   {-# LINE 459 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule676 = \ ((_lhsIoptions) :: Options) kind_ ->+                                  {-# LINE 459 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  case kind_ of+                                    VisitPure _  -> empty+                                    VisitMonadic -> ppMonadType _lhsIoptions+                                  {-# LINE 5354 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule677 #-}+   {-# LINE 463 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule677 = \ ((_lhsIparams) :: [Identifier]) ->+                            {-# LINE 463 "src-ag/ExecutionPlan2Clean.ag" #-}+                            ppSpaced _lhsIparams+                            {-# LINE 5360 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule678 #-}+   {-# LINE 464 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule678 = \ _addbang1 _inhpart ((_lhsIoptions) :: Options) _nameTIn_visit _nameTNext_visit _nameTOut_visit _nameT_visit _nextVisitInfo _synpart _t_params _typecon ->+                           {-# LINE 464 "src-ag/ExecutionPlan2Clean.ag" #-}+                           "::" >#< _nameT_visit     >#< _t_params     >#< ":==" >#<+                             pp_parens (_nameTIn_visit     >#< _t_params    )+                               >#< ( if dummyTokenVisit _lhsIoptions+                                     then "->" >#< dummyType _lhsIoptions True+                                     else empty+                                   )+                               >#< "->" >#< _typecon     >#< pp_parens (_nameTOut_visit     >#< _t_params    )+                           >-< "::" >#< _nameTIn_visit     >#< _t_params     >#< "=" >#< _nameTIn_visit     >#<+                                _inhpart+                           >-< "::" >#< _nameTOut_visit     >#< _t_params     >#< "=" >#< _nameTOut_visit     >#<+                                _synpart     >#< case _nextVisitInfo     of+                                                   NoneVis    -> empty+                                                   _          -> _addbang1     $ pp_parens (_nameTNext_visit     >#< _t_params    )+                           {-# LINE 5378 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule679 #-}+   {-# LINE 478 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule679 = \ ((_lhsIinhmap) :: Attributes) _ppTypeList inh_ ->+                            {-# LINE 478 "src-ag/ExecutionPlan2Clean.ag" #-}+                            _ppTypeList     inh_ _lhsIinhmap+                            {-# LINE 5384 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule680 #-}+   {-# LINE 479 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule680 = \ ((_lhsIsynmap) :: Attributes) _ppTypeList syn_ ->+                            {-# LINE 479 "src-ag/ExecutionPlan2Clean.ag" #-}+                            _ppTypeList     syn_ _lhsIsynmap+                            {-# LINE 5390 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule681 #-}+   {-# LINE 480 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule681 = \ _addbang1 ->+                             {-# LINE 480 "src-ag/ExecutionPlan2Clean.ag" #-}+                             \s m -> ppSpaced $ map (\i -> _addbang1     $ pp_parens $ case Map.lookup i m of+                                                                                        Just tp -> ppTp tp ) $ Set.toList s+                             {-# LINE 5397 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule682 #-}+   {-# LINE 773 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule682 = \ _addbang _inhpats ((_lhsIoptions) :: Options) _nameTIn_visit _stepsClosing _stepsInitial ((_stepsIsem_steps) :: PP_Doc) from_ ident_ ->+                            {-# LINE 773 "src-ag/ExecutionPlan2Clean.ag" #-}+                            ( from_+                            , \_ ->+                                 "v" >|< ident_ >#< (_addbang     $ pp_parens (_nameTIn_visit     >#< _inhpats    )) >#< "="+                                 >#< ( if dummyTokenVisit _lhsIoptions+                                       then pp $ dummyPat _lhsIoptions True+                                       else empty+                                     )+                                 >-< indent 10 (_stepsInitial+                                 >-< indent 4 _stepsIsem_steps) >-< indent 10 _stepsClosing+                            )+                            {-# LINE 5412 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule683 #-}+   {-# LINE 791 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule683 = \ kind_ ->+                               {-# LINE 791 "src-ag/ExecutionPlan2Clean.ag" #-}+                               case kind_ of+                                 VisitPure False -> text "let"+                                 VisitPure True  -> empty+                                 VisitMonadic    -> text "do"+                               {-# LINE 5421 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule684 #-}+   {-# LINE 795 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule684 = \ _addbang _nextStBuild _resultval kind_ ->+                                {-# LINE 795 "src-ag/ExecutionPlan2Clean.ag" #-}+                                let decls =  _nextStBuild+                                             >-<  _addbang     (pp resultValName) >#< "=" >#< _resultval+                                in case kind_ of+                                     VisitPure False -> indent 4 decls+                                                        >-< "in" >#< resultValName+                                     VisitPure True  -> "let" >#< decls+                                                        >-< indent 1 ("in" >#< resultValName)+                                     VisitMonadic    -> "let" >#< decls+                                                        >-< "lift" >#< resultValName+                                {-# LINE 5435 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule685 #-}+   {-# LINE 804 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule685 = \ ident_ ->+                            {-# LINE 804 "src-ag/ExecutionPlan2Clean.ag" #-}+                            "v" >|< ident_+                            {-# LINE 5441 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule686 #-}+   {-# LINE 805 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule686 = \ ((_lhsIoptions) :: Options) inh_ ->+                            {-# LINE 805 "src-ag/ExecutionPlan2Clean.ag" #-}+                            ppSpaced $ map (\arg -> pp $ attrname _lhsIoptions True _LHS arg) $ Set.toList inh_+                            {-# LINE 5447 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule687 #-}+   {-# LINE 806 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule687 = \ ((_lhsIoptions) :: Options) inh_ ->+                            {-# LINE 806 "src-ag/ExecutionPlan2Clean.ag" #-}+                            \chn -> ppSpaced $ map (attrname _lhsIoptions False chn) $ Set.toList inh_+                            {-# LINE 5453 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule688 #-}+   {-# LINE 807 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule688 = \ ((_lhsIoptions) :: Options) syn_ ->+                            {-# LINE 807 "src-ag/ExecutionPlan2Clean.ag" #-}+                            ppSpaced $ map (\arg -> attrname _lhsIoptions False _LHS arg) $ Set.toList syn_+                            {-# LINE 5459 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule689 #-}+   {-# LINE 808 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule689 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->+                             {-# LINE 808 "src-ag/ExecutionPlan2Clean.ag" #-}+                             maybe Map.empty id $ Map.lookup to_ _lhsIallintramap+                             {-# LINE 5465 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule690 #-}+   {-# LINE 809 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule690 = \ _nextargsMp ->+                            {-# LINE 809 "src-ag/ExecutionPlan2Clean.ag" #-}+                            ppSpaced $ Map.keys $ _nextargsMp+                            {-# LINE 5471 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule691 #-}+   {-# LINE 810 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule691 = \ ((_lhsIoptions) :: Options) _nextargs _nextargsMp to_ ->+                            {-# LINE 810 "src-ag/ExecutionPlan2Clean.ag" #-}+                            "st" >|< to_ >#< _nextargs     >#< dummyArg _lhsIoptions (Map.null _nextargsMp    )+                            {-# LINE 5477 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule692 #-}+   {-# LINE 811 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule692 = \ _nameTOut_visit _nextStRef _synargs ->+                            {-# LINE 811 "src-ag/ExecutionPlan2Clean.ag" #-}+                            _nameTOut_visit     >#< _synargs     >#< _nextStRef+                            {-# LINE 5483 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule693 #-}+   {-# LINE 813 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule693 = \ _addbang _nextVisitInfo _nextst ->+                {-# LINE 813 "src-ag/ExecutionPlan2Clean.ag" #-}+                case _nextVisitInfo     of+                  NoneVis  -> (empty, empty)+                  _        -> (_addbang     (pp nextStName) >#< "=" >#< _nextst    , pp nextStName)+                {-# LINE 5491 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule694 #-}+   {-# LINE 827 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule694 = \ kind_ ->+                                  {-# LINE 827 "src-ag/ExecutionPlan2Clean.ag" #-}+                                  kind_+                                  {-# LINE 5497 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule695 #-}+   {-# LINE 868 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule695 = \ kind_ ->+                    {-# LINE 868 "src-ag/ExecutionPlan2Clean.ag" #-}+                    case kind_ of+                      VisitPure False -> FormatLetDecl+                      VisitPure True  -> FormatLetLine+                      VisitMonadic    -> FormatDo+                    {-# LINE 5506 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule696 #-}+   {-# LINE 917 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule696 = \  (_ :: ()) ->+                                     {-# LINE 917 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     0+                                     {-# LINE 5512 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule697 #-}+   {-# LINE 1227 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule697 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) from_ ->+                           {-# LINE 1227 "src-ag/ExecutionPlan2Clean.ag" #-}+                           Map.findWithDefault ManyVis from_ _lhsInextVisits+                           {-# LINE 5518 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule698 #-}+   {-# LINE 1228 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule698 = \ _invokecode ident_ ->+                        {-# LINE 1228 "src-ag/ExecutionPlan2Clean.ag" #-}+                        Map.singleton ident_ _invokecode+                        {-# LINE 5524 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule699 #-}+   {-# LINE 1229 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule699 = \ _addbang _inhargs ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTIn_visit _nameTOut_visit _nextVisitInfo _prevVisitInfo from_ ident_ kind_ syn_ to_ ->+                        {-# LINE 1229 "src-ag/ExecutionPlan2Clean.ag" #-}+                        \chn kind ->+                          if kind `compatibleKind` kind_+                          then Right $+                            let pat | isLazyKind kind_ = pat0+                                    | otherwise        = _addbang     pat0+                                pat0  = pp_parens pat1+                                pat1  = _nameTOut_visit     >#< (ppSpaced $ map (attrname _lhsIoptions True chn) $ Set.toList syn_)+                                                            >#< cont+                                cont  = case _nextVisitInfo     of+                                          NoneVis  -> empty+                                          _        -> ch1+                                ch0   = text $ stname chn from_+                                ch1   = text $ stname chn to_+                                expr  = case (kind, kind_) of+                                          (VisitPure _,  VisitPure _)  -> expr0+                                          (VisitPure _,  VisitMonadic) -> unMon _lhsIoptions >#< expr0+                                          (VisitMonadic, VisitPure _)  -> "lift" >#< expr0+                                          (VisitMonadic, VisitMonadic) -> expr0+                                expr0 = case _prevVisitInfo     of+                                          NoneVis  -> error "error: invocation of a visit from a state that has no next visits"+                                          OneVis _ -> "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< ch0 >#< args+                                          ManyVis  -> "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< ch0+                                                      >#< "K_" >|< _lhsInt >|< "_v" >|< ident_ >#< args+                                args  = pp_parens args0 >#< args1+                                args0 = _nameTIn_visit     >#< _inhargs     chn+                                args1 | dummyTokenVisit _lhsIoptions = pp $ dummyArg _lhsIoptions True+                                      | otherwise                    = empty+                            in (pat, expr)+                          else Left $ IncompatibleVisitKind chn ident_ kind kind_+                        {-# LINE 5558 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule700 #-}+   {-# LINE 1325 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule700 = \ _defsAsMap _nextintra _uses ->+                            {-# LINE 1325 "src-ag/ExecutionPlan2Clean.ag" #-}+                            (_uses     `Map.union` _nextintra    ) `Map.difference` _defsAsMap+                            {-# LINE 5564 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule701 #-}+   {-# LINE 1326 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule701 = \ _thisintra from_ ->+                            {-# LINE 1326 "src-ag/ExecutionPlan2Clean.ag" #-}+                            Map.singleton from_ _thisintra+                            {-# LINE 5570 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule702 #-}+   {-# LINE 1327 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule702 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->+                            {-# LINE 1327 "src-ag/ExecutionPlan2Clean.ag" #-}+                            maybe Map.empty id $ Map.lookup to_ _lhsIallintramap+                            {-# LINE 5576 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule703 #-}+   {-# LINE 1328 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule703 = \ ((_lhsIoptions) :: Options) ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) syn_ ->+                            {-# LINE 1328 "src-ag/ExecutionPlan2Clean.ag" #-}+                            let mp1 = _stepsIuses+                                mp2 = Map.fromList [ (lhsname _lhsIoptions False i, Just (AttrSyn _LHS i)) | i <- Set.elems syn_ ]+                            in mp1 `Map.union` mp2+                            {-# LINE 5584 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule704 #-}+   {-# LINE 1331 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule704 = \ ((_lhsIoptions) :: Options) inh_ ->+                            {-# LINE 1331 "src-ag/ExecutionPlan2Clean.ag" #-}+                            Set.map (lhsname _lhsIoptions True) inh_+                            {-# LINE 5590 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule705 #-}+   {-# LINE 1332 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule705 = \ _inhVarNms ((_lhsIterminaldefs) :: Set String) ((_stepsIdefs) :: Set String) ->+                            {-# LINE 1332 "src-ag/ExecutionPlan2Clean.ag" #-}+                            _stepsIdefs `Set.union` _inhVarNms     `Set.union` _lhsIterminaldefs+                            {-# LINE 5596 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule706 #-}+   {-# LINE 1333 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule706 = \ _defs ->+                            {-# LINE 1333 "src-ag/ExecutionPlan2Clean.ag" #-}+                            Map.fromList [ (a, Nothing) | a <- Set.elems _defs     ]+                            {-# LINE 5602 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule707 #-}+   {-# LINE 1357 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule707 = \ ident_ syn_ ->+                            {-# LINE 1357 "src-ag/ExecutionPlan2Clean.ag" #-}+                            Map.singleton ident_ syn_+                            {-# LINE 5608 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule708 #-}+   {-# LINE 1358 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule708 = \ ident_ inh_ ->+                            {-# LINE 1358 "src-ag/ExecutionPlan2Clean.ag" #-}+                            Map.singleton ident_ inh_+                            {-# LINE 5614 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule709 #-}+   {-# LINE 1390 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule709 = \ _inhVarNms ((_stepsIdefs) :: Set String) kind_ ->+                        {-# LINE 1390 "src-ag/ExecutionPlan2Clean.ag" #-}+                        case kind_ of+                          VisitPure False -> _inhVarNms     `Set.union` _stepsIdefs+                          _               -> Set.empty+                        {-# LINE 5622 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule710 #-}+   {-# LINE 1393 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule710 = \ _lazyIntrasInh ((_stepsIlazyIntras) :: Set String) ->+                     {-# LINE 1393 "src-ag/ExecutionPlan2Clean.ag" #-}+                     _lazyIntrasInh     `Set.union` _stepsIlazyIntras+                     {-# LINE 5628 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule711 #-}+   {-# LINE 1565 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule711 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1565 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 5634 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule712 #-}+   {-# LINE 1573 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule712 = \ _addbang kind_ ->+                                                     {-# LINE 1573 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                     if isLazyKind kind_ then id else _addbang+                                                     {-# LINE 5640 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule713 #-}+   {-# LINE 1600 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule713 = \ from_ ident_ to_ ->+                       {-# LINE 1600 "src-ag/ExecutionPlan2Clean.ag" #-}+                       Map.singleton ident_ (from_, to_)+                       {-# LINE 5646 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule714 #-}+   {-# LINE 1644 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule714 = \ ident_ kind_ ->+                     {-# LINE 1644 "src-ag/ExecutionPlan2Clean.ag" #-}+                     Map.singleton ident_ kind_+                     {-# LINE 5652 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule715 #-}+   rule715 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule716 #-}+   rule716 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule717 #-}+   rule717 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule718 #-}+   rule718 = \ ((_stepsIusedArgs) :: Set String) ->+     _stepsIusedArgs+   {-# INLINE rule719 #-}+   rule719 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule720 #-}+   rule720 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule721 #-}+   rule721 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule722 #-}+   rule722 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule723 #-}+   rule723 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule724 #-}+   rule724 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule725 #-}+   rule725 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule726 #-}+   rule726 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule727 #-}+   rule727 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule728 #-}+   rule728 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule729 #-}+   rule729 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule730 #-}+   rule730 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses++-- VisitStep ---------------------------------------------------+-- wrapper+data Inh_VisitStep  = Inh_VisitStep { allFromToStates_Inh_VisitStep :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitStep :: (Map NontermIdent Int), allVisitKinds_Inh_VisitStep :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitStep :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitStep :: (Map Identifier Type), childintros_Inh_VisitStep :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), fmtMode_Inh_VisitStep :: (FormatMode), index_Inh_VisitStep :: (Int), isLast_Inh_VisitStep :: (Bool), kind_Inh_VisitStep :: (VisitKind), mrules_Inh_VisitStep :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), options_Inh_VisitStep :: (Options), ruledefs_Inh_VisitStep :: (Map Identifier (Set String)), ruleuses_Inh_VisitStep :: (Map Identifier (Map String (Maybe NonLocalAttr))) }+data Syn_VisitStep  = Syn_VisitStep { defs_Syn_VisitStep :: (Set String), errors_Syn_VisitStep :: (Seq Error), index_Syn_VisitStep :: (Int), isLast_Syn_VisitStep :: (Bool), lazyIntras_Syn_VisitStep :: (Set String), ruleKinds_Syn_VisitStep :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitStep :: (Map Identifier Int), sem_steps_Syn_VisitStep :: (PP_Doc), usedArgs_Syn_VisitStep :: (Set String), uses_Syn_VisitStep :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitStep :: (Map VisitIdentifier VisitKind) }+{-# INLINABLE wrap_VisitStep #-}+wrap_VisitStep :: T_VisitStep  -> Inh_VisitStep  -> (Syn_VisitStep )+wrap_VisitStep (T_VisitStep act) (Inh_VisitStep _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg49 = T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses+        (T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds) <- return (inv_VisitStep_s50 sem arg49)+        return (Syn_VisitStep _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds)+   )++-- cata+{-# NOINLINE sem_VisitStep #-}+sem_VisitStep :: VisitStep  -> T_VisitStep +sem_VisitStep ( Sem name_ ) = sem_VisitStep_Sem name_+sem_VisitStep ( ChildVisit child_ nonterm_ visit_ ) = sem_VisitStep_ChildVisit child_ nonterm_ visit_+sem_VisitStep ( PureGroup steps_ ordered_ ) = sem_VisitStep_PureGroup ( sem_VisitSteps steps_ ) ordered_+sem_VisitStep ( Sim steps_ ) = sem_VisitStep_Sim ( sem_VisitSteps steps_ )+sem_VisitStep ( ChildIntro child_ ) = sem_VisitStep_ChildIntro child_++-- semantic domain+newtype T_VisitStep  = T_VisitStep {+                                   attach_T_VisitStep :: Identity (T_VisitStep_s50 )+                                   }+newtype T_VisitStep_s50  = C_VisitStep_s50 {+                                           inv_VisitStep_s50 :: (T_VisitStep_v49 )+                                           }+data T_VisitStep_s51  = C_VisitStep_s51+type T_VisitStep_v49  = (T_VisitStep_vIn49 ) -> (T_VisitStep_vOut49 )+data T_VisitStep_vIn49  = T_VisitStep_vIn49 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (FormatMode) (Int) (Bool) (VisitKind) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Options) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr)))+data T_VisitStep_vOut49  = T_VisitStep_vOut49 (Set String) (Seq Error) (Int) (Bool) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Set String) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)+{-# NOINLINE sem_VisitStep_Sem #-}+sem_VisitStep_Sem :: (Identifier) -> T_VisitStep +sem_VisitStep_Sem arg_name_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let+         _ruleItf = rule731 _lhsImrules arg_name_+         _lhsOerrors :: Seq Error+         (_lhsOerrors,_sem_steps) = rule732 _lhsIfmtMode _lhsIkind _ruleItf+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule733 arg_name_+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule734 _lhsIkind arg_name_+         _lhsOdefs :: Set String+         _lhsOdefs = rule735 _lhsIruledefs arg_name_+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule736 _lhsIruleuses arg_name_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule737  ()+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule738 _sem_steps+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule739  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule740  ()+         _lhsOindex :: Int+         _lhsOindex = rule741 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule742 _lhsIisLast+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule731 #-}+   {-# LINE 836 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule731 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) name_ ->+                               {-# LINE 836 "src-ag/ExecutionPlan2Clean.ag" #-}+                               Map.findWithDefault (error $ "Rule "  ++ show name_  ++ " not found") name_ _lhsImrules+                               {-# LINE 5774 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule732 #-}+   {-# LINE 837 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule732 = \ ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) _ruleItf ->+                                               {-# LINE 837 "src-ag/ExecutionPlan2Clean.ag" #-}+                                               case _ruleItf     _lhsIkind _lhsIfmtMode of+                                                 Left e     -> (Seq.singleton e, empty)+                                                 Right stmt -> (Seq.empty, stmt)+                                               {-# LINE 5782 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule733 #-}+   {-# LINE 1278 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule733 = \ name_ ->+                                                 {-# LINE 1278 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                 Map.singleton name_ 1+                                                 {-# LINE 5788 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule734 #-}+   {-# LINE 1288 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule734 = \ ((_lhsIkind) :: VisitKind) name_ ->+                    {-# LINE 1288 "src-ag/ExecutionPlan2Clean.ag" #-}+                    Map.singleton name_ (Set.singleton _lhsIkind)+                    {-# LINE 5794 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule735 #-}+   {-# LINE 1373 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule735 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) name_ ->+                            {-# LINE 1373 "src-ag/ExecutionPlan2Clean.ag" #-}+                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruledefs+                            {-# LINE 5800 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule736 #-}+   {-# LINE 1374 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule736 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) name_ ->+                            {-# LINE 1374 "src-ag/ExecutionPlan2Clean.ag" #-}+                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruleuses+                            {-# LINE 5806 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule737 #-}+   rule737 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule738 #-}+   rule738 = \ _sem_steps ->+     _sem_steps+   {-# INLINE rule739 #-}+   rule739 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule740 #-}+   rule740 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule741 #-}+   rule741 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule742 #-}+   rule742 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast+{-# NOINLINE sem_VisitStep_ChildVisit #-}+sem_VisitStep_ChildVisit :: (Identifier) -> (NontermIdent) -> (VisitIdentifier) -> T_VisitStep +sem_VisitStep_ChildVisit arg_child_ _ arg_visit_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let+         _visitItf = rule743 _lhsIallchildvisit arg_visit_+         _lhsOerrors :: Seq Error+         (_lhsOerrors,_patPP,_exprPP) = rule744 _lhsIkind _visitItf arg_child_+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule745 _exprPP _lhsIfmtMode _lhsIkind _patPP+         _convToMonad = rule746 _callKind+         _callKind = rule747 _lhsIallVisitKinds arg_visit_+         _lhsOdefs :: Set String+         _lhsOdefs = rule748 _lhsIavisitdefs _lhsIoptions _to arg_child_ arg_visit_+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule749 _from _lhsIavisituses _lhsIoptions arg_child_ arg_visit_+         _addbang = rule750 _lhsIoptions+         (_from,_to) = rule751 _lhsIallFromToStates arg_visit_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule752  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule753  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule754  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule755  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule756  ()+         _lhsOindex :: Int+         _lhsOindex = rule757 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule758 _lhsIisLast+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule743 #-}+   {-# LINE 845 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule743 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) visit_ ->+                                {-# LINE 845 "src-ag/ExecutionPlan2Clean.ag" #-}+                                Map.findWithDefault (error $ "Visit " ++ show visit_ ++ " not found") visit_ _lhsIallchildvisit+                                {-# LINE 5867 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule744 #-}+   {-# LINE 846 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule744 = \ ((_lhsIkind) :: VisitKind) _visitItf child_ ->+                                                       {-# LINE 846 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                       case _visitItf     child_ _lhsIkind of+                                                         Left e           -> (Seq.singleton e, empty, empty)+                                                         Right (pat,expr) -> (Seq.empty, pat, expr)+                                                       {-# LINE 5875 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule745 #-}+   {-# LINE 850 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule745 = \ _exprPP ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) _patPP ->+                                 {-# LINE 850 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 let decl = case _lhsIkind of+                                              VisitPure _  -> _patPP     >#< "=" >#< _exprPP+                                              VisitMonadic -> _exprPP     >#< ">>= \\" >#< _patPP     >#< "->"+                                 in fmtDecl False _lhsIfmtMode decl+                                 {-# LINE 5884 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule746 #-}+   {-# LINE 854 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule746 = \ _callKind ->+                                   {-# LINE 854 "src-ag/ExecutionPlan2Clean.ag" #-}+                                   case _callKind     of+                                     VisitPure _  -> text "lift"+                                     VisitMonadic -> empty+                                   {-# LINE 5892 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule747 #-}+   {-# LINE 857 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule747 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) visit_ ->+                                 {-# LINE 857 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 Map.findWithDefault (error "visit kind should be in the map") visit_ _lhsIallVisitKinds+                                 {-# LINE 5898 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule748 #-}+   {-# LINE 1375 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule748 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) _to child_ visit_ ->+                            {-# LINE 1375 "src-ag/ExecutionPlan2Clean.ag" #-}+                            Set.insert (stname child_ _to) $ maybe (error "Visit not found") (Set.map $ attrname _lhsIoptions True child_) $ Map.lookup visit_ _lhsIavisitdefs+                            {-# LINE 5904 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule749 #-}+   {-# LINE 1376 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule749 = \ _from ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) child_ visit_ ->+                            {-# LINE 1376 "src-ag/ExecutionPlan2Clean.ag" #-}+                            let convert attrs = Map.fromList [ (attrname _lhsIoptions False child_ attr, Just $ mkNonLocalAttr True child_ attr) | attr <- Set.elems attrs ]+                            in Map.insert (stname child_ _from) Nothing $ convert $+                                 maybe (error "Visit not found") id $ Map.lookup visit_ _lhsIavisituses+                            {-# LINE 5912 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule750 #-}+   {-# LINE 1570 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule750 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1570 "src-ag/ExecutionPlan2Clean.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 5918 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule751 #-}+   {-# LINE 1606 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule751 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) visit_ ->+                         {-# LINE 1606 "src-ag/ExecutionPlan2Clean.ag" #-}+                         Map.findWithDefault (error "visit not in allFromToStates") visit_ _lhsIallFromToStates+                         {-# LINE 5924 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule752 #-}+   rule752 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule753 #-}+   rule753 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule754 #-}+   rule754 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule755 #-}+   rule755 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule756 #-}+   rule756 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule757 #-}+   rule757 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule758 #-}+   rule758 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast+{-# NOINLINE sem_VisitStep_PureGroup #-}+sem_VisitStep_PureGroup :: T_VisitSteps  -> (Bool) -> T_VisitStep +sem_VisitStep_PureGroup arg_steps_ arg_ordered_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOruledefs _stepsOruleuses)+         _stepsOkind = rule759 arg_ordered_+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule760 _lhsIfmtMode _stepsIsem_steps+         _stepsOfmtMode = rule761 _lhsIfmtMode+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule762 _stepsIdefs _stepsIlazyIntras arg_ordered_+         _lhsOdefs :: Set String+         _lhsOdefs = rule763 _stepsIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule764 _stepsIerrors+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule765 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule766 _stepsIruleUsage+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule767 _stepsIusedArgs+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule768 _stepsIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule769 _stepsIvisitKinds+         _lhsOindex :: Int+         _lhsOindex = rule770 _stepsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule771 _stepsIisLast+         _stepsOallFromToStates = rule772 _lhsIallFromToStates+         _stepsOallInitStates = rule773 _lhsIallInitStates+         _stepsOallVisitKinds = rule774 _lhsIallVisitKinds+         _stepsOallchildvisit = rule775 _lhsIallchildvisit+         _stepsOavisitdefs = rule776 _lhsIavisitdefs+         _stepsOavisituses = rule777 _lhsIavisituses+         _stepsOchildTypes = rule778 _lhsIchildTypes+         _stepsOchildintros = rule779 _lhsIchildintros+         _stepsOindex = rule780 _lhsIindex+         _stepsOmrules = rule781 _lhsImrules+         _stepsOoptions = rule782 _lhsIoptions+         _stepsOruledefs = rule783 _lhsIruledefs+         _stepsOruleuses = rule784 _lhsIruleuses+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule759 #-}+   {-# LINE 831 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule759 = \ ordered_ ->+                 {-# LINE 831 "src-ag/ExecutionPlan2Clean.ag" #-}+                 VisitPure ordered_+                 {-# LINE 6000 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule760 #-}+   {-# LINE 859 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule760 = \ ((_lhsIfmtMode) :: FormatMode) ((_stepsIsem_steps) :: PP_Doc) ->+                                 {-# LINE 859 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 case _lhsIfmtMode of+                                   FormatDo -> "let" >#< _stepsIsem_steps+                                   _        -> _stepsIsem_steps+                                 {-# LINE 6008 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule761 #-}+   {-# LINE 874 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule761 = \ ((_lhsIfmtMode) :: FormatMode) ->+                    {-# LINE 874 "src-ag/ExecutionPlan2Clean.ag" #-}+                    case _lhsIfmtMode of+                      FormatDo      -> FormatLetDecl+                      mode          -> mode+                    {-# LINE 6016 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule762 #-}+   {-# LINE 1396 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule762 = \ ((_stepsIdefs) :: Set String) ((_stepsIlazyIntras) :: Set String) ordered_ ->+                     {-# LINE 1396 "src-ag/ExecutionPlan2Clean.ag" #-}+                     if ordered_+                     then _stepsIlazyIntras+                     else _stepsIdefs+                     {-# LINE 6024 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule763 #-}+   rule763 = \ ((_stepsIdefs) :: Set String) ->+     _stepsIdefs+   {-# INLINE rule764 #-}+   rule764 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule765 #-}+   rule765 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule766 #-}+   rule766 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule767 #-}+   rule767 = \ ((_stepsIusedArgs) :: Set String) ->+     _stepsIusedArgs+   {-# INLINE rule768 #-}+   rule768 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->+     _stepsIuses+   {-# INLINE rule769 #-}+   rule769 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _stepsIvisitKinds+   {-# INLINE rule770 #-}+   rule770 = \ ((_stepsIindex) :: Int) ->+     _stepsIindex+   {-# INLINE rule771 #-}+   rule771 = \ ((_stepsIisLast) :: Bool) ->+     _stepsIisLast+   {-# INLINE rule772 #-}+   rule772 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule773 #-}+   rule773 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule774 #-}+   rule774 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule775 #-}+   rule775 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule776 #-}+   rule776 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule777 #-}+   rule777 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule778 #-}+   rule778 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule779 #-}+   rule779 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule780 #-}+   rule780 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule781 #-}+   rule781 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule782 #-}+   rule782 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule783 #-}+   rule783 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule784 #-}+   rule784 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+{-# NOINLINE sem_VisitStep_Sim #-}+sem_VisitStep_Sim :: T_VisitSteps  -> T_VisitStep +sem_VisitStep_Sim arg_steps_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOruledefs _stepsOruleuses)+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule785 _stepsIsem_steps+         _stepsOindex = rule786  ()+         _lhsOindex :: Int+         _lhsOindex = rule787 _lhsIindex+         _isMonadic = rule788 _lhsIkind+         _lhsOdefs :: Set String+         _lhsOdefs = rule789 _stepsIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule790 _stepsIerrors+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule791 _stepsIlazyIntras+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule792 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule793 _stepsIruleUsage+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule794 _stepsIusedArgs+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule795 _stepsIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule796 _stepsIvisitKinds+         _lhsOisLast :: Bool+         _lhsOisLast = rule797 _stepsIisLast+         _stepsOallFromToStates = rule798 _lhsIallFromToStates+         _stepsOallInitStates = rule799 _lhsIallInitStates+         _stepsOallVisitKinds = rule800 _lhsIallVisitKinds+         _stepsOallchildvisit = rule801 _lhsIallchildvisit+         _stepsOavisitdefs = rule802 _lhsIavisitdefs+         _stepsOavisituses = rule803 _lhsIavisituses+         _stepsOchildTypes = rule804 _lhsIchildTypes+         _stepsOchildintros = rule805 _lhsIchildintros+         _stepsOfmtMode = rule806 _lhsIfmtMode+         _stepsOkind = rule807 _lhsIkind+         _stepsOmrules = rule808 _lhsImrules+         _stepsOoptions = rule809 _lhsIoptions+         _stepsOruledefs = rule810 _lhsIruledefs+         _stepsOruleuses = rule811 _lhsIruleuses+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule785 #-}+   {-# LINE 858 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule785 = \ ((_stepsIsem_steps) :: PP_Doc) ->+                                 {-# LINE 858 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 _stepsIsem_steps+                                 {-# LINE 6146 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule786 #-}+   {-# LINE 918 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule786 = \  (_ :: ()) ->+                                     {-# LINE 918 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     0+                                     {-# LINE 6152 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule787 #-}+   {-# LINE 919 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule787 = \ ((_lhsIindex) :: Int) ->+                                     {-# LINE 919 "src-ag/ExecutionPlan2Clean.ag" #-}+                                     _lhsIindex+                                     {-# LINE 6158 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule788 #-}+   {-# LINE 930 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule788 = \ ((_lhsIkind) :: VisitKind) ->+                                         {-# LINE 930 "src-ag/ExecutionPlan2Clean.ag" #-}+                                         case _lhsIkind of+                                           VisitMonadic -> True+                                           _            -> False+                                         {-# LINE 6166 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule789 #-}+   rule789 = \ ((_stepsIdefs) :: Set String) ->+     _stepsIdefs+   {-# INLINE rule790 #-}+   rule790 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule791 #-}+   rule791 = \ ((_stepsIlazyIntras) :: Set String) ->+     _stepsIlazyIntras+   {-# INLINE rule792 #-}+   rule792 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule793 #-}+   rule793 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule794 #-}+   rule794 = \ ((_stepsIusedArgs) :: Set String) ->+     _stepsIusedArgs+   {-# INLINE rule795 #-}+   rule795 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->+     _stepsIuses+   {-# INLINE rule796 #-}+   rule796 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _stepsIvisitKinds+   {-# INLINE rule797 #-}+   rule797 = \ ((_stepsIisLast) :: Bool) ->+     _stepsIisLast+   {-# INLINE rule798 #-}+   rule798 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule799 #-}+   rule799 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule800 #-}+   rule800 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule801 #-}+   rule801 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule802 #-}+   rule802 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule803 #-}+   rule803 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule804 #-}+   rule804 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule805 #-}+   rule805 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule806 #-}+   rule806 = \ ((_lhsIfmtMode) :: FormatMode) ->+     _lhsIfmtMode+   {-# INLINE rule807 #-}+   rule807 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule808 #-}+   rule808 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule809 #-}+   rule809 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule810 #-}+   rule810 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule811 #-}+   rule811 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+{-# NOINLINE sem_VisitStep_ChildIntro #-}+sem_VisitStep_ChildIntro :: (Identifier) -> T_VisitStep +sem_VisitStep_ChildIntro arg_child_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let+         _attachItf = rule812 _lhsIchildintros arg_child_+         _lhsOerrors :: Seq Error+         _lhsOsem_steps :: PP_Doc+         _lhsOdefs :: Set String+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         (_lhsOerrors,_lhsOsem_steps,_lhsOdefs,_lhsOuses) = rule813 _attachItf _lhsIfmtMode _lhsIkind+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule814  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule815  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule816  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule817  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule818  ()+         _lhsOindex :: Int+         _lhsOindex = rule819 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule820 _lhsIisLast+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule812 #-}+   {-# LINE 840 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule812 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) child_ ->+                                 {-# LINE 840 "src-ag/ExecutionPlan2Clean.ag" #-}+                                 Map.findWithDefault (error $ "Child " ++ show child_ ++ " not found") child_ _lhsIchildintros+                                 {-# LINE 6271 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule813 #-}+   {-# LINE 842 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule813 = \ _attachItf ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) ->+                     {-# LINE 842 "src-ag/ExecutionPlan2Clean.ag" #-}+                     case _attachItf     _lhsIkind _lhsIfmtMode of+                       Left e                   -> (Seq.singleton e, empty, Set.empty, Map.empty)+                       Right (code, defs, uses) -> (Seq.empty, code, defs, uses)+                     {-# LINE 6279 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule814 #-}+   rule814 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule815 #-}+   rule815 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule816 #-}+   rule816 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule817 #-}+   rule817 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule818 #-}+   rule818 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule819 #-}+   rule819 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule820 #-}+   rule820 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast++-- VisitSteps --------------------------------------------------+-- wrapper+data Inh_VisitSteps  = Inh_VisitSteps { allFromToStates_Inh_VisitSteps :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitSteps :: (Map NontermIdent Int), allVisitKinds_Inh_VisitSteps :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitSteps :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitSteps :: (Map Identifier Type), childintros_Inh_VisitSteps :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), fmtMode_Inh_VisitSteps :: (FormatMode), index_Inh_VisitSteps :: (Int), kind_Inh_VisitSteps :: (VisitKind), mrules_Inh_VisitSteps :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), options_Inh_VisitSteps :: (Options), ruledefs_Inh_VisitSteps :: (Map Identifier (Set String)), ruleuses_Inh_VisitSteps :: (Map Identifier (Map String (Maybe NonLocalAttr))) }+data Syn_VisitSteps  = Syn_VisitSteps { defs_Syn_VisitSteps :: (Set String), errors_Syn_VisitSteps :: (Seq Error), index_Syn_VisitSteps :: (Int), isLast_Syn_VisitSteps :: (Bool), lazyIntras_Syn_VisitSteps :: (Set String), ruleKinds_Syn_VisitSteps :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitSteps :: (Map Identifier Int), sem_steps_Syn_VisitSteps :: (PP_Doc), size_Syn_VisitSteps :: (Int), usedArgs_Syn_VisitSteps :: (Set String), uses_Syn_VisitSteps :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitSteps :: (Map VisitIdentifier VisitKind) }+{-# INLINABLE wrap_VisitSteps #-}+wrap_VisitSteps :: T_VisitSteps  -> Inh_VisitSteps  -> (Syn_VisitSteps )+wrap_VisitSteps (T_VisitSteps act) (Inh_VisitSteps _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg52 = T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses+        (T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOusedArgs _lhsOuses _lhsOvisitKinds) <- return (inv_VisitSteps_s53 sem arg52)+        return (Syn_VisitSteps _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOusedArgs _lhsOuses _lhsOvisitKinds)+   )++-- cata+{-# NOINLINE sem_VisitSteps #-}+sem_VisitSteps :: VisitSteps  -> T_VisitSteps +sem_VisitSteps list = Prelude.foldr sem_VisitSteps_Cons sem_VisitSteps_Nil (Prelude.map sem_VisitStep list)++-- semantic domain+newtype T_VisitSteps  = T_VisitSteps {+                                     attach_T_VisitSteps :: Identity (T_VisitSteps_s53 )+                                     }+newtype T_VisitSteps_s53  = C_VisitSteps_s53 {+                                             inv_VisitSteps_s53 :: (T_VisitSteps_v52 )+                                             }+data T_VisitSteps_s54  = C_VisitSteps_s54+type T_VisitSteps_v52  = (T_VisitSteps_vIn52 ) -> (T_VisitSteps_vOut52 )+data T_VisitSteps_vIn52  = T_VisitSteps_vIn52 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (FormatMode) (Int) (VisitKind) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Options) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr)))+data T_VisitSteps_vOut52  = T_VisitSteps_vOut52 (Set String) (Seq Error) (Int) (Bool) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Int) (Set String) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)+{-# NOINLINE sem_VisitSteps_Cons #-}+sem_VisitSteps_Cons :: T_VisitStep  -> T_VisitSteps  -> T_VisitSteps +sem_VisitSteps_Cons arg_hd_ arg_tl_ = T_VisitSteps (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_VisitSteps_v52 +      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let+         _hdX50 = Control.Monad.Identity.runIdentity (attach_T_VisitStep (arg_hd_))+         _tlX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_tl_))+         (T_VisitStep_vOut49 _hdIdefs _hdIerrors _hdIindex _hdIisLast _hdIlazyIntras _hdIruleKinds _hdIruleUsage _hdIsem_steps _hdIusedArgs _hdIuses _hdIvisitKinds) = inv_VisitStep_s50 _hdX50 (T_VisitStep_vIn49 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOchildTypes _hdOchildintros _hdOfmtMode _hdOindex _hdOisLast _hdOkind _hdOmrules _hdOoptions _hdOruledefs _hdOruleuses)+         (T_VisitSteps_vOut52 _tlIdefs _tlIerrors _tlIindex _tlIisLast _tlIlazyIntras _tlIruleKinds _tlIruleUsage _tlIsem_steps _tlIsize _tlIusedArgs _tlIuses _tlIvisitKinds) = inv_VisitSteps_s53 _tlX53 (T_VisitSteps_vIn52 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOchildTypes _tlOchildintros _tlOfmtMode _tlOindex _tlOkind _tlOmrules _tlOoptions _tlOruledefs _tlOruleuses)+         _lhsOsize :: Int+         _lhsOsize = rule821 _tlIsize+         _hdOindex = rule822 _lhsIindex+         _tlOindex = rule823 _lhsIindex+         _lhsOindex :: Int+         _lhsOindex = rule824 _tlIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule825  ()+         _hdOisLast = rule826 _tlIisLast+         _lhsOdefs :: Set String+         _lhsOdefs = rule827 _hdIdefs _tlIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule828 _hdIerrors _tlIerrors+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule829 _hdIlazyIntras _tlIlazyIntras+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule830 _hdIruleKinds _tlIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule831 _hdIruleUsage _tlIruleUsage+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule832 _hdIsem_steps _tlIsem_steps+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule833 _hdIusedArgs _tlIusedArgs+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule834 _hdIuses _tlIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule835 _hdIvisitKinds _tlIvisitKinds+         _hdOallFromToStates = rule836 _lhsIallFromToStates+         _hdOallInitStates = rule837 _lhsIallInitStates+         _hdOallVisitKinds = rule838 _lhsIallVisitKinds+         _hdOallchildvisit = rule839 _lhsIallchildvisit+         _hdOavisitdefs = rule840 _lhsIavisitdefs+         _hdOavisituses = rule841 _lhsIavisituses+         _hdOchildTypes = rule842 _lhsIchildTypes+         _hdOchildintros = rule843 _lhsIchildintros+         _hdOfmtMode = rule844 _lhsIfmtMode+         _hdOkind = rule845 _lhsIkind+         _hdOmrules = rule846 _lhsImrules+         _hdOoptions = rule847 _lhsIoptions+         _hdOruledefs = rule848 _lhsIruledefs+         _hdOruleuses = rule849 _lhsIruleuses+         _tlOallFromToStates = rule850 _lhsIallFromToStates+         _tlOallInitStates = rule851 _lhsIallInitStates+         _tlOallVisitKinds = rule852 _lhsIallVisitKinds+         _tlOallchildvisit = rule853 _lhsIallchildvisit+         _tlOavisitdefs = rule854 _lhsIavisitdefs+         _tlOavisituses = rule855 _lhsIavisituses+         _tlOchildTypes = rule856 _lhsIchildTypes+         _tlOchildintros = rule857 _lhsIchildintros+         _tlOfmtMode = rule858 _lhsIfmtMode+         _tlOkind = rule859 _lhsIkind+         _tlOmrules = rule860 _lhsImrules+         _tlOoptions = rule861 _lhsIoptions+         _tlOruledefs = rule862 _lhsIruledefs+         _tlOruleuses = rule863 _lhsIruleuses+         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitSteps_s53 v52+   {-# INLINE rule821 #-}+   {-# LINE 909 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule821 = \ ((_tlIsize) :: Int) ->+                      {-# LINE 909 "src-ag/ExecutionPlan2Clean.ag" #-}+                      1 + _tlIsize+                      {-# LINE 6406 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule822 #-}+   {-# LINE 914 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule822 = \ ((_lhsIindex) :: Int) ->+                {-# LINE 914 "src-ag/ExecutionPlan2Clean.ag" #-}+                _lhsIindex+                {-# LINE 6412 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule823 #-}+   {-# LINE 915 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule823 = \ ((_lhsIindex) :: Int) ->+                {-# LINE 915 "src-ag/ExecutionPlan2Clean.ag" #-}+                1 + _lhsIindex+                {-# LINE 6418 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule824 #-}+   {-# LINE 916 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule824 = \ ((_tlIindex) :: Int) ->+                {-# LINE 916 "src-ag/ExecutionPlan2Clean.ag" #-}+                _tlIindex+                {-# LINE 6424 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule825 #-}+   {-# LINE 926 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule825 = \  (_ :: ()) ->+                         {-# LINE 926 "src-ag/ExecutionPlan2Clean.ag" #-}+                         False+                         {-# LINE 6430 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule826 #-}+   {-# LINE 927 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule826 = \ ((_tlIisLast) :: Bool) ->+                         {-# LINE 927 "src-ag/ExecutionPlan2Clean.ag" #-}+                         _tlIisLast+                         {-# LINE 6436 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule827 #-}+   rule827 = \ ((_hdIdefs) :: Set String) ((_tlIdefs) :: Set String) ->+     _hdIdefs `Set.union` _tlIdefs+   {-# INLINE rule828 #-}+   rule828 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule829 #-}+   rule829 = \ ((_hdIlazyIntras) :: Set String) ((_tlIlazyIntras) :: Set String) ->+     _hdIlazyIntras `Set.union` _tlIlazyIntras+   {-# INLINE rule830 #-}+   rule830 = \ ((_hdIruleKinds) :: Map Identifier (Set VisitKind)) ((_tlIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _hdIruleKinds `unionWithMappend` _tlIruleKinds+   {-# INLINE rule831 #-}+   rule831 = \ ((_hdIruleUsage) :: Map Identifier Int) ((_tlIruleUsage) :: Map Identifier Int) ->+     _hdIruleUsage `unionWithSum` _tlIruleUsage+   {-# INLINE rule832 #-}+   rule832 = \ ((_hdIsem_steps) :: PP_Doc) ((_tlIsem_steps) :: PP_Doc) ->+     _hdIsem_steps >-< _tlIsem_steps+   {-# INLINE rule833 #-}+   rule833 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->+     _hdIusedArgs `Set.union` _tlIusedArgs+   {-# INLINE rule834 #-}+   rule834 = \ ((_hdIuses) :: Map String (Maybe NonLocalAttr)) ((_tlIuses) :: Map String (Maybe NonLocalAttr)) ->+     _hdIuses `Map.union` _tlIuses+   {-# INLINE rule835 #-}+   rule835 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule836 #-}+   rule836 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule837 #-}+   rule837 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule838 #-}+   rule838 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule839 #-}+   rule839 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule840 #-}+   rule840 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule841 #-}+   rule841 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule842 #-}+   rule842 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule843 #-}+   rule843 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule844 #-}+   rule844 = \ ((_lhsIfmtMode) :: FormatMode) ->+     _lhsIfmtMode+   {-# INLINE rule845 #-}+   rule845 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule846 #-}+   rule846 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule847 #-}+   rule847 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule848 #-}+   rule848 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule849 #-}+   rule849 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule850 #-}+   rule850 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule851 #-}+   rule851 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule852 #-}+   rule852 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule853 #-}+   rule853 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule854 #-}+   rule854 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule855 #-}+   rule855 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule856 #-}+   rule856 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule857 #-}+   rule857 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule858 #-}+   rule858 = \ ((_lhsIfmtMode) :: FormatMode) ->+     _lhsIfmtMode+   {-# INLINE rule859 #-}+   rule859 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule860 #-}+   rule860 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule861 #-}+   rule861 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule862 #-}+   rule862 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule863 #-}+   rule863 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+{-# NOINLINE sem_VisitSteps_Nil #-}+sem_VisitSteps_Nil ::  T_VisitSteps +sem_VisitSteps_Nil  = T_VisitSteps (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_VisitSteps_v52 +      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIruledefs _lhsIruleuses) -> ( let+         _lhsOsize :: Int+         _lhsOsize = rule864  ()+         _lhsOisLast :: Bool+         _lhsOisLast = rule865  ()+         _lhsOdefs :: Set String+         _lhsOdefs = rule866  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule867  ()+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule868  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule869  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule870  ()+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule871  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule872  ()+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule873  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule874  ()+         _lhsOindex :: Int+         _lhsOindex = rule875 _lhsIindex+         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitSteps_s53 v52+   {-# INLINE rule864 #-}+   {-# LINE 908 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule864 = \  (_ :: ()) ->+                      {-# LINE 908 "src-ag/ExecutionPlan2Clean.ag" #-}+                      0+                      {-# LINE 6587 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule865 #-}+   {-# LINE 925 "src-ag/ExecutionPlan2Clean.ag" #-}+   rule865 = \  (_ :: ()) ->+                         {-# LINE 925 "src-ag/ExecutionPlan2Clean.ag" #-}+                         True+                         {-# LINE 6593 "dist/build/ExecutionPlan2Clean.hs"#-}+   {-# INLINE rule866 #-}+   rule866 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule867 #-}+   rule867 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule868 #-}+   rule868 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule869 #-}+   rule869 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule870 #-}+   rule870 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule871 #-}+   rule871 = \  (_ :: ()) ->+     empty+   {-# INLINE rule872 #-}+   rule872 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule873 #-}+   rule873 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule874 #-}+   rule874 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule875 #-}+   rule875 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex++-- Visits ------------------------------------------------------+-- wrapper+data Inh_Visits  = Inh_Visits { allFromToStates_Inh_Visits :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visits :: (Map NontermIdent Attributes), allInitStates_Inh_Visits :: (Map NontermIdent Int), allSynmap_Inh_Visits :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visits :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visits :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allintramap_Inh_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visits :: (Map Identifier Type), childintros_Inh_Visits :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visits :: (ConstructorIdent), inhmap_Inh_Visits :: (Attributes), mrules_Inh_Visits :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), nextVisits_Inh_Visits :: (Map StateIdentifier StateCtx), nt_Inh_Visits :: (NontermIdent), options_Inh_Visits :: (Options), params_Inh_Visits :: ([Identifier]), prevVisits_Inh_Visits :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visits :: (Map Identifier (Set String)), ruleuses_Inh_Visits :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visits :: (Attributes), terminaldefs_Inh_Visits :: (Set String) }+data Syn_Visits  = Syn_Visits { allvisits_Syn_Visits :: ([VisitStateState]), childvisit_Syn_Visits :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_Visits :: (Seq Error), fromToStates_Syn_Visits :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visits :: (Set String), ruleKinds_Syn_Visits :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visits :: (Map Identifier Int), sem_visit_Syn_Visits :: ( [(StateIdentifier,Bool -> PP_Doc)] ), t_visits_Syn_Visits :: (PP_Doc), usedArgs_Syn_Visits :: (Set String), visitKinds_Syn_Visits :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visits :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visits :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_Visits #-}+wrap_Visits :: T_Visits  -> Inh_Visits  -> (Syn_Visits )+wrap_Visits (T_Visits act) (Inh_Visits _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg55 = T_Visits_vIn55 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs+        (T_Visits_vOut55 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visits_s56 sem arg55)         return (Syn_Visits _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)    ) 
src-generated/ExecutionPlan2Hs.hs view
@@ -2,6632 +2,6642 @@ {-# LANGUAGE ScopedTypeVariables #-}  module ExecutionPlan2Hs where-{-# LINE 2 "./src-ag/HsToken.ag" #-}--import CommonTypes-import UU.Scanner.Position(Pos)-{-# LINE 10 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 2 "./src-ag/Expression.ag" #-}--import UU.Scanner.Position(Pos)-import HsToken-{-# LINE 16 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 2 "./src-ag/Patterns.ag" #-}---- Patterns.ag imports-import UU.Scanner.Position(Pos)-import CommonTypes (ConstructorIdent,Identifier)-{-# LINE 23 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 2 "./src-ag/ExecutionPlan.ag" #-}---- VisitSyntax.ag imports-import Patterns    (Pattern(..),Patterns)-import Expression  (Expression(..))-import CommonTypes-import ErrorMessages--import qualified Data.Set as Set-import Data.Set(Set)-import qualified Data.Map as Map-import Data.Map(Map)-{-# LINE 37 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 7 "./src-ag/ExecutionPlan2Hs.ag" #-}--import ExecutionPlan-import Pretty-import PPUtil-import Options-import Data.Monoid(mappend,mempty)-import Data.Maybe-import Debug.Trace-import System.IO-import System.Directory-import System.FilePath-import UU.Scanner.Position--import TokenDef-import HsToken-import ErrorMessages--import Data.Set (Set)-import qualified Data.Set as Set-import Data.Map (Map)-import qualified Data.Map as Map-import Data.Sequence(Seq)-import qualified Data.Sequence as Seq-import Data.Foldable(toList)-{-# LINE 64 "dist/build/ExecutionPlan2Hs.hs" #-}-import Control.Monad.Identity (Identity)-import qualified Control.Monad.Identity-{-# LINE 163 "./src-ag/ExecutionPlan2Hs.ag" #-}--classCtxsToDocs :: ClassContext -> [PP_Doc]-classCtxsToDocs = map toDoc where-  toDoc (ident,args) = (ident >#< ppSpaced (map pp_parens args))--classConstrsToDocs :: [Type] -> [PP_Doc]-classConstrsToDocs = map ppTp--ppClasses :: [PP_Doc] -> PP_Doc-ppClasses [] = empty-ppClasses xs = pp_block "(" ")" "," xs >#< "=>"--ppQuants :: [Identifier] -> PP_Doc-ppQuants [] = empty-ppQuants ps = "forall" >#< ppSpaced ps >#< "."-{-# LINE 83 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 192 "./src-ag/ExecutionPlan2Hs.ag" #-}---- first parameter indicates: generate a record or not-ppConFields :: Bool -> [PP_Doc] -> PP_Doc-ppConFields True  flds = ppListSep "{" "}" ", " $ filter (not . isEmpty) flds-ppConFields False flds = ppSpaced flds-{-# LINE 91 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 218 "./src-ag/ExecutionPlan2Hs.ag" #-}--ppTp :: Type -> PP_Doc-ppTp = text . typeToHaskellString Nothing []-{-# LINE 97 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 332 "./src-ag/ExecutionPlan2Hs.ag" #-}-type VisitStateState = (VisitIdentifier,StateIdentifier, StateIdentifier)-{-# LINE 101 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 428 "./src-ag/ExecutionPlan2Hs.ag" #-}--conNmTVisit nt vId      = "T_" >|< nt >|< "_v"    >|< vId-conNmTVisitIn nt vId    = "T_" >|< nt >|< "_vIn"  >|< vId-conNmTVisitOut nt vId   = "T_" >|< nt >|< "_vOut" >|< vId-conNmTNextVisit nt stId = "T_" >|< nt >|< "_s"    >|< stId--ppMonadType :: Options -> PP_Doc-ppMonadType opts-  | parallelInvoke opts = text "IO"-  | otherwise           = text "Identity"-{-# LINE 114 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 578 "./src-ag/ExecutionPlan2Hs.ag" #-}--ppDefor :: Type -> PP_Doc-ppDefor (NT nt args _) = "T_" >|< nt >#< ppSpaced (map pp_parens args)-ppDefor (Haskell s)    = text s-{-# LINE 121 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 702 "./src-ag/ExecutionPlan2Hs.ag" #-}--mklet :: (PP a, PP b, PP c) => a -> b -> c -> PP_Doc-mklet prefix defs body =-  prefix >#< "let"-  >-< indent 3 defs-  >-< indent 2 "in" >#< body-{-# LINE 130 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 768 "./src-ag/ExecutionPlan2Hs.ag" #-}--resultValName :: String-resultValName = "__result_"--nextStName :: String-nextStName = "__st_"-{-# LINE 139 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 839 "./src-ag/ExecutionPlan2Hs.ag" #-}--parResultName :: String-parResultName = "__outcome_"--fmtDecl :: PP a => Bool -> FormatMode -> a -> PP_Doc-fmtDecl declPure fmt decl = case fmt of-  FormatLetDecl -> pp decl-  FormatLetLine -> "let" >#< decl >#< "in"-  FormatDo | declPure  -> "let" >#< decl-           | otherwise -> pp decl-{-# LINE 152 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 965 "./src-ag/ExecutionPlan2Hs.ag" #-}--stname :: Identifier -> Int -> String-stname child st = "_" ++ getName child ++ "X" ++ show st---- should actually return some conversion info-compatibleAttach :: VisitKind -> NontermIdent -> Options -> Bool-compatibleAttach _ _ _ = True--unMon :: Options -> PP_Doc-unMon options-  | parallelInvoke options = text "System.IO.Unsafe.unsafePerformIO"    -- IO monad-  | otherwise              = text "Control.Monad.Identity.runIdentity"  -- identity monad-{-# LINE 167 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 1073 "./src-ag/ExecutionPlan2Hs.ag" #-}--dummyPat :: Options -> Bool -> PP_Doc-dummyPat opts noArgs-  | not noArgs && tupleAsDummyToken opts = empty  -- no unnecessary tuples-  | tupleAsDummyToken opts = if strictDummyToken opts-                             then text "()"-                             else text "(_ :: ())"-  | otherwise              = let match | strictDummyToken opts = "!_"-                                       | otherwise             = "_"-                             in pp_parens (match >#< "::" >#< dummyType opts noArgs)-  where match | strictDummyToken opts = "(!_)"-              | otherwise             = "_"--dummyArg :: Options -> Bool -> PP_Doc-dummyArg opts noArgs-  | not noArgs && tupleAsDummyToken opts = empty    -- no unnecessary tuples-  | tupleAsDummyToken opts = text "()"-  | otherwise              = text "GHC.Prim.realWorld#"--dummyType :: Options -> Bool -> PP_Doc-dummyType opts noArgs-  | not noArgs && tupleAsDummyToken opts = empty     -- no unnecessary tuples-  | tupleAsDummyToken opts = text "()"-  | otherwise              = text "(GHC.Prim.State# GHC.Prim.RealWorld)"-{-# LINE 194 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 1099 "./src-ag/ExecutionPlan2Hs.ag" #-}---- rules are "deinlined" to prevent needless code duplication.--- if there is only a bit of duplication, we allow ghc to decide if it is worth it.--- if the duplication crosses this threshold, however, we tell ghc definitely not to inline it.-ruleInlineThresholdSoft :: Int-ruleInlineThresholdSoft = 3--ruleInlineThresholdHard :: Int-ruleInlineThresholdHard = 5--reallyOftenUsedThreshold :: Int-reallyOftenUsedThreshold = 12-{-# LINE 209 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 1165 "./src-ag/ExecutionPlan2Hs.ag" #-}--data NonLocalAttr-  = AttrInh Identifier Identifier-  | AttrSyn Identifier Identifier deriving Show--mkNonLocalAttr :: Bool -> Identifier -> Identifier -> NonLocalAttr-mkNonLocalAttr True  = AttrInh  -- True: inherited attr-mkNonLocalAttr False = AttrSyn--lookupAttrType :: NonLocalAttr -> Map Identifier Attributes -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc-lookupAttrType (AttrInh child name) inhs _ = lookupType child name inhs-lookupAttrType (AttrSyn child name) _ syns = lookupType child name syns---- Note: if the child takes type parameters, the type of an attribute of this child may refer to these parameters. This means that--- the actual type of the attribute needs to have its type parameters substituted with the actual type argument of the child.--- However, for now we simply decide to return Nothing in this case, which skips the type annotation.-lookupType :: Identifier -> Identifier -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc-lookupType child name attrMp childMp-  | noParameters childTp = Just ppDoc-  | otherwise            = Nothing-  where-    attrTp     = Map.findWithDefault (error "lookupType: the attribute is not in the attrs of the child") name childAttrs-    childAttrs = Map.findWithDefault (error "lookupType: the attributes of the nonterm are not in the map") nonterm attrMp-    nonterm    = extractNonterminal childTp-    childTp    = Map.findWithDefault (error ("lookupType: the child " ++ show child ++ "is not in the appropriate map")) child childMp-    ppDoc      = ppTp attrTp--noParameters :: Type -> Bool-noParameters (Haskell _)   = True-noParameters (NT _ args _) = null args-{-# LINE 242 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 1252 "./src-ag/ExecutionPlan2Hs.ag" #-}---- a `compatibleKind` b  means: can kind b be invoked from a-compatibleKind :: VisitKind -> VisitKind -> Bool-compatibleKind _              _             = True--compatibleRule :: VisitKind -> Bool -> Bool-compatibleRule (VisitPure _) False = False-compatibleRule _             _     = True-{-# LINE 253 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 1274 "./src-ag/ExecutionPlan2Hs.ag" #-}--unionWithSum = Map.unionWith (+)-{-# LINE 258 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 1297 "./src-ag/ExecutionPlan2Hs.ag" #-}--uwSetUnion :: (Ord a, Ord b) => Map a (Set b) -> Map a (Set b) -> Map a (Set b)-uwSetUnion = Map.unionWith Set.union--uwMapUnion :: (Ord a, Ord b) => Map a (Map b c) -> Map a (Map b c) -> Map a (Map b c)-uwMapUnion = Map.unionWith Map.union-{-# LINE 267 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 1514 "./src-ag/ExecutionPlan2Hs.ag" #-}--renderDocs :: [PP_Doc] -> String-renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) ""--writeModule :: FilePath -> [PP_Doc] -> IO ()-writeModule path docs-  = do bExists <- doesFileExist path-       if bExists-        then do input <- readFile path-                seq (length input) (return ())-                if input /= output-                 then dumpIt-                 else return ()-        else dumpIt-  where-    output = renderDocs docs-    dumpIt = writeFile path output-{-# LINE 287 "dist/build/ExecutionPlan2Hs.hs" #-}--{-# LINE 1661 "./src-ag/ExecutionPlan2Hs.ag" #-}--ppNoInline :: PP a => a -> PP_Doc-ppNoInline = ppPragmaBinding "NOINLINE"--ppInline :: PP a => a -> PP_Doc-ppInline = ppPragmaBinding "INLINE"--ppInlinable :: PP a => a -> PP_Doc-ppInlinable = ppPragmaBinding "INLINABLE"--ppPragmaBinding :: (PP a, PP b) => a -> b -> PP_Doc-ppPragmaBinding pragma nm = "{-#" >#< pragma >#< nm >#< "#-}"--ppCostCentre :: PP a => a -> PP_Doc-ppCostCentre nm = "{-#" >#< "SCC" >#< "\"" >|< nm >|< "\"" >#< "#-}"--warrenFlagsPP :: Options -> PP_Doc-warrenFlagsPP options = vlist-  [ pp "{-# LANGUAGE Rank2Types, GADTs #-}"-  , if bangpats options-    then pp "{-# LANGUAGE BangPatterns #-}"-    else empty-  , if noPerRuleTypeSigs options && noPerStateTypeSigs options-    then empty-    else pp "{-# LANGUAGE ScopedTypeVariables #-}"-  , if tupleAsDummyToken options-    then empty-    else pp "{-# LANGUAGE ScopedTypeVariables, MagicHash #-}"-  , -- not that the meaning of "unbox" is here that strict fields in data types may be-    -- unboxed if possible. This may affect user-defined data types declared in the module.-    -- Unfortunately, we cannot turn it on for only the AG generated data types without-    -- causing a zillion of warnings.-    if unbox options && bangpats options-        then pp $ "{-# OPTIONS_GHC -funbox-strict-fields -fstrictness #-}"-        else empty-  , if parallelInvoke options && not (noEagerBlackholing options)-    then pp $ "{-# OPTIONS_GHC -feager-blackholing #-}"-    else empty-  ]-{-# LINE 329 "dist/build/ExecutionPlan2Hs.hs" #-}--- EChild --------------------------------------------------------- wrapper-data Inh_EChild  = Inh_EChild { allInitStates_Inh_EChild :: (Map NontermIdent Int), con_Inh_EChild :: (ConstructorIdent), importBlocks_Inh_EChild :: (PP_Doc), mainFile_Inh_EChild :: (String), mainName_Inh_EChild :: (String), moduleHeader_Inh_EChild :: (String -> String -> String -> Bool -> String), nt_Inh_EChild :: (NontermIdent), options_Inh_EChild :: (Options), pragmaBlocks_Inh_EChild :: (String), textBlocks_Inh_EChild :: (PP_Doc) }-data Syn_EChild  = Syn_EChild { argnamesw_Syn_EChild :: ( PP_Doc ), argpats_Syn_EChild :: (  PP_Doc  ), argtps_Syn_EChild :: (  PP_Doc  ), childTypes_Syn_EChild :: (Map Identifier Type), childintros_Syn_EChild :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), datatype_Syn_EChild :: (PP_Doc), terminaldefs_Syn_EChild :: (Set String), usedArgs_Syn_EChild :: (Set String) }-{-# INLINABLE wrap_EChild #-}-wrap_EChild :: T_EChild  -> Inh_EChild  -> (Syn_EChild )-wrap_EChild (T_EChild act) (Inh_EChild _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks-        (T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs) <- return (inv_EChild_s2 sem arg)-        return (Syn_EChild _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs)-   )---- cata-{-# NOINLINE sem_EChild #-}-sem_EChild :: EChild  -> T_EChild -sem_EChild ( EChild name_ tp_ kind_ hasAround_ merges_ isMerged_ ) = sem_EChild_EChild name_ tp_ kind_ hasAround_ merges_ isMerged_-sem_EChild ( ETerm name_ tp_ ) = sem_EChild_ETerm name_ tp_---- semantic domain-newtype T_EChild  = T_EChild {-                             attach_T_EChild :: Identity (T_EChild_s2 )-                             }-newtype T_EChild_s2  = C_EChild_s2 {-                                   inv_EChild_s2 :: (T_EChild_v1 )-                                   }-data T_EChild_s3  = C_EChild_s3-type T_EChild_v1  = (T_EChild_vIn1 ) -> (T_EChild_vOut1 )-data T_EChild_vIn1  = T_EChild_vIn1 (Map NontermIdent Int) (ConstructorIdent) (PP_Doc) (String) (String) (String -> String -> String -> Bool -> String) (NontermIdent) (Options) (String) (PP_Doc)-data T_EChild_vOut1  = T_EChild_vOut1 ( PP_Doc ) (  PP_Doc  ) (  PP_Doc  ) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (PP_Doc) (Set String) (Set String)-{-# NOINLINE sem_EChild_EChild #-}-sem_EChild_EChild :: (Identifier) -> (Type) -> (ChildKind) -> (Bool) -> (Maybe [Identifier]) -> (Bool) -> T_EChild -sem_EChild_EChild arg_name_ arg_tp_ arg_kind_ arg_hasAround_ _ _ = T_EChild (return st2) where-   {-# NOINLINE st2 #-}-   st2 = let-      v1 :: T_EChild_v1 -      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) -> ( let-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule0 _usedArgs_augmented_f1 _usedArgs_augmented_syn-         _usedArgs_augmented_f1 = rule1 arg_kind_ arg_name_-         _tpDoc = rule2 _addStrict arg_tp_-         _strNm = rule3 _lhsIcon _lhsInt arg_name_-         _field = rule4 _lhsIoptions _strNm _tpDoc-         _addStrict = rule5 _lhsIoptions-         _lhsOdatatype :: PP_Doc-         _lhsOdatatype = rule6 _field arg_kind_-         _lhsOargnamesw ::  PP_Doc -         _lhsOargnamesw = rule7 _nt arg_kind_ arg_name_-         _lhsOargtps ::   PP_Doc  -         _lhsOargtps = rule8 arg_kind_ arg_tp_-         _argpats = rule9 arg_kind_ arg_name_-         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule10 _introcode arg_name_-         _isDefor = rule11 arg_tp_-         _valcode = rule12 _isDefor _lhsIoptions _nt arg_kind_ arg_name_-         _aroundcode = rule13 _lhsIoptions arg_hasAround_ arg_name_-         _introcode = rule14 _addbang _aroundcode _initSt _isDefor _lhsIoptions _nt _valcode arg_hasAround_ arg_kind_ arg_name_-         _nt = rule15 arg_tp_-         _addbang = rule16 _lhsIoptions-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule17 arg_name_ arg_tp_-         _initSt = rule18 _lhsIallInitStates _nt-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule19  ()-         _usedArgs_augmented_syn = rule20  ()-         _lhsOargpats ::   PP_Doc  -         _lhsOargpats = rule21 _argpats-         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs-         in __result_ )-     in C_EChild_s2 v1-   {-# INLINE rule0 #-}-   rule0 = \ _usedArgs_augmented_f1 _usedArgs_augmented_syn ->-     foldr ($) _usedArgs_augmented_syn [_usedArgs_augmented_f1]-   {-# INLINE rule1 #-}-   rule1 = \ kind_ name_ ->-                         \s -> case kind_ of-                               ChildSyntax -> Set.insert ("arg_" ++ show name_ ++ "_") s-                               _           -> s-   {-# INLINE rule2 #-}-   {-# LINE 206 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule2 = \ _addStrict tp_ ->-                     {-# LINE 206 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     _addStrict     $ pp_parens $ ppTp $ removeDeforested tp_-                     {-# LINE 414 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule3 #-}-   {-# LINE 207 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule3 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->-                     {-# LINE 207 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     recordFieldname _lhsInt _lhsIcon name_-                     {-# LINE 420 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule4 #-}-   {-# LINE 208 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule4 = \ ((_lhsIoptions) :: Options) _strNm _tpDoc ->-                     {-# LINE 208 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     if dataRecords _lhsIoptions-                     then _strNm     >#< "::" >#< _tpDoc-                     else _tpDoc-                     {-# LINE 428 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule5 #-}-   {-# LINE 211 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule5 = \ ((_lhsIoptions) :: Options) ->-                        {-# LINE 211 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        \x -> if strictData _lhsIoptions then "!" >|< x else x-                        {-# LINE 434 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule6 #-}-   {-# LINE 212 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule6 = \ _field kind_ ->-                             {-# LINE 212 "./src-ag/ExecutionPlan2Hs.ag" #-}-                             case kind_ of-                               ChildAttr -> empty-                               _         -> _field-                             {-# LINE 442 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule7 #-}-   {-# LINE 300 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule7 = \ _nt kind_ name_ ->-                             {-# LINE 300 "./src-ag/ExecutionPlan2Hs.ag" #-}-                             case kind_ of-                               ChildSyntax     -> "(" >#< "sem_" >|< _nt     >#< name_ >|< "_" >#< ")"-                               ChildAttr       -> empty-                               ChildReplace tp -> "(" >#< "sem_" >|< extractNonterminal tp >#< name_ >|< "_" >#< ")"-                             {-# LINE 451 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule8 #-}-   {-# LINE 567 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule8 = \ kind_ tp_ ->-                            {-# LINE 567 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            case kind_ of-                              ChildSyntax     -> ppDefor tp_ >#< "->"-                              ChildReplace tp -> ppDefor tp >#< "->"-                              _               -> empty-                            {-# LINE 460 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule9 #-}-   {-# LINE 571 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule9 = \ kind_ name_ ->-                           {-# LINE 571 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           case kind_ of-                             ChildSyntax    -> name_ >|< "_"-                             ChildReplace _ -> name_ >|< "_"-                             _              -> empty-                           {-# LINE 469 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule10 #-}-   {-# LINE 919 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule10 = \ _introcode name_ ->-                               {-# LINE 919 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               Map.singleton name_ _introcode-                               {-# LINE 475 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule11 #-}-   {-# LINE 920 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule11 = \ tp_ ->-                               {-# LINE 920 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               case tp_ of-                                 NT _ _ defor -> defor-                                 _            -> False-                               {-# LINE 483 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule12 #-}-   {-# LINE 923 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule12 = \ _isDefor ((_lhsIoptions) :: Options) _nt kind_ name_ ->-                               {-# LINE 923 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               case kind_ of-                                 ChildSyntax -> "arg_" >|< name_ >|< "_"-                                 ChildAttr   ->-                                                let prefix | not _isDefor     = if lateHigherOrderBinding _lhsIoptions-                                                                                then lateSemNtLabel _nt     >#< lhsname _lhsIoptions True idLateBindingAttr-                                                                                else "sem_" >|< _nt-                                                           | otherwise        = empty-                                                in pp_parens (prefix >#< instname name_)-                                 ChildReplace _ ->-                                                   pp_parens (instname name_ >#< name_ >|< "_")-                               {-# LINE 498 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule13 #-}-   {-# LINE 934 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule13 = \ ((_lhsIoptions) :: Options) hasAround_ name_ ->-                               {-# LINE 934 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               if hasAround_-                               then locname _lhsIoptions name_ >|< "_around"-                               else empty-                               {-# LINE 506 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule14 #-}-   {-# LINE 937 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule14 = \ _addbang _aroundcode _initSt _isDefor ((_lhsIoptions) :: Options) _nt _valcode hasAround_ kind_ name_ ->-                               {-# LINE 937 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               \kind fmtMode ->-                                        let pat       = text $ stname name_ _initSt-                                            patStrict = _addbang     pat-                                            attach    = "attach_T_" >|< _nt     >#< pp_parens (_aroundcode     >#< _valcode    )-                                            runAttach = unMon _lhsIoptions >#< pp_parens attach-                                            decl      = case kind of-                                                          VisitPure False -> pat >#< "=" >#< runAttach-                                                          VisitPure True  -> patStrict >#< "=" >#< runAttach-                                                          VisitMonadic    -> patStrict >#< "<-" >#< attach-                                        in if compatibleAttach kind _nt     _lhsIoptions-                                           then Right ( fmtDecl False fmtMode decl-                                                      , Set.singleton (stname name_ _initSt    )-                                                      , case kind_ of-                                                          ChildAttr   -> Map.insert (instname name_) Nothing $-                                                                           ( if _isDefor     || not (lateHigherOrderBinding _lhsIoptions)-                                                                             then id-                                                                             else Map.insert (lhsname _lhsIoptions True idLateBindingAttr) (Just $ AttrInh _LHS idLateBindingAttr)-                                                                           ) $-                                                                           ( if hasAround_-                                                                             then Map.insert (locname _lhsIoptions (name_) ++ "_around") Nothing-                                                                             else id-                                                                           ) $ Map.empty-                                                          ChildReplace _ -> Map.singleton (instname name_) Nothing-                                                          ChildSyntax    -> Map.empty-                                                      )-                                           else Left $ IncompatibleAttachKind name_ kind-                               {-# LINE 537 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule15 #-}-   {-# LINE 963 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule15 = \ tp_ ->-                            {-# LINE 963 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            extractNonterminal tp_-                            {-# LINE 543 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule16 #-}-   {-# LINE 1542 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule16 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1542 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 549 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule17 #-}-   {-# LINE 1594 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule17 = \ name_ tp_ ->-                     {-# LINE 1594 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     Map.singleton name_ tp_-                     {-# LINE 555 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule18 #-}-   {-# LINE 1638 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule18 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) _nt ->-                 {-# LINE 1638 "./src-ag/ExecutionPlan2Hs.ag" #-}-                 Map.findWithDefault (error "nonterminal not in allInitStates map") _nt     _lhsIallInitStates-                 {-# LINE 561 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule19 #-}-   rule19 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule20 #-}-   rule20 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule21 #-}-   rule21 = \ _argpats ->-     _argpats-{-# NOINLINE sem_EChild_ETerm #-}-sem_EChild_ETerm :: (Identifier) -> (Type) -> T_EChild -sem_EChild_ETerm arg_name_ arg_tp_ = T_EChild (return st2) where-   {-# NOINLINE st2 #-}-   st2 = let-      v1 :: T_EChild_v1 -      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) -> ( let-         _tpDoc = rule22 _addStrict arg_tp_-         _strNm = rule23 _lhsIcon _lhsInt arg_name_-         _field = rule24 _lhsIoptions _strNm _tpDoc-         _addStrict = rule25 _lhsIoptions-         _lhsOdatatype :: PP_Doc-         _lhsOdatatype = rule26 _field-         _lhsOargnamesw ::  PP_Doc -         _lhsOargnamesw = rule27 arg_name_-         _lhsOargtps ::   PP_Doc  -         _lhsOargtps = rule28 arg_tp_-         _argpats = rule29 _addbang arg_name_-         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule30 arg_name_-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule31 arg_name_-         _addbang = rule32 _lhsIoptions-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule33 arg_name_ arg_tp_-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule34  ()-         _lhsOargpats ::   PP_Doc  -         _lhsOargpats = rule35 _argpats-         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs-         in __result_ )-     in C_EChild_s2 v1-   {-# INLINE rule22 #-}-   {-# LINE 206 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule22 = \ _addStrict tp_ ->-                     {-# LINE 206 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     _addStrict     $ pp_parens $ ppTp $ removeDeforested tp_-                     {-# LINE 608 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule23 #-}-   {-# LINE 207 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule23 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->-                     {-# LINE 207 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     recordFieldname _lhsInt _lhsIcon name_-                     {-# LINE 614 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule24 #-}-   {-# LINE 208 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule24 = \ ((_lhsIoptions) :: Options) _strNm _tpDoc ->-                     {-# LINE 208 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     if dataRecords _lhsIoptions-                     then _strNm     >#< "::" >#< _tpDoc-                     else _tpDoc-                     {-# LINE 622 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule25 #-}-   {-# LINE 211 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule25 = \ ((_lhsIoptions) :: Options) ->-                        {-# LINE 211 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        \x -> if strictData _lhsIoptions then "!" >|< x else x-                        {-# LINE 628 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule26 #-}-   {-# LINE 216 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule26 = \ _field ->-                             {-# LINE 216 "./src-ag/ExecutionPlan2Hs.ag" #-}-                             _field-                             {-# LINE 634 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule27 #-}-   {-# LINE 304 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule27 = \ name_ ->-                             {-# LINE 304 "./src-ag/ExecutionPlan2Hs.ag" #-}-                             text $ fieldname name_-                             {-# LINE 640 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule28 #-}-   {-# LINE 575 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule28 = \ tp_ ->-                           {-# LINE 575 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           (pp_parens $ show tp_) >#< "->"-                           {-# LINE 646 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule29 #-}-   {-# LINE 576 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule29 = \ _addbang name_ ->-                           {-# LINE 576 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           _addbang     $ text $ fieldname name_-                           {-# LINE 652 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule30 #-}-   {-# LINE 918 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule30 = \ name_ ->-                               {-# LINE 918 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               Map.singleton name_ (\_ _ -> Right (empty, Set.empty, Map.empty))-                               {-# LINE 658 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule31 #-}-   {-# LINE 1311 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule31 = \ name_ ->-                       {-# LINE 1311 "./src-ag/ExecutionPlan2Hs.ag" #-}-                       Set.singleton $ fieldname name_-                       {-# LINE 664 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule32 #-}-   {-# LINE 1543 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule32 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1543 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 670 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule33 #-}-   {-# LINE 1594 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule33 = \ name_ tp_ ->-                     {-# LINE 1594 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     Map.singleton name_ tp_-                     {-# LINE 676 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule34 #-}-   rule34 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule35 #-}-   rule35 = \ _argpats ->-     _argpats---- EChildren ------------------------------------------------------ wrapper-data Inh_EChildren  = Inh_EChildren { allInitStates_Inh_EChildren :: (Map NontermIdent Int), con_Inh_EChildren :: (ConstructorIdent), importBlocks_Inh_EChildren :: (PP_Doc), mainFile_Inh_EChildren :: (String), mainName_Inh_EChildren :: (String), moduleHeader_Inh_EChildren :: (String -> String -> String -> Bool -> String), nt_Inh_EChildren :: (NontermIdent), options_Inh_EChildren :: (Options), pragmaBlocks_Inh_EChildren :: (String), textBlocks_Inh_EChildren :: (PP_Doc) }-data Syn_EChildren  = Syn_EChildren { argnamesw_Syn_EChildren :: ([PP_Doc]), argpats_Syn_EChildren :: ( [PP_Doc] ), argtps_Syn_EChildren :: ( [PP_Doc] ), childTypes_Syn_EChildren :: (Map Identifier Type), childintros_Syn_EChildren :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), datatype_Syn_EChildren :: ([PP_Doc]), terminaldefs_Syn_EChildren :: (Set String), usedArgs_Syn_EChildren :: (Set String) }-{-# INLINABLE wrap_EChildren #-}-wrap_EChildren :: T_EChildren  -> Inh_EChildren  -> (Syn_EChildren )-wrap_EChildren (T_EChildren act) (Inh_EChildren _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks-        (T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs) <- return (inv_EChildren_s5 sem arg)-        return (Syn_EChildren _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs)-   )---- cata-{-# NOINLINE sem_EChildren #-}-sem_EChildren :: EChildren  -> T_EChildren -sem_EChildren list = Prelude.foldr sem_EChildren_Cons sem_EChildren_Nil (Prelude.map sem_EChild list)---- semantic domain-newtype T_EChildren  = T_EChildren {-                                   attach_T_EChildren :: Identity (T_EChildren_s5 )-                                   }-newtype T_EChildren_s5  = C_EChildren_s5 {-                                         inv_EChildren_s5 :: (T_EChildren_v4 )-                                         }-data T_EChildren_s6  = C_EChildren_s6-type T_EChildren_v4  = (T_EChildren_vIn4 ) -> (T_EChildren_vOut4 )-data T_EChildren_vIn4  = T_EChildren_vIn4 (Map NontermIdent Int) (ConstructorIdent) (PP_Doc) (String) (String) (String -> String -> String -> Bool -> String) (NontermIdent) (Options) (String) (PP_Doc)-data T_EChildren_vOut4  = T_EChildren_vOut4 ([PP_Doc]) ( [PP_Doc] ) ( [PP_Doc] ) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ([PP_Doc]) (Set String) (Set String)-{-# NOINLINE sem_EChildren_Cons #-}-sem_EChildren_Cons :: T_EChild  -> T_EChildren  -> T_EChildren -sem_EChildren_Cons arg_hd_ arg_tl_ = T_EChildren (return st5) where-   {-# NOINLINE st5 #-}-   st5 = let-      v4 :: T_EChildren_v4 -      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) -> ( let-         _hdX2 = Control.Monad.Identity.runIdentity (attach_T_EChild (arg_hd_))-         _tlX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_tl_))-         (T_EChild_vOut1 _hdIargnamesw _hdIargpats _hdIargtps _hdIchildTypes _hdIchildintros _hdIdatatype _hdIterminaldefs _hdIusedArgs) = inv_EChild_s2 _hdX2 (T_EChild_vIn1 _hdOallInitStates _hdOcon _hdOimportBlocks _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnt _hdOoptions _hdOpragmaBlocks _hdOtextBlocks)-         (T_EChildren_vOut4 _tlIargnamesw _tlIargpats _tlIargtps _tlIchildTypes _tlIchildintros _tlIdatatype _tlIterminaldefs _tlIusedArgs) = inv_EChildren_s5 _tlX5 (T_EChildren_vIn4 _tlOallInitStates _tlOcon _tlOimportBlocks _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnt _tlOoptions _tlOpragmaBlocks _tlOtextBlocks)-         _lhsOargnamesw :: [PP_Doc]-         _lhsOargnamesw = rule36 _hdIargnamesw _tlIargnamesw-         _lhsOargpats ::  [PP_Doc] -         _lhsOargpats = rule37 _hdIargpats _tlIargpats-         _lhsOargtps ::  [PP_Doc] -         _lhsOargtps = rule38 _hdIargtps _tlIargtps-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule39 _hdIchildTypes _tlIchildTypes-         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule40 _hdIchildintros _tlIchildintros-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule41 _hdIdatatype _tlIdatatype-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule42 _hdIterminaldefs _tlIterminaldefs-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule43 _hdIusedArgs _tlIusedArgs-         _hdOallInitStates = rule44 _lhsIallInitStates-         _hdOcon = rule45 _lhsIcon-         _hdOimportBlocks = rule46 _lhsIimportBlocks-         _hdOmainFile = rule47 _lhsImainFile-         _hdOmainName = rule48 _lhsImainName-         _hdOmoduleHeader = rule49 _lhsImoduleHeader-         _hdOnt = rule50 _lhsInt-         _hdOoptions = rule51 _lhsIoptions-         _hdOpragmaBlocks = rule52 _lhsIpragmaBlocks-         _hdOtextBlocks = rule53 _lhsItextBlocks-         _tlOallInitStates = rule54 _lhsIallInitStates-         _tlOcon = rule55 _lhsIcon-         _tlOimportBlocks = rule56 _lhsIimportBlocks-         _tlOmainFile = rule57 _lhsImainFile-         _tlOmainName = rule58 _lhsImainName-         _tlOmoduleHeader = rule59 _lhsImoduleHeader-         _tlOnt = rule60 _lhsInt-         _tlOoptions = rule61 _lhsIoptions-         _tlOpragmaBlocks = rule62 _lhsIpragmaBlocks-         _tlOtextBlocks = rule63 _lhsItextBlocks-         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs-         in __result_ )-     in C_EChildren_s5 v4-   {-# INLINE rule36 #-}-   rule36 = \ ((_hdIargnamesw) ::  PP_Doc ) ((_tlIargnamesw) :: [PP_Doc]) ->-     _hdIargnamesw : _tlIargnamesw-   {-# INLINE rule37 #-}-   rule37 = \ ((_hdIargpats) ::   PP_Doc  ) ((_tlIargpats) ::  [PP_Doc] ) ->-     _hdIargpats : _tlIargpats-   {-# INLINE rule38 #-}-   rule38 = \ ((_hdIargtps) ::   PP_Doc  ) ((_tlIargtps) ::  [PP_Doc] ) ->-     _hdIargtps : _tlIargtps-   {-# INLINE rule39 #-}-   rule39 = \ ((_hdIchildTypes) :: Map Identifier Type) ((_tlIchildTypes) :: Map Identifier Type) ->-     _hdIchildTypes `mappend` _tlIchildTypes-   {-# INLINE rule40 #-}-   rule40 = \ ((_hdIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ((_tlIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _hdIchildintros `Map.union` _tlIchildintros-   {-# INLINE rule41 #-}-   rule41 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->-     _hdIdatatype : _tlIdatatype-   {-# INLINE rule42 #-}-   rule42 = \ ((_hdIterminaldefs) :: Set String) ((_tlIterminaldefs) :: Set String) ->-     _hdIterminaldefs `Set.union` _tlIterminaldefs-   {-# INLINE rule43 #-}-   rule43 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->-     _hdIusedArgs `Set.union` _tlIusedArgs-   {-# INLINE rule44 #-}-   rule44 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule45 #-}-   rule45 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule46 #-}-   rule46 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule47 #-}-   rule47 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule48 #-}-   rule48 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule49 #-}-   rule49 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule50 #-}-   rule50 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule51 #-}-   rule51 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule52 #-}-   rule52 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule53 #-}-   rule53 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule54 #-}-   rule54 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule55 #-}-   rule55 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule56 #-}-   rule56 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule57 #-}-   rule57 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule58 #-}-   rule58 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule59 #-}-   rule59 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule60 #-}-   rule60 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule61 #-}-   rule61 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule62 #-}-   rule62 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule63 #-}-   rule63 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-{-# NOINLINE sem_EChildren_Nil #-}-sem_EChildren_Nil ::  T_EChildren -sem_EChildren_Nil  = T_EChildren (return st5) where-   {-# NOINLINE st5 #-}-   st5 = let-      v4 :: T_EChildren_v4 -      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) -> ( let-         _lhsOargnamesw :: [PP_Doc]-         _lhsOargnamesw = rule64  ()-         _lhsOargpats ::  [PP_Doc] -         _lhsOargpats = rule65  ()-         _lhsOargtps ::  [PP_Doc] -         _lhsOargtps = rule66  ()-         _lhsOchildTypes :: Map Identifier Type-         _lhsOchildTypes = rule67  ()-         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))-         _lhsOchildintros = rule68  ()-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule69  ()-         _lhsOterminaldefs :: Set String-         _lhsOterminaldefs = rule70  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule71  ()-         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs-         in __result_ )-     in C_EChildren_s5 v4-   {-# INLINE rule64 #-}-   rule64 = \  (_ :: ()) ->-     []-   {-# INLINE rule65 #-}-   rule65 = \  (_ :: ()) ->-     []-   {-# INLINE rule66 #-}-   rule66 = \  (_ :: ()) ->-     []-   {-# INLINE rule67 #-}-   rule67 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule68 #-}-   rule68 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule69 #-}-   rule69 = \  (_ :: ()) ->-     []-   {-# INLINE rule70 #-}-   rule70 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule71 #-}-   rule71 = \  (_ :: ()) ->-     Set.empty---- ENonterminal --------------------------------------------------- wrapper-data Inh_ENonterminal  = Inh_ENonterminal { allFromToStates_Inh_ENonterminal :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminal :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminal :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminal :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), derivings_Inh_ENonterminal :: (Derivings), importBlocks_Inh_ENonterminal :: (PP_Doc), inhmap_Inh_ENonterminal :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminal :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminal :: (String), mainName_Inh_ENonterminal :: (String), moduleHeader_Inh_ENonterminal :: (String -> String -> String -> Bool -> String), options_Inh_ENonterminal :: (Options), pragmaBlocks_Inh_ENonterminal :: (String), synmap_Inh_ENonterminal :: (Map NontermIdent Attributes), textBlocks_Inh_ENonterminal :: (PP_Doc), typeSyns_Inh_ENonterminal :: (TypeSyns), wrappers_Inh_ENonterminal :: (Set NontermIdent) }-data Syn_ENonterminal  = Syn_ENonterminal { appendCommon_Syn_ENonterminal :: ( PP_Doc ), appendMain_Syn_ENonterminal :: ( PP_Doc ), childvisit_Syn_ENonterminal :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_ENonterminal :: (Seq Error), fromToStates_Syn_ENonterminal :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_ENonterminal :: (IO ()), imports_Syn_ENonterminal :: ([PP_Doc]), initStates_Syn_ENonterminal :: (Map NontermIdent Int), output_Syn_ENonterminal :: (PP_Doc), semFunBndDefs_Syn_ENonterminal :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminal :: (Seq PP_Doc), visitKinds_Syn_ENonterminal :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_ENonterminal #-}-wrap_ENonterminal :: T_ENonterminal  -> Inh_ENonterminal  -> (Syn_ENonterminal )-wrap_ENonterminal (T_ENonterminal act) (Inh_ENonterminal _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers-        (T_ENonterminal_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminal_s8 sem arg)-        return (Syn_ENonterminal _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_ENonterminal #-}-sem_ENonterminal :: ENonterminal  -> T_ENonterminal -sem_ENonterminal ( ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ prods_ recursive_ hoInfo_ ) = sem_ENonterminal_ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ ( sem_EProductions prods_ ) recursive_ hoInfo_---- semantic domain-newtype T_ENonterminal  = T_ENonterminal {-                                         attach_T_ENonterminal :: Identity (T_ENonterminal_s8 )-                                         }-newtype T_ENonterminal_s8  = C_ENonterminal_s8 {-                                               inv_ENonterminal_s8 :: (T_ENonterminal_v7 )-                                               }-data T_ENonterminal_s9  = C_ENonterminal_s9-type T_ENonterminal_v7  = (T_ENonterminal_vIn7 ) -> (T_ENonterminal_vOut7 )-data T_ENonterminal_vIn7  = T_ENonterminal_vIn7 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Derivings) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (String -> String -> String -> Bool -> String) (Options) (String) (Map NontermIdent Attributes) (PP_Doc) (TypeSyns) (Set NontermIdent)-data T_ENonterminal_vOut7  = T_ENonterminal_vOut7 ( PP_Doc ) ( PP_Doc ) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Map NontermIdent Int) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_ENonterminal_ENonterminal #-}-sem_ENonterminal_ENonterminal :: (NontermIdent) -> ([Identifier]) -> (ClassContext) -> (StateIdentifier) -> (Maybe VisitIdentifier) -> (Map StateIdentifier StateCtx) -> (Map StateIdentifier StateCtx) -> T_EProductions  -> (Bool) -> (HigherOrderInfo) -> T_ENonterminal -sem_ENonterminal_ENonterminal arg_nt_ arg_params_ arg_classCtxs_ arg_initial_ arg_initialv_ arg_nextVisits_ arg_prevVisits_ arg_prods_ arg_recursive_ _ = T_ENonterminal (return st8) where-   {-# NOINLINE st8 #-}-   st8 = let-      v7 :: T_ENonterminal_v7 -      v7 = \ (T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let-         _prodsX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_prods_))-         (T_EProductions_vOut16 _prodsIallvisits _prodsIchildvisit _prodsIcount _prodsIdatatype _prodsIerrors _prodsIfromToStates _prodsIgenProdIO _prodsIimports _prodsIsemFunBndDefs _prodsIsemFunBndTps _prodsIsem_nt _prodsIsem_prod _prodsIt_visits _prodsIvisitKinds _prodsIvisitdefs _prodsIvisituses) = inv_EProductions_s17 _prodsX17 (T_EProductions_vIn16 _prodsOallFromToStates _prodsOallInhmap _prodsOallInitStates _prodsOallSynmap _prodsOallVisitKinds _prodsOallchildvisit _prodsOallstates _prodsOavisitdefs _prodsOavisituses _prodsOclassCtxs _prodsOimportBlocks _prodsOinhmap _prodsOinitial _prodsOlocalAttrTypes _prodsOmainFile _prodsOmainName _prodsOmoduleHeader _prodsOnextVisits _prodsOnt _prodsOntType _prodsOoptions _prodsOparams _prodsOpragmaBlocks _prodsOprevVisits _prodsOrename _prodsOsynmap _prodsOtextBlocks)-         _prodsOrename = rule72 _lhsIoptions-         _prodsOnt = rule73 arg_nt_-         _prodsOparams = rule74 arg_params_-         _prodsOclassCtxs = rule75 arg_classCtxs_-         _lhsOoutput :: PP_Doc-         _lhsOoutput = rule76 _datatype _hasWrapper _k_states _lhsIoptions _prodsIsem_prod _prodsIt_visits _sem_nt _t_init _t_states _wr_inh _wr_syn _wrapper arg_nt_-         _hasWrapper = rule77 _lhsIwrappers arg_nt_-         _classPP = rule78 arg_classCtxs_-         _aliasPre = rule79 _classPP _t_params arg_nt_-         _datatype = rule80 _aliasPre _classPP _derivings _lhsItypeSyns _prodsIdatatype _t_params arg_nt_-         _derivings = rule81 _lhsIderivings arg_nt_-         _fsemname = rule82  ()-         _semname = rule83 _fsemname arg_nt_-         _frecarg = rule84 _fsemname-         _sem_tp = rule85 _classPP _quantPP _t_params _t_type arg_nt_-         _quantPP = rule86 arg_params_-         _sem_nt = rule87 _frecarg _fsemname _lhsItypeSyns _prodsIsem_nt _semPragma _sem_tp _semname arg_nt_-         _inlineNt = rule88 _hasWrapper _lhsIoptions _prodsIcount arg_recursive_-         _semPragma = rule89 _inlineNt _lhsIoptions _semname-         (Just _prodsOinhmap) = rule90 _lhsIinhmap arg_nt_-         (Just _prodsOsynmap) = rule91 _lhsIsynmap arg_nt_-         _prodsOallInhmap = rule92 _lhsIinhmap-         _prodsOallSynmap = rule93 _lhsIsynmap-         _outedges = rule94 _prodsIallvisits-         _inedges = rule95 _prodsIallvisits-         _allstates = rule96 _inedges _outedges arg_initial_-         _stvisits = rule97 _prodsIallvisits-         _t_type = rule98 arg_nt_-         _t_params = rule99 arg_params_-         _t_init = rule100 _lhsIoptions _t_params _t_type arg_initial_-         _t_states = rule101 _allstates _t_params arg_nextVisits_ arg_nt_-         _k_type = rule102 arg_nt_-         _k_states = rule103 _allstates _k_type _prodsIallvisits _t_params _t_type arg_nextVisits_ arg_nt_-         _wr_inh = rule104 _genwrap _wr_inhs-         _wr_syn = rule105 _genwrap _wr_syns-         _genwrap = rule106 _addbang _t_params arg_nt_-         _synAttrs = rule107 _lhsIinhmap arg_nt_-         _wr_inhs = rule108 _synAttrs _wr_filter-         _wr_inhs1 = rule109 _synAttrs-         _wr_filter = rule110 _lhsIoptions-         _wr_syns = rule111 _lhsIsynmap arg_nt_-         _inhlist = rule112 _lhsIoptions _wr_inhs-         _inhlist1 = rule113 _lhsIoptions _wr_inhs1-         _synlist = rule114 _lhsIoptions _wr_syns-         _wrapname = rule115 arg_nt_-         _inhname = rule116 arg_nt_-         _synname = rule117 arg_nt_-         _firstVisitInfo = rule118 arg_initial_ arg_nextVisits_-         _wrapper = rule119 _addbang _addbangWrap _classPP _firstVisitInfo _inhlist _inhlist1 _inhname _k_type _lhsIallVisitKinds _lhsImainName _lhsIoptions _quantPP _synlist _synname _t_params _t_type _wrapPragma _wrapname arg_initial_ arg_initialv_ arg_nt_-         _wrapPragma = rule120 _lhsIoptions _wrapname-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule121 _prodsIsemFunBndDefs _semFunBndDef-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule122 _prodsIsemFunBndTps _semFunBndTp-         _semFunBndDef = rule123 _semFunBndNm _semname-         _semFunBndTp = rule124 _semFunBndNm _sem_tp-         _semFunBndNm = rule125 arg_nt_-         _prodsOinitial = rule126 arg_initial_-         _prodsOallstates = rule127 _allstates-         _lhsOappendMain ::  PP_Doc -         _lhsOappendMain = rule128 _lhsIwrappers _sem_nt _wr_inh _wr_syn _wrapper arg_nt_-         _lhsOappendCommon ::  PP_Doc -         _lhsOappendCommon = rule129 _datatype _k_states _lhsIoptions _prodsIt_visits _t_init _t_states-         _addbang = rule130 _lhsIoptions-         _addbangWrap = rule131  ()-         _prodsOnextVisits = rule132 arg_nextVisits_-         _prodsOprevVisits = rule133 arg_prevVisits_-         _prodsOlocalAttrTypes = rule134 _lhsIlocalAttrTypes arg_nt_-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule135 arg_initial_ arg_nt_-         _ntType = rule136 arg_nt_ arg_params_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule137 _prodsIchildvisit-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule138 _prodsIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule139 _prodsIfromToStates-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule140 _prodsIgenProdIO-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule141 _prodsIimports-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule142 _prodsIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule143 _prodsIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule144 _prodsIvisituses-         _prodsOallFromToStates = rule145 _lhsIallFromToStates-         _prodsOallInitStates = rule146 _lhsIallInitStates-         _prodsOallVisitKinds = rule147 _lhsIallVisitKinds-         _prodsOallchildvisit = rule148 _lhsIallchildvisit-         _prodsOavisitdefs = rule149 _lhsIavisitdefs-         _prodsOavisituses = rule150 _lhsIavisituses-         _prodsOimportBlocks = rule151 _lhsIimportBlocks-         _prodsOmainFile = rule152 _lhsImainFile-         _prodsOmainName = rule153 _lhsImainName-         _prodsOmoduleHeader = rule154 _lhsImoduleHeader-         _prodsOntType = rule155 _ntType-         _prodsOoptions = rule156 _lhsIoptions-         _prodsOpragmaBlocks = rule157 _lhsIpragmaBlocks-         _prodsOtextBlocks = rule158 _lhsItextBlocks-         __result_ = T_ENonterminal_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminal_s8 v7-   {-# INLINE rule72 #-}-   {-# LINE 57 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule72 = \ ((_lhsIoptions) :: Options) ->-                                  {-# LINE 57 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  rename _lhsIoptions-                                  {-# LINE 1047 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule73 #-}-   {-# LINE 65 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule73 = \ nt_ ->-                              {-# LINE 65 "./src-ag/ExecutionPlan2Hs.ag" #-}-                              nt_-                              {-# LINE 1053 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule74 #-}-   {-# LINE 77 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule74 = \ params_ ->-                   {-# LINE 77 "./src-ag/ExecutionPlan2Hs.ag" #-}-                   params_-                   {-# LINE 1059 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule75 #-}-   {-# LINE 81 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule75 = \ classCtxs_ ->-                      {-# LINE 81 "./src-ag/ExecutionPlan2Hs.ag" #-}-                      classCtxs_-                      {-# LINE 1065 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule76 #-}-   {-# LINE 98 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule76 = \ _datatype _hasWrapper _k_states ((_lhsIoptions) :: Options) ((_prodsIsem_prod) :: PP_Doc) ((_prodsIt_visits) :: PP_Doc) _sem_nt _t_init _t_states _wr_inh _wr_syn _wrapper nt_ ->-                                {-# LINE 98 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                ("-- " ++ getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-')-                                >-< (if dataTypes _lhsIoptions-                                     then "-- data"-                                          >-< _datatype-                                          >-< ""-                                     else empty)-                                >-< (if _hasWrapper-                                     then "-- wrapper"-                                          >-< _wr_inh-                                          >-< _wr_syn-                                          >-< _wrapper-                                          >-< ""-                                     else empty)-                                >-< (if   folds _lhsIoptions-                                     then "-- cata"-                                          >-< _sem_nt-                                          >-< ""-                                     else empty)-                                >-< (if   semfuns _lhsIoptions-                                     then "-- semantic domain"-                                          >-< _t_init-                                          >-< _t_states-                                          >-< _k_states-                                          >-< _prodsIt_visits-                                          >-< _prodsIsem_prod-                                          >-< ""-                                     else empty)-                                {-# LINE 1097 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule77 #-}-   {-# LINE 125 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule77 = \ ((_lhsIwrappers) :: Set NontermIdent) nt_ ->-                                    {-# LINE 125 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                    nt_ `Set.member` _lhsIwrappers-                                    {-# LINE 1103 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule78 #-}-   {-# LINE 138 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule78 = \ classCtxs_ ->-                                  {-# LINE 138 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  ppClasses $ classCtxsToDocs classCtxs_-                                  {-# LINE 1109 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule79 #-}-   {-# LINE 139 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule79 = \ _classPP _t_params nt_ ->-                                  {-# LINE 139 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  "type" >#< _classPP     >#< nt_ >#< _t_params     >#< "="-                                  {-# LINE 1115 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule80 #-}-   {-# LINE 140 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule80 = \ _aliasPre _classPP _derivings ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdatatype) :: [PP_Doc]) _t_params nt_ ->-                                  {-# LINE 140 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  case lookup nt_ _lhsItypeSyns of-                                     Nothing -> "data" >#< _classPP     >#< nt_ >#< _t_params-                                                >-< ( if null _prodsIdatatype-                                                      then empty-                                                      else indent 2 $ vlist $ ( ("=" >#< head _prodsIdatatype)-                                                                              : (map ("|" >#<) $ tail _prodsIdatatype))-                                                    )-                                                >-< indent 2 _derivings-                                     Just (List t)     -> _aliasPre     >#< "[" >#< show t >#< "]"-                                     Just (Maybe t)    -> _aliasPre     >#< "Maybe" >#< pp_parens (show t)-                                     Just (Tuple ts)   -> _aliasPre     >#< pp_parens (ppCommas $ map (show . snd) ts)-                                     Just (Either l r) -> _aliasPre     >#< "Either" >#< pp_parens (show l) >#< pp_parens (show r)-                                     Just (Map k v)    -> _aliasPre     >#< "Data.Map" >#< pp_parens (show k) >#< pp_parens (show v)-                                     Just (IntMap t)   -> _aliasPre     >#< "Data.IntMap.IntMap" >#< pp_parens (show t)-                                     Just (OrdSet t)   -> _aliasPre     >#< "Data.Set.Set" >#< pp_parens (show t)-                                     Just IntSet       -> _aliasPre     >#< "Data.IntSet.IntSet"-                                  {-# LINE 1136 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule81 #-}-   {-# LINE 157 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule81 = \ ((_lhsIderivings) :: Derivings) nt_ ->-                                   {-# LINE 157 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   case Map.lookup nt_ _lhsIderivings of-                                      Nothing -> empty-                                      Just s  -> if   Set.null s-                                                 then empty-                                                 else "deriving" >#< (pp_parens $ ppCommas $ map pp $ Set.toList s)-                                   {-# LINE 1146 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule82 #-}-   {-# LINE 227 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule82 = \  (_ :: ()) ->-                                  {-# LINE 227 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  \x -> "sem_" ++ show x-                                  {-# LINE 1152 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule83 #-}-   {-# LINE 228 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule83 = \ _fsemname nt_ ->-                                 {-# LINE 228 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _fsemname     nt_-                                 {-# LINE 1158 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule84 #-}-   {-# LINE 229 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule84 = \ _fsemname ->-                                 {-# LINE 229 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 \t x -> case t of-                                            NT nt _ _ -> pp_parens (_fsemname nt >#< x)-                                            _         -> pp x-                                 {-# LINE 1166 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule85 #-}-   {-# LINE 235 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule85 = \ _classPP _quantPP _t_params _t_type nt_ ->-                                 {-# LINE 235 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _quantPP     >#< _classPP     >#< nt_ >#< _t_params     >#< "->" >#< _t_type     >#< _t_params-                                 {-# LINE 1172 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule86 #-}-   {-# LINE 236 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule86 = \ params_ ->-                                 {-# LINE 236 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 ppQuants params_-                                 {-# LINE 1178 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule87 #-}-   {-# LINE 237 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule87 = \ _frecarg _fsemname ((_lhsItypeSyns) :: TypeSyns) ((_prodsIsem_nt) :: PP_Doc) _semPragma _sem_tp _semname nt_ ->-                                 {-# LINE 237 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _semPragma-                                 >-< _semname     >#< "::" >#< _sem_tp-                                 >-< case lookup nt_ _lhsItypeSyns of-                                        Nothing -> _prodsIsem_nt-                                        Just (List t) -> _semname     >#< "list" >#< "=" >#< "Prelude.foldr" >#< _semname     >|< "_Cons"-                                                         >#< _semname     >|< "_Nil"-                                                         >#< case t of-                                                                NT nt _ _ -> pp_parens ("Prelude.map" >#< _fsemname nt >#< "list")-                                                                _         -> pp "list"-                                        Just (Maybe t) -> _semname     >#< "Prelude.Nothing" >#< "=" >#< _semname     >|< "_Nothing"-                                                          >-< _semname     >#< pp_parens ("Prelude.Just just") >#< "="-                                                          >#< _semname     >|< "_Just" >#< _frecarg t "just"-                                        Just (Tuple ts) -> _semname     >#< pp_parens (ppCommas $ map fst ts) >#< "="-                                                           >#< _semname     >|< "_Tuple" >#< ppSpaced (map (\t -> _frecarg (snd t) (show $ fst t)) ts)-                                        Just (Either l r) -> _semname     >#< "(Prelude.Left left)" >#< "=" >#< _semname     >|< "_Left" >#< _frecarg l "left"-                                                             >-< _semname     >#< "(Prelude.Right right)" >#< "=" >#< _semname     >|< "_Right" >#< _frecarg r "right"-                                        Just (Map k v) -> _semname     >#< "m" >#< "=" >#< "Data.Map.foldrWithKey"-                                                          >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil"-                                                          >#< case v of-                                                                 NT nt _ _ -> pp_parens ("Data.Map.map" >#< _fsemname nt >#< "m")-                                                                 _         -> pp "m"-                                        Just (IntMap v) -> _semname     >#< "m" >#< "=" >#< "Data.IntMap.foldWithKey"-                                                           >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil"-                                                           >#< case v of-                                                                  NT nt _ _ -> pp_parens ("Data.IntMap.map" >#< _fsemname nt >#< "m")-                                                                  _         -> pp "m"-                                        Just (OrdSet t) -> _semname     >#< "s" >#< "=" >#< "Prelude.foldr" >#< _semname     >|< "_Entry"-                                                           >#< _semname     >|< "_Nil"-                                                           >#< pp_parens (-                                                                 ( case t of-                                                                     NT nt _ _ -> pp_parens ("Prelude.map" >#< _fsemname nt)-                                                                     _         -> empty-                                                                 ) >#< pp_parens ("Data.IntSet.elems" >#< "s")-                                                               )-                                        Just IntSet     -> _semname     >#< "s" >#< "=" >#< "Prelude.foldr" >#< _semname     >|< "_Entry"-                                                           >#< _semname     >|< "_Nil"-                                                           >#< pp_parens ("Data.IntSet.elems" >#< "s")-                                 {-# LINE 1220 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule88 #-}-   {-# LINE 277 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule88 = \ _hasWrapper ((_lhsIoptions) :: Options) ((_prodsIcount) :: Int) recursive_ ->-                                  {-# LINE 277 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  not (lateHigherOrderBinding _lhsIoptions) && not recursive_ && (_prodsIcount == 1 || (aggressiveInlinePragmas _lhsIoptions && not _hasWrapper    ))-                                  {-# LINE 1226 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule89 #-}-   {-# LINE 278 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule89 = \ _inlineNt ((_lhsIoptions) :: Options) _semname ->-                                  {-# LINE 278 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  if noInlinePragmas _lhsIoptions-                                  then empty-                                  else if _inlineNt-                                       then ppInline _semname-                                       else if helpInlining _lhsIoptions && not (lateHigherOrderBinding _lhsIoptions)-                                            then ppInlinable _semname-                                            else ppNoInline _semname-                                  {-# LINE 1238 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule90 #-}-   {-# LINE 324 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule90 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->-                                         {-# LINE 324 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                         Map.lookup nt_ _lhsIinhmap-                                         {-# LINE 1244 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule91 #-}-   {-# LINE 325 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule91 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->-                                         {-# LINE 325 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                         Map.lookup nt_ _lhsIsynmap-                                         {-# LINE 1250 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule92 #-}-   {-# LINE 326 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule92 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-                                     {-# LINE 326 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     _lhsIinhmap-                                     {-# LINE 1256 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule93 #-}-   {-# LINE 327 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule93 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-                                     {-# LINE 327 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     _lhsIsynmap-                                     {-# LINE 1262 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule94 #-}-   {-# LINE 348 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule94 = \ ((_prodsIallvisits) :: [VisitStateState]) ->-                                   {-# LINE 348 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   Set.fromList $ map (\(_,f,_) -> f) _prodsIallvisits-                                   {-# LINE 1268 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule95 #-}-   {-# LINE 349 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule95 = \ ((_prodsIallvisits) :: [VisitStateState]) ->-                                   {-# LINE 349 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   Set.fromList $ map (\(_,_,t) -> t) _prodsIallvisits-                                   {-# LINE 1274 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule96 #-}-   {-# LINE 350 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule96 = \ _inedges _outedges initial_ ->-                                   {-# LINE 350 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   Set.insert initial_ $ _inedges     `Set.union` _outedges-                                   {-# LINE 1280 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule97 #-}-   {-# LINE 351 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule97 = \ ((_prodsIallvisits) :: [VisitStateState]) ->-                                   {-# LINE 351 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   \st -> filter (\(v,f,t) -> f == st) _prodsIallvisits-                                   {-# LINE 1286 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule98 #-}-   {-# LINE 352 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule98 = \ nt_ ->-                                   {-# LINE 352 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   "T_" >|< nt_-                                   {-# LINE 1292 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule99 #-}-   {-# LINE 353 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule99 = \ params_ ->-                                   {-# LINE 353 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   ppSpaced params_-                                   {-# LINE 1298 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule100 #-}-   {-# LINE 354 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule100 = \ ((_lhsIoptions) :: Options) _t_params _t_type initial_ ->-                                   {-# LINE 354 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   "newtype" >#< _t_type     >#< _t_params     >#< "=" >#< _t_type     >#<-                                     pp_braces (-                                       "attach_">|< _t_type     >#< "::"-                                         >#< ppMonadType _lhsIoptions >#< pp_parens (_t_type     >|< "_s" >|< initial_ >#< _t_params    ))-                                   {-# LINE 1307 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule101 #-}-   {-# LINE 358 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule101 = \ _allstates _t_params nextVisits_ nt_ ->-                                   {-# LINE 358 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   vlist $ map (\st ->-                                      let nt_st = nt_ >|< "_s" >|< st-                                          t_st  = "T_" >|< nt_st-                                          k_st  = "K_" >|< nt_st-                                          c_st  = "C_" >|< nt_st-                                          inv_st  = "inv_" >|< nt_st-                                          nextVisit = Map.findWithDefault ManyVis st nextVisits_-                                      in  case nextVisit of-                                            NoneVis    -> "data" >#< t_st >#< _t_params     >#< "=" >#< c_st-                                            OneVis vId -> "newtype" >#< t_st >#< _t_params     >#< "=" >#< c_st-                                                           >#< (pp_braces $ inv_st >#< "::" >#< pp_parens (conNmTVisit nt_ vId >#< _t_params    ))-                                            ManyVis    -> "data" >#< t_st >#< _t_params     >#< "where" >#< c_st >#< "::"-                                                            >#< (pp_braces $ inv_st >#< "::" >#< "!" >|< pp_parens ("forall t." >#< k_st >#< _t_params     >#< "t" >#< "->" >#< "t"))-                                                            >#< "->" >#< t_st >#< _t_params-                                          ) $ Set.toList _allstates-                                   {-# LINE 1327 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule102 #-}-   {-# LINE 376 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule102 = \ nt_ ->-                                  {-# LINE 376 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  "K_" ++ show nt_-                                  {-# LINE 1333 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule103 #-}-   {-# LINE 377 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule103 = \ _allstates _k_type ((_prodsIallvisits) :: [VisitStateState]) _t_params _t_type nextVisits_ nt_ ->-                                  {-# LINE 377 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  vlist $ map (\st ->-                                     let nt_st = nt_ >|< "_s" >|< st-                                         k_st  = "K_" >|< nt_st-                                         outg  = filter (\(v,f,t) -> f == st) _prodsIallvisits-                                         visitlist = vlist $ map (\(v,f,t) ->-                                             _k_type     >|< "_v" >|< v >#< "::" >#< k_st >#< _t_params     >#< pp_parens (_t_type     >|< "_v" >|< v >#< _t_params    )-                                              ) outg-                                         nextVisit = Map.findWithDefault ManyVis st nextVisits_-                                         decl = "data" >#< k_st >#< "k" >#< _t_params     >#< "where" >-< indent 3 visitlist-                                     in  case nextVisit of-                                           NoneVis  -> empty-                                           OneVis _ -> empty-                                           ManyVis  -> decl-                                     ) $ Set.toList _allstates-                                  {-# LINE 1352 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule104 #-}-   {-# LINE 444 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule104 = \ _genwrap _wr_inhs ->-                                  {-# LINE 444 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  _genwrap     "Inh" _wr_inhs-                                  {-# LINE 1358 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule105 #-}-   {-# LINE 445 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule105 = \ _genwrap _wr_syns ->-                                  {-# LINE 445 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  _genwrap     "Syn" _wr_syns-                                  {-# LINE 1364 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule106 #-}-   {-# LINE 446 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule106 = \ _addbang _t_params nt_ ->-                                  {-# LINE 446 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  \nm attr -> "data" >#< nm >|< "_" >|< nt_ >#< _t_params     >#< "=" >#< nm >|< "_" >|< nt_ >#< "{"-                                              >#< (ppCommas $ map (\(i,t) -> i >|< "_" >|< nm >|< "_" >|< nt_ >#< "::"-                                              >#< (_addbang     $ pp_parens $ typeToHaskellString (Just nt_) [] t)) attr) >#< "}"-                                  {-# LINE 1372 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule107 #-}-   {-# LINE 449 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule107 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->-                                  {-# LINE 449 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  fromJust $ Map.lookup nt_ _lhsIinhmap-                                  {-# LINE 1378 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule108 #-}-   {-# LINE 450 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule108 = \ _synAttrs _wr_filter ->-                                  {-# LINE 450 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  Map.toList $ _wr_filter     $ _synAttrs-                                  {-# LINE 1384 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule109 #-}-   {-# LINE 451 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule109 = \ _synAttrs ->-                                  {-# LINE 451 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  Map.toList _synAttrs-                                  {-# LINE 1390 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule110 #-}-   {-# LINE 452 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule110 = \ ((_lhsIoptions) :: Options) ->-                                   {-# LINE 452 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   if lateHigherOrderBinding _lhsIoptions-                                   then Map.delete idLateBindingAttr-                                   else id-                                   {-# LINE 1398 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule111 #-}-   {-# LINE 455 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule111 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->-                                  {-# LINE 455 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  Map.toList $ fromJust $ Map.lookup nt_ _lhsIsynmap-                                  {-# LINE 1404 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule112 #-}-   {-# LINE 456 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule112 = \ ((_lhsIoptions) :: Options) _wr_inhs ->-                                  {-# LINE 456 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  map (lhsname _lhsIoptions True . fst) _wr_inhs-                                  {-# LINE 1410 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule113 #-}-   {-# LINE 457 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule113 = \ ((_lhsIoptions) :: Options) _wr_inhs1 ->-                                  {-# LINE 457 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  map (lhsname _lhsIoptions True . fst) _wr_inhs1-                                  {-# LINE 1416 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule114 #-}-   {-# LINE 458 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule114 = \ ((_lhsIoptions) :: Options) _wr_syns ->-                                  {-# LINE 458 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  map (lhsname _lhsIoptions False . fst) _wr_syns-                                  {-# LINE 1422 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule115 #-}-   {-# LINE 459 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule115 = \ nt_ ->-                                  {-# LINE 459 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  "wrap_" ++ show nt_-                                  {-# LINE 1428 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule116 #-}-   {-# LINE 460 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule116 = \ nt_ ->-                                  {-# LINE 460 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  "Inh_" ++ show nt_-                                  {-# LINE 1434 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule117 #-}-   {-# LINE 461 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule117 = \ nt_ ->-                                  {-# LINE 461 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  "Syn_" ++ show nt_-                                  {-# LINE 1440 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule118 #-}-   {-# LINE 462 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule118 = \ initial_ nextVisits_ ->-                                        {-# LINE 462 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                        Map.findWithDefault ManyVis initial_ nextVisits_-                                        {-# LINE 1446 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule119 #-}-   {-# LINE 463 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule119 = \ _addbang _addbangWrap _classPP _firstVisitInfo _inhlist _inhlist1 _inhname _k_type ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ((_lhsImainName) :: String) ((_lhsIoptions) :: Options) _quantPP _synlist _synname _t_params _t_type _wrapPragma _wrapname initial_ initialv_ nt_ ->-                                  {-# LINE 463 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  _wrapPragma-                                  >-< (_wrapname     >#< "::" >#< _quantPP     >#< _classPP     >#< _t_type     >#< _t_params     >#< "->"-                                        >#< _inhname     >#< _t_params     >#< "->" >#< ( if monadicWrappers _lhsIoptions then ppMonadType _lhsIoptions else empty) >#< pp_parens (_synname     >#< _t_params    ))-                                  >-< (_wrapname     >#< (_addbang     $ pp_parens (_t_type     >#< pp "act"))-                                      >#< (_addbang     $ pp_parens (_inhname-                                             >#< (ppSpaced $ map (_addbangWrap     . pp) _inhlist    )) >#< "="))-                                  >-<-                                  indent 3 (case initialv_ of-                                    Nothing -> _synname     >#< " { }"-                                    Just initv ->-                                      let inCon  = conNmTVisitIn nt_ initv-                                          outCon = conNmTVisitOut nt_ initv-                                          pat    = _addbang     $ pp_parens $ pat0-                                          pat0   = outCon >#< ppSpaced _synlist-                                          arg    = inCon >#< ppSpaced _inhlist1-                                          ind    = case _firstVisitInfo     of-                                                     NoneVis  -> error "wrapper: initial state should have a next visit but it has none"-                                                     OneVis _ -> empty-                                                     ManyVis  -> _k_type     >|< "_v" >|< initv-                                          extra  = if dummyTokenVisit _lhsIoptions-                                                   then pp $ dummyArg _lhsIoptions True-                                                   else empty-                                          convert = case Map.lookup initv _lhsIallVisitKinds of-                                                      Just kind -> case kind of-                                                                     VisitPure _  -> text "return"-                                                                     VisitMonadic -> empty-                                          unMonad | monadicWrappers _lhsIoptions = empty-                                                  | otherwise                    = unMon _lhsIoptions-                                      in unMonad >#< "("-                                         >-< indent 2 (-                                                "do" >#< ( _addbang     (pp "sem") >#< "<-" >#< "act"-                                                         >-< "let" >#< _addbangWrap     (pp "arg") >#< "=" >#< arg-                                                         >-< pat >#< "<-" >#< convert >#< pp_parens ("inv_" >|< nt_ >|< "_s" >|< initial_ >#< "sem" >#< ind >#< "arg" >#< extra)-                                                         >-< "return" >#< pp_parens (_synname     >#< ppSpaced _synlist    )-                                                         )-                                              )-                                         >-< ")" )-                                  >-< if lateHigherOrderBinding _lhsIoptions-                                      then indent 2 ("where" >#< lhsname _lhsIoptions True idLateBindingAttr >#< "=" >#< lateBindingFieldNm _lhsImainName)-                                      else empty-                                  {-# LINE 1491 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule120 #-}-   {-# LINE 504 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule120 = \ ((_lhsIoptions) :: Options) _wrapname ->-                                    {-# LINE 504 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                    if parallelInvoke _lhsIoptions && not (monadicWrappers _lhsIoptions)-                                    then ppNoInline _wrapname-                                    else if noInlinePragmas _lhsIoptions-                                         then empty-                                         else ppInlinable _wrapname-                                    {-# LINE 1501 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule121 #-}-   {-# LINE 516 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule121 = \ ((_prodsIsemFunBndDefs) :: Seq PP_Doc) _semFunBndDef ->-                        {-# LINE 516 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        _semFunBndDef     Seq.<| _prodsIsemFunBndDefs-                        {-# LINE 1507 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule122 #-}-   {-# LINE 517 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule122 = \ ((_prodsIsemFunBndTps) :: Seq PP_Doc) _semFunBndTp ->-                        {-# LINE 517 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        _semFunBndTp     Seq.<| _prodsIsemFunBndTps-                        {-# LINE 1513 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule123 #-}-   {-# LINE 518 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule123 = \ _semFunBndNm _semname ->-                        {-# LINE 518 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        _semFunBndNm     >#< "=" >#< _semname-                        {-# LINE 1519 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule124 #-}-   {-# LINE 519 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule124 = \ _semFunBndNm _sem_tp ->-                        {-# LINE 519 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        _semFunBndNm     >#< "::" >#< _sem_tp-                        {-# LINE 1525 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule125 #-}-   {-# LINE 520 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule125 = \ nt_ ->-                        {-# LINE 520 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        lateSemNtLabel nt_-                        {-# LINE 1531 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule126 #-}-   {-# LINE 558 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule126 = \ initial_ ->-                                     {-# LINE 558 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     initial_-                                     {-# LINE 1537 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule127 #-}-   {-# LINE 559 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule127 = \ _allstates ->-                                     {-# LINE 559 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     _allstates-                                     {-# LINE 1543 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule128 #-}-   {-# LINE 1474 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule128 = \ ((_lhsIwrappers) :: Set NontermIdent) _sem_nt _wr_inh _wr_syn _wrapper nt_ ->-                                      {-# LINE 1474 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                      (if nt_ `Set.member` _lhsIwrappers-                                       then     _wr_inh-                                            >-< _wr_syn-                                            >-< _wrapper-                                       else empty)-                                      >-< _sem_nt-                                      {-# LINE 1554 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule129 #-}-   {-# LINE 1480 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule129 = \ _datatype _k_states ((_lhsIoptions) :: Options) ((_prodsIt_visits) :: PP_Doc) _t_init _t_states ->-                                      {-# LINE 1480 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                      (if dataTypes _lhsIoptions then _datatype     else empty)-                                      >-< _t_init-                                      >-< _t_states-                                      >-< _k_states-                                      >-< _prodsIt_visits-                                      {-# LINE 1564 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule130 #-}-   {-# LINE 1540 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule130 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1540 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 1570 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule131 #-}-   {-# LINE 1548 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule131 = \  (_ :: ()) ->-                                                        {-# LINE 1548 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                        id-                                                        {-# LINE 1576 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule132 #-}-   {-# LINE 1560 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule132 = \ nextVisits_ ->-                       {-# LINE 1560 "./src-ag/ExecutionPlan2Hs.ag" #-}-                       nextVisits_-                       {-# LINE 1582 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule133 #-}-   {-# LINE 1561 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule133 = \ prevVisits_ ->-                       {-# LINE 1561 "./src-ag/ExecutionPlan2Hs.ag" #-}-                       prevVisits_-                       {-# LINE 1588 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule134 #-}-   {-# LINE 1605 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule134 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) nt_ ->-                           {-# LINE 1605 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           Map.findWithDefault Map.empty nt_ _lhsIlocalAttrTypes-                           {-# LINE 1594 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule135 #-}-   {-# LINE 1632 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule135 = \ initial_ nt_ ->-                     {-# LINE 1632 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     Map.singleton nt_ initial_-                     {-# LINE 1600 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule136 #-}-   {-# LINE 1646 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule136 = \ nt_ params_ ->-                 {-# LINE 1646 "./src-ag/ExecutionPlan2Hs.ag" #-}-                 NT nt_ (map show params_) False-                 {-# LINE 1606 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule137 #-}-   rule137 = \ ((_prodsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _prodsIchildvisit-   {-# INLINE rule138 #-}-   rule138 = \ ((_prodsIerrors) :: Seq Error) ->-     _prodsIerrors-   {-# INLINE rule139 #-}-   rule139 = \ ((_prodsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _prodsIfromToStates-   {-# INLINE rule140 #-}-   rule140 = \ ((_prodsIgenProdIO) :: IO ()) ->-     _prodsIgenProdIO-   {-# INLINE rule141 #-}-   rule141 = \ ((_prodsIimports) :: [PP_Doc]) ->-     _prodsIimports-   {-# INLINE rule142 #-}-   rule142 = \ ((_prodsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _prodsIvisitKinds-   {-# INLINE rule143 #-}-   rule143 = \ ((_prodsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _prodsIvisitdefs-   {-# INLINE rule144 #-}-   rule144 = \ ((_prodsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _prodsIvisituses-   {-# INLINE rule145 #-}-   rule145 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule146 #-}-   rule146 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule147 #-}-   rule147 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule148 #-}-   rule148 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule149 #-}-   rule149 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule150 #-}-   rule150 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule151 #-}-   rule151 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule152 #-}-   rule152 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule153 #-}-   rule153 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule154 #-}-   rule154 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule155 #-}-   rule155 = \ _ntType ->-     _ntType-   {-# INLINE rule156 #-}-   rule156 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule157 #-}-   rule157 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule158 #-}-   rule158 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks---- ENonterminals -------------------------------------------------- wrapper-data Inh_ENonterminals  = Inh_ENonterminals { allFromToStates_Inh_ENonterminals :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminals :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminals :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminals :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), derivings_Inh_ENonterminals :: (Derivings), importBlocks_Inh_ENonterminals :: (PP_Doc), inhmap_Inh_ENonterminals :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminals :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminals :: (String), mainName_Inh_ENonterminals :: (String), moduleHeader_Inh_ENonterminals :: (String -> String -> String -> Bool -> String), options_Inh_ENonterminals :: (Options), pragmaBlocks_Inh_ENonterminals :: (String), synmap_Inh_ENonterminals :: (Map NontermIdent Attributes), textBlocks_Inh_ENonterminals :: (PP_Doc), typeSyns_Inh_ENonterminals :: (TypeSyns), wrappers_Inh_ENonterminals :: (Set NontermIdent) }-data Syn_ENonterminals  = Syn_ENonterminals { appendCommon_Syn_ENonterminals :: ([PP_Doc]), appendMain_Syn_ENonterminals :: ([PP_Doc]), childvisit_Syn_ENonterminals :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_ENonterminals :: (Seq Error), fromToStates_Syn_ENonterminals :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_ENonterminals :: (IO ()), imports_Syn_ENonterminals :: ([PP_Doc]), initStates_Syn_ENonterminals :: (Map NontermIdent Int), output_Syn_ENonterminals :: (PP_Doc), semFunBndDefs_Syn_ENonterminals :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminals :: (Seq PP_Doc), visitKinds_Syn_ENonterminals :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_ENonterminals #-}-wrap_ENonterminals :: T_ENonterminals  -> Inh_ENonterminals  -> (Syn_ENonterminals )-wrap_ENonterminals (T_ENonterminals act) (Inh_ENonterminals _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers-        (T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminals_s11 sem arg)-        return (Syn_ENonterminals _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# NOINLINE sem_ENonterminals #-}-sem_ENonterminals :: ENonterminals  -> T_ENonterminals -sem_ENonterminals list = Prelude.foldr sem_ENonterminals_Cons sem_ENonterminals_Nil (Prelude.map sem_ENonterminal list)---- semantic domain-newtype T_ENonterminals  = T_ENonterminals {-                                           attach_T_ENonterminals :: Identity (T_ENonterminals_s11 )-                                           }-newtype T_ENonterminals_s11  = C_ENonterminals_s11 {-                                                   inv_ENonterminals_s11 :: (T_ENonterminals_v10 )-                                                   }-data T_ENonterminals_s12  = C_ENonterminals_s12-type T_ENonterminals_v10  = (T_ENonterminals_vIn10 ) -> (T_ENonterminals_vOut10 )-data T_ENonterminals_vIn10  = T_ENonterminals_vIn10 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Derivings) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (String -> String -> String -> Bool -> String) (Options) (String) (Map NontermIdent Attributes) (PP_Doc) (TypeSyns) (Set NontermIdent)-data T_ENonterminals_vOut10  = T_ENonterminals_vOut10 ([PP_Doc]) ([PP_Doc]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Map NontermIdent Int) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_ENonterminals_Cons #-}-sem_ENonterminals_Cons :: T_ENonterminal  -> T_ENonterminals  -> T_ENonterminals -sem_ENonterminals_Cons arg_hd_ arg_tl_ = T_ENonterminals (return st11) where-   {-# NOINLINE st11 #-}-   st11 = let-      v10 :: T_ENonterminals_v10 -      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let-         _hdX8 = Control.Monad.Identity.runIdentity (attach_T_ENonterminal (arg_hd_))-         _tlX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_tl_))-         (T_ENonterminal_vOut7 _hdIappendCommon _hdIappendMain _hdIchildvisit _hdIerrors _hdIfromToStates _hdIgenProdIO _hdIimports _hdIinitStates _hdIoutput _hdIsemFunBndDefs _hdIsemFunBndTps _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_ENonterminal_s8 _hdX8 (T_ENonterminal_vIn7 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOderivings _hdOimportBlocks _hdOinhmap _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOoptions _hdOpragmaBlocks _hdOsynmap _hdOtextBlocks _hdOtypeSyns _hdOwrappers)-         (T_ENonterminals_vOut10 _tlIappendCommon _tlIappendMain _tlIchildvisit _tlIerrors _tlIfromToStates _tlIgenProdIO _tlIimports _tlIinitStates _tlIoutput _tlIsemFunBndDefs _tlIsemFunBndTps _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_ENonterminals_s11 _tlX11 (T_ENonterminals_vIn10 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOderivings _tlOimportBlocks _tlOinhmap _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOoptions _tlOpragmaBlocks _tlOsynmap _tlOtextBlocks _tlOtypeSyns _tlOwrappers)-         _lhsOappendCommon :: [PP_Doc]-         _lhsOappendCommon = rule159 _hdIappendCommon _tlIappendCommon-         _lhsOappendMain :: [PP_Doc]-         _lhsOappendMain = rule160 _hdIappendMain _tlIappendMain-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule161 _hdIchildvisit _tlIchildvisit-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule162 _hdIerrors _tlIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule163 _hdIfromToStates _tlIfromToStates-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule164 _hdIgenProdIO _tlIgenProdIO-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule165 _hdIimports _tlIimports-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule166 _hdIinitStates _tlIinitStates-         _lhsOoutput :: PP_Doc-         _lhsOoutput = rule167 _hdIoutput _tlIoutput-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule168 _hdIsemFunBndDefs _tlIsemFunBndDefs-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule169 _hdIsemFunBndTps _tlIsemFunBndTps-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule170 _hdIvisitKinds _tlIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule171 _hdIvisitdefs _tlIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule172 _hdIvisituses _tlIvisituses-         _hdOallFromToStates = rule173 _lhsIallFromToStates-         _hdOallInitStates = rule174 _lhsIallInitStates-         _hdOallVisitKinds = rule175 _lhsIallVisitKinds-         _hdOallchildvisit = rule176 _lhsIallchildvisit-         _hdOavisitdefs = rule177 _lhsIavisitdefs-         _hdOavisituses = rule178 _lhsIavisituses-         _hdOderivings = rule179 _lhsIderivings-         _hdOimportBlocks = rule180 _lhsIimportBlocks-         _hdOinhmap = rule181 _lhsIinhmap-         _hdOlocalAttrTypes = rule182 _lhsIlocalAttrTypes-         _hdOmainFile = rule183 _lhsImainFile-         _hdOmainName = rule184 _lhsImainName-         _hdOmoduleHeader = rule185 _lhsImoduleHeader-         _hdOoptions = rule186 _lhsIoptions-         _hdOpragmaBlocks = rule187 _lhsIpragmaBlocks-         _hdOsynmap = rule188 _lhsIsynmap-         _hdOtextBlocks = rule189 _lhsItextBlocks-         _hdOtypeSyns = rule190 _lhsItypeSyns-         _hdOwrappers = rule191 _lhsIwrappers-         _tlOallFromToStates = rule192 _lhsIallFromToStates-         _tlOallInitStates = rule193 _lhsIallInitStates-         _tlOallVisitKinds = rule194 _lhsIallVisitKinds-         _tlOallchildvisit = rule195 _lhsIallchildvisit-         _tlOavisitdefs = rule196 _lhsIavisitdefs-         _tlOavisituses = rule197 _lhsIavisituses-         _tlOderivings = rule198 _lhsIderivings-         _tlOimportBlocks = rule199 _lhsIimportBlocks-         _tlOinhmap = rule200 _lhsIinhmap-         _tlOlocalAttrTypes = rule201 _lhsIlocalAttrTypes-         _tlOmainFile = rule202 _lhsImainFile-         _tlOmainName = rule203 _lhsImainName-         _tlOmoduleHeader = rule204 _lhsImoduleHeader-         _tlOoptions = rule205 _lhsIoptions-         _tlOpragmaBlocks = rule206 _lhsIpragmaBlocks-         _tlOsynmap = rule207 _lhsIsynmap-         _tlOtextBlocks = rule208 _lhsItextBlocks-         _tlOtypeSyns = rule209 _lhsItypeSyns-         _tlOwrappers = rule210 _lhsIwrappers-         __result_ = T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminals_s11 v10-   {-# INLINE rule159 #-}-   rule159 = \ ((_hdIappendCommon) ::  PP_Doc ) ((_tlIappendCommon) :: [PP_Doc]) ->-     _hdIappendCommon : _tlIappendCommon-   {-# INLINE rule160 #-}-   rule160 = \ ((_hdIappendMain) ::  PP_Doc ) ((_tlIappendMain) :: [PP_Doc]) ->-     _hdIappendMain : _tlIappendMain-   {-# INLINE rule161 #-}-   rule161 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _hdIchildvisit `Map.union` _tlIchildvisit-   {-# INLINE rule162 #-}-   rule162 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule163 #-}-   rule163 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _hdIfromToStates `mappend` _tlIfromToStates-   {-# INLINE rule164 #-}-   rule164 = \ ((_hdIgenProdIO) :: IO ()) ((_tlIgenProdIO) :: IO ()) ->-     _hdIgenProdIO >> _tlIgenProdIO-   {-# INLINE rule165 #-}-   rule165 = \ ((_hdIimports) :: [PP_Doc]) ((_tlIimports) :: [PP_Doc]) ->-     _hdIimports ++ _tlIimports-   {-# INLINE rule166 #-}-   rule166 = \ ((_hdIinitStates) :: Map NontermIdent Int) ((_tlIinitStates) :: Map NontermIdent Int) ->-     _hdIinitStates `mappend` _tlIinitStates-   {-# INLINE rule167 #-}-   rule167 = \ ((_hdIoutput) :: PP_Doc) ((_tlIoutput) :: PP_Doc) ->-     _hdIoutput >-< _tlIoutput-   {-# INLINE rule168 #-}-   rule168 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->-     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs-   {-# INLINE rule169 #-}-   rule169 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->-     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps-   {-# INLINE rule170 #-}-   rule170 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule171 #-}-   rule171 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs-   {-# INLINE rule172 #-}-   rule172 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisituses `uwSetUnion` _tlIvisituses-   {-# INLINE rule173 #-}-   rule173 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule174 #-}-   rule174 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule175 #-}-   rule175 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule176 #-}-   rule176 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule177 #-}-   rule177 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule178 #-}-   rule178 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule179 #-}-   rule179 = \ ((_lhsIderivings) :: Derivings) ->-     _lhsIderivings-   {-# INLINE rule180 #-}-   rule180 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule181 #-}-   rule181 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule182 #-}-   rule182 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule183 #-}-   rule183 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule184 #-}-   rule184 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule185 #-}-   rule185 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule186 #-}-   rule186 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule187 #-}-   rule187 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule188 #-}-   rule188 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap-   {-# INLINE rule189 #-}-   rule189 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule190 #-}-   rule190 = \ ((_lhsItypeSyns) :: TypeSyns) ->-     _lhsItypeSyns-   {-# INLINE rule191 #-}-   rule191 = \ ((_lhsIwrappers) :: Set NontermIdent) ->-     _lhsIwrappers-   {-# INLINE rule192 #-}-   rule192 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule193 #-}-   rule193 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule194 #-}-   rule194 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule195 #-}-   rule195 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule196 #-}-   rule196 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule197 #-}-   rule197 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule198 #-}-   rule198 = \ ((_lhsIderivings) :: Derivings) ->-     _lhsIderivings-   {-# INLINE rule199 #-}-   rule199 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule200 #-}-   rule200 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule201 #-}-   rule201 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule202 #-}-   rule202 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule203 #-}-   rule203 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule204 #-}-   rule204 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule205 #-}-   rule205 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule206 #-}-   rule206 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule207 #-}-   rule207 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap-   {-# INLINE rule208 #-}-   rule208 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule209 #-}-   rule209 = \ ((_lhsItypeSyns) :: TypeSyns) ->-     _lhsItypeSyns-   {-# INLINE rule210 #-}-   rule210 = \ ((_lhsIwrappers) :: Set NontermIdent) ->-     _lhsIwrappers-{-# NOINLINE sem_ENonterminals_Nil #-}-sem_ENonterminals_Nil ::  T_ENonterminals -sem_ENonterminals_Nil  = T_ENonterminals (return st11) where-   {-# NOINLINE st11 #-}-   st11 = let-      v10 :: T_ENonterminals_v10 -      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let-         _lhsOappendCommon :: [PP_Doc]-         _lhsOappendCommon = rule211  ()-         _lhsOappendMain :: [PP_Doc]-         _lhsOappendMain = rule212  ()-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule213  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule214  ()-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule215  ()-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule216  ()-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule217  ()-         _lhsOinitStates :: Map NontermIdent Int-         _lhsOinitStates = rule218  ()-         _lhsOoutput :: PP_Doc-         _lhsOoutput = rule219  ()-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule220  ()-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule221  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule222  ()-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule223  ()-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule224  ()-         __result_ = T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_ENonterminals_s11 v10-   {-# INLINE rule211 #-}-   rule211 = \  (_ :: ()) ->-     []-   {-# INLINE rule212 #-}-   rule212 = \  (_ :: ()) ->-     []-   {-# INLINE rule213 #-}-   rule213 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule214 #-}-   rule214 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule215 #-}-   rule215 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule216 #-}-   rule216 = \  (_ :: ()) ->-     return ()-   {-# INLINE rule217 #-}-   rule217 = \  (_ :: ()) ->-     []-   {-# INLINE rule218 #-}-   rule218 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule219 #-}-   rule219 = \  (_ :: ()) ->-     empty-   {-# INLINE rule220 #-}-   rule220 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule221 #-}-   rule221 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule222 #-}-   rule222 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule223 #-}-   rule223 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule224 #-}-   rule224 = \  (_ :: ()) ->-     Map.empty---- EProduction ---------------------------------------------------- wrapper-data Inh_EProduction  = Inh_EProduction { allFromToStates_Inh_EProduction :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProduction :: (Map NontermIdent Attributes), allInitStates_Inh_EProduction :: (Map NontermIdent Int), allSynmap_Inh_EProduction :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProduction :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProduction :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allstates_Inh_EProduction :: (Set StateIdentifier), avisitdefs_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), classCtxs_Inh_EProduction :: (ClassContext), importBlocks_Inh_EProduction :: (PP_Doc), inhmap_Inh_EProduction :: (Attributes), initial_Inh_EProduction :: (StateIdentifier), localAttrTypes_Inh_EProduction :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProduction :: (String), mainName_Inh_EProduction :: (String), moduleHeader_Inh_EProduction :: (String -> String -> String -> Bool -> String), nextVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), nt_Inh_EProduction :: (NontermIdent), ntType_Inh_EProduction :: (Type), options_Inh_EProduction :: (Options), params_Inh_EProduction :: ([Identifier]), pragmaBlocks_Inh_EProduction :: (String), prevVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), rename_Inh_EProduction :: (Bool), synmap_Inh_EProduction :: (Attributes), textBlocks_Inh_EProduction :: (PP_Doc) }-data Syn_EProduction  = Syn_EProduction { allvisits_Syn_EProduction :: ([VisitStateState]), childvisit_Syn_EProduction :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), count_Syn_EProduction :: (Int), datatype_Syn_EProduction :: (PP_Doc), errors_Syn_EProduction :: (Seq Error), fromToStates_Syn_EProduction :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_EProduction :: (IO ()), imports_Syn_EProduction :: ([PP_Doc]), semFunBndDefs_Syn_EProduction :: (Seq PP_Doc), semFunBndTps_Syn_EProduction :: (Seq PP_Doc), sem_nt_Syn_EProduction :: (PP_Doc), sem_prod_Syn_EProduction :: (PP_Doc), t_visits_Syn_EProduction :: (PP_Doc), visitKinds_Syn_EProduction :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_EProduction #-}-wrap_EProduction :: T_EProduction  -> Inh_EProduction  -> (Syn_EProduction )-wrap_EProduction (T_EProduction act) (Inh_EProduction _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks-        (T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProduction_s14 sem arg)-        return (Syn_EProduction _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_EProduction #-}-sem_EProduction :: EProduction  -> T_EProduction -sem_EProduction ( EProduction con_ params_ constraints_ rules_ children_ visits_ ) = sem_EProduction_EProduction con_ params_ constraints_ ( sem_ERules rules_ ) ( sem_EChildren children_ ) ( sem_Visits visits_ )---- semantic domain-newtype T_EProduction  = T_EProduction {-                                       attach_T_EProduction :: Identity (T_EProduction_s14 )-                                       }-newtype T_EProduction_s14  = C_EProduction_s14 {-                                               inv_EProduction_s14 :: (T_EProduction_v13 )-                                               }-data T_EProduction_s15  = C_EProduction_s15-type T_EProduction_v13  = (T_EProduction_vIn13 ) -> (T_EProduction_vOut13 )-data T_EProduction_vIn13  = T_EProduction_vIn13 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Set StateIdentifier) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (ClassContext) (PP_Doc) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (String -> String -> String -> Bool -> String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (String) (Map StateIdentifier StateCtx) (Bool) (Attributes) (PP_Doc)-data T_EProduction_vOut13  = T_EProduction_vOut13 ([VisitStateState]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Int) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_EProduction_EProduction #-}-sem_EProduction_EProduction :: (ConstructorIdent) -> ([Identifier]) -> ([Type]) -> T_ERules  -> T_EChildren  -> T_Visits  -> T_EProduction -sem_EProduction_EProduction arg_con_ arg_params_ arg_constraints_ arg_rules_ arg_children_ arg_visits_ = T_EProduction (return st14) where-   {-# NOINLINE st14 #-}-   st14 = let-      v13 :: T_EProduction_v13 -      v13 = \ (T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let-         _rulesX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_rules_))-         _childrenX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_children_))-         _visitsX56 = Control.Monad.Identity.runIdentity (attach_T_Visits (arg_visits_))-         (T_ERules_vOut22 _rulesIerrors _rulesImrules _rulesIruledefs _rulesIruleuses _rulesIsem_rules _rulesIusedArgs) = inv_ERules_s23 _rulesX23 (T_ERules_vIn22 _rulesOallInhmap _rulesOallSynmap _rulesOchildTypes _rulesOcon _rulesOimportBlocks _rulesOinhmap _rulesOlazyIntras _rulesOlocalAttrTypes _rulesOmainFile _rulesOmainName _rulesOmoduleHeader _rulesOnt _rulesOoptions _rulesOpragmaBlocks _rulesOruleKinds _rulesOsynmap _rulesOtextBlocks _rulesOusageInfo)-         (T_EChildren_vOut4 _childrenIargnamesw _childrenIargpats _childrenIargtps _childrenIchildTypes _childrenIchildintros _childrenIdatatype _childrenIterminaldefs _childrenIusedArgs) = inv_EChildren_s5 _childrenX5 (T_EChildren_vIn4 _childrenOallInitStates _childrenOcon _childrenOimportBlocks _childrenOmainFile _childrenOmainName _childrenOmoduleHeader _childrenOnt _childrenOoptions _childrenOpragmaBlocks _childrenOtextBlocks)-         (T_Visits_vOut55 _visitsIallvisits _visitsIchildvisit _visitsIerrors _visitsIfromToStates _visitsIintramap _visitsIlazyIntras _visitsIruleKinds _visitsIruleUsage _visitsIsem_visit _visitsIt_visits _visitsIusedArgs _visitsIvisitKinds _visitsIvisitdefs _visitsIvisituses) = inv_Visits_s56 _visitsX56 (T_Visits_vIn55 _visitsOallFromToStates _visitsOallInhmap _visitsOallInitStates _visitsOallSynmap _visitsOallVisitKinds _visitsOallchildvisit _visitsOallintramap _visitsOavisitdefs _visitsOavisituses _visitsOchildTypes _visitsOchildintros _visitsOcon _visitsOinhmap _visitsOmrules _visitsOnextVisits _visitsOnt _visitsOoptions _visitsOparams _visitsOprevVisits _visitsOruledefs _visitsOruleuses _visitsOsynmap _visitsOterminaldefs)-         _childrenOcon = rule225 arg_con_-         _rulesOcon = rule226 arg_con_-         _visitsOcon = rule227 arg_con_-         _lhsOdatatype :: PP_Doc-         _lhsOdatatype = rule228 _childrenIdatatype _classPP1 _lhsInt _lhsIoptions _lhsIrename _quantPP1 arg_con_-         _classPP1 = rule229 arg_constraints_-         _quantPP1 = rule230 arg_params_-         _lhsOcount :: Int-         _lhsOcount = rule231  ()-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule232 _childrenIargnamesw _childrenIargpats _lhsInt _lhsIrename arg_con_-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule233 _semFunBndDef-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule234 _semFunBndTp-         _semFunBndDef = rule235 _semFunBndNm _semname-         _semFunBndTp = rule236 _semFunBndNm _sem_tp-         _semFunBndNm = rule237 _lhsInt arg_con_-         _t_type = rule238 _lhsInt-         _t_params = rule239 _lhsIparams-         _usedArgs = rule240 _childrenIusedArgs _rulesIusedArgs _visitsIusedArgs-         _args = rule241 _childrenIargpats _usedArgs-         _semname = rule242 _lhsInt arg_con_-         _sem_tp = rule243 _childrenIargtps _classPP2 _quantPP2 _t_params _t_type-         _classPP2 = rule244 _lhsIclassCtxs arg_constraints_-         _quantPP2 = rule245 _lhsIparams arg_params_-         _sem_prod = rule246 _args _lhsIinitial _mbInitializer _mkSemBody _outerlet _scc _semInlinePragma _sem_tp _semname _t_type-         _mkSemBody = rule247  ()-         _mbInitializer = rule248 _lhsIoptions-         _scc = rule249 _lhsIoptions _semname-         _semInlinePragma = rule250 _lhsIoptions _semname-         _outerlet = rule251 _rulesIsem_rules _statefns-         _statefns = rule252 _genstfn _lhsIallstates-         _genstfn = rule253 _addbang _lhsIinitial _lhsInextVisits _lhsInt _lhsIoptions _lhsIprevVisits _stargs _stks _stvs-         _stargs = rule254 _addbang _childTypes _lazyIntras _lhsIallInhmap _lhsIallSynmap _lhsIoptions _localAttrTypes _visitsIintramap-         _stks = rule255 _lhsInt _lhsIoptions _stvisits _t_params-         _stvisits = rule256 _visitsIallvisits-         _stvs = rule257 _visitsIsem_visit-         _visitsOmrules = rule258 _rulesImrules-         _visitsOchildintros = rule259 _childrenIchildintros-         _rulesOusageInfo = rule260 _visitsIruleUsage-         _rulesOruleKinds = rule261 _visitsIruleKinds-         _visitsOallintramap = rule262 _visitsIintramap-         _visitsOterminaldefs = rule263 _childrenIterminaldefs-         _visitsOruledefs = rule264 _rulesIruledefs-         _visitsOruleuses = rule265 _rulesIruleuses-         _lazyIntras = rule266 _visitsIlazyIntras-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule267 _moduleName-         _moduleName = rule268 _lhsImainName _suffix-         _suffix = rule269 _lhsInt arg_con_-         _outputfile = rule270 _lhsImainFile _suffix-         _ppMonadImports = rule271 _lhsIoptions-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule272 _lhsIimportBlocks _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _outputfile _ppMonadImports _sem_prod _semname _suffix-         _addbang = rule273 _lhsIoptions-         _childTypes = rule274 _childrenIchildTypes _lhsIntType-         _localAttrTypes = rule275 _lhsIlocalAttrTypes arg_con_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule276 _visitsIchildvisit-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule277 _rulesIerrors _visitsIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule278 _visitsIfromToStates-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule279 _visitsIt_visits-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule280 _visitsIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule281 _visitsIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule282 _visitsIvisituses-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule283 _visitsIallvisits-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule284 _sem_prod-         _rulesOallInhmap = rule285 _lhsIallInhmap-         _rulesOallSynmap = rule286 _lhsIallSynmap-         _rulesOchildTypes = rule287 _childTypes-         _rulesOimportBlocks = rule288 _lhsIimportBlocks-         _rulesOinhmap = rule289 _lhsIinhmap-         _rulesOlazyIntras = rule290 _lazyIntras-         _rulesOlocalAttrTypes = rule291 _localAttrTypes-         _rulesOmainFile = rule292 _lhsImainFile-         _rulesOmainName = rule293 _lhsImainName-         _rulesOmoduleHeader = rule294 _lhsImoduleHeader-         _rulesOnt = rule295 _lhsInt-         _rulesOoptions = rule296 _lhsIoptions-         _rulesOpragmaBlocks = rule297 _lhsIpragmaBlocks-         _rulesOsynmap = rule298 _lhsIsynmap-         _rulesOtextBlocks = rule299 _lhsItextBlocks-         _childrenOallInitStates = rule300 _lhsIallInitStates-         _childrenOimportBlocks = rule301 _lhsIimportBlocks-         _childrenOmainFile = rule302 _lhsImainFile-         _childrenOmainName = rule303 _lhsImainName-         _childrenOmoduleHeader = rule304 _lhsImoduleHeader-         _childrenOnt = rule305 _lhsInt-         _childrenOoptions = rule306 _lhsIoptions-         _childrenOpragmaBlocks = rule307 _lhsIpragmaBlocks-         _childrenOtextBlocks = rule308 _lhsItextBlocks-         _visitsOallFromToStates = rule309 _lhsIallFromToStates-         _visitsOallInhmap = rule310 _lhsIallInhmap-         _visitsOallInitStates = rule311 _lhsIallInitStates-         _visitsOallSynmap = rule312 _lhsIallSynmap-         _visitsOallVisitKinds = rule313 _lhsIallVisitKinds-         _visitsOallchildvisit = rule314 _lhsIallchildvisit-         _visitsOavisitdefs = rule315 _lhsIavisitdefs-         _visitsOavisituses = rule316 _lhsIavisituses-         _visitsOchildTypes = rule317 _childTypes-         _visitsOinhmap = rule318 _lhsIinhmap-         _visitsOnextVisits = rule319 _lhsInextVisits-         _visitsOnt = rule320 _lhsInt-         _visitsOoptions = rule321 _lhsIoptions-         _visitsOparams = rule322 _lhsIparams-         _visitsOprevVisits = rule323 _lhsIprevVisits-         _visitsOsynmap = rule324 _lhsIsynmap-         __result_ = T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProduction_s14 v13-   {-# INLINE rule225 #-}-   {-# LINE 71 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule225 = \ con_ ->-                                 {-# LINE 71 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 con_-                                 {-# LINE 2188 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule226 #-}-   {-# LINE 72 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule226 = \ con_ ->-                                 {-# LINE 72 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 con_-                                 {-# LINE 2194 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule227 #-}-   {-# LINE 73 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule227 = \ con_ ->-                                 {-# LINE 73 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 con_-                                 {-# LINE 2200 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule228 #-}-   {-# LINE 186 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule228 = \ ((_childrenIdatatype) :: [PP_Doc]) _classPP1 ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIrename) :: Bool) _quantPP1 con_ ->-                                 {-# LINE 186 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _quantPP1     >#< _classPP1-                                 >#< conname _lhsIrename _lhsInt con_-                                 >#< ppConFields (dataRecords _lhsIoptions) _childrenIdatatype-                                 {-# LINE 2208 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule229 #-}-   {-# LINE 189 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule229 = \ constraints_ ->-                                 {-# LINE 189 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 ppClasses (classConstrsToDocs constraints_)-                                 {-# LINE 2214 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule230 #-}-   {-# LINE 190 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule230 = \ params_ ->-                                 {-# LINE 190 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 ppQuants params_-                                 {-# LINE 2220 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule231 #-}-   {-# LINE 288 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule231 = \  (_ :: ()) ->-                                              {-# LINE 288 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                              1-                                              {-# LINE 2226 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule232 #-}-   {-# LINE 293 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule232 = \ ((_childrenIargnamesw) :: [PP_Doc]) ((_childrenIargpats) ::  [PP_Doc] ) ((_lhsInt) :: NontermIdent) ((_lhsIrename) :: Bool) con_ ->-                               {-# LINE 293 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               "sem_" >|< _lhsInt >#< "(" >#< conname _lhsIrename _lhsInt con_ >#< ppSpaced _childrenIargpats >#< ")"-                               >#< "=" >#< "sem_" >|< _lhsInt >|< "_" >|< con_ >#< ppSpaced _childrenIargnamesw-                               {-# LINE 2233 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule233 #-}-   {-# LINE 523 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule233 = \ _semFunBndDef ->-                        {-# LINE 523 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        Seq.singleton _semFunBndDef-                        {-# LINE 2239 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule234 #-}-   {-# LINE 524 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule234 = \ _semFunBndTp ->-                        {-# LINE 524 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        Seq.singleton _semFunBndTp-                        {-# LINE 2245 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule235 #-}-   {-# LINE 525 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule235 = \ _semFunBndNm _semname ->-                        {-# LINE 525 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        _semFunBndNm     >#< "=" >#< _semname-                        {-# LINE 2251 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule236 #-}-   {-# LINE 526 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule236 = \ _semFunBndNm _sem_tp ->-                        {-# LINE 526 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        _semFunBndNm     >#< "::" >#< _sem_tp-                        {-# LINE 2257 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule237 #-}-   {-# LINE 527 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule237 = \ ((_lhsInt) :: NontermIdent) con_ ->-                        {-# LINE 527 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        lateSemConLabel _lhsInt con_-                        {-# LINE 2263 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule238 #-}-   {-# LINE 585 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule238 = \ ((_lhsInt) :: NontermIdent) ->-                                 {-# LINE 585 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 "T_" >|< _lhsInt-                                 {-# LINE 2269 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule239 #-}-   {-# LINE 586 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule239 = \ ((_lhsIparams) :: [Identifier]) ->-                                 {-# LINE 586 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 ppSpaced _lhsIparams-                                 {-# LINE 2275 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule240 #-}-   {-# LINE 587 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule240 = \ ((_childrenIusedArgs) :: Set String) ((_rulesIusedArgs) :: Set String) ((_visitsIusedArgs) :: Set String) ->-                                 {-# LINE 587 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _childrenIusedArgs `Set.union` _visitsIusedArgs `Set.union` _rulesIusedArgs-                                 {-# LINE 2281 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule241 #-}-   {-# LINE 590 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule241 = \ ((_childrenIargpats) ::  [PP_Doc] ) _usedArgs ->-                                 {-# LINE 590 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 map (\x -> let (name,arg) = case show x of-                                                         ""       -> ("", empty)-                                                         '!':name -> ("arg_" ++ name, "!arg_" >|< name)-                                                         name     -> ("arg_" ++ name, "arg_"  >|< name)-                                            in  if null name || name `Set.member` _usedArgs-                                                then arg-                                                else text "_") _childrenIargpats-                                 {-# LINE 2293 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule242 #-}-   {-# LINE 597 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule242 = \ ((_lhsInt) :: NontermIdent) con_ ->-                                 {-# LINE 597 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 "sem_" ++ show _lhsInt ++ "_" ++ show con_-                                 {-# LINE 2299 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule243 #-}-   {-# LINE 598 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule243 = \ ((_childrenIargtps) ::  [PP_Doc] ) _classPP2 _quantPP2 _t_params _t_type ->-                                 {-# LINE 598 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _quantPP2     >#< _classPP2     >#< ppSpaced _childrenIargtps >#< _t_type     >#< _t_params-                                 {-# LINE 2305 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule244 #-}-   {-# LINE 599 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule244 = \ ((_lhsIclassCtxs) :: ClassContext) constraints_ ->-                                 {-# LINE 599 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 ppClasses (classCtxsToDocs _lhsIclassCtxs ++ classConstrsToDocs constraints_)-                                 {-# LINE 2311 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule245 #-}-   {-# LINE 600 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule245 = \ ((_lhsIparams) :: [Identifier]) params_ ->-                                 {-# LINE 600 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 ppQuants (_lhsIparams ++ params_)-                                 {-# LINE 2317 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule246 #-}-   {-# LINE 601 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule246 = \ _args ((_lhsIinitial) :: StateIdentifier) _mbInitializer _mkSemBody _outerlet _scc _semInlinePragma _sem_tp _semname _t_type ->-                                 {-# LINE 601 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _semInlinePragma-                                 >-< _semname     >#< "::" >#< _sem_tp-                                 >-< _mkSemBody     (_semname     >#< ppSpaced _args     >#< "=" >#< _scc     >#< _t_type    )-                                                    _mbInitializer     _outerlet     ("return" >#< "st" >|< _lhsIinitial)-                                 {-# LINE 2326 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule247 #-}-   {-# LINE 605 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule247 = \  (_ :: ()) ->-                                  {-# LINE 605 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  \prefix mbInit outerlet ret ->-                                    case mbInit of-                                      Nothing -> prefix >#< pp_parens ret >#< "where"-                                                 >-< indent 3 outerlet-                                      Just m  -> prefix >#< "(" >#< "do"-                                                 >-< indent 1 (-                                                       m-                                                       >-< "let"-                                                       >-< indent 2 outerlet-                                                       >-< ret )-                                                 >-< indent 1 ")"-                                  {-# LINE 2342 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule248 #-}-   {-# LINE 617 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule248 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 617 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                        if parallelInvoke _lhsIoptions-                                        then (Nothing :: Maybe PP_Doc)-                                        else Nothing-                                        {-# LINE 2350 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule249 #-}-   {-# LINE 623 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule249 = \ ((_lhsIoptions) :: Options) _semname ->-                                        {-# LINE 623 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                        if genCostCentres _lhsIoptions-                                        then ppCostCentre _semname-                                        else empty-                                        {-# LINE 2358 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule250 #-}-   {-# LINE 626 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule250 = \ ((_lhsIoptions) :: Options) _semname ->-                                        {-# LINE 626 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                        if noInlinePragmas _lhsIoptions-                                        then empty-                                        else ppNoInline _semname-                                        {-# LINE 2366 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule251 #-}-   {-# LINE 629 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule251 = \ ((_rulesIsem_rules) :: PP_Doc) _statefns ->-                                 {-# LINE 629 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 vlist _statefns     >-< _rulesIsem_rules-                                 {-# LINE 2372 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule252 #-}-   {-# LINE 630 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule252 = \ _genstfn ((_lhsIallstates) :: Set StateIdentifier) ->-                                 {-# LINE 630 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 map _genstfn     $ Set.toList _lhsIallstates-                                 {-# LINE 2378 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule253 #-}-   {-# LINE 631 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule253 = \ _addbang ((_lhsIinitial) :: StateIdentifier) ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) _stargs _stks _stvs ->-                                 {-# LINE 631 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 \st -> let nextVisitInfo = Map.findWithDefault ManyVis st _lhsInextVisits-                                            prevVisitInfo = Map.findWithDefault ManyVis st _lhsIprevVisits-                                            stNm = "st" >|< st-                                            lhs  = pragma >-< bang stNm >#< "=" >#<-                                                   (-                                                     if st == _lhsIinitial-                                                     then empty-                                                     else "\\" >#< _stargs     st >#< "->"-                                                   )-                                            pragma = if noInlinePragmas _lhsIoptions-                                                     then empty-                                                     else if helpInlining _lhsIoptions-                                                          then case prevVisitInfo of-                                                                 ManyVis  -> ppNoInline stNm-                                                                 OneVis _ -> if aggressiveInlinePragmas _lhsIoptions-                                                                             then ppInline stNm-                                                                             else ppInlinable stNm-                                                                 NoneVis  -> if st /= _lhsIinitial-                                                                             then error ("State " ++ show st ++ " is not reachable from the initial state.")-                                                                             else if aggressiveInlinePragmas _lhsIoptions-                                                                                  then ppInline stNm-                                                                                  else ppInlinable stNm-                                                          else ppNoInline stNm-                                            cCon = "C_" >|< _lhsInt >|< "_s" >|< st-                                            bang | st == _lhsIinitial = _addbang-                                                 | otherwise          = id-                                        in case nextVisitInfo of-                                             NoneVis    ->-                                                           if st == _lhsIinitial-                                                           then lhs >#< cCon-                                                           else empty-                                             OneVis vId -> mklet lhs (_stvs     st False) (cCon >#< "v" >|< vId)-                                             ManyVis    -> mklet lhs (_stks     st >-< _stvs     st True) (cCon >#< "k" >|< st)-                                 {-# LINE 2416 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule254 #-}-   {-# LINE 673 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule254 = \ _addbang _childTypes _lazyIntras ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIoptions) :: Options) _localAttrTypes ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->-                                 {-# LINE 673 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 \st -> let attrs = maybe Map.empty id $ Map.lookup st _visitsIintramap-                                        in ppSpaced [ let match | str `Set.member` _lazyIntras     = pp str-                                                                | otherwise                        = _addbang     (pp str)-                                                      in case mbAttr of-                                                           Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->-                                                             case Map.lookup nm _localAttrTypes     of-                                                               Just tp -> pp_parens (pp_parens match >#< "::" >#< ppTp tp)-                                                               Nothing -> match-                                                           Just attr | not (noPerStateTypeSigs _lhsIoptions) ->-                                                             case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _childTypes     of-                                                               Just tpDoc -> pp_parens (pp_parens match >#< "::" >#< tpDoc)-                                                               Nothing    -> match-                                                           _ -> match-                                                   | (str,mbAttr) <- Map.assocs attrs-                                                   ] >#< dummyPat _lhsIoptions (Map.null attrs)-                                 {-# LINE 2436 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule255 #-}-   {-# LINE 689 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule255 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _stvisits _t_params ->-                                 {-# LINE 689 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 \st -> if null (_stvisits     st)-                                        then empty-                                        else ( if not (noInlinePragmas _lhsIoptions) && helpInlining _lhsIoptions-                                               then ppNoInline ("k" >|< st)-                                               else empty-                                             )-                                             >-< "k" >|< st >#< "::" >#< "K_" >|< _lhsInt >|< "_s" >|< st >#< _t_params     >#< "t" >#< "->" >#< "t"-                                             >-< vlist (map (\(v,f,t) -> "k" >|< st >#< "K_" >|< _lhsInt >|< "_v" >|< v >#< "="-                                                                    >#< "v" >|< v) $ _stvisits     st)-                                 {-# LINE 2450 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule256 #-}-   {-# LINE 698 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule256 = \ ((_visitsIallvisits) :: [VisitStateState]) ->-                                 {-# LINE 698 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 \st -> filter (\(v,f,t) -> f == st) _visitsIallvisits-                                 {-# LINE 2456 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule257 #-}-   {-# LINE 699 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule257 = \ ((_visitsIsem_visit) ::  [(StateIdentifier,Bool -> PP_Doc)] ) ->-                                 {-# LINE 699 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 \st inlinePragma -> vlist [ppf inlinePragma | (f,ppf) <- _visitsIsem_visit, f == st]-                                 {-# LINE 2462 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule258 #-}-   {-# LINE 700 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule258 = \ ((_rulesImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-                                  {-# LINE 700 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  _rulesImrules-                                  {-# LINE 2468 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule259 #-}-   {-# LINE 915 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule259 = \ ((_childrenIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-                                       {-# LINE 915 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                       _childrenIchildintros-                                       {-# LINE 2474 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule260 #-}-   {-# LINE 1270 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule260 = \ ((_visitsIruleUsage) :: Map Identifier Int) ->-                                                   {-# LINE 1270 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                   _visitsIruleUsage-                                                   {-# LINE 2480 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule261 #-}-   {-# LINE 1285 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule261 = \ ((_visitsIruleKinds) :: Map Identifier (Set VisitKind)) ->-                      {-# LINE 1285 "./src-ag/ExecutionPlan2Hs.ag" #-}-                      _visitsIruleKinds-                      {-# LINE 2486 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule262 #-}-   {-# LINE 1314 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule262 = \ ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->-                          {-# LINE 1314 "./src-ag/ExecutionPlan2Hs.ag" #-}-                          _visitsIintramap-                          {-# LINE 2492 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule263 #-}-   {-# LINE 1315 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule263 = \ ((_childrenIterminaldefs) :: Set String) ->-                          {-# LINE 1315 "./src-ag/ExecutionPlan2Hs.ag" #-}-                          _childrenIterminaldefs-                          {-# LINE 2498 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule264 #-}-   {-# LINE 1339 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule264 = \ ((_rulesIruledefs) :: Map Identifier (Set String)) ->-                                    {-# LINE 1339 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                    _rulesIruledefs-                                    {-# LINE 2504 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule265 #-}-   {-# LINE 1340 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule265 = \ ((_rulesIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-                                    {-# LINE 1340 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                    _rulesIruleuses-                                    {-# LINE 2510 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule266 #-}-   {-# LINE 1394 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule266 = \ ((_visitsIlazyIntras) :: Set String) ->-                     {-# LINE 1394 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     _visitsIlazyIntras-                     {-# LINE 2516 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule267 #-}-   {-# LINE 1491 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule267 = \ _moduleName ->-                                   {-# LINE 1491 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   [pp $ "import " ++ _moduleName    ]-                                   {-# LINE 2522 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule268 #-}-   {-# LINE 1492 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule268 = \ ((_lhsImainName) :: String) _suffix ->-                                   {-# LINE 1492 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   _lhsImainName ++ _suffix-                                   {-# LINE 2528 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule269 #-}-   {-# LINE 1493 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule269 = \ ((_lhsInt) :: NontermIdent) con_ ->-                                   {-# LINE 1493 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   "_" ++ show _lhsInt ++ "_" ++ show con_-                                   {-# LINE 2534 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule270 #-}-   {-# LINE 1494 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule270 = \ ((_lhsImainFile) :: String) _suffix ->-                                   {-# LINE 1494 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ _suffix    )-                                   {-# LINE 2540 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule271 #-}-   {-# LINE 1495 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule271 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 1495 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                        if parallelInvoke _lhsIoptions-                                        then pp "import qualified System.IO.Unsafe(unsafePerformIO)"-                                             >-< pp "import System.IO(IO)"-                                             >-< pp "import Control.Concurrent(newEmptyMVar,forkIO,putMVar,takeMVar)"-                                        else pp "import Control.Monad.Identity"-                                        {-# LINE 2550 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule272 #-}-   {-# LINE 1500 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule272 = \ ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptions) :: Options) ((_lhsIpragmaBlocks) :: String) _outputfile _ppMonadImports _sem_prod _semname _suffix ->-                                   {-# LINE 1500 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   writeModule _outputfile-                                       [ warrenFlagsPP _lhsIoptions-                                       , pp $ _lhsIpragmaBlocks-                                       , pp $ _lhsImoduleHeader _lhsImainName _suffix     _semname     True-                                       , _lhsIimportBlocks-                                       , _ppMonadImports-                                       , ( if tupleAsDummyToken _lhsIoptions-                                              then empty-                                              else pp "import GHC.Prim"-                                        )-                                       , pp $ "import " ++ _lhsImainName ++ "_common"-                                       , _sem_prod-                                       ]-                                   {-# LINE 2568 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule273 #-}-   {-# LINE 1541 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule273 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1541 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 2574 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule274 #-}-   {-# LINE 1591 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule274 = \ ((_childrenIchildTypes) :: Map Identifier Type) ((_lhsIntType) :: Type) ->-                     {-# LINE 1591 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     Map.singleton _LHS _lhsIntType `Map.union` _childrenIchildTypes-                     {-# LINE 2580 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule275 #-}-   {-# LINE 1608 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule275 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) con_ ->-                           {-# LINE 1608 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           Map.findWithDefault Map.empty con_ _lhsIlocalAttrTypes-                           {-# LINE 2586 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule276 #-}-   rule276 = \ ((_visitsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _visitsIchildvisit-   {-# INLINE rule277 #-}-   rule277 = \ ((_rulesIerrors) :: Seq Error) ((_visitsIerrors) :: Seq Error) ->-     _rulesIerrors Seq.>< _visitsIerrors-   {-# INLINE rule278 #-}-   rule278 = \ ((_visitsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _visitsIfromToStates-   {-# INLINE rule279 #-}-   rule279 = \ ((_visitsIt_visits) :: PP_Doc) ->-     _visitsIt_visits-   {-# INLINE rule280 #-}-   rule280 = \ ((_visitsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _visitsIvisitKinds-   {-# INLINE rule281 #-}-   rule281 = \ ((_visitsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _visitsIvisitdefs-   {-# INLINE rule282 #-}-   rule282 = \ ((_visitsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _visitsIvisituses-   {-# INLINE rule283 #-}-   rule283 = \ ((_visitsIallvisits) :: [VisitStateState]) ->-     _visitsIallvisits-   {-# INLINE rule284 #-}-   rule284 = \ _sem_prod ->-     _sem_prod-   {-# INLINE rule285 #-}-   rule285 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule286 #-}-   rule286 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule287 #-}-   rule287 = \ _childTypes ->-     _childTypes-   {-# INLINE rule288 #-}-   rule288 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule289 #-}-   rule289 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule290 #-}-   rule290 = \ _lazyIntras ->-     _lazyIntras-   {-# INLINE rule291 #-}-   rule291 = \ _localAttrTypes ->-     _localAttrTypes-   {-# INLINE rule292 #-}-   rule292 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule293 #-}-   rule293 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule294 #-}-   rule294 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule295 #-}-   rule295 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule296 #-}-   rule296 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule297 #-}-   rule297 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule298 #-}-   rule298 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule299 #-}-   rule299 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule300 #-}-   rule300 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule301 #-}-   rule301 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule302 #-}-   rule302 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule303 #-}-   rule303 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule304 #-}-   rule304 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule305 #-}-   rule305 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule306 #-}-   rule306 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule307 #-}-   rule307 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule308 #-}-   rule308 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule309 #-}-   rule309 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule310 #-}-   rule310 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule311 #-}-   rule311 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule312 #-}-   rule312 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule313 #-}-   rule313 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule314 #-}-   rule314 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule315 #-}-   rule315 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule316 #-}-   rule316 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule317 #-}-   rule317 = \ _childTypes ->-     _childTypes-   {-# INLINE rule318 #-}-   rule318 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule319 #-}-   rule319 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule320 #-}-   rule320 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule321 #-}-   rule321 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule322 #-}-   rule322 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule323 #-}-   rule323 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule324 #-}-   rule324 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap---- EProductions --------------------------------------------------- wrapper-data Inh_EProductions  = Inh_EProductions { allFromToStates_Inh_EProductions :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProductions :: (Map NontermIdent Attributes), allInitStates_Inh_EProductions :: (Map NontermIdent Int), allSynmap_Inh_EProductions :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProductions :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProductions :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allstates_Inh_EProductions :: (Set StateIdentifier), avisitdefs_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), classCtxs_Inh_EProductions :: (ClassContext), importBlocks_Inh_EProductions :: (PP_Doc), inhmap_Inh_EProductions :: (Attributes), initial_Inh_EProductions :: (StateIdentifier), localAttrTypes_Inh_EProductions :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProductions :: (String), mainName_Inh_EProductions :: (String), moduleHeader_Inh_EProductions :: (String -> String -> String -> Bool -> String), nextVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), nt_Inh_EProductions :: (NontermIdent), ntType_Inh_EProductions :: (Type), options_Inh_EProductions :: (Options), params_Inh_EProductions :: ([Identifier]), pragmaBlocks_Inh_EProductions :: (String), prevVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), rename_Inh_EProductions :: (Bool), synmap_Inh_EProductions :: (Attributes), textBlocks_Inh_EProductions :: (PP_Doc) }-data Syn_EProductions  = Syn_EProductions { allvisits_Syn_EProductions :: ([VisitStateState]), childvisit_Syn_EProductions :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), count_Syn_EProductions :: (Int), datatype_Syn_EProductions :: ([PP_Doc]), errors_Syn_EProductions :: (Seq Error), fromToStates_Syn_EProductions :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_EProductions :: (IO ()), imports_Syn_EProductions :: ([PP_Doc]), semFunBndDefs_Syn_EProductions :: (Seq PP_Doc), semFunBndTps_Syn_EProductions :: (Seq PP_Doc), sem_nt_Syn_EProductions :: (PP_Doc), sem_prod_Syn_EProductions :: (PP_Doc), t_visits_Syn_EProductions :: (PP_Doc), visitKinds_Syn_EProductions :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_EProductions #-}-wrap_EProductions :: T_EProductions  -> Inh_EProductions  -> (Syn_EProductions )-wrap_EProductions (T_EProductions act) (Inh_EProductions _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks-        (T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProductions_s17 sem arg)-        return (Syn_EProductions _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# NOINLINE sem_EProductions #-}-sem_EProductions :: EProductions  -> T_EProductions -sem_EProductions list = Prelude.foldr sem_EProductions_Cons sem_EProductions_Nil (Prelude.map sem_EProduction list)---- semantic domain-newtype T_EProductions  = T_EProductions {-                                         attach_T_EProductions :: Identity (T_EProductions_s17 )-                                         }-newtype T_EProductions_s17  = C_EProductions_s17 {-                                                 inv_EProductions_s17 :: (T_EProductions_v16 )-                                                 }-data T_EProductions_s18  = C_EProductions_s18-type T_EProductions_v16  = (T_EProductions_vIn16 ) -> (T_EProductions_vOut16 )-data T_EProductions_vIn16  = T_EProductions_vIn16 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Set StateIdentifier) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (ClassContext) (PP_Doc) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (String -> String -> String -> Bool -> String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (String) (Map StateIdentifier StateCtx) (Bool) (Attributes) (PP_Doc)-data T_EProductions_vOut16  = T_EProductions_vOut16 ([VisitStateState]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Int) ([PP_Doc]) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_EProductions_Cons #-}-sem_EProductions_Cons :: T_EProduction  -> T_EProductions  -> T_EProductions -sem_EProductions_Cons arg_hd_ arg_tl_ = T_EProductions (return st17) where-   {-# NOINLINE st17 #-}-   st17 = let-      v16 :: T_EProductions_v16 -      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let-         _hdX14 = Control.Monad.Identity.runIdentity (attach_T_EProduction (arg_hd_))-         _tlX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_tl_))-         (T_EProduction_vOut13 _hdIallvisits _hdIchildvisit _hdIcount _hdIdatatype _hdIerrors _hdIfromToStates _hdIgenProdIO _hdIimports _hdIsemFunBndDefs _hdIsemFunBndTps _hdIsem_nt _hdIsem_prod _hdIt_visits _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_EProduction_s14 _hdX14 (T_EProduction_vIn13 _hdOallFromToStates _hdOallInhmap _hdOallInitStates _hdOallSynmap _hdOallVisitKinds _hdOallchildvisit _hdOallstates _hdOavisitdefs _hdOavisituses _hdOclassCtxs _hdOimportBlocks _hdOinhmap _hdOinitial _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnextVisits _hdOnt _hdOntType _hdOoptions _hdOparams _hdOpragmaBlocks _hdOprevVisits _hdOrename _hdOsynmap _hdOtextBlocks)-         (T_EProductions_vOut16 _tlIallvisits _tlIchildvisit _tlIcount _tlIdatatype _tlIerrors _tlIfromToStates _tlIgenProdIO _tlIimports _tlIsemFunBndDefs _tlIsemFunBndTps _tlIsem_nt _tlIsem_prod _tlIt_visits _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_EProductions_s17 _tlX17 (T_EProductions_vIn16 _tlOallFromToStates _tlOallInhmap _tlOallInitStates _tlOallSynmap _tlOallVisitKinds _tlOallchildvisit _tlOallstates _tlOavisitdefs _tlOavisituses _tlOclassCtxs _tlOimportBlocks _tlOinhmap _tlOinitial _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnextVisits _tlOnt _tlOntType _tlOoptions _tlOparams _tlOpragmaBlocks _tlOprevVisits _tlOrename _tlOsynmap _tlOtextBlocks)-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule325 _hdIallvisits-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule326 _hdIt_visits-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule327 _hdIchildvisit _tlIchildvisit-         _lhsOcount :: Int-         _lhsOcount = rule328 _hdIcount _tlIcount-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule329 _hdIdatatype _tlIdatatype-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule330 _hdIerrors _tlIerrors-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule331 _hdIfromToStates _tlIfromToStates-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule332 _hdIgenProdIO _tlIgenProdIO-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule333 _hdIimports _tlIimports-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule334 _hdIsemFunBndDefs _tlIsemFunBndDefs-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule335 _hdIsemFunBndTps _tlIsemFunBndTps-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule336 _hdIsem_nt _tlIsem_nt-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule337 _hdIsem_prod _tlIsem_prod-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule338 _hdIvisitKinds _tlIvisitKinds-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule339 _hdIvisitdefs _tlIvisitdefs-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule340 _hdIvisituses _tlIvisituses-         _hdOallFromToStates = rule341 _lhsIallFromToStates-         _hdOallInhmap = rule342 _lhsIallInhmap-         _hdOallInitStates = rule343 _lhsIallInitStates-         _hdOallSynmap = rule344 _lhsIallSynmap-         _hdOallVisitKinds = rule345 _lhsIallVisitKinds-         _hdOallchildvisit = rule346 _lhsIallchildvisit-         _hdOallstates = rule347 _lhsIallstates-         _hdOavisitdefs = rule348 _lhsIavisitdefs-         _hdOavisituses = rule349 _lhsIavisituses-         _hdOclassCtxs = rule350 _lhsIclassCtxs-         _hdOimportBlocks = rule351 _lhsIimportBlocks-         _hdOinhmap = rule352 _lhsIinhmap-         _hdOinitial = rule353 _lhsIinitial-         _hdOlocalAttrTypes = rule354 _lhsIlocalAttrTypes-         _hdOmainFile = rule355 _lhsImainFile-         _hdOmainName = rule356 _lhsImainName-         _hdOmoduleHeader = rule357 _lhsImoduleHeader-         _hdOnextVisits = rule358 _lhsInextVisits-         _hdOnt = rule359 _lhsInt-         _hdOntType = rule360 _lhsIntType-         _hdOoptions = rule361 _lhsIoptions-         _hdOparams = rule362 _lhsIparams-         _hdOpragmaBlocks = rule363 _lhsIpragmaBlocks-         _hdOprevVisits = rule364 _lhsIprevVisits-         _hdOrename = rule365 _lhsIrename-         _hdOsynmap = rule366 _lhsIsynmap-         _hdOtextBlocks = rule367 _lhsItextBlocks-         _tlOallFromToStates = rule368 _lhsIallFromToStates-         _tlOallInhmap = rule369 _lhsIallInhmap-         _tlOallInitStates = rule370 _lhsIallInitStates-         _tlOallSynmap = rule371 _lhsIallSynmap-         _tlOallVisitKinds = rule372 _lhsIallVisitKinds-         _tlOallchildvisit = rule373 _lhsIallchildvisit-         _tlOallstates = rule374 _lhsIallstates-         _tlOavisitdefs = rule375 _lhsIavisitdefs-         _tlOavisituses = rule376 _lhsIavisituses-         _tlOclassCtxs = rule377 _lhsIclassCtxs-         _tlOimportBlocks = rule378 _lhsIimportBlocks-         _tlOinhmap = rule379 _lhsIinhmap-         _tlOinitial = rule380 _lhsIinitial-         _tlOlocalAttrTypes = rule381 _lhsIlocalAttrTypes-         _tlOmainFile = rule382 _lhsImainFile-         _tlOmainName = rule383 _lhsImainName-         _tlOmoduleHeader = rule384 _lhsImoduleHeader-         _tlOnextVisits = rule385 _lhsInextVisits-         _tlOnt = rule386 _lhsInt-         _tlOntType = rule387 _lhsIntType-         _tlOoptions = rule388 _lhsIoptions-         _tlOparams = rule389 _lhsIparams-         _tlOpragmaBlocks = rule390 _lhsIpragmaBlocks-         _tlOprevVisits = rule391 _lhsIprevVisits-         _tlOrename = rule392 _lhsIrename-         _tlOsynmap = rule393 _lhsIsynmap-         _tlOtextBlocks = rule394 _lhsItextBlocks-         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProductions_s17 v16-   {-# INLINE rule325 #-}-   {-# LINE 343 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule325 = \ ((_hdIallvisits) :: [VisitStateState]) ->-                           {-# LINE 343 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           _hdIallvisits-                           {-# LINE 2870 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule326 #-}-   {-# LINE 396 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule326 = \ ((_hdIt_visits) :: PP_Doc) ->-                          {-# LINE 396 "./src-ag/ExecutionPlan2Hs.ag" #-}-                          _hdIt_visits-                          {-# LINE 2876 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule327 #-}-   rule327 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _hdIchildvisit `Map.union` _tlIchildvisit-   {-# INLINE rule328 #-}-   rule328 = \ ((_hdIcount) :: Int) ((_tlIcount) :: Int) ->-     _hdIcount + _tlIcount-   {-# INLINE rule329 #-}-   rule329 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->-     _hdIdatatype : _tlIdatatype-   {-# INLINE rule330 #-}-   rule330 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule331 #-}-   rule331 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _hdIfromToStates `mappend` _tlIfromToStates-   {-# INLINE rule332 #-}-   rule332 = \ ((_hdIgenProdIO) :: IO ()) ((_tlIgenProdIO) :: IO ()) ->-     _hdIgenProdIO >> _tlIgenProdIO-   {-# INLINE rule333 #-}-   rule333 = \ ((_hdIimports) :: [PP_Doc]) ((_tlIimports) :: [PP_Doc]) ->-     _hdIimports ++ _tlIimports-   {-# INLINE rule334 #-}-   rule334 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->-     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs-   {-# INLINE rule335 #-}-   rule335 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->-     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps-   {-# INLINE rule336 #-}-   rule336 = \ ((_hdIsem_nt) :: PP_Doc) ((_tlIsem_nt) :: PP_Doc) ->-     _hdIsem_nt >-< _tlIsem_nt-   {-# INLINE rule337 #-}-   rule337 = \ ((_hdIsem_prod) :: PP_Doc) ((_tlIsem_prod) :: PP_Doc) ->-     _hdIsem_prod >-< _tlIsem_prod-   {-# INLINE rule338 #-}-   rule338 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule339 #-}-   rule339 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs-   {-# INLINE rule340 #-}-   rule340 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _hdIvisituses `uwSetUnion` _tlIvisituses-   {-# INLINE rule341 #-}-   rule341 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule342 #-}-   rule342 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule343 #-}-   rule343 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule344 #-}-   rule344 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule345 #-}-   rule345 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule346 #-}-   rule346 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule347 #-}-   rule347 = \ ((_lhsIallstates) :: Set StateIdentifier) ->-     _lhsIallstates-   {-# INLINE rule348 #-}-   rule348 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule349 #-}-   rule349 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule350 #-}-   rule350 = \ ((_lhsIclassCtxs) :: ClassContext) ->-     _lhsIclassCtxs-   {-# INLINE rule351 #-}-   rule351 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule352 #-}-   rule352 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule353 #-}-   rule353 = \ ((_lhsIinitial) :: StateIdentifier) ->-     _lhsIinitial-   {-# INLINE rule354 #-}-   rule354 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule355 #-}-   rule355 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule356 #-}-   rule356 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule357 #-}-   rule357 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule358 #-}-   rule358 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule359 #-}-   rule359 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule360 #-}-   rule360 = \ ((_lhsIntType) :: Type) ->-     _lhsIntType-   {-# INLINE rule361 #-}-   rule361 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule362 #-}-   rule362 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule363 #-}-   rule363 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule364 #-}-   rule364 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule365 #-}-   rule365 = \ ((_lhsIrename) :: Bool) ->-     _lhsIrename-   {-# INLINE rule366 #-}-   rule366 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule367 #-}-   rule367 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule368 #-}-   rule368 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule369 #-}-   rule369 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule370 #-}-   rule370 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule371 #-}-   rule371 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule372 #-}-   rule372 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule373 #-}-   rule373 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule374 #-}-   rule374 = \ ((_lhsIallstates) :: Set StateIdentifier) ->-     _lhsIallstates-   {-# INLINE rule375 #-}-   rule375 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule376 #-}-   rule376 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule377 #-}-   rule377 = \ ((_lhsIclassCtxs) :: ClassContext) ->-     _lhsIclassCtxs-   {-# INLINE rule378 #-}-   rule378 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule379 #-}-   rule379 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule380 #-}-   rule380 = \ ((_lhsIinitial) :: StateIdentifier) ->-     _lhsIinitial-   {-# INLINE rule381 #-}-   rule381 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule382 #-}-   rule382 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule383 #-}-   rule383 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule384 #-}-   rule384 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule385 #-}-   rule385 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->-     _lhsInextVisits-   {-# INLINE rule386 #-}-   rule386 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule387 #-}-   rule387 = \ ((_lhsIntType) :: Type) ->-     _lhsIntType-   {-# INLINE rule388 #-}-   rule388 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule389 #-}-   rule389 = \ ((_lhsIparams) :: [Identifier]) ->-     _lhsIparams-   {-# INLINE rule390 #-}-   rule390 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule391 #-}-   rule391 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->-     _lhsIprevVisits-   {-# INLINE rule392 #-}-   rule392 = \ ((_lhsIrename) :: Bool) ->-     _lhsIrename-   {-# INLINE rule393 #-}-   rule393 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule394 #-}-   rule394 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-{-# NOINLINE sem_EProductions_Nil #-}-sem_EProductions_Nil ::  T_EProductions -sem_EProductions_Nil  = T_EProductions (return st17) where-   {-# NOINLINE st17 #-}-   st17 = let-      v16 :: T_EProductions_v16 -      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let-         _lhsOallvisits :: [VisitStateState]-         _lhsOallvisits = rule395  ()-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule396  ()-         _lhsOcount :: Int-         _lhsOcount = rule397  ()-         _lhsOdatatype :: [PP_Doc]-         _lhsOdatatype = rule398  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule399  ()-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule400  ()-         _lhsOgenProdIO :: IO ()-         _lhsOgenProdIO = rule401  ()-         _lhsOimports :: [PP_Doc]-         _lhsOimports = rule402  ()-         _lhsOsemFunBndDefs :: Seq PP_Doc-         _lhsOsemFunBndDefs = rule403  ()-         _lhsOsemFunBndTps :: Seq PP_Doc-         _lhsOsemFunBndTps = rule404  ()-         _lhsOsem_nt :: PP_Doc-         _lhsOsem_nt = rule405  ()-         _lhsOsem_prod :: PP_Doc-         _lhsOsem_prod = rule406  ()-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule407  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule408  ()-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule409  ()-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule410  ()-         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_EProductions_s17 v16-   {-# INLINE rule395 #-}-   {-# LINE 344 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule395 = \  (_ :: ()) ->-                           {-# LINE 344 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           error "Every nonterminal should have at least 1 production"-                           {-# LINE 3128 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule396 #-}-   rule396 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule397 #-}-   rule397 = \  (_ :: ()) ->-     0-   {-# INLINE rule398 #-}-   rule398 = \  (_ :: ()) ->-     []-   {-# INLINE rule399 #-}-   rule399 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule400 #-}-   rule400 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule401 #-}-   rule401 = \  (_ :: ()) ->-     return ()-   {-# INLINE rule402 #-}-   rule402 = \  (_ :: ()) ->-     []-   {-# INLINE rule403 #-}-   rule403 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule404 #-}-   rule404 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule405 #-}-   rule405 = \  (_ :: ()) ->-     empty-   {-# INLINE rule406 #-}-   rule406 = \  (_ :: ()) ->-     empty-   {-# INLINE rule407 #-}-   rule407 = \  (_ :: ()) ->-     empty-   {-# INLINE rule408 #-}-   rule408 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule409 #-}-   rule409 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule410 #-}-   rule410 = \  (_ :: ()) ->-     Map.empty---- ERule ---------------------------------------------------------- wrapper-data Inh_ERule  = Inh_ERule { allInhmap_Inh_ERule :: (Map NontermIdent Attributes), allSynmap_Inh_ERule :: (Map NontermIdent Attributes), childTypes_Inh_ERule :: (Map Identifier Type), con_Inh_ERule :: (ConstructorIdent), importBlocks_Inh_ERule :: (PP_Doc), inhmap_Inh_ERule :: (Attributes), lazyIntras_Inh_ERule :: (Set String), localAttrTypes_Inh_ERule :: (Map Identifier Type), mainFile_Inh_ERule :: (String), mainName_Inh_ERule :: (String), moduleHeader_Inh_ERule :: (String -> String -> String -> Bool -> String), nt_Inh_ERule :: (NontermIdent), options_Inh_ERule :: (Options), pragmaBlocks_Inh_ERule :: (String), ruleKinds_Inh_ERule :: (Map Identifier (Set VisitKind)), synmap_Inh_ERule :: (Attributes), textBlocks_Inh_ERule :: (PP_Doc), usageInfo_Inh_ERule :: (Map Identifier Int) }-data Syn_ERule  = Syn_ERule { errors_Syn_ERule :: (Seq Error), mrules_Syn_ERule :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), ruledefs_Syn_ERule :: (Map Identifier (Set String)), ruleuses_Syn_ERule :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERule :: (PP_Doc), usedArgs_Syn_ERule :: (Set String) }-{-# INLINABLE wrap_ERule #-}-wrap_ERule :: T_ERule  -> Inh_ERule  -> (Syn_ERule )-wrap_ERule (T_ERule act) (Inh_ERule _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo-        (T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs) <- return (inv_ERule_s20 sem arg)-        return (Syn_ERule _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs)-   )---- cata-{-# INLINE sem_ERule #-}-sem_ERule :: ERule  -> T_ERule -sem_ERule ( ERule name_ pattern_ rhs_ owrt_ origin_ explicit_ pure_ mbError_ ) = sem_ERule_ERule name_ ( sem_Pattern pattern_ ) ( sem_Expression rhs_ ) owrt_ origin_ explicit_ pure_ mbError_---- semantic domain-newtype T_ERule  = T_ERule {-                           attach_T_ERule :: Identity (T_ERule_s20 )-                           }-newtype T_ERule_s20  = C_ERule_s20 {-                                   inv_ERule_s20 :: (T_ERule_v19 )-                                   }-data T_ERule_s21  = C_ERule_s21-type T_ERule_v19  = (T_ERule_vIn19 ) -> (T_ERule_vOut19 )-data T_ERule_vIn19  = T_ERule_vIn19 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (PP_Doc) (Attributes) (Set String) (Map Identifier Type) (String) (String) (String -> String -> String -> Bool -> String) (NontermIdent) (Options) (String) (Map Identifier (Set VisitKind)) (Attributes) (PP_Doc) (Map Identifier Int)-data T_ERule_vOut19  = T_ERule_vOut19 (Seq Error) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc) (Set String)-{-# NOINLINE sem_ERule_ERule #-}-sem_ERule_ERule :: (Identifier) -> T_Pattern  -> T_Expression  -> (Bool) -> (String) -> (Bool) -> (Bool) -> (Maybe Error) -> T_ERule -sem_ERule_ERule arg_name_ arg_pattern_ arg_rhs_ _ _ arg_explicit_ arg_pure_ arg_mbError_ = T_ERule (return st20) where-   {-# NOINLINE st20 #-}-   st20 = let-      v19 :: T_ERule_v19 -      v19 = \ (T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let-         _patternX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pattern_))-         _rhsX29 = Control.Monad.Identity.runIdentity (attach_T_Expression (arg_rhs_))-         (T_Pattern_vOut40 _patternIattrTypes _patternIattrs _patternIcopy _patternIisUnderscore _patternIsem_lhs) = inv_Pattern_s41 _patternX41 (T_Pattern_vIn40 _patternOallInhmap _patternOallSynmap _patternOanyLazyKind _patternOinhmap _patternOlocalAttrTypes _patternOoptions _patternOsynmap)-         (T_Expression_vOut28 _rhsIattrs _rhsIpos _rhsIsemfunc _rhsItks) = inv_Expression_s29 _rhsX29 (T_Expression_vIn28 _rhsOoptions)-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule411 _usedArgs_augmented_f1 _usedArgs_augmented_syn-         _usedArgs_augmented_f1 = rule412 _rhsIattrs-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule413 _rulePragma _rulecode _used-         _rulecode = rule414 _endpragma _genpragma _lambda _pragma _rhsIpos _rhsIsemfunc _scc-         _rulePragma = rule415 _lhsIoptions _used arg_explicit_ arg_name_-         _scc = rule416 _lhsIcon _lhsInt _lhsIoptions _rhsIpos arg_explicit_ arg_name_ arg_pure_-         _pragma = rule417 _rhsIpos-         _endpragma = rule418 _lhsImainFile-         _genpragma = rule419 _haspos _lhsIoptions arg_explicit_-         _haspos = rule420 _rhsIpos-         _lambda = rule421 _argPats _lhsIoptions _rhsIattrs arg_name_-         _argPats = rule422 _addbang1 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIlazyIntras _lhsIlocalAttrTypes _lhsIoptions _rhsIattrs-         _argExprs = rule423 _rhsIattrs-         _stepcode = rule424 _argExprs _lhsIoptions _patternIattrTypes _patternIsem_lhs _rhsIattrs arg_name_ arg_pure_-         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)-         _lhsOmrules = rule425 _stepcode arg_name_-         _used = rule426 _lhsIusageInfo arg_name_-         _kinds = rule427 _lhsIruleKinds arg_name_-         _anyLazyKind = rule428 _kinds-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule429 _patternIattrs arg_name_-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule430 _rhsIattrs arg_name_-         _addbang = rule431 _lhsIoptions-         _addbang1 = rule432 _addbang _anyLazyKind-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule433 _used arg_mbError_-         _usedArgs_augmented_syn = rule434  ()-         _patternOallInhmap = rule435 _lhsIallInhmap-         _patternOallSynmap = rule436 _lhsIallSynmap-         _patternOanyLazyKind = rule437 _anyLazyKind-         _patternOinhmap = rule438 _lhsIinhmap-         _patternOlocalAttrTypes = rule439 _lhsIlocalAttrTypes-         _patternOoptions = rule440 _lhsIoptions-         _patternOsynmap = rule441 _lhsIsynmap-         _rhsOoptions = rule442 _lhsIoptions-         __result_ = T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs-         in __result_ )-     in C_ERule_s20 v19-   {-# INLINE rule411 #-}-   rule411 = \ _usedArgs_augmented_f1 _usedArgs_augmented_syn ->-     foldr ($) _usedArgs_augmented_syn [_usedArgs_augmented_f1]-   {-# INLINE rule412 #-}-   rule412 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->-                        Set.union $ Map.keysSet $ Map.mapKeys (\a -> "arg_" ++ a) $ Map.filter isNothing _rhsIattrs-   {-# INLINE rule413 #-}-   {-# LINE 984 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule413 = \ _rulePragma _rulecode _used ->-                          {-# LINE 984 "./src-ag/ExecutionPlan2Hs.ag" #-}-                          if _used     == 0-                          then empty-                          else _rulePragma     >-< _rulecode-                          {-# LINE 3270 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule414 #-}-   {-# LINE 987 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule414 = \ _endpragma _genpragma _lambda _pragma ((_rhsIpos) :: Pos) ((_rhsIsemfunc) :: PP_Doc) _scc ->-                          {-# LINE 987 "./src-ag/ExecutionPlan2Hs.ag" #-}-                          ( if _genpragma-                            then _pragma-                            else empty-                          )-                          >-< _lambda     >#< _scc-                          >-< indent ((column _rhsIpos - 2) `max` 2)-                                ( if _genpragma-                                  then _pragma     >-< _rhsIsemfunc >-< _endpragma-                                  else _rhsIsemfunc-                                )-                          {-# LINE 3285 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule415 #-}-   {-# LINE 999 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule415 = \ ((_lhsIoptions) :: Options) _used explicit_ name_ ->-                           {-# LINE 999 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           ( let reallyInlineStr   = "INLINE"-                                 reallyNoInlineStr = "NOINLINE"-                             in  if noInlinePragmas _lhsIoptions-                                 then empty-                                 else if _used     == 1-                                      then ppPragmaBinding reallyInlineStr name_-                                      else if helpInlining _lhsIoptions-                                           then if not explicit_ && _used     <= reallyOftenUsedThreshold-                                                then ppPragmaBinding "INLINE[1]" name_-                                                else if _used     > ruleInlineThresholdSoft && explicit_-                                                     then if _used     > ruleInlineThresholdHard-                                                          then ppPragmaBinding reallyNoInlineStr name_-                                                          else if aggressiveInlinePragmas _lhsIoptions-                                                               then ppPragmaBinding "NOINLINE[2]" name_-                                                               else ppNoInline name_-                                                     else if aggressiveInlinePragmas _lhsIoptions-                                                          then ppPragmaBinding "NOINLINE[1]" name_-                                                          else ppNoInline name_-                                           else if not explicit_ || _used     <= ruleInlineThresholdSoft-                                                then ppPragmaBinding "NOINLINE[1]" name_-                                                else ppNoInline name_-                               )-                           {-# LINE 3312 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule416 #-}-   {-# LINE 1021 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule416 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_rhsIpos) :: Pos) explicit_ name_ pure_ ->-                           {-# LINE 1021 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           if genCostCentres _lhsIoptions && explicit_ && pure_ && not (noPerRuleCostCentres _lhsIoptions)-                           then ppCostCentre (name_ >|< "_" >|< line _rhsIpos >|< "_" >|< _lhsInt >|< "_" >|< _lhsIcon)-                           else empty-                           {-# LINE 3320 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule417 #-}-   {-# LINE 1024 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule417 = \ ((_rhsIpos) :: Pos) ->-                           {-# LINE 1024 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           "{-# LINE" >#< show (line _rhsIpos) >#< show (file _rhsIpos) >#< "#-}"-                           {-# LINE 3326 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule418 #-}-   {-# LINE 1025 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule418 = \ ((_lhsImainFile) :: String) ->-                           {-# LINE 1025 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           ppWithLineNr (\ln -> "{-# LINE " ++ show (ln+1) ++ " " ++ show _lhsImainFile ++ "#-}")-                           {-# LINE 3332 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule419 #-}-   {-# LINE 1026 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule419 = \ _haspos ((_lhsIoptions) :: Options) explicit_ ->-                           {-# LINE 1026 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           genLinePragmas _lhsIoptions && explicit_ && _haspos-                           {-# LINE 3338 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule420 #-}-   {-# LINE 1027 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule420 = \ ((_rhsIpos) :: Pos) ->-                           {-# LINE 1027 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           line _rhsIpos > 0 && column _rhsIpos >= 0 && not (null (file _rhsIpos))-                           {-# LINE 3344 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule421 #-}-   {-# LINE 1036 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule421 = \ _argPats ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->-                           {-# LINE 1036 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           name_ >#< "=" >#< "\\" >#< _argPats     >#< dummyPat _lhsIoptions (Map.null _rhsIattrs) >#< "->"-                           {-# LINE 3350 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule422 #-}-   {-# LINE 1038 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule422 = \ _addbang1 ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIchildTypes) :: Map Identifier Type) ((_lhsIlazyIntras) :: Set String) ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->-                           {-# LINE 1038 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           ppSpaced [ let match | str `Set.member` _lhsIlazyIntras = pp str-                                                | otherwise                        = _addbang1     (pp str)-                                      in case mbAttr of-                                           Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->-                                             case Map.lookup nm _lhsIlocalAttrTypes of-                                               Just tp -> pp_parens (pp_parens match >#< "::" >#< ppTp tp)-                                               Nothing -> match-                                           Just attr | not (noPerRuleTypeSigs _lhsIoptions) ->-                                             case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes of-                                               Just tpDoc -> pp_parens (pp_parens match >#< "::" >#< tpDoc)-                                               Nothing    -> match-                                           _ -> match-                                    | (str,mbAttr) <- Map.assocs _rhsIattrs-                                    ]-                           {-# LINE 3369 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule423 #-}-   {-# LINE 1052 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule423 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->-                           {-# LINE 1052 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           ppSpaced [ case mbAttr of-                                         Nothing -> "arg_" >|< str-                                         _       -> text str-                                    | (str,mbAttr) <- Map.assocs _rhsIattrs-                                    ]-                           {-# LINE 3379 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule424 #-}-   {-# LINE 1057 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule424 = \ _argExprs ((_lhsIoptions) :: Options) ((_patternIattrTypes) :: PP_Doc) ((_patternIsem_lhs) ::  PP_Doc ) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ pure_ ->-                           {-# LINE 1057 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           \kind fmtMode -> if kind `compatibleRule` pure_-                                            then Right $ let oper | pure_     = "="-                                                                  | otherwise = "<-"-                                                             decl = _patternIsem_lhs >#< oper >#< name_ >#< _argExprs     >#< dummyArg _lhsIoptions (Map.null _rhsIattrs)-                                                             tp   = if pure_ && not (noPerRuleTypeSigs _lhsIoptions)-                                                                    then _patternIattrTypes-                                                                    else empty-                                                         in fmtDecl pure_ fmtMode (tp >-< decl)-                                            else Left $ IncompatibleRuleKind name_ kind-                           {-# LINE 3393 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule425 #-}-   {-# LINE 1067 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule425 = \ _stepcode name_ ->-                           {-# LINE 1067 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           Map.singleton name_ _stepcode-                           {-# LINE 3399 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule426 #-}-   {-# LINE 1272 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule426 = \ ((_lhsIusageInfo) :: Map Identifier Int) name_ ->-                                                 {-# LINE 1272 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                 Map.findWithDefault 0 name_ _lhsIusageInfo-                                                 {-# LINE 3405 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule427 #-}-   {-# LINE 1288 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule427 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) name_ ->-                {-# LINE 1288 "./src-ag/ExecutionPlan2Hs.ag" #-}-                Map.findWithDefault Set.empty name_ _lhsIruleKinds-                {-# LINE 3411 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule428 #-}-   {-# LINE 1289 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule428 = \ _kinds ->-                      {-# LINE 1289 "./src-ag/ExecutionPlan2Hs.ag" #-}-                      Set.fold (\k r -> isLazyKind k || r) False _kinds-                      {-# LINE 3417 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule429 #-}-   {-# LINE 1335 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule429 = \ ((_patternIattrs) :: Set String) name_ ->-                           {-# LINE 1335 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           Map.singleton name_ _patternIattrs-                           {-# LINE 3423 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule430 #-}-   {-# LINE 1336 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule430 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->-                           {-# LINE 1336 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           Map.singleton name_ _rhsIattrs-                           {-# LINE 3429 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule431 #-}-   {-# LINE 1538 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule431 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1538 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 3435 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule432 #-}-   {-# LINE 1549 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule432 = \ _addbang _anyLazyKind ->-                                                     {-# LINE 1549 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                     if _anyLazyKind     then id else _addbang-                                                     {-# LINE 3441 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule433 #-}-   {-# LINE 1655 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule433 = \ _used mbError_ ->-                 {-# LINE 1655 "./src-ag/ExecutionPlan2Hs.ag" #-}-                 case mbError_ of-                   Just e | _used     > 0 -> Seq.singleton e-                   _                      -> Seq.empty-                 {-# LINE 3449 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule434 #-}-   rule434 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule435 #-}-   rule435 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule436 #-}-   rule436 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule437 #-}-   rule437 = \ _anyLazyKind ->-     _anyLazyKind-   {-# INLINE rule438 #-}-   rule438 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule439 #-}-   rule439 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule440 #-}-   rule440 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule441 #-}-   rule441 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule442 #-}-   rule442 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions---- ERules --------------------------------------------------------- wrapper-data Inh_ERules  = Inh_ERules { allInhmap_Inh_ERules :: (Map NontermIdent Attributes), allSynmap_Inh_ERules :: (Map NontermIdent Attributes), childTypes_Inh_ERules :: (Map Identifier Type), con_Inh_ERules :: (ConstructorIdent), importBlocks_Inh_ERules :: (PP_Doc), inhmap_Inh_ERules :: (Attributes), lazyIntras_Inh_ERules :: (Set String), localAttrTypes_Inh_ERules :: (Map Identifier Type), mainFile_Inh_ERules :: (String), mainName_Inh_ERules :: (String), moduleHeader_Inh_ERules :: (String -> String -> String -> Bool -> String), nt_Inh_ERules :: (NontermIdent), options_Inh_ERules :: (Options), pragmaBlocks_Inh_ERules :: (String), ruleKinds_Inh_ERules :: (Map Identifier (Set VisitKind)), synmap_Inh_ERules :: (Attributes), textBlocks_Inh_ERules :: (PP_Doc), usageInfo_Inh_ERules :: (Map Identifier Int) }-data Syn_ERules  = Syn_ERules { errors_Syn_ERules :: (Seq Error), mrules_Syn_ERules :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), ruledefs_Syn_ERules :: (Map Identifier (Set String)), ruleuses_Syn_ERules :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERules :: (PP_Doc), usedArgs_Syn_ERules :: (Set String) }-{-# INLINABLE wrap_ERules #-}-wrap_ERules :: T_ERules  -> Inh_ERules  -> (Syn_ERules )-wrap_ERules (T_ERules act) (Inh_ERules _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo-        (T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs) <- return (inv_ERules_s23 sem arg)-        return (Syn_ERules _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs)-   )---- cata-{-# NOINLINE sem_ERules #-}-sem_ERules :: ERules  -> T_ERules -sem_ERules list = Prelude.foldr sem_ERules_Cons sem_ERules_Nil (Prelude.map sem_ERule list)---- semantic domain-newtype T_ERules  = T_ERules {-                             attach_T_ERules :: Identity (T_ERules_s23 )-                             }-newtype T_ERules_s23  = C_ERules_s23 {-                                     inv_ERules_s23 :: (T_ERules_v22 )-                                     }-data T_ERules_s24  = C_ERules_s24-type T_ERules_v22  = (T_ERules_vIn22 ) -> (T_ERules_vOut22 )-data T_ERules_vIn22  = T_ERules_vIn22 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (PP_Doc) (Attributes) (Set String) (Map Identifier Type) (String) (String) (String -> String -> String -> Bool -> String) (NontermIdent) (Options) (String) (Map Identifier (Set VisitKind)) (Attributes) (PP_Doc) (Map Identifier Int)-data T_ERules_vOut22  = T_ERules_vOut22 (Seq Error) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc) (Set String)-{-# NOINLINE sem_ERules_Cons #-}-sem_ERules_Cons :: T_ERule  -> T_ERules  -> T_ERules -sem_ERules_Cons arg_hd_ arg_tl_ = T_ERules (return st23) where-   {-# NOINLINE st23 #-}-   st23 = let-      v22 :: T_ERules_v22 -      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let-         _hdX20 = Control.Monad.Identity.runIdentity (attach_T_ERule (arg_hd_))-         _tlX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_tl_))-         (T_ERule_vOut19 _hdIerrors _hdImrules _hdIruledefs _hdIruleuses _hdIsem_rules _hdIusedArgs) = inv_ERule_s20 _hdX20 (T_ERule_vIn19 _hdOallInhmap _hdOallSynmap _hdOchildTypes _hdOcon _hdOimportBlocks _hdOinhmap _hdOlazyIntras _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnt _hdOoptions _hdOpragmaBlocks _hdOruleKinds _hdOsynmap _hdOtextBlocks _hdOusageInfo)-         (T_ERules_vOut22 _tlIerrors _tlImrules _tlIruledefs _tlIruleuses _tlIsem_rules _tlIusedArgs) = inv_ERules_s23 _tlX23 (T_ERules_vIn22 _tlOallInhmap _tlOallSynmap _tlOchildTypes _tlOcon _tlOimportBlocks _tlOinhmap _tlOlazyIntras _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnt _tlOoptions _tlOpragmaBlocks _tlOruleKinds _tlOsynmap _tlOtextBlocks _tlOusageInfo)-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule443 _hdIerrors _tlIerrors-         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)-         _lhsOmrules = rule444 _hdImrules _tlImrules-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule445 _hdIruledefs _tlIruledefs-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule446 _hdIruleuses _tlIruleuses-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule447 _hdIsem_rules _tlIsem_rules-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule448 _hdIusedArgs _tlIusedArgs-         _hdOallInhmap = rule449 _lhsIallInhmap-         _hdOallSynmap = rule450 _lhsIallSynmap-         _hdOchildTypes = rule451 _lhsIchildTypes-         _hdOcon = rule452 _lhsIcon-         _hdOimportBlocks = rule453 _lhsIimportBlocks-         _hdOinhmap = rule454 _lhsIinhmap-         _hdOlazyIntras = rule455 _lhsIlazyIntras-         _hdOlocalAttrTypes = rule456 _lhsIlocalAttrTypes-         _hdOmainFile = rule457 _lhsImainFile-         _hdOmainName = rule458 _lhsImainName-         _hdOmoduleHeader = rule459 _lhsImoduleHeader-         _hdOnt = rule460 _lhsInt-         _hdOoptions = rule461 _lhsIoptions-         _hdOpragmaBlocks = rule462 _lhsIpragmaBlocks-         _hdOruleKinds = rule463 _lhsIruleKinds-         _hdOsynmap = rule464 _lhsIsynmap-         _hdOtextBlocks = rule465 _lhsItextBlocks-         _hdOusageInfo = rule466 _lhsIusageInfo-         _tlOallInhmap = rule467 _lhsIallInhmap-         _tlOallSynmap = rule468 _lhsIallSynmap-         _tlOchildTypes = rule469 _lhsIchildTypes-         _tlOcon = rule470 _lhsIcon-         _tlOimportBlocks = rule471 _lhsIimportBlocks-         _tlOinhmap = rule472 _lhsIinhmap-         _tlOlazyIntras = rule473 _lhsIlazyIntras-         _tlOlocalAttrTypes = rule474 _lhsIlocalAttrTypes-         _tlOmainFile = rule475 _lhsImainFile-         _tlOmainName = rule476 _lhsImainName-         _tlOmoduleHeader = rule477 _lhsImoduleHeader-         _tlOnt = rule478 _lhsInt-         _tlOoptions = rule479 _lhsIoptions-         _tlOpragmaBlocks = rule480 _lhsIpragmaBlocks-         _tlOruleKinds = rule481 _lhsIruleKinds-         _tlOsynmap = rule482 _lhsIsynmap-         _tlOtextBlocks = rule483 _lhsItextBlocks-         _tlOusageInfo = rule484 _lhsIusageInfo-         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs-         in __result_ )-     in C_ERules_s23 v22-   {-# INLINE rule443 #-}-   rule443 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule444 #-}-   rule444 = \ ((_hdImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ((_tlImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _hdImrules `Map.union` _tlImrules-   {-# INLINE rule445 #-}-   rule445 = \ ((_hdIruledefs) :: Map Identifier (Set String)) ((_tlIruledefs) :: Map Identifier (Set String)) ->-     _hdIruledefs `uwSetUnion` _tlIruledefs-   {-# INLINE rule446 #-}-   rule446 = \ ((_hdIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ((_tlIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _hdIruleuses `uwMapUnion` _tlIruleuses-   {-# INLINE rule447 #-}-   rule447 = \ ((_hdIsem_rules) :: PP_Doc) ((_tlIsem_rules) :: PP_Doc) ->-     _hdIsem_rules >-< _tlIsem_rules-   {-# INLINE rule448 #-}-   rule448 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->-     _hdIusedArgs `Set.union` _tlIusedArgs-   {-# INLINE rule449 #-}-   rule449 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule450 #-}-   rule450 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule451 #-}-   rule451 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule452 #-}-   rule452 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule453 #-}-   rule453 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule454 #-}-   rule454 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule455 #-}-   rule455 = \ ((_lhsIlazyIntras) :: Set String) ->-     _lhsIlazyIntras-   {-# INLINE rule456 #-}-   rule456 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule457 #-}-   rule457 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule458 #-}-   rule458 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule459 #-}-   rule459 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule460 #-}-   rule460 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule461 #-}-   rule461 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule462 #-}-   rule462 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule463 #-}-   rule463 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _lhsIruleKinds-   {-# INLINE rule464 #-}-   rule464 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule465 #-}-   rule465 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule466 #-}-   rule466 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->-     _lhsIusageInfo-   {-# INLINE rule467 #-}-   rule467 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule468 #-}-   rule468 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule469 #-}-   rule469 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule470 #-}-   rule470 = \ ((_lhsIcon) :: ConstructorIdent) ->-     _lhsIcon-   {-# INLINE rule471 #-}-   rule471 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule472 #-}-   rule472 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule473 #-}-   rule473 = \ ((_lhsIlazyIntras) :: Set String) ->-     _lhsIlazyIntras-   {-# INLINE rule474 #-}-   rule474 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule475 #-}-   rule475 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule476 #-}-   rule476 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule477 #-}-   rule477 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule478 #-}-   rule478 = \ ((_lhsInt) :: NontermIdent) ->-     _lhsInt-   {-# INLINE rule479 #-}-   rule479 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule480 #-}-   rule480 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule481 #-}-   rule481 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _lhsIruleKinds-   {-# INLINE rule482 #-}-   rule482 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule483 #-}-   rule483 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks-   {-# INLINE rule484 #-}-   rule484 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->-     _lhsIusageInfo-{-# NOINLINE sem_ERules_Nil #-}-sem_ERules_Nil ::  T_ERules -sem_ERules_Nil  = T_ERules (return st23) where-   {-# NOINLINE st23 #-}-   st23 = let-      v22 :: T_ERules_v22 -      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule485  ()-         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)-         _lhsOmrules = rule486  ()-         _lhsOruledefs :: Map Identifier (Set String)-         _lhsOruledefs = rule487  ()-         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))-         _lhsOruleuses = rule488  ()-         _lhsOsem_rules :: PP_Doc-         _lhsOsem_rules = rule489  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule490  ()-         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs-         in __result_ )-     in C_ERules_s23 v22-   {-# INLINE rule485 #-}-   rule485 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule486 #-}-   rule486 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule487 #-}-   rule487 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule488 #-}-   rule488 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule489 #-}-   rule489 = \  (_ :: ()) ->-     empty-   {-# INLINE rule490 #-}-   rule490 = \  (_ :: ()) ->-     Set.empty---- ExecutionPlan -------------------------------------------------- wrapper-data Inh_ExecutionPlan  = Inh_ExecutionPlan { importBlocks_Inh_ExecutionPlan :: (PP_Doc), inhmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), localAttrTypes_Inh_ExecutionPlan :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainBlocksDoc_Inh_ExecutionPlan :: (PP_Doc), mainFile_Inh_ExecutionPlan :: (String), mainName_Inh_ExecutionPlan :: (String), moduleHeader_Inh_ExecutionPlan :: (String -> String -> String -> Bool -> String), options_Inh_ExecutionPlan :: (Options), pragmaBlocks_Inh_ExecutionPlan :: (String), synmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), textBlockMap_Inh_ExecutionPlan :: (Map BlockInfo PP_Doc), textBlocks_Inh_ExecutionPlan :: (PP_Doc) }-data Syn_ExecutionPlan  = Syn_ExecutionPlan { errors_Syn_ExecutionPlan :: (Seq Error), genIO_Syn_ExecutionPlan :: (IO ()), output_Syn_ExecutionPlan :: (PP_Doc) }-{-# INLINABLE wrap_ExecutionPlan #-}-wrap_ExecutionPlan :: T_ExecutionPlan  -> Inh_ExecutionPlan  -> (Syn_ExecutionPlan )-wrap_ExecutionPlan (T_ExecutionPlan act) (Inh_ExecutionPlan _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_ExecutionPlan_vIn25 _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks-        (T_ExecutionPlan_vOut25 _lhsOerrors _lhsOgenIO _lhsOoutput) <- return (inv_ExecutionPlan_s26 sem arg)-        return (Syn_ExecutionPlan _lhsOerrors _lhsOgenIO _lhsOoutput)-   )---- cata-{-# INLINE sem_ExecutionPlan #-}-sem_ExecutionPlan :: ExecutionPlan  -> T_ExecutionPlan -sem_ExecutionPlan ( ExecutionPlan nonts_ typeSyns_ wrappers_ derivings_ ) = sem_ExecutionPlan_ExecutionPlan ( sem_ENonterminals nonts_ ) typeSyns_ wrappers_ derivings_---- semantic domain-newtype T_ExecutionPlan  = T_ExecutionPlan {-                                           attach_T_ExecutionPlan :: Identity (T_ExecutionPlan_s26 )-                                           }-newtype T_ExecutionPlan_s26  = C_ExecutionPlan_s26 {-                                                   inv_ExecutionPlan_s26 :: (T_ExecutionPlan_v25 )-                                                   }-data T_ExecutionPlan_s27  = C_ExecutionPlan_s27-type T_ExecutionPlan_v25  = (T_ExecutionPlan_vIn25 ) -> (T_ExecutionPlan_vOut25 )-data T_ExecutionPlan_vIn25  = T_ExecutionPlan_vIn25 (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (PP_Doc) (String) (String) (String -> String -> String -> Bool -> String) (Options) (String) (Map NontermIdent Attributes) (Map BlockInfo PP_Doc) (PP_Doc)-data T_ExecutionPlan_vOut25  = T_ExecutionPlan_vOut25 (Seq Error) (IO ()) (PP_Doc)-{-# NOINLINE sem_ExecutionPlan_ExecutionPlan #-}-sem_ExecutionPlan_ExecutionPlan :: T_ENonterminals  -> (TypeSyns) -> (Set NontermIdent) -> (Derivings) -> T_ExecutionPlan -sem_ExecutionPlan_ExecutionPlan arg_nonts_ arg_typeSyns_ arg_wrappers_ arg_derivings_ = T_ExecutionPlan (return st26) where-   {-# NOINLINE st26 #-}-   st26 = let-      v25 :: T_ExecutionPlan_v25 -      v25 = \ (T_ExecutionPlan_vIn25 _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks) -> ( let-         _nontsX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_nonts_))-         (T_ENonterminals_vOut10 _nontsIappendCommon _nontsIappendMain _nontsIchildvisit _nontsIerrors _nontsIfromToStates _nontsIgenProdIO _nontsIimports _nontsIinitStates _nontsIoutput _nontsIsemFunBndDefs _nontsIsemFunBndTps _nontsIvisitKinds _nontsIvisitdefs _nontsIvisituses) = inv_ENonterminals_s11 _nontsX11 (T_ENonterminals_vIn10 _nontsOallFromToStates _nontsOallInitStates _nontsOallVisitKinds _nontsOallchildvisit _nontsOavisitdefs _nontsOavisituses _nontsOderivings _nontsOimportBlocks _nontsOinhmap _nontsOlocalAttrTypes _nontsOmainFile _nontsOmainName _nontsOmoduleHeader _nontsOoptions _nontsOpragmaBlocks _nontsOsynmap _nontsOtextBlocks _nontsOtypeSyns _nontsOwrappers)-         _lhsOoutput :: PP_Doc-         _lhsOoutput = rule491 _commonExtra _nontsIoutput _wrappersExtra-         _nontsOwrappers = rule492 arg_wrappers_-         _nontsOtypeSyns = rule493 arg_typeSyns_-         _nontsOderivings = rule494 arg_derivings_-         _wrappersExtra = rule495 _lateSemBndDef _lhsIoptions-         _commonExtra = rule496 _lateSemBndTp _lhsIoptions-         _lateSemBndTp = rule497 _lhsImainName _nontsIsemFunBndTps-         _lateSemBndDef = rule498 _lhsImainName _lhsIoptions _nontsIsemFunBndDefs arg_wrappers_-         _nontsOallchildvisit = rule499 _nontsIchildvisit-         _nontsOavisitdefs = rule500 _nontsIvisitdefs-         _nontsOavisituses = rule501 _nontsIvisituses-         _lhsOgenIO :: IO ()-         _lhsOgenIO = rule502 _genCommonModule _genMainModule _nontsIgenProdIO-         _mainModuleFile = rule503 _lhsImainFile-         _ppMonadImports = rule504 _lhsIoptions-         _genMainModule = rule505 _lhsImainBlocksDoc _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _mainModuleFile _nontsIappendMain _nontsIimports _ppMonadImports _wrappersExtra-         _commonFile = rule506 _lhsImainFile-         _genCommonModule = rule507 _commonExtra _commonFile _lhsIimportBlocks _lhsImainName _lhsImoduleHeader _lhsIpragmaBlocks _lhsItextBlocks _nontsIappendCommon _ppMonadImports-         _nontsOallFromToStates = rule508 _nontsIfromToStates-         _nontsOallVisitKinds = rule509 _nontsIvisitKinds-         _nontsOallInitStates = rule510 _nontsIinitStates-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule511 _nontsIerrors-         _nontsOimportBlocks = rule512 _lhsIimportBlocks-         _nontsOinhmap = rule513 _lhsIinhmap-         _nontsOlocalAttrTypes = rule514 _lhsIlocalAttrTypes-         _nontsOmainFile = rule515 _lhsImainFile-         _nontsOmainName = rule516 _lhsImainName-         _nontsOmoduleHeader = rule517 _lhsImoduleHeader-         _nontsOoptions = rule518 _lhsIoptions-         _nontsOpragmaBlocks = rule519 _lhsIpragmaBlocks-         _nontsOsynmap = rule520 _lhsIsynmap-         _nontsOtextBlocks = rule521 _lhsItextBlocks-         __result_ = T_ExecutionPlan_vOut25 _lhsOerrors _lhsOgenIO _lhsOoutput-         in __result_ )-     in C_ExecutionPlan_s26 v25-   {-# INLINE rule491 #-}-   {-# LINE 89 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule491 = \ _commonExtra ((_nontsIoutput) :: PP_Doc) _wrappersExtra ->-                                 {-# LINE 89 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _nontsIoutput >-< _commonExtra     >-< _wrappersExtra-                                 {-# LINE 3818 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule492 #-}-   {-# LINE 95 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule492 = \ wrappers_ ->-                                     {-# LINE 95 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     wrappers_-                                     {-# LINE 3824 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule493 #-}-   {-# LINE 134 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule493 = \ typeSyns_ ->-                                     {-# LINE 134 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     typeSyns_-                                     {-# LINE 3830 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule494 #-}-   {-# LINE 135 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule494 = \ derivings_ ->-                                      {-# LINE 135 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                      derivings_-                                      {-# LINE 3836 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule495 #-}-   {-# LINE 531 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule495 = \ _lateSemBndDef ((_lhsIoptions) :: Options) ->-                        {-# LINE 531 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        if lateHigherOrderBinding _lhsIoptions-                        then _lateSemBndDef-                        else empty-                        {-# LINE 3844 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule496 #-}-   {-# LINE 534 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule496 = \ _lateSemBndTp ((_lhsIoptions) :: Options) ->-                        {-# LINE 534 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        if lateHigherOrderBinding _lhsIoptions-                        then _lateSemBndTp-                        else empty-                        {-# LINE 3852 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule497 #-}-   {-# LINE 537 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule497 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndTps) :: Seq PP_Doc) ->-                       {-# LINE 537 "./src-ag/ExecutionPlan2Hs.ag" #-}-                       "data" >#< lateBindingTypeNm _lhsImainName >#< "=" >#< lateBindingTypeNm _lhsImainName-                        >-< (indent 2 $ pp_block "{" "}" "," $ toList _nontsIsemFunBndTps)-                       {-# LINE 3859 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule498 #-}-   {-# LINE 539 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule498 = \ ((_lhsImainName) :: String) ((_lhsIoptions) :: Options) ((_nontsIsemFunBndDefs) :: Seq PP_Doc) wrappers_ ->-                        {-# LINE 539 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        ( if noInlinePragmas _lhsIoptions-                          then empty-                          else if helpInlining _lhsIoptions && Set.size wrappers_ == 1-                               then ppInline $ lateBindingFieldNm _lhsImainName-                               else ppNoInline $ lateBindingFieldNm _lhsImainName-                        )-                        >-< lateBindingFieldNm _lhsImainName >#< "::" >#< lateBindingTypeNm _lhsImainName-                        >-< lateBindingFieldNm _lhsImainName >#< "=" >#< lateBindingTypeNm _lhsImainName-                        >-< (indent 2 $ pp_block "{" "}" "," $ toList _nontsIsemFunBndDefs )-                        {-# LINE 3873 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule499 #-}-   {-# LINE 1216 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule499 = \ ((_nontsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-                                          {-# LINE 1216 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                          _nontsIchildvisit-                                          {-# LINE 3879 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule500 #-}-   {-# LINE 1360 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule500 = \ ((_nontsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-                                       {-# LINE 1360 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                       _nontsIvisitdefs-                                       {-# LINE 3885 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule501 #-}-   {-# LINE 1361 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule501 = \ ((_nontsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->-                                       {-# LINE 1361 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                       _nontsIvisituses-                                       {-# LINE 3891 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule502 #-}-   {-# LINE 1432 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule502 = \ _genCommonModule _genMainModule ((_nontsIgenProdIO) :: IO ()) ->-                                          {-# LINE 1432 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                          do _genMainModule-                                             _genCommonModule-                                             _nontsIgenProdIO-                                          {-# LINE 3899 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule503 #-}-   {-# LINE 1435 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule503 = \ ((_lhsImainFile) :: String) ->-                                          {-# LINE 1435 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                          _lhsImainFile-                                          {-# LINE 3905 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule504 #-}-   {-# LINE 1436 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule504 = \ ((_lhsIoptions) :: Options) ->-                                          {-# LINE 1436 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                          ( if tupleAsDummyToken _lhsIoptions-                                            then empty-                                            else pp "import GHC.Prim"-                                          )-                                          >-< if parallelInvoke _lhsIoptions-                                              then pp "import qualified System.IO.Unsafe(unsafePerformIO)"-                                                   >-< pp "import System.IO(IO)"-                                                   >-< pp "import Control.Concurrent(newEmptyMVar,forkIO,putMVar,takeMVar)"-                                              else pp "import Control.Monad.Identity"-                                          {-# LINE 3919 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule505 #-}-   {-# LINE 1445 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule505 = \ ((_lhsImainBlocksDoc) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptions) :: Options) ((_lhsIpragmaBlocks) :: String) _mainModuleFile ((_nontsIappendMain) :: [PP_Doc]) ((_nontsIimports) :: [PP_Doc]) _ppMonadImports _wrappersExtra ->-                                          {-# LINE 1445 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                          writeModule _mainModuleFile-                                            ( [ warrenFlagsPP _lhsIoptions-                                              , pp $ _lhsIpragmaBlocks-                                              , pp $ _lhsImoduleHeader _lhsImainName "" "" False-                                              , _ppMonadImports-                                              , pp $ "import " ++ _lhsImainName ++ "_common"-                                              ]-                                              ++ _nontsIimports-                                              ++ [_lhsImainBlocksDoc]-                                              ++ [_wrappersExtra    ]-                                              ++ _nontsIappendMain-                                            )-                                          {-# LINE 3936 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule506 #-}-   {-# LINE 1457 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule506 = \ ((_lhsImainFile) :: String) ->-                                          {-# LINE 1457 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                          replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ "_common")-                                          {-# LINE 3942 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule507 #-}-   {-# LINE 1458 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule507 = \ _commonExtra _commonFile ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIpragmaBlocks) :: String) ((_lhsItextBlocks) :: PP_Doc) ((_nontsIappendCommon) :: [PP_Doc]) _ppMonadImports ->-                                          {-# LINE 1458 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                          writeModule _commonFile-                                            ( [ pp $ "{-# LANGUAGE Rank2Types, GADTs #-}"-                                              , pp $ _lhsIpragmaBlocks-                                              , pp $ _lhsImoduleHeader _lhsImainName "_common" "" True-                                              , _ppMonadImports-                                              , _lhsIimportBlocks-                                              , _lhsItextBlocks-                                              , _commonExtra-                                              ]-                                              ++ _nontsIappendCommon-                                            )-                                          {-# LINE 3958 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule508 #-}-   {-# LINE 1577 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule508 = \ ((_nontsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->-                            {-# LINE 1577 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            _nontsIfromToStates-                            {-# LINE 3964 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule509 #-}-   {-# LINE 1621 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule509 = \ ((_nontsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-                          {-# LINE 1621 "./src-ag/ExecutionPlan2Hs.ag" #-}-                          _nontsIvisitKinds-                          {-# LINE 3970 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule510 #-}-   {-# LINE 1635 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule510 = \ ((_nontsIinitStates) :: Map NontermIdent Int) ->-                          {-# LINE 1635 "./src-ag/ExecutionPlan2Hs.ag" #-}-                          _nontsIinitStates-                          {-# LINE 3976 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule511 #-}-   rule511 = \ ((_nontsIerrors) :: Seq Error) ->-     _nontsIerrors-   {-# INLINE rule512 #-}-   rule512 = \ ((_lhsIimportBlocks) :: PP_Doc) ->-     _lhsIimportBlocks-   {-# INLINE rule513 #-}-   rule513 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->-     _lhsIinhmap-   {-# INLINE rule514 #-}-   rule514 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule515 #-}-   rule515 = \ ((_lhsImainFile) :: String) ->-     _lhsImainFile-   {-# INLINE rule516 #-}-   rule516 = \ ((_lhsImainName) :: String) ->-     _lhsImainName-   {-# INLINE rule517 #-}-   rule517 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->-     _lhsImoduleHeader-   {-# INLINE rule518 #-}-   rule518 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule519 #-}-   rule519 = \ ((_lhsIpragmaBlocks) :: String) ->-     _lhsIpragmaBlocks-   {-# INLINE rule520 #-}-   rule520 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->-     _lhsIsynmap-   {-# INLINE rule521 #-}-   rule521 = \ ((_lhsItextBlocks) :: PP_Doc) ->-     _lhsItextBlocks---- Expression ----------------------------------------------------- wrapper-data Inh_Expression  = Inh_Expression { options_Inh_Expression :: (Options) }-data Syn_Expression  = Syn_Expression { attrs_Syn_Expression :: (Map String (Maybe NonLocalAttr)), pos_Syn_Expression :: (Pos), semfunc_Syn_Expression :: (PP_Doc), tks_Syn_Expression :: ([HsToken]) }-{-# INLINABLE wrap_Expression #-}-wrap_Expression :: T_Expression  -> Inh_Expression  -> (Syn_Expression )-wrap_Expression (T_Expression act) (Inh_Expression _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Expression_vIn28 _lhsIoptions-        (T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks) <- return (inv_Expression_s29 sem arg)-        return (Syn_Expression _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks)-   )---- cata-{-# INLINE sem_Expression #-}-sem_Expression :: Expression  -> T_Expression -sem_Expression ( Expression pos_ tks_ ) = sem_Expression_Expression pos_ tks_---- semantic domain-newtype T_Expression  = T_Expression {-                                     attach_T_Expression :: Identity (T_Expression_s29 )-                                     }-newtype T_Expression_s29  = C_Expression_s29 {-                                             inv_Expression_s29 :: (T_Expression_v28 )-                                             }-data T_Expression_s30  = C_Expression_s30-type T_Expression_v28  = (T_Expression_vIn28 ) -> (T_Expression_vOut28 )-data T_Expression_vIn28  = T_Expression_vIn28 (Options)-data T_Expression_vOut28  = T_Expression_vOut28 (Map String (Maybe NonLocalAttr)) (Pos) (PP_Doc) ([HsToken])-{-# NOINLINE sem_Expression_Expression #-}-sem_Expression_Expression :: (Pos) -> ([HsToken]) -> T_Expression -sem_Expression_Expression arg_pos_ arg_tks_ = T_Expression (return st29) where-   {-# NOINLINE st29 #-}-   st29 = let-      v28 :: T_Expression_v28 -      v28 = \ (T_Expression_vIn28 _lhsIoptions) -> ( let-         _lhsOtks :: [HsToken]-         _lhsOtks = rule522 arg_tks_-         _lhsOpos :: Pos-         _lhsOpos = rule523 arg_pos_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule524 _inhhstoken arg_tks_-         _lhsOsemfunc :: PP_Doc-         _lhsOsemfunc = rule525 _inhhstoken arg_tks_-         _inhhstoken = rule526 _lhsIoptions-         __result_ = T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks-         in __result_ )-     in C_Expression_s29 v28-   {-# INLINE rule522 #-}-   {-# LINE 1071 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule522 = \ tks_ ->-                           {-# LINE 1071 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           tks_-                           {-# LINE 4065 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule523 #-}-   {-# LINE 1114 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule523 = \ pos_ ->-                                        {-# LINE 1114 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                        pos_-                                        {-# LINE 4071 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule524 #-}-   {-# LINE 1200 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule524 = \ _inhhstoken tks_ ->-                               {-# LINE 1200 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               Map.unions $ map (\tok -> attrs_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_-                               {-# LINE 4077 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule525 #-}-   {-# LINE 1201 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule525 = \ _inhhstoken tks_ ->-                               {-# LINE 1201 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               vlist $ showTokens $ map (\tok -> tok_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_-                               {-# LINE 4083 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule526 #-}-   {-# LINE 1202 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule526 = \ ((_lhsIoptions) :: Options) ->-                                  {-# LINE 1202 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  Inh_HsToken _lhsIoptions-                                  {-# LINE 4089 "dist/build/ExecutionPlan2Hs.hs"#-}---- HsToken -------------------------------------------------------- wrapper-data Inh_HsToken  = Inh_HsToken { options_Inh_HsToken :: (Options) }-data Syn_HsToken  = Syn_HsToken { attrs_Syn_HsToken :: (Map String (Maybe NonLocalAttr)), tok_Syn_HsToken :: ((Pos,String)) }-{-# INLINABLE wrap_HsToken #-}-wrap_HsToken :: T_HsToken  -> Inh_HsToken  -> (Syn_HsToken )-wrap_HsToken (T_HsToken act) (Inh_HsToken _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsToken_vIn31 _lhsIoptions-        (T_HsToken_vOut31 _lhsOattrs _lhsOtok) <- return (inv_HsToken_s32 sem arg)-        return (Syn_HsToken _lhsOattrs _lhsOtok)-   )---- cata-{-# NOINLINE sem_HsToken #-}-sem_HsToken :: HsToken  -> T_HsToken -sem_HsToken ( AGLocal var_ pos_ rdesc_ ) = sem_HsToken_AGLocal var_ pos_ rdesc_-sem_HsToken ( AGField field_ attr_ pos_ rdesc_ ) = sem_HsToken_AGField field_ attr_ pos_ rdesc_-sem_HsToken ( HsToken value_ pos_ ) = sem_HsToken_HsToken value_ pos_-sem_HsToken ( CharToken value_ pos_ ) = sem_HsToken_CharToken value_ pos_-sem_HsToken ( StrToken value_ pos_ ) = sem_HsToken_StrToken value_ pos_-sem_HsToken ( Err mesg_ pos_ ) = sem_HsToken_Err mesg_ pos_---- semantic domain-newtype T_HsToken  = T_HsToken {-                               attach_T_HsToken :: Identity (T_HsToken_s32 )-                               }-newtype T_HsToken_s32  = C_HsToken_s32 {-                                       inv_HsToken_s32 :: (T_HsToken_v31 )-                                       }-data T_HsToken_s33  = C_HsToken_s33-type T_HsToken_v31  = (T_HsToken_vIn31 ) -> (T_HsToken_vOut31 )-data T_HsToken_vIn31  = T_HsToken_vIn31 (Options)-data T_HsToken_vOut31  = T_HsToken_vOut31 (Map String (Maybe NonLocalAttr)) ((Pos,String))-{-# NOINLINE sem_HsToken_AGLocal #-}-sem_HsToken_AGLocal :: (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken -sem_HsToken_AGLocal arg_var_ arg_pos_ _ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule527 arg_var_-         _tok = rule528 arg_pos_ arg_var_-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule529 _tok-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule527 #-}-   {-# LINE 1159 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule527 = \ var_ ->-                              {-# LINE 1159 "./src-ag/ExecutionPlan2Hs.ag" #-}-                              Map.singleton (fieldname var_) Nothing-                              {-# LINE 4146 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule528 #-}-   {-# LINE 1405 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule528 = \ pos_ var_ ->-                          {-# LINE 1405 "./src-ag/ExecutionPlan2Hs.ag" #-}-                          (pos_,fieldname var_)-                          {-# LINE 4152 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule529 #-}-   rule529 = \ _tok ->-     _tok-{-# NOINLINE sem_HsToken_AGField #-}-sem_HsToken_AGField :: (Identifier) -> (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken -sem_HsToken_AGField arg_field_ arg_attr_ arg_pos_ arg_rdesc_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _mbAttr = rule530 arg_attr_ arg_field_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule531 _lhsIoptions _mbAttr arg_attr_ arg_field_-         _addTrace = rule532 arg_attr_ arg_field_ arg_rdesc_-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule533 _addTrace _lhsIoptions arg_attr_ arg_field_ arg_pos_-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule530 #-}-   {-# LINE 1160 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule530 = \ attr_ field_ ->-                              {-# LINE 1160 "./src-ag/ExecutionPlan2Hs.ag" #-}-                              if field_ == _INST || field_ == _FIELD || field_ == _INST'-                              then Nothing-                              else Just $ mkNonLocalAttr (field_ == _LHS) field_ attr_-                              {-# LINE 4179 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule531 #-}-   {-# LINE 1163 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule531 = \ ((_lhsIoptions) :: Options) _mbAttr attr_ field_ ->-                              {-# LINE 1163 "./src-ag/ExecutionPlan2Hs.ag" #-}-                              Map.singleton (attrname _lhsIoptions True field_ attr_) _mbAttr-                              {-# LINE 4185 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule532 #-}-   {-# LINE 1409 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule532 = \ attr_ field_ rdesc_ ->-                        {-# LINE 1409 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        case rdesc_ of-                          Just d  -> \x -> "(trace " ++ show (d ++ " -> " ++ show field_ ++ "." ++ show attr_) ++ " (" ++ x ++ "))"-                          Nothing -> id-                        {-# LINE 4193 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule533 #-}-   {-# LINE 1412 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule533 = \ _addTrace ((_lhsIoptions) :: Options) attr_ field_ pos_ ->-                   {-# LINE 1412 "./src-ag/ExecutionPlan2Hs.ag" #-}-                   (pos_, _addTrace     $ attrname _lhsIoptions True field_ attr_)-                   {-# LINE 4199 "dist/build/ExecutionPlan2Hs.hs"#-}-{-# NOINLINE sem_HsToken_HsToken #-}-sem_HsToken_HsToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_HsToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule534 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule535  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule534 #-}-   {-# LINE 1414 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule534 = \ pos_ value_ ->-                         {-# LINE 1414 "./src-ag/ExecutionPlan2Hs.ag" #-}-                         (pos_, value_)-                         {-# LINE 4219 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule535 #-}-   rule535 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_CharToken #-}-sem_HsToken_CharToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_CharToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule536 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule537  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule536 #-}-   {-# LINE 1416 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule536 = \ pos_ value_ ->-                           {-# LINE 1416 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           (pos_, if null value_-                                     then ""-                                     else showCharShort (head value_)-                           )-                           {-# LINE 4245 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule537 #-}-   rule537 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_StrToken #-}-sem_HsToken_StrToken :: (String) -> (Pos) -> T_HsToken -sem_HsToken_StrToken arg_value_ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule538 arg_pos_ arg_value_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule539  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule538 #-}-   {-# LINE 1421 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule538 = \ pos_ value_ ->-                           {-# LINE 1421 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           (pos_, showStrShort value_)-                           {-# LINE 4268 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule539 #-}-   rule539 = \  (_ :: ()) ->-     Map.empty-{-# NOINLINE sem_HsToken_Err #-}-sem_HsToken_Err :: (String) -> (Pos) -> T_HsToken -sem_HsToken_Err _ arg_pos_ = T_HsToken (return st32) where-   {-# NOINLINE st32 #-}-   st32 = let-      v31 :: T_HsToken_v31 -      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let-         _lhsOtok :: (Pos,String)-         _lhsOtok = rule540 arg_pos_-         _lhsOattrs :: Map String (Maybe NonLocalAttr)-         _lhsOattrs = rule541  ()-         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok-         in __result_ )-     in C_HsToken_s32 v31-   {-# INLINE rule540 #-}-   {-# LINE 1422 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule540 = \ pos_ ->-                           {-# LINE 1422 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           (pos_, "")-                           {-# LINE 4291 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule541 #-}-   rule541 = \  (_ :: ()) ->-     Map.empty---- HsTokens ------------------------------------------------------- wrapper-data Inh_HsTokens  = Inh_HsTokens { options_Inh_HsTokens :: (Options) }-data Syn_HsTokens  = Syn_HsTokens { tks_Syn_HsTokens :: ([(Pos,String)]) }-{-# INLINABLE wrap_HsTokens #-}-wrap_HsTokens :: T_HsTokens  -> Inh_HsTokens  -> (Syn_HsTokens )-wrap_HsTokens (T_HsTokens act) (Inh_HsTokens _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsTokens_vIn34 _lhsIoptions-        (T_HsTokens_vOut34 _lhsOtks) <- return (inv_HsTokens_s35 sem arg)-        return (Syn_HsTokens _lhsOtks)-   )---- cata-{-# NOINLINE sem_HsTokens #-}-sem_HsTokens :: HsTokens  -> T_HsTokens -sem_HsTokens list = Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list)---- semantic domain-newtype T_HsTokens  = T_HsTokens {-                                 attach_T_HsTokens :: Identity (T_HsTokens_s35 )-                                 }-newtype T_HsTokens_s35  = C_HsTokens_s35 {-                                         inv_HsTokens_s35 :: (T_HsTokens_v34 )-                                         }-data T_HsTokens_s36  = C_HsTokens_s36-type T_HsTokens_v34  = (T_HsTokens_vIn34 ) -> (T_HsTokens_vOut34 )-data T_HsTokens_vIn34  = T_HsTokens_vIn34 (Options)-data T_HsTokens_vOut34  = T_HsTokens_vOut34 ([(Pos,String)])-{-# NOINLINE sem_HsTokens_Cons #-}-sem_HsTokens_Cons :: T_HsToken  -> T_HsTokens  -> T_HsTokens -sem_HsTokens_Cons arg_hd_ arg_tl_ = T_HsTokens (return st35) where-   {-# NOINLINE st35 #-}-   st35 = let-      v34 :: T_HsTokens_v34 -      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let-         _hdX32 = Control.Monad.Identity.runIdentity (attach_T_HsToken (arg_hd_))-         _tlX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tl_))-         (T_HsToken_vOut31 _hdIattrs _hdItok) = inv_HsToken_s32 _hdX32 (T_HsToken_vIn31 _hdOoptions)-         (T_HsTokens_vOut34 _tlItks) = inv_HsTokens_s35 _tlX35 (T_HsTokens_vIn34 _tlOoptions)-         _lhsOtks :: [(Pos,String)]-         _lhsOtks = rule542 _hdItok _tlItks-         _hdOoptions = rule543 _lhsIoptions-         _tlOoptions = rule544 _lhsIoptions-         __result_ = T_HsTokens_vOut34 _lhsOtks-         in __result_ )-     in C_HsTokens_s35 v34-   {-# INLINE rule542 #-}-   {-# LINE 1401 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule542 = \ ((_hdItok) :: (Pos,String)) ((_tlItks) :: [(Pos,String)]) ->-                     {-# LINE 1401 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     _hdItok : _tlItks-                     {-# LINE 4349 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule543 #-}-   rule543 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule544 #-}-   rule544 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-{-# NOINLINE sem_HsTokens_Nil #-}-sem_HsTokens_Nil ::  T_HsTokens -sem_HsTokens_Nil  = T_HsTokens (return st35) where-   {-# NOINLINE st35 #-}-   st35 = let-      v34 :: T_HsTokens_v34 -      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let-         _lhsOtks :: [(Pos,String)]-         _lhsOtks = rule545  ()-         __result_ = T_HsTokens_vOut34 _lhsOtks-         in __result_ )-     in C_HsTokens_s35 v34-   {-# INLINE rule545 #-}-   {-# LINE 1402 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule545 = \  (_ :: ()) ->-                     {-# LINE 1402 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     []-                     {-# LINE 4373 "dist/build/ExecutionPlan2Hs.hs"#-}---- HsTokensRoot --------------------------------------------------- wrapper-data Inh_HsTokensRoot  = Inh_HsTokensRoot { options_Inh_HsTokensRoot :: (Options) }-data Syn_HsTokensRoot  = Syn_HsTokensRoot {  }-{-# INLINABLE wrap_HsTokensRoot #-}-wrap_HsTokensRoot :: T_HsTokensRoot  -> Inh_HsTokensRoot  -> (Syn_HsTokensRoot )-wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot _lhsIoptions) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_HsTokensRoot_vIn37 _lhsIoptions-        (T_HsTokensRoot_vOut37 ) <- return (inv_HsTokensRoot_s38 sem arg)-        return (Syn_HsTokensRoot )-   )---- cata-{-# INLINE sem_HsTokensRoot #-}-sem_HsTokensRoot :: HsTokensRoot  -> T_HsTokensRoot -sem_HsTokensRoot ( HsTokensRoot tokens_ ) = sem_HsTokensRoot_HsTokensRoot ( sem_HsTokens tokens_ )---- semantic domain-newtype T_HsTokensRoot  = T_HsTokensRoot {-                                         attach_T_HsTokensRoot :: Identity (T_HsTokensRoot_s38 )-                                         }-newtype T_HsTokensRoot_s38  = C_HsTokensRoot_s38 {-                                                 inv_HsTokensRoot_s38 :: (T_HsTokensRoot_v37 )-                                                 }-data T_HsTokensRoot_s39  = C_HsTokensRoot_s39-type T_HsTokensRoot_v37  = (T_HsTokensRoot_vIn37 ) -> (T_HsTokensRoot_vOut37 )-data T_HsTokensRoot_vIn37  = T_HsTokensRoot_vIn37 (Options)-data T_HsTokensRoot_vOut37  = T_HsTokensRoot_vOut37 -{-# NOINLINE sem_HsTokensRoot_HsTokensRoot #-}-sem_HsTokensRoot_HsTokensRoot :: T_HsTokens  -> T_HsTokensRoot -sem_HsTokensRoot_HsTokensRoot arg_tokens_ = T_HsTokensRoot (return st38) where-   {-# NOINLINE st38 #-}-   st38 = let-      v37 :: T_HsTokensRoot_v37 -      v37 = \ (T_HsTokensRoot_vIn37 _lhsIoptions) -> ( let-         _tokensX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tokens_))-         (T_HsTokens_vOut34 _tokensItks) = inv_HsTokens_s35 _tokensX35 (T_HsTokens_vIn34 _tokensOoptions)-         _tokensOoptions = rule546 _lhsIoptions-         __result_ = T_HsTokensRoot_vOut37 -         in __result_ )-     in C_HsTokensRoot_s38 v37-   {-# INLINE rule546 #-}-   rule546 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions---- Pattern -------------------------------------------------------- wrapper-data Inh_Pattern  = Inh_Pattern { allInhmap_Inh_Pattern :: (Map NontermIdent Attributes), allSynmap_Inh_Pattern :: (Map NontermIdent Attributes), anyLazyKind_Inh_Pattern :: (Bool), inhmap_Inh_Pattern :: (Attributes), localAttrTypes_Inh_Pattern :: (Map Identifier Type), options_Inh_Pattern :: (Options), synmap_Inh_Pattern :: (Attributes) }-data Syn_Pattern  = Syn_Pattern { attrTypes_Syn_Pattern :: (PP_Doc), attrs_Syn_Pattern :: (Set String), copy_Syn_Pattern :: (Pattern), isUnderscore_Syn_Pattern :: (Bool), sem_lhs_Syn_Pattern :: ( PP_Doc ) }-{-# INLINABLE wrap_Pattern #-}-wrap_Pattern :: T_Pattern  -> Inh_Pattern  -> (Syn_Pattern )-wrap_Pattern (T_Pattern act) (Inh_Pattern _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap-        (T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs) <- return (inv_Pattern_s41 sem arg)-        return (Syn_Pattern _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs)-   )---- cata-{-# NOINLINE sem_Pattern #-}-sem_Pattern :: Pattern  -> T_Pattern -sem_Pattern ( Constr name_ pats_ ) = sem_Pattern_Constr name_ ( sem_Patterns pats_ )-sem_Pattern ( Product pos_ pats_ ) = sem_Pattern_Product pos_ ( sem_Patterns pats_ )-sem_Pattern ( Alias field_ attr_ pat_ ) = sem_Pattern_Alias field_ attr_ ( sem_Pattern pat_ )-sem_Pattern ( Irrefutable pat_ ) = sem_Pattern_Irrefutable ( sem_Pattern pat_ )-sem_Pattern ( Underscore pos_ ) = sem_Pattern_Underscore pos_---- semantic domain-newtype T_Pattern  = T_Pattern {-                               attach_T_Pattern :: Identity (T_Pattern_s41 )-                               }-newtype T_Pattern_s41  = C_Pattern_s41 {-                                       inv_Pattern_s41 :: (T_Pattern_v40 )-                                       }-data T_Pattern_s42  = C_Pattern_s42-type T_Pattern_v40  = (T_Pattern_vIn40 ) -> (T_Pattern_vOut40 )-data T_Pattern_vIn40  = T_Pattern_vIn40 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)-data T_Pattern_vOut40  = T_Pattern_vOut40 (PP_Doc) (Set String) (Pattern) (Bool) ( PP_Doc )-{-# NOINLINE sem_Pattern_Constr #-}-sem_Pattern_Constr :: (ConstructorIdent) -> T_Patterns  -> T_Pattern -sem_Pattern_Constr arg_name_ arg_pats_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))-         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule547 _addbang1 _patsIsem_lhs arg_name_-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule548  ()-         _addbang = rule549 _lhsIoptions-         _addbang1 = rule550 _addbang _lhsIanyLazyKind-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule551 _patsIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule552 _patsIattrs-         _copy = rule553 _patsIcopy arg_name_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule554 _copy-         _patsOallInhmap = rule555 _lhsIallInhmap-         _patsOallSynmap = rule556 _lhsIallSynmap-         _patsOanyLazyKind = rule557 _lhsIanyLazyKind-         _patsOinhmap = rule558 _lhsIinhmap-         _patsOlocalAttrTypes = rule559 _lhsIlocalAttrTypes-         _patsOoptions = rule560 _lhsIoptions-         _patsOsynmap = rule561 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule547 #-}-   {-# LINE 1128 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule547 = \ _addbang1 ((_patsIsem_lhs) :: [PP_Doc]) name_ ->-                                  {-# LINE 1128 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  _addbang1     $ pp_parens $ name_ >#< hv_sp _patsIsem_lhs-                                  {-# LINE 4493 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule548 #-}-   {-# LINE 1135 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule548 = \  (_ :: ()) ->-                                    {-# LINE 1135 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                    False-                                    {-# LINE 4499 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule549 #-}-   {-# LINE 1545 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule549 = \ ((_lhsIoptions) :: Options) ->-                                                     {-# LINE 1545 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                     {-# LINE 4505 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule550 #-}-   {-# LINE 1550 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule550 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->-                                                     {-# LINE 1550 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                     if _lhsIanyLazyKind then id else _addbang-                                                     {-# LINE 4511 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule551 #-}-   rule551 = \ ((_patsIattrTypes) :: PP_Doc) ->-     _patsIattrTypes-   {-# INLINE rule552 #-}-   rule552 = \ ((_patsIattrs) :: Set String) ->-     _patsIattrs-   {-# INLINE rule553 #-}-   rule553 = \ ((_patsIcopy) :: Patterns) name_ ->-     Constr name_ _patsIcopy-   {-# INLINE rule554 #-}-   rule554 = \ _copy ->-     _copy-   {-# INLINE rule555 #-}-   rule555 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule556 #-}-   rule556 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule557 #-}-   rule557 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule558 #-}-   rule558 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule559 #-}-   rule559 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule560 #-}-   rule560 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule561 #-}-   rule561 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Product #-}-sem_Pattern_Product :: (Pos) -> T_Patterns  -> T_Pattern -sem_Pattern_Product arg_pos_ arg_pats_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))-         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule562 _addbang1 _patsIsem_lhs-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule563  ()-         _addbang = rule564 _lhsIoptions-         _addbang1 = rule565 _addbang _lhsIanyLazyKind-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule566 _patsIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule567 _patsIattrs-         _copy = rule568 _patsIcopy arg_pos_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule569 _copy-         _patsOallInhmap = rule570 _lhsIallInhmap-         _patsOallSynmap = rule571 _lhsIallSynmap-         _patsOanyLazyKind = rule572 _lhsIanyLazyKind-         _patsOinhmap = rule573 _lhsIinhmap-         _patsOlocalAttrTypes = rule574 _lhsIlocalAttrTypes-         _patsOoptions = rule575 _lhsIoptions-         _patsOsynmap = rule576 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule562 #-}-   {-# LINE 1127 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule562 = \ _addbang1 ((_patsIsem_lhs) :: [PP_Doc]) ->-                                  {-# LINE 1127 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  _addbang1     $ pp_block "(" ")" "," _patsIsem_lhs-                                  {-# LINE 4582 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule563 #-}-   {-# LINE 1136 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule563 = \  (_ :: ()) ->-                                    {-# LINE 1136 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                    False-                                    {-# LINE 4588 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule564 #-}-   {-# LINE 1545 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule564 = \ ((_lhsIoptions) :: Options) ->-                                                     {-# LINE 1545 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                     {-# LINE 4594 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule565 #-}-   {-# LINE 1550 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule565 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->-                                                     {-# LINE 1550 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                     if _lhsIanyLazyKind then id else _addbang-                                                     {-# LINE 4600 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule566 #-}-   rule566 = \ ((_patsIattrTypes) :: PP_Doc) ->-     _patsIattrTypes-   {-# INLINE rule567 #-}-   rule567 = \ ((_patsIattrs) :: Set String) ->-     _patsIattrs-   {-# INLINE rule568 #-}-   rule568 = \ ((_patsIcopy) :: Patterns) pos_ ->-     Product pos_ _patsIcopy-   {-# INLINE rule569 #-}-   rule569 = \ _copy ->-     _copy-   {-# INLINE rule570 #-}-   rule570 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule571 #-}-   rule571 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule572 #-}-   rule572 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule573 #-}-   rule573 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule574 #-}-   rule574 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule575 #-}-   rule575 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule576 #-}-   rule576 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Alias #-}-sem_Pattern_Alias :: (Identifier) -> (Identifier) -> T_Pattern  -> T_Pattern -sem_Pattern_Alias arg_field_ arg_attr_ arg_pat_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))-         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)-         _varPat = rule577 _lhsIoptions arg_attr_ arg_field_-         _patExpr = rule578 _patIisUnderscore _patIsem_lhs _varPat-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule579 _addbang1 _patExpr-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule580  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule581 _lhsIoptions _patIattrs arg_attr_ arg_field_-         _mbTp = rule582 _lhsIlocalAttrTypes _lhsIsynmap arg_attr_ arg_field_-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule583 _lhsIoptions _mbTp _patIattrTypes arg_attr_ arg_field_-         _addbang = rule584 _lhsIoptions-         _addbang1 = rule585 _addbang _lhsIanyLazyKind-         _copy = rule586 _patIcopy arg_attr_ arg_field_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule587 _copy-         _patOallInhmap = rule588 _lhsIallInhmap-         _patOallSynmap = rule589 _lhsIallSynmap-         _patOanyLazyKind = rule590 _lhsIanyLazyKind-         _patOinhmap = rule591 _lhsIinhmap-         _patOlocalAttrTypes = rule592 _lhsIlocalAttrTypes-         _patOoptions = rule593 _lhsIoptions-         _patOsynmap = rule594 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule577 #-}-   {-# LINE 1122 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule577 = \ ((_lhsIoptions) :: Options) attr_ field_ ->-                                  {-# LINE 1122 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  text $ attrname _lhsIoptions False field_ attr_-                                  {-# LINE 4674 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule578 #-}-   {-# LINE 1123 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule578 = \ ((_patIisUnderscore) :: Bool) ((_patIsem_lhs) ::  PP_Doc ) _varPat ->-                                  {-# LINE 1123 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  if _patIisUnderscore-                                  then _varPat-                                  else _varPat     >|< "@" >|< _patIsem_lhs-                                  {-# LINE 4682 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule579 #-}-   {-# LINE 1126 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule579 = \ _addbang1 _patExpr ->-                                  {-# LINE 1126 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  _addbang1     _patExpr-                                  {-# LINE 4688 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule580 #-}-   {-# LINE 1137 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule580 = \  (_ :: ()) ->-                                    {-# LINE 1137 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                    False-                                    {-# LINE 4694 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule581 #-}-   {-# LINE 1143 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule581 = \ ((_lhsIoptions) :: Options) ((_patIattrs) :: Set String) attr_ field_ ->-                    {-# LINE 1143 "./src-ag/ExecutionPlan2Hs.ag" #-}-                    Set.insert (attrname _lhsIoptions False field_ attr_) _patIattrs-                    {-# LINE 4700 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule582 #-}-   {-# LINE 1148 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule582 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIsynmap) :: Attributes) attr_ field_ ->-                    {-# LINE 1148 "./src-ag/ExecutionPlan2Hs.ag" #-}-                    if field_ == _LHS-                    then Map.lookup attr_ _lhsIsynmap-                    else if field_ == _LOC-                         then Map.lookup attr_ _lhsIlocalAttrTypes-                         else Nothing-                    {-# LINE 4710 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule583 #-}-   {-# LINE 1153 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule583 = \ ((_lhsIoptions) :: Options) _mbTp ((_patIattrTypes) :: PP_Doc) attr_ field_ ->-                    {-# LINE 1153 "./src-ag/ExecutionPlan2Hs.ag" #-}-                    maybe empty (\tp -> (attrname _lhsIoptions False field_ attr_) >#< "::" >#< ppTp tp) _mbTp-                    >-< _patIattrTypes-                    {-# LINE 4717 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule584 #-}-   {-# LINE 1545 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule584 = \ ((_lhsIoptions) :: Options) ->-                                                     {-# LINE 1545 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                     {-# LINE 4723 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule585 #-}-   {-# LINE 1550 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule585 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->-                                                     {-# LINE 1550 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                     if _lhsIanyLazyKind then id else _addbang-                                                     {-# LINE 4729 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule586 #-}-   rule586 = \ ((_patIcopy) :: Pattern) attr_ field_ ->-     Alias field_ attr_ _patIcopy-   {-# INLINE rule587 #-}-   rule587 = \ _copy ->-     _copy-   {-# INLINE rule588 #-}-   rule588 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule589 #-}-   rule589 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule590 #-}-   rule590 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule591 #-}-   rule591 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule592 #-}-   rule592 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule593 #-}-   rule593 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule594 #-}-   rule594 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Irrefutable #-}-sem_Pattern_Irrefutable :: T_Pattern  -> T_Pattern -sem_Pattern_Irrefutable arg_pat_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))-         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule595 _patIsem_lhs-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule596 _patIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule597 _patIattrs-         _copy = rule598 _patIcopy-         _lhsOcopy :: Pattern-         _lhsOcopy = rule599 _copy-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule600 _patIisUnderscore-         _patOallInhmap = rule601 _lhsIallInhmap-         _patOallSynmap = rule602 _lhsIallSynmap-         _patOanyLazyKind = rule603 _lhsIanyLazyKind-         _patOinhmap = rule604 _lhsIinhmap-         _patOlocalAttrTypes = rule605 _lhsIlocalAttrTypes-         _patOoptions = rule606 _lhsIoptions-         _patOsynmap = rule607 _lhsIsynmap-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule595 #-}-   {-# LINE 1130 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule595 = \ ((_patIsem_lhs) ::  PP_Doc ) ->-                                  {-# LINE 1130 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  text "~" >|< pp_parens _patIsem_lhs-                                  {-# LINE 4792 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule596 #-}-   rule596 = \ ((_patIattrTypes) :: PP_Doc) ->-     _patIattrTypes-   {-# INLINE rule597 #-}-   rule597 = \ ((_patIattrs) :: Set String) ->-     _patIattrs-   {-# INLINE rule598 #-}-   rule598 = \ ((_patIcopy) :: Pattern) ->-     Irrefutable _patIcopy-   {-# INLINE rule599 #-}-   rule599 = \ _copy ->-     _copy-   {-# INLINE rule600 #-}-   rule600 = \ ((_patIisUnderscore) :: Bool) ->-     _patIisUnderscore-   {-# INLINE rule601 #-}-   rule601 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule602 #-}-   rule602 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule603 #-}-   rule603 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule604 #-}-   rule604 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule605 #-}-   rule605 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule606 #-}-   rule606 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule607 #-}-   rule607 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Pattern_Underscore #-}-sem_Pattern_Underscore :: (Pos) -> T_Pattern -sem_Pattern_Underscore arg_pos_ = T_Pattern (return st41) where-   {-# NOINLINE st41 #-}-   st41 = let-      v40 :: T_Pattern_v40 -      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _lhsOsem_lhs ::  PP_Doc -         _lhsOsem_lhs = rule608  ()-         _lhsOisUnderscore :: Bool-         _lhsOisUnderscore = rule609  ()-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule610  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule611  ()-         _copy = rule612 arg_pos_-         _lhsOcopy :: Pattern-         _lhsOcopy = rule613 _copy-         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs-         in __result_ )-     in C_Pattern_s41 v40-   {-# INLINE rule608 #-}-   {-# LINE 1129 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule608 = \  (_ :: ()) ->-                                  {-# LINE 1129 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  text "_"-                                  {-# LINE 4855 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule609 #-}-   {-# LINE 1138 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule609 = \  (_ :: ()) ->-                                    {-# LINE 1138 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                    True-                                    {-# LINE 4861 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule610 #-}-   rule610 = \  (_ :: ()) ->-     empty-   {-# INLINE rule611 #-}-   rule611 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule612 #-}-   rule612 = \ pos_ ->-     Underscore pos_-   {-# INLINE rule613 #-}-   rule613 = \ _copy ->-     _copy---- Patterns ------------------------------------------------------- wrapper-data Inh_Patterns  = Inh_Patterns { allInhmap_Inh_Patterns :: (Map NontermIdent Attributes), allSynmap_Inh_Patterns :: (Map NontermIdent Attributes), anyLazyKind_Inh_Patterns :: (Bool), inhmap_Inh_Patterns :: (Attributes), localAttrTypes_Inh_Patterns :: (Map Identifier Type), options_Inh_Patterns :: (Options), synmap_Inh_Patterns :: (Attributes) }-data Syn_Patterns  = Syn_Patterns { attrTypes_Syn_Patterns :: (PP_Doc), attrs_Syn_Patterns :: (Set String), copy_Syn_Patterns :: (Patterns), sem_lhs_Syn_Patterns :: ([PP_Doc]) }-{-# INLINABLE wrap_Patterns #-}-wrap_Patterns :: T_Patterns  -> Inh_Patterns  -> (Syn_Patterns )-wrap_Patterns (T_Patterns act) (Inh_Patterns _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap-        (T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs) <- return (inv_Patterns_s44 sem arg)-        return (Syn_Patterns _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs)-   )---- cata-{-# NOINLINE sem_Patterns #-}-sem_Patterns :: Patterns  -> T_Patterns -sem_Patterns list = Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list)---- semantic domain-newtype T_Patterns  = T_Patterns {-                                 attach_T_Patterns :: Identity (T_Patterns_s44 )-                                 }-newtype T_Patterns_s44  = C_Patterns_s44 {-                                         inv_Patterns_s44 :: (T_Patterns_v43 )-                                         }-data T_Patterns_s45  = C_Patterns_s45-type T_Patterns_v43  = (T_Patterns_vIn43 ) -> (T_Patterns_vOut43 )-data T_Patterns_vIn43  = T_Patterns_vIn43 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)-data T_Patterns_vOut43  = T_Patterns_vOut43 (PP_Doc) (Set String) (Patterns) ([PP_Doc])-{-# NOINLINE sem_Patterns_Cons #-}-sem_Patterns_Cons :: T_Pattern  -> T_Patterns  -> T_Patterns -sem_Patterns_Cons arg_hd_ arg_tl_ = T_Patterns (return st44) where-   {-# NOINLINE st44 #-}-   st44 = let-      v43 :: T_Patterns_v43 -      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _hdX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_hd_))-         _tlX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_tl_))-         (T_Pattern_vOut40 _hdIattrTypes _hdIattrs _hdIcopy _hdIisUnderscore _hdIsem_lhs) = inv_Pattern_s41 _hdX41 (T_Pattern_vIn40 _hdOallInhmap _hdOallSynmap _hdOanyLazyKind _hdOinhmap _hdOlocalAttrTypes _hdOoptions _hdOsynmap)-         (T_Patterns_vOut43 _tlIattrTypes _tlIattrs _tlIcopy _tlIsem_lhs) = inv_Patterns_s44 _tlX44 (T_Patterns_vIn43 _tlOallInhmap _tlOallSynmap _tlOanyLazyKind _tlOinhmap _tlOlocalAttrTypes _tlOoptions _tlOsynmap)-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule614 _hdIattrTypes _tlIattrTypes-         _lhsOattrs :: Set String-         _lhsOattrs = rule615 _hdIattrs _tlIattrs-         _lhsOsem_lhs :: [PP_Doc]-         _lhsOsem_lhs = rule616 _hdIsem_lhs _tlIsem_lhs-         _copy = rule617 _hdIcopy _tlIcopy-         _lhsOcopy :: Patterns-         _lhsOcopy = rule618 _copy-         _hdOallInhmap = rule619 _lhsIallInhmap-         _hdOallSynmap = rule620 _lhsIallSynmap-         _hdOanyLazyKind = rule621 _lhsIanyLazyKind-         _hdOinhmap = rule622 _lhsIinhmap-         _hdOlocalAttrTypes = rule623 _lhsIlocalAttrTypes-         _hdOoptions = rule624 _lhsIoptions-         _hdOsynmap = rule625 _lhsIsynmap-         _tlOallInhmap = rule626 _lhsIallInhmap-         _tlOallSynmap = rule627 _lhsIallSynmap-         _tlOanyLazyKind = rule628 _lhsIanyLazyKind-         _tlOinhmap = rule629 _lhsIinhmap-         _tlOlocalAttrTypes = rule630 _lhsIlocalAttrTypes-         _tlOoptions = rule631 _lhsIoptions-         _tlOsynmap = rule632 _lhsIsynmap-         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs-         in __result_ )-     in C_Patterns_s44 v43-   {-# INLINE rule614 #-}-   rule614 = \ ((_hdIattrTypes) :: PP_Doc) ((_tlIattrTypes) :: PP_Doc) ->-     _hdIattrTypes >-< _tlIattrTypes-   {-# INLINE rule615 #-}-   rule615 = \ ((_hdIattrs) :: Set String) ((_tlIattrs) :: Set String) ->-     _hdIattrs `Set.union` _tlIattrs-   {-# INLINE rule616 #-}-   rule616 = \ ((_hdIsem_lhs) ::  PP_Doc ) ((_tlIsem_lhs) :: [PP_Doc]) ->-     _hdIsem_lhs : _tlIsem_lhs-   {-# INLINE rule617 #-}-   rule617 = \ ((_hdIcopy) :: Pattern) ((_tlIcopy) :: Patterns) ->-     (:) _hdIcopy _tlIcopy-   {-# INLINE rule618 #-}-   rule618 = \ _copy ->-     _copy-   {-# INLINE rule619 #-}-   rule619 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule620 #-}-   rule620 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule621 #-}-   rule621 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule622 #-}-   rule622 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule623 #-}-   rule623 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule624 #-}-   rule624 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule625 #-}-   rule625 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-   {-# INLINE rule626 #-}-   rule626 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->-     _lhsIallInhmap-   {-# INLINE rule627 #-}-   rule627 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->-     _lhsIallSynmap-   {-# INLINE rule628 #-}-   rule628 = \ ((_lhsIanyLazyKind) :: Bool) ->-     _lhsIanyLazyKind-   {-# INLINE rule629 #-}-   rule629 = \ ((_lhsIinhmap) :: Attributes) ->-     _lhsIinhmap-   {-# INLINE rule630 #-}-   rule630 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->-     _lhsIlocalAttrTypes-   {-# INLINE rule631 #-}-   rule631 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule632 #-}-   rule632 = \ ((_lhsIsynmap) :: Attributes) ->-     _lhsIsynmap-{-# NOINLINE sem_Patterns_Nil #-}-sem_Patterns_Nil ::  T_Patterns -sem_Patterns_Nil  = T_Patterns (return st44) where-   {-# NOINLINE st44 #-}-   st44 = let-      v43 :: T_Patterns_v43 -      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let-         _lhsOattrTypes :: PP_Doc-         _lhsOattrTypes = rule633  ()-         _lhsOattrs :: Set String-         _lhsOattrs = rule634  ()-         _lhsOsem_lhs :: [PP_Doc]-         _lhsOsem_lhs = rule635  ()-         _copy = rule636  ()-         _lhsOcopy :: Patterns-         _lhsOcopy = rule637 _copy-         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs-         in __result_ )-     in C_Patterns_s44 v43-   {-# INLINE rule633 #-}-   rule633 = \  (_ :: ()) ->-     empty-   {-# INLINE rule634 #-}-   rule634 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule635 #-}-   rule635 = \  (_ :: ()) ->-     []-   {-# INLINE rule636 #-}-   rule636 = \  (_ :: ()) ->-     []-   {-# INLINE rule637 #-}-   rule637 = \ _copy ->-     _copy---- Visit ---------------------------------------------------------- wrapper-data Inh_Visit  = Inh_Visit { allFromToStates_Inh_Visit :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visit :: (Map NontermIdent Attributes), allInitStates_Inh_Visit :: (Map NontermIdent Int), allSynmap_Inh_Visit :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visit :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visit :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allintramap_Inh_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visit :: (Map Identifier Type), childintros_Inh_Visit :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visit :: (ConstructorIdent), inhmap_Inh_Visit :: (Attributes), mrules_Inh_Visit :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), nextVisits_Inh_Visit :: (Map StateIdentifier StateCtx), nt_Inh_Visit :: (NontermIdent), options_Inh_Visit :: (Options), params_Inh_Visit :: ([Identifier]), prevVisits_Inh_Visit :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visit :: (Map Identifier (Set String)), ruleuses_Inh_Visit :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visit :: (Attributes), terminaldefs_Inh_Visit :: (Set String) }-data Syn_Visit  = Syn_Visit { allvisits_Syn_Visit :: ( VisitStateState ), childvisit_Syn_Visit :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_Visit :: (Seq Error), fromToStates_Syn_Visit :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visit :: (Set String), ruleKinds_Syn_Visit :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visit :: (Map Identifier Int), sem_visit_Syn_Visit :: (  (StateIdentifier,Bool -> PP_Doc)  ), t_visits_Syn_Visit :: (PP_Doc), usedArgs_Syn_Visit :: (Set String), visitKinds_Syn_Visit :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visit :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visit :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_Visit #-}-wrap_Visit :: T_Visit  -> Inh_Visit  -> (Syn_Visit )-wrap_Visit (T_Visit act) (Inh_Visit _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs-        (T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visit_s47 sem arg)-        return (Syn_Visit _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)-   )---- cata-{-# INLINE sem_Visit #-}-sem_Visit :: Visit  -> T_Visit -sem_Visit ( Visit ident_ from_ to_ inh_ syn_ steps_ kind_ ) = sem_Visit_Visit ident_ from_ to_ inh_ syn_ ( sem_VisitSteps steps_ ) kind_---- semantic domain-newtype T_Visit  = T_Visit {-                           attach_T_Visit :: Identity (T_Visit_s47 )-                           }-newtype T_Visit_s47  = C_Visit_s47 {-                                   inv_Visit_s47 :: (T_Visit_v46 )-                                   }-data T_Visit_s48  = C_Visit_s48-type T_Visit_v46  = (T_Visit_vIn46 ) -> (T_Visit_vOut46 )-data T_Visit_vIn46  = T_Visit_vIn46 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (ConstructorIdent) (Attributes) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map StateIdentifier StateCtx) (NontermIdent) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Attributes) (Set String)-data T_Visit_vOut46  = T_Visit_vOut46 ( VisitStateState ) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (  (StateIdentifier,Bool -> PP_Doc)  ) (PP_Doc) (Set String) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))-{-# NOINLINE sem_Visit_Visit #-}-sem_Visit_Visit :: (VisitIdentifier) -> (StateIdentifier) -> (StateIdentifier) -> (Set Identifier) -> (Set Identifier) -> T_VisitSteps  -> (VisitKind) -> T_Visit -sem_Visit_Visit arg_ident_ arg_from_ arg_to_ arg_inh_ arg_syn_ arg_steps_ arg_kind_ = T_Visit (return st47) where-   {-# NOINLINE st47 #-}-   st47 = let-      v46 :: T_Visit_v46 -      v46 = \ (T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIsync_steps _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)-         _lhsOallvisits ::  VisitStateState -         _lhsOallvisits = rule638 arg_from_ arg_ident_ arg_to_-         _nameT_visit = rule639 _lhsInt arg_ident_-         _nameTIn_visit = rule640 _lhsInt arg_ident_-         _nameTOut_visit = rule641 _lhsInt arg_ident_-         _nameTNext_visit = rule642 _lhsInt arg_to_-         _nextVisitInfo = rule643 _lhsInextVisits arg_to_-         _typecon = rule644 _lhsIoptions arg_kind_-         _t_params = rule645 _lhsIparams-         _lhsOt_visits :: PP_Doc-         _lhsOt_visits = rule646 _addbang1 _inhpart _lhsIoptions _nameTIn_visit _nameTNext_visit _nameTOut_visit _nameT_visit _nextVisitInfo _synpart _t_params _typecon-         _inhpart = rule647 _lhsIinhmap _ppTypeList arg_inh_-         _synpart = rule648 _lhsIsynmap _ppTypeList arg_syn_-         _ppTypeList = rule649 _addbang1-         _lhsOsem_visit ::   (StateIdentifier,Bool -> PP_Doc)  -         _lhsOsem_visit = rule650 _addbang _inhpats _lhsIcon _lhsInt _lhsIoptions _nameTIn_visit _nameT_visit _stepsClosing _stepsInitial _stepsIsem_steps _t_params _vname arg_from_ arg_ident_-         _stepsInitial = rule651 arg_kind_-         _stepsClosing = rule652 _addbang _nextStBuild _resultval arg_kind_-         _vname = rule653 arg_ident_-         _inhpats = rule654 _lhsIoptions arg_inh_-         _inhargs = rule655 _lhsIoptions arg_inh_-         _synargs = rule656 _lhsIoptions arg_syn_-         _nextargsMp = rule657 _lhsIallintramap arg_to_-         _nextargs = rule658 _nextargsMp-         _nextst = rule659 _lhsIoptions _nextargs _nextargsMp arg_to_-         _resultval = rule660 _nameTOut_visit _nextStRef _synargs-         (_nextStBuild,_nextStRef) = rule661 _addbang _nextVisitInfo _nextst-         _stepsOkind = rule662 arg_kind_-         _stepsOfmtMode = rule663 arg_kind_-         _stepsOindex = rule664  ()-         _stepsOprevMaxSimRefs = rule665  ()-         _stepsOuseParallel = rule666  ()-         _prevVisitInfo = rule667 _lhsInextVisits arg_from_-         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))-         _lhsOchildvisit = rule668 _invokecode arg_ident_-         _invokecode = rule669 _addbang _inhargs _lhsInt _lhsIoptions _nameTIn_visit _nameTOut_visit _nextVisitInfo _prevVisitInfo arg_from_ arg_ident_ arg_kind_ arg_syn_ arg_to_-         _thisintra = rule670 _defsAsMap _nextintra _uses-         _lhsOintramap :: Map StateIdentifier (Map String (Maybe NonLocalAttr))-         _lhsOintramap = rule671 _thisintra arg_from_-         _nextintra = rule672 _lhsIallintramap arg_to_-         _uses = rule673 _lhsIoptions _stepsIuses arg_syn_-         _inhVarNms = rule674 _lhsIoptions arg_inh_-         _defs = rule675 _inhVarNms _lhsIterminaldefs _stepsIdefs-         _defsAsMap = rule676 _defs-         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)-         _lhsOvisitdefs = rule677 arg_ident_ arg_syn_-         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)-         _lhsOvisituses = rule678 arg_ident_ arg_inh_-         _lazyIntrasInh = rule679 _inhVarNms _stepsIdefs arg_kind_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule680 _lazyIntrasInh _stepsIlazyIntras-         _addbang = rule681 _lhsIoptions-         _addbang1 = rule682 _addbang arg_kind_-         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)-         _lhsOfromToStates = rule683 arg_from_ arg_ident_ arg_to_-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule684 arg_ident_ arg_kind_-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule685 _stepsIerrors-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule686 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule687 _stepsIruleUsage-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule688 _stepsIusedArgs-         _stepsOallFromToStates = rule689 _lhsIallFromToStates-         _stepsOallInitStates = rule690 _lhsIallInitStates-         _stepsOallVisitKinds = rule691 _lhsIallVisitKinds-         _stepsOallchildvisit = rule692 _lhsIallchildvisit-         _stepsOavisitdefs = rule693 _lhsIavisitdefs-         _stepsOavisituses = rule694 _lhsIavisituses-         _stepsOchildTypes = rule695 _lhsIchildTypes-         _stepsOchildintros = rule696 _lhsIchildintros-         _stepsOmrules = rule697 _lhsImrules-         _stepsOoptions = rule698 _lhsIoptions-         _stepsOruledefs = rule699 _lhsIruledefs-         _stepsOruleuses = rule700 _lhsIruleuses-         __result_ = T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses-         in __result_ )-     in C_Visit_s47 v46-   {-# INLINE rule638 #-}-   {-# LINE 340 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule638 = \ from_ ident_ to_ ->-                            {-# LINE 340 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            (ident_, from_, to_)-                            {-# LINE 5158 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule639 #-}-   {-# LINE 399 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule639 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                                  {-# LINE 399 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  conNmTVisit _lhsInt ident_-                                  {-# LINE 5164 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule640 #-}-   {-# LINE 400 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule640 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                                  {-# LINE 400 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  conNmTVisitIn _lhsInt ident_-                                  {-# LINE 5170 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule641 #-}-   {-# LINE 401 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule641 = \ ((_lhsInt) :: NontermIdent) ident_ ->-                                  {-# LINE 401 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  conNmTVisitOut _lhsInt ident_-                                  {-# LINE 5176 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule642 #-}-   {-# LINE 402 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule642 = \ ((_lhsInt) :: NontermIdent) to_ ->-                                  {-# LINE 402 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  conNmTNextVisit _lhsInt to_-                                  {-# LINE 5182 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule643 #-}-   {-# LINE 404 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule643 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) to_ ->-                                  {-# LINE 404 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  Map.findWithDefault ManyVis to_ _lhsInextVisits-                                  {-# LINE 5188 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule644 #-}-   {-# LINE 405 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule644 = \ ((_lhsIoptions) :: Options) kind_ ->-                                  {-# LINE 405 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  case kind_ of-                                    VisitPure _  -> empty-                                    VisitMonadic -> ppMonadType _lhsIoptions-                                  {-# LINE 5196 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule645 #-}-   {-# LINE 409 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule645 = \ ((_lhsIparams) :: [Identifier]) ->-                            {-# LINE 409 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            ppSpaced _lhsIparams-                            {-# LINE 5202 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule646 #-}-   {-# LINE 410 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule646 = \ _addbang1 _inhpart ((_lhsIoptions) :: Options) _nameTIn_visit _nameTNext_visit _nameTOut_visit _nameT_visit _nextVisitInfo _synpart _t_params _typecon ->-                           {-# LINE 410 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           "type" >#< _nameT_visit     >#< _t_params     >#< "=" >#<-                             pp_parens (_nameTIn_visit     >#< _t_params    )-                               >#< ( if dummyTokenVisit _lhsIoptions-                                     then "->" >#< dummyType _lhsIoptions True-                                     else empty-                                   )-                               >#< "->" >#< _typecon     >#< pp_parens (_nameTOut_visit     >#< _t_params    )-                           >-< "data" >#< _nameTIn_visit     >#< _t_params     >#< "=" >#< _nameTIn_visit     >#<-                                _inhpart-                           >-< "data" >#< _nameTOut_visit     >#< _t_params     >#< "=" >#< _nameTOut_visit     >#<-                                _synpart     >#< case _nextVisitInfo     of-                                                   NoneVis    -> empty-                                                   _          -> _addbang1     $ pp_parens (_nameTNext_visit     >#< _t_params    )-                           {-# LINE 5220 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule647 #-}-   {-# LINE 423 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule647 = \ ((_lhsIinhmap) :: Attributes) _ppTypeList inh_ ->-                            {-# LINE 423 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            _ppTypeList     inh_ _lhsIinhmap-                            {-# LINE 5226 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule648 #-}-   {-# LINE 424 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule648 = \ ((_lhsIsynmap) :: Attributes) _ppTypeList syn_ ->-                            {-# LINE 424 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            _ppTypeList     syn_ _lhsIsynmap-                            {-# LINE 5232 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule649 #-}-   {-# LINE 425 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule649 = \ _addbang1 ->-                             {-# LINE 425 "./src-ag/ExecutionPlan2Hs.ag" #-}-                             \s m -> ppSpaced $ map (\i -> _addbang1     $ pp_parens $ case Map.lookup i m of-                                                                                        Just tp -> ppTp tp ) $ Set.toList s-                             {-# LINE 5239 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule650 #-}-   {-# LINE 717 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule650 = \ _addbang _inhpats ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTIn_visit _nameT_visit _stepsClosing _stepsInitial ((_stepsIsem_steps) :: PP_Doc) _t_params _vname from_ ident_ ->-                            {-# LINE 717 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            ( from_-                            , \addInlinePragma ->-                                 ( if noInlinePragmas _lhsIoptions-                                   then empty-                                   else if addInlinePragma && aggressiveInlinePragmas _lhsIoptions-                                        then ppInline _vname-                                        else if helpInlining _lhsIoptions-                                             then ppNoInline _vname-                                             else empty-                                 )-                                 >-< "v" >|< ident_ >#< "::" >#< _nameT_visit     >#< _t_params-                                 >-< "v" >|< ident_ >#< "=" >#< "\\" >#< (_addbang     $ pp_parens (_nameTIn_visit     >#< _inhpats    ))-                                 >#< ( if dummyTokenVisit _lhsIoptions-                                       then pp $ dummyPat _lhsIoptions True-                                       else empty-                                     )-                                 >#< "->"-                                 >#< ( if genCostCentres _lhsIoptions-                                       then ppCostCentre (_vname     >|< "_" >|< _lhsInt >|< "_" >|< _lhsIcon)-                                       else empty-                                     ) >#< "(" >#< _stepsInitial-                                 >-< indent 3 (_stepsIsem_steps >-< _stepsClosing     >#< ")")-                            )-                            {-# LINE 5267 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule651 #-}-   {-# LINE 742 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule651 = \ kind_ ->-                               {-# LINE 742 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               case kind_ of-                                 VisitPure False -> text "let"-                                 VisitPure True  -> empty-                                 VisitMonadic    -> text "do"-                               {-# LINE 5276 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule652 #-}-   {-# LINE 746 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule652 = \ _addbang _nextStBuild _resultval kind_ ->-                                {-# LINE 746 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                let decls =  _nextStBuild-                                             >-<  _addbang     (pp resultValName) >#< "=" >#< _resultval-                                in case kind_ of-                                     VisitPure False -> decls-                                                        >-< "in" >#< resultValName-                                     VisitPure True  -> "let" >#< decls-                                                        >-< indent 1 ("in" >#< resultValName)-                                     VisitMonadic    -> "let" >#< decls-                                                        >-< "return" >#< resultValName-                                {-# LINE 5290 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule653 #-}-   {-# LINE 755 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule653 = \ ident_ ->-                            {-# LINE 755 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            "v" >|< ident_-                            {-# LINE 5296 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule654 #-}-   {-# LINE 756 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule654 = \ ((_lhsIoptions) :: Options) inh_ ->-                            {-# LINE 756 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            ppSpaced $ map (\arg ->                    pp $ attrname _lhsIoptions True _LHS arg) $ Set.toList inh_-                            {-# LINE 5302 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule655 #-}-   {-# LINE 757 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule655 = \ ((_lhsIoptions) :: Options) inh_ ->-                            {-# LINE 757 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            \chn -> ppSpaced $ map (attrname _lhsIoptions False chn) $ Set.toList inh_-                            {-# LINE 5308 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule656 #-}-   {-# LINE 758 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule656 = \ ((_lhsIoptions) :: Options) syn_ ->-                            {-# LINE 758 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            ppSpaced $ map (\arg -> attrname _lhsIoptions False _LHS arg) $ Set.toList syn_-                            {-# LINE 5314 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule657 #-}-   {-# LINE 759 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule657 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->-                             {-# LINE 759 "./src-ag/ExecutionPlan2Hs.ag" #-}-                             maybe Map.empty id $ Map.lookup to_ _lhsIallintramap-                             {-# LINE 5320 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule658 #-}-   {-# LINE 760 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule658 = \ _nextargsMp ->-                            {-# LINE 760 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            ppSpaced $ Map.keys $ _nextargsMp-                            {-# LINE 5326 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule659 #-}-   {-# LINE 761 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule659 = \ ((_lhsIoptions) :: Options) _nextargs _nextargsMp to_ ->-                            {-# LINE 761 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            "st" >|< to_ >#< _nextargs     >#< dummyArg _lhsIoptions (Map.null _nextargsMp    )-                            {-# LINE 5332 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule660 #-}-   {-# LINE 762 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule660 = \ _nameTOut_visit _nextStRef _synargs ->-                            {-# LINE 762 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            _nameTOut_visit     >#< _synargs     >#< _nextStRef-                            {-# LINE 5338 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule661 #-}-   {-# LINE 764 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule661 = \ _addbang _nextVisitInfo _nextst ->-                {-# LINE 764 "./src-ag/ExecutionPlan2Hs.ag" #-}-                case _nextVisitInfo     of-                  NoneVis  -> (empty, empty)-                  _        -> (_addbang     (pp nextStName) >#< "=" >#< _nextst    , pp nextStName)-                {-# LINE 5346 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule662 #-}-   {-# LINE 778 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule662 = \ kind_ ->-                                  {-# LINE 778 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                  kind_-                                  {-# LINE 5352 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule663 #-}-   {-# LINE 829 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule663 = \ kind_ ->-                    {-# LINE 829 "./src-ag/ExecutionPlan2Hs.ag" #-}-                    case kind_ of-                      VisitPure False -> FormatLetDecl-                      VisitPure True  -> FormatLetLine-                      VisitMonadic    -> FormatDo-                    {-# LINE 5361 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule664 #-}-   {-# LINE 878 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule664 = \  (_ :: ()) ->-                                     {-# LINE 878 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     0-                                     {-# LINE 5367 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule665 #-}-   {-# LINE 885 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule665 = \  (_ :: ()) ->-                                              {-# LINE 885 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                              0-                                              {-# LINE 5373 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule666 #-}-   {-# LINE 901 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule666 = \  (_ :: ()) ->-                                           {-# LINE 901 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                           False-                                           {-# LINE 5379 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule667 #-}-   {-# LINE 1220 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule667 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) from_ ->-                           {-# LINE 1220 "./src-ag/ExecutionPlan2Hs.ag" #-}-                           Map.findWithDefault ManyVis from_ _lhsInextVisits-                           {-# LINE 5385 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule668 #-}-   {-# LINE 1221 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule668 = \ _invokecode ident_ ->-                        {-# LINE 1221 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        Map.singleton ident_ _invokecode-                        {-# LINE 5391 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule669 #-}-   {-# LINE 1222 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule669 = \ _addbang _inhargs ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTIn_visit _nameTOut_visit _nextVisitInfo _prevVisitInfo from_ ident_ kind_ syn_ to_ ->-                        {-# LINE 1222 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        \chn kind ->-                          if kind `compatibleKind` kind_-                          then Right $-                            let pat | isLazyKind kind_ = pat0-                                    | otherwise        = _addbang     pat0-                                pat0  = pp_parens pat1-                                pat1  = _nameTOut_visit     >#< (ppSpaced $ map (attrname _lhsIoptions True chn) $ Set.toList syn_)-                                                            >#< cont-                                cont  = case _nextVisitInfo     of-                                          NoneVis  -> empty-                                          _        -> ch1-                                ch0   = text $ stname chn from_-                                ch1   = text $ stname chn to_-                                expr  = case (kind, kind_) of-                                          (VisitPure _,  VisitPure _)  -> expr0-                                          (VisitPure _,  VisitMonadic) -> unMon _lhsIoptions >#< expr0-                                          (VisitMonadic, VisitPure _)  -> "return" >#< expr0-                                          (VisitMonadic, VisitMonadic) -> expr0-                                expr0 = case _prevVisitInfo     of-                                          NoneVis  -> error "error: invocation of a visit from a state that has no next visits"-                                          OneVis _ -> "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< ch0 >#< args-                                          ManyVis  -> "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< ch0-                                                      >#< "K_" >|< _lhsInt >|< "_v" >|< ident_ >#< args-                                args  = pp_parens args0 >#< args1-                                args0 = _nameTIn_visit     >#< _inhargs     chn-                                args1 | dummyTokenVisit _lhsIoptions = pp $ dummyArg _lhsIoptions True-                                      | otherwise                    = empty-                            in (pat, expr)-                          else Left $ IncompatibleVisitKind chn ident_ kind kind_-                        {-# LINE 5425 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule670 #-}-   {-# LINE 1318 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule670 = \ _defsAsMap _nextintra _uses ->-                            {-# LINE 1318 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            (_uses     `Map.union` _nextintra    ) `Map.difference` _defsAsMap-                            {-# LINE 5431 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule671 #-}-   {-# LINE 1319 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule671 = \ _thisintra from_ ->-                            {-# LINE 1319 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            Map.singleton from_ _thisintra-                            {-# LINE 5437 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule672 #-}-   {-# LINE 1320 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule672 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->-                            {-# LINE 1320 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            maybe Map.empty id $ Map.lookup to_ _lhsIallintramap-                            {-# LINE 5443 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule673 #-}-   {-# LINE 1321 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule673 = \ ((_lhsIoptions) :: Options) ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) syn_ ->-                            {-# LINE 1321 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            let mp1 = _stepsIuses-                                mp2 = Map.fromList [ (lhsname _lhsIoptions False i, Just (AttrSyn _LHS i)) | i <- Set.elems syn_ ]-                            in mp1 `Map.union` mp2-                            {-# LINE 5451 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule674 #-}-   {-# LINE 1324 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule674 = \ ((_lhsIoptions) :: Options) inh_ ->-                            {-# LINE 1324 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            Set.map (lhsname _lhsIoptions True) inh_-                            {-# LINE 5457 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule675 #-}-   {-# LINE 1325 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule675 = \ _inhVarNms ((_lhsIterminaldefs) :: Set String) ((_stepsIdefs) :: Set String) ->-                            {-# LINE 1325 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            _stepsIdefs `Set.union` _inhVarNms     `Set.union` _lhsIterminaldefs-                            {-# LINE 5463 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule676 #-}-   {-# LINE 1326 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule676 = \ _defs ->-                            {-# LINE 1326 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            Map.fromList [ (a, Nothing) | a <- Set.elems _defs     ]-                            {-# LINE 5469 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule677 #-}-   {-# LINE 1350 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule677 = \ ident_ syn_ ->-                            {-# LINE 1350 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            Map.singleton ident_ syn_-                            {-# LINE 5475 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule678 #-}-   {-# LINE 1351 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule678 = \ ident_ inh_ ->-                            {-# LINE 1351 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            Map.singleton ident_ inh_-                            {-# LINE 5481 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule679 #-}-   {-# LINE 1383 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule679 = \ _inhVarNms ((_stepsIdefs) :: Set String) kind_ ->-                        {-# LINE 1383 "./src-ag/ExecutionPlan2Hs.ag" #-}-                        case kind_ of-                          VisitPure False -> _inhVarNms     `Set.union` _stepsIdefs-                          _               -> Set.empty-                        {-# LINE 5489 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule680 #-}-   {-# LINE 1386 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule680 = \ _lazyIntrasInh ((_stepsIlazyIntras) :: Set String) ->-                     {-# LINE 1386 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     _lazyIntrasInh     `Set.union` _stepsIlazyIntras-                     {-# LINE 5495 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule681 #-}-   {-# LINE 1539 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule681 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1539 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 5501 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule682 #-}-   {-# LINE 1547 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule682 = \ _addbang kind_ ->-                                                     {-# LINE 1547 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                     if isLazyKind kind_ then id else _addbang-                                                     {-# LINE 5507 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule683 #-}-   {-# LINE 1574 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule683 = \ from_ ident_ to_ ->-                       {-# LINE 1574 "./src-ag/ExecutionPlan2Hs.ag" #-}-                       Map.singleton ident_ (from_, to_)-                       {-# LINE 5513 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule684 #-}-   {-# LINE 1618 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule684 = \ ident_ kind_ ->-                     {-# LINE 1618 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     Map.singleton ident_ kind_-                     {-# LINE 5519 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule685 #-}-   rule685 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule686 #-}-   rule686 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule687 #-}-   rule687 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule688 #-}-   rule688 = \ ((_stepsIusedArgs) :: Set String) ->-     _stepsIusedArgs-   {-# INLINE rule689 #-}-   rule689 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule690 #-}-   rule690 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule691 #-}-   rule691 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule692 #-}-   rule692 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule693 #-}-   rule693 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule694 #-}-   rule694 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule695 #-}-   rule695 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule696 #-}-   rule696 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule697 #-}-   rule697 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule698 #-}-   rule698 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule699 #-}-   rule699 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule700 #-}-   rule700 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses---- VisitStep ------------------------------------------------------ wrapper-data Inh_VisitStep  = Inh_VisitStep { allFromToStates_Inh_VisitStep :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitStep :: (Map NontermIdent Int), allVisitKinds_Inh_VisitStep :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitStep :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitStep :: (Map Identifier Type), childintros_Inh_VisitStep :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), fmtMode_Inh_VisitStep :: (FormatMode), index_Inh_VisitStep :: (Int), isLast_Inh_VisitStep :: (Bool), kind_Inh_VisitStep :: (VisitKind), mrules_Inh_VisitStep :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), options_Inh_VisitStep :: (Options), prevMaxSimRefs_Inh_VisitStep :: (Int), ruledefs_Inh_VisitStep :: (Map Identifier (Set String)), ruleuses_Inh_VisitStep :: (Map Identifier (Map String (Maybe NonLocalAttr))), useParallel_Inh_VisitStep :: (Bool) }-data Syn_VisitStep  = Syn_VisitStep { defs_Syn_VisitStep :: (Set String), errors_Syn_VisitStep :: (Seq Error), index_Syn_VisitStep :: (Int), isLast_Syn_VisitStep :: (Bool), lazyIntras_Syn_VisitStep :: (Set String), prevMaxSimRefs_Syn_VisitStep :: (Int), ruleKinds_Syn_VisitStep :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitStep :: (Map Identifier Int), sem_steps_Syn_VisitStep :: (PP_Doc), sync_steps_Syn_VisitStep :: (PP_Doc), usedArgs_Syn_VisitStep :: (Set String), uses_Syn_VisitStep :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitStep :: (Map VisitIdentifier VisitKind) }-{-# INLINABLE wrap_VisitStep #-}-wrap_VisitStep :: T_VisitStep  -> Inh_VisitStep  -> (Syn_VisitStep )-wrap_VisitStep (T_VisitStep act) (Inh_VisitStep _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel-        (T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds) <- return (inv_VisitStep_s50 sem arg)-        return (Syn_VisitStep _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds)-   )---- cata-{-# NOINLINE sem_VisitStep #-}-sem_VisitStep :: VisitStep  -> T_VisitStep -sem_VisitStep ( Sem name_ ) = sem_VisitStep_Sem name_-sem_VisitStep ( ChildVisit child_ nonterm_ visit_ ) = sem_VisitStep_ChildVisit child_ nonterm_ visit_-sem_VisitStep ( PureGroup steps_ ordered_ ) = sem_VisitStep_PureGroup ( sem_VisitSteps steps_ ) ordered_-sem_VisitStep ( Sim steps_ ) = sem_VisitStep_Sim ( sem_VisitSteps steps_ )-sem_VisitStep ( ChildIntro child_ ) = sem_VisitStep_ChildIntro child_---- semantic domain-newtype T_VisitStep  = T_VisitStep {-                                   attach_T_VisitStep :: Identity (T_VisitStep_s50 )-                                   }-newtype T_VisitStep_s50  = C_VisitStep_s50 {-                                           inv_VisitStep_s50 :: (T_VisitStep_v49 )-                                           }-data T_VisitStep_s51  = C_VisitStep_s51-type T_VisitStep_v49  = (T_VisitStep_vIn49 ) -> (T_VisitStep_vOut49 )-data T_VisitStep_vIn49  = T_VisitStep_vIn49 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (FormatMode) (Int) (Bool) (VisitKind) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Options) (Int) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Bool)-data T_VisitStep_vOut49  = T_VisitStep_vOut49 (Set String) (Seq Error) (Int) (Bool) (Set String) (Int) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (PP_Doc) (Set String) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)-{-# NOINLINE sem_VisitStep_Sem #-}-sem_VisitStep_Sem :: (Identifier) -> T_VisitStep -sem_VisitStep_Sem arg_name_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _ruleItf = rule701 _lhsImrules arg_name_-         _lhsOerrors :: Seq Error-         (_lhsOerrors,_sem_steps) = rule702 _lhsIfmtMode _lhsIkind _ruleItf-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule703 arg_name_-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule704 _lhsIkind arg_name_-         _lhsOdefs :: Set String-         _lhsOdefs = rule705 _lhsIruledefs arg_name_-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule706 _lhsIruleuses arg_name_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule707  ()-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule708 _sem_steps-         _lhsOsync_steps :: PP_Doc-         _lhsOsync_steps = rule709  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule710  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule711  ()-         _lhsOindex :: Int-         _lhsOindex = rule712 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule713 _lhsIisLast-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule714 _lhsIprevMaxSimRefs-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule701 #-}-   {-# LINE 787 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule701 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) name_ ->-                               {-# LINE 787 "./src-ag/ExecutionPlan2Hs.ag" #-}-                               Map.findWithDefault (error $ "Rule "  ++ show name_  ++ " not found") name_ _lhsImrules-                               {-# LINE 5645 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule702 #-}-   {-# LINE 788 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule702 = \ ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) _ruleItf ->-                                               {-# LINE 788 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                               case _ruleItf     _lhsIkind _lhsIfmtMode of-                                                 Left e     -> (Seq.singleton e, empty)-                                                 Right stmt -> (Seq.empty, stmt)-                                               {-# LINE 5653 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule703 #-}-   {-# LINE 1271 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule703 = \ name_ ->-                                                 {-# LINE 1271 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                 Map.singleton name_ 1-                                                 {-# LINE 5659 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule704 #-}-   {-# LINE 1281 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule704 = \ ((_lhsIkind) :: VisitKind) name_ ->-                    {-# LINE 1281 "./src-ag/ExecutionPlan2Hs.ag" #-}-                    Map.singleton name_ (Set.singleton _lhsIkind)-                    {-# LINE 5665 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule705 #-}-   {-# LINE 1366 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule705 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) name_ ->-                            {-# LINE 1366 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruledefs-                            {-# LINE 5671 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule706 #-}-   {-# LINE 1367 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule706 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) name_ ->-                            {-# LINE 1367 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruleuses-                            {-# LINE 5677 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule707 #-}-   rule707 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule708 #-}-   rule708 = \ _sem_steps ->-     _sem_steps-   {-# INLINE rule709 #-}-   rule709 = \  (_ :: ()) ->-     empty-   {-# INLINE rule710 #-}-   rule710 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule711 #-}-   rule711 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule712 #-}-   rule712 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule713 #-}-   rule713 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast-   {-# INLINE rule714 #-}-   rule714 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-{-# NOINLINE sem_VisitStep_ChildVisit #-}-sem_VisitStep_ChildVisit :: (Identifier) -> (NontermIdent) -> (VisitIdentifier) -> T_VisitStep -sem_VisitStep_ChildVisit arg_child_ _ arg_visit_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _visitItf = rule715 _lhsIallchildvisit arg_visit_-         _lhsOerrors :: Seq Error-         (_lhsOerrors,_patPP,_exprPP) = rule716 _lhsIkind _visitItf arg_child_-         _useParallel = rule717 _lhsIisLast _lhsIuseParallel-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule718 _addbang _convToMonad _exprPP _lhsIfmtMode _lhsIindex _lhsIkind _patPP _useParallel-         _convToMonad = rule719 _callKind-         _callKind = rule720 _lhsIallVisitKinds arg_visit_-         _lhsOsync_steps :: PP_Doc-         _lhsOsync_steps = rule721 _lhsIindex _patPP _useParallel-         _lhsOdefs :: Set String-         _lhsOdefs = rule722 _lhsIavisitdefs _lhsIoptions _to arg_child_ arg_visit_-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule723 _from _lhsIavisituses _lhsIoptions arg_child_ arg_visit_-         _addbang = rule724 _lhsIoptions-         (_from,_to) = rule725 _lhsIallFromToStates arg_visit_-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule726  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule727  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule728  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule729  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule730  ()-         _lhsOindex :: Int-         _lhsOindex = rule731 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule732 _lhsIisLast-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule733 _lhsIprevMaxSimRefs-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule715 #-}-   {-# LINE 796 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule715 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) visit_ ->-                                {-# LINE 796 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                Map.findWithDefault (error $ "Visit " ++ show visit_ ++ " not found") visit_ _lhsIallchildvisit-                                {-# LINE 5749 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule716 #-}-   {-# LINE 797 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule716 = \ ((_lhsIkind) :: VisitKind) _visitItf child_ ->-                                                       {-# LINE 797 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                       case _visitItf     child_ _lhsIkind of-                                                         Left e           -> (Seq.singleton e, empty, empty)-                                                         Right (pat,expr) -> (Seq.empty, pat, expr)-                                                       {-# LINE 5757 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule717 #-}-   {-# LINE 801 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule717 = \ ((_lhsIisLast) :: Bool) ((_lhsIuseParallel) :: Bool) ->-                                   {-# LINE 801 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   _lhsIuseParallel && not _lhsIisLast-                                   {-# LINE 5763 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule718 #-}-   {-# LINE 802 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule718 = \ _addbang _convToMonad _exprPP ((_lhsIfmtMode) :: FormatMode) ((_lhsIindex) :: Int) ((_lhsIkind) :: VisitKind) _patPP _useParallel ->-                                 {-# LINE 802 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 if _useParallel-                                 then _addbang     ("sync_" >|< _lhsIindex) >#< "<- newEmptyMVar"-                                      >-< "forkIO" >#< pp_parens (_convToMonad     >#< pp_parens _exprPP     >#< ">>= \\" >#< _addbang     (pp parResultName) >#< " -> putMVar sync_" >|< _lhsIindex >#< parResultName)-                                 else let decl = case _lhsIkind of-                                                   VisitPure _  -> _patPP     >#< "=" >#< _exprPP-                                                   VisitMonadic -> _patPP     >#< "<-" >#< _exprPP-                                      in fmtDecl False _lhsIfmtMode decl-                                 {-# LINE 5775 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule719 #-}-   {-# LINE 809 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule719 = \ _callKind ->-                                   {-# LINE 809 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                   case _callKind     of-                                     VisitPure _  -> text "return"-                                     VisitMonadic -> empty-                                   {-# LINE 5783 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule720 #-}-   {-# LINE 812 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule720 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) visit_ ->-                                 {-# LINE 812 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 Map.findWithDefault (error "visit kind should be in the map") visit_ _lhsIallVisitKinds-                                 {-# LINE 5789 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule721 #-}-   {-# LINE 820 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule721 = \ ((_lhsIindex) :: Int) _patPP _useParallel ->-                     {-# LINE 820 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     if _useParallel-                     then _patPP     >#< "<-" >#< "takeMVar sync_" >|< _lhsIindex-                     else empty-                     {-# LINE 5797 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule722 #-}-   {-# LINE 1368 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule722 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) _to child_ visit_ ->-                            {-# LINE 1368 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            Set.insert (stname child_ _to) $ maybe (error "Visit not found") (Set.map $ attrname _lhsIoptions True child_) $ Map.lookup visit_ _lhsIavisitdefs-                            {-# LINE 5803 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule723 #-}-   {-# LINE 1369 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule723 = \ _from ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) child_ visit_ ->-                            {-# LINE 1369 "./src-ag/ExecutionPlan2Hs.ag" #-}-                            let convert attrs = Map.fromList [ (attrname _lhsIoptions False child_ attr, Just $ mkNonLocalAttr True child_ attr) | attr <- Set.elems attrs ]-                            in Map.insert (stname child_ _from) Nothing $ convert $-                                 maybe (error "Visit not found") id $ Map.lookup visit_ _lhsIavisituses-                            {-# LINE 5811 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule724 #-}-   {-# LINE 1544 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule724 = \ ((_lhsIoptions) :: Options) ->-                                                    {-# LINE 1544 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x-                                                    {-# LINE 5817 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule725 #-}-   {-# LINE 1580 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule725 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) visit_ ->-                         {-# LINE 1580 "./src-ag/ExecutionPlan2Hs.ag" #-}-                         Map.findWithDefault (error "visit not in allFromToStates") visit_ _lhsIallFromToStates-                         {-# LINE 5823 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule726 #-}-   rule726 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule727 #-}-   rule727 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule728 #-}-   rule728 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule729 #-}-   rule729 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule730 #-}-   rule730 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule731 #-}-   rule731 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule732 #-}-   rule732 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast-   {-# INLINE rule733 #-}-   rule733 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-{-# NOINLINE sem_VisitStep_PureGroup #-}-sem_VisitStep_PureGroup :: T_VisitSteps  -> (Bool) -> T_VisitStep -sem_VisitStep_PureGroup arg_steps_ arg_ordered_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIsync_steps _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)-         _stepsOkind = rule734 arg_ordered_-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule735 _lhsIfmtMode _stepsIsem_steps-         _stepsOfmtMode = rule736 _lhsIfmtMode-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule737 _stepsIdefs _stepsIlazyIntras arg_ordered_-         _lhsOdefs :: Set String-         _lhsOdefs = rule738 _stepsIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule739 _stepsIerrors-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule740 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule741 _stepsIruleUsage-         _lhsOsync_steps :: PP_Doc-         _lhsOsync_steps = rule742 _stepsIsync_steps-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule743 _stepsIusedArgs-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule744 _stepsIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule745 _stepsIvisitKinds-         _lhsOindex :: Int-         _lhsOindex = rule746 _stepsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule747 _stepsIisLast-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule748 _stepsIprevMaxSimRefs-         _stepsOallFromToStates = rule749 _lhsIallFromToStates-         _stepsOallInitStates = rule750 _lhsIallInitStates-         _stepsOallVisitKinds = rule751 _lhsIallVisitKinds-         _stepsOallchildvisit = rule752 _lhsIallchildvisit-         _stepsOavisitdefs = rule753 _lhsIavisitdefs-         _stepsOavisituses = rule754 _lhsIavisituses-         _stepsOchildTypes = rule755 _lhsIchildTypes-         _stepsOchildintros = rule756 _lhsIchildintros-         _stepsOindex = rule757 _lhsIindex-         _stepsOmrules = rule758 _lhsImrules-         _stepsOoptions = rule759 _lhsIoptions-         _stepsOprevMaxSimRefs = rule760 _lhsIprevMaxSimRefs-         _stepsOruledefs = rule761 _lhsIruledefs-         _stepsOruleuses = rule762 _lhsIruleuses-         _stepsOuseParallel = rule763 _lhsIuseParallel-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule734 #-}-   {-# LINE 782 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule734 = \ ordered_ ->-                 {-# LINE 782 "./src-ag/ExecutionPlan2Hs.ag" #-}-                 VisitPure ordered_-                 {-# LINE 5908 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule735 #-}-   {-# LINE 814 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule735 = \ ((_lhsIfmtMode) :: FormatMode) ((_stepsIsem_steps) :: PP_Doc) ->-                                 {-# LINE 814 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 case _lhsIfmtMode of-                                   FormatDo -> "let" >#< _stepsIsem_steps-                                   _        -> _stepsIsem_steps-                                 {-# LINE 5916 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule736 #-}-   {-# LINE 835 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule736 = \ ((_lhsIfmtMode) :: FormatMode) ->-                    {-# LINE 835 "./src-ag/ExecutionPlan2Hs.ag" #-}-                    case _lhsIfmtMode of-                      FormatDo      -> FormatLetDecl-                      mode          -> mode-                    {-# LINE 5924 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule737 #-}-   {-# LINE 1389 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule737 = \ ((_stepsIdefs) :: Set String) ((_stepsIlazyIntras) :: Set String) ordered_ ->-                     {-# LINE 1389 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     if ordered_-                     then _stepsIlazyIntras-                     else _stepsIdefs-                     {-# LINE 5932 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule738 #-}-   rule738 = \ ((_stepsIdefs) :: Set String) ->-     _stepsIdefs-   {-# INLINE rule739 #-}-   rule739 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule740 #-}-   rule740 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule741 #-}-   rule741 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule742 #-}-   rule742 = \ ((_stepsIsync_steps) :: PP_Doc) ->-     _stepsIsync_steps-   {-# INLINE rule743 #-}-   rule743 = \ ((_stepsIusedArgs) :: Set String) ->-     _stepsIusedArgs-   {-# INLINE rule744 #-}-   rule744 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->-     _stepsIuses-   {-# INLINE rule745 #-}-   rule745 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _stepsIvisitKinds-   {-# INLINE rule746 #-}-   rule746 = \ ((_stepsIindex) :: Int) ->-     _stepsIindex-   {-# INLINE rule747 #-}-   rule747 = \ ((_stepsIisLast) :: Bool) ->-     _stepsIisLast-   {-# INLINE rule748 #-}-   rule748 = \ ((_stepsIprevMaxSimRefs) :: Int) ->-     _stepsIprevMaxSimRefs-   {-# INLINE rule749 #-}-   rule749 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule750 #-}-   rule750 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule751 #-}-   rule751 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule752 #-}-   rule752 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule753 #-}-   rule753 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule754 #-}-   rule754 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule755 #-}-   rule755 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule756 #-}-   rule756 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule757 #-}-   rule757 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule758 #-}-   rule758 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule759 #-}-   rule759 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule760 #-}-   rule760 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-   {-# INLINE rule761 #-}-   rule761 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule762 #-}-   rule762 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule763 #-}-   rule763 = \ ((_lhsIuseParallel) :: Bool) ->-     _lhsIuseParallel-{-# NOINLINE sem_VisitStep_Sim #-}-sem_VisitStep_Sim :: T_VisitSteps  -> T_VisitStep -sem_VisitStep_Sim arg_steps_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))-         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIsync_steps _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule764 _stepsIsem_steps _stepsIsync_steps-         _stepsOindex = rule765  ()-         _lhsOindex :: Int-         _lhsOindex = rule766 _lhsIindex-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule767 _lhsIprevMaxSimRefs _stepsIindex _useParallel-         _useParallel = rule768 _isMonadic _lhsIoptions _stepsIsize-         _isMonadic = rule769 _lhsIkind-         _lhsOdefs :: Set String-         _lhsOdefs = rule770 _stepsIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule771 _stepsIerrors-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule772 _stepsIlazyIntras-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule773 _stepsIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule774 _stepsIruleUsage-         _lhsOsync_steps :: PP_Doc-         _lhsOsync_steps = rule775 _stepsIsync_steps-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule776 _stepsIusedArgs-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule777 _stepsIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule778 _stepsIvisitKinds-         _lhsOisLast :: Bool-         _lhsOisLast = rule779 _stepsIisLast-         _stepsOallFromToStates = rule780 _lhsIallFromToStates-         _stepsOallInitStates = rule781 _lhsIallInitStates-         _stepsOallVisitKinds = rule782 _lhsIallVisitKinds-         _stepsOallchildvisit = rule783 _lhsIallchildvisit-         _stepsOavisitdefs = rule784 _lhsIavisitdefs-         _stepsOavisituses = rule785 _lhsIavisituses-         _stepsOchildTypes = rule786 _lhsIchildTypes-         _stepsOchildintros = rule787 _lhsIchildintros-         _stepsOfmtMode = rule788 _lhsIfmtMode-         _stepsOkind = rule789 _lhsIkind-         _stepsOmrules = rule790 _lhsImrules-         _stepsOoptions = rule791 _lhsIoptions-         _stepsOprevMaxSimRefs = rule792 _lhsIprevMaxSimRefs-         _stepsOruledefs = rule793 _lhsIruledefs-         _stepsOruleuses = rule794 _lhsIruleuses-         _stepsOuseParallel = rule795 _useParallel-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule764 #-}-   {-# LINE 813 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule764 = \ ((_stepsIsem_steps) :: PP_Doc) ((_stepsIsync_steps) :: PP_Doc) ->-                                 {-# LINE 813 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 _stepsIsem_steps >-< _stepsIsync_steps-                                 {-# LINE 6073 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule765 #-}-   {-# LINE 879 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule765 = \  (_ :: ()) ->-                                     {-# LINE 879 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     0-                                     {-# LINE 6079 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule766 #-}-   {-# LINE 880 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule766 = \ ((_lhsIindex) :: Int) ->-                                     {-# LINE 880 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                     _lhsIindex-                                     {-# LINE 6085 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule767 #-}-   {-# LINE 887 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule767 = \ ((_lhsIprevMaxSimRefs) :: Int) ((_stepsIindex) :: Int) _useParallel ->-                         {-# LINE 887 "./src-ag/ExecutionPlan2Hs.ag" #-}-                         if _useParallel-                         then _lhsIprevMaxSimRefs `max` (_stepsIindex - 1)-                         else _lhsIprevMaxSimRefs-                         {-# LINE 6093 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule768 #-}-   {-# LINE 902 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule768 = \ _isMonadic ((_lhsIoptions) :: Options) ((_stepsIsize) :: Int) ->-                                         {-# LINE 902 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                         parallelInvoke _lhsIoptions && _stepsIsize > 1 && _isMonadic-                                         {-# LINE 6099 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule769 #-}-   {-# LINE 903 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule769 = \ ((_lhsIkind) :: VisitKind) ->-                                         {-# LINE 903 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                         case _lhsIkind of-                                           VisitMonadic -> True-                                           _            -> False-                                         {-# LINE 6107 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule770 #-}-   rule770 = \ ((_stepsIdefs) :: Set String) ->-     _stepsIdefs-   {-# INLINE rule771 #-}-   rule771 = \ ((_stepsIerrors) :: Seq Error) ->-     _stepsIerrors-   {-# INLINE rule772 #-}-   rule772 = \ ((_stepsIlazyIntras) :: Set String) ->-     _stepsIlazyIntras-   {-# INLINE rule773 #-}-   rule773 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _stepsIruleKinds-   {-# INLINE rule774 #-}-   rule774 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->-     _stepsIruleUsage-   {-# INLINE rule775 #-}-   rule775 = \ ((_stepsIsync_steps) :: PP_Doc) ->-     _stepsIsync_steps-   {-# INLINE rule776 #-}-   rule776 = \ ((_stepsIusedArgs) :: Set String) ->-     _stepsIusedArgs-   {-# INLINE rule777 #-}-   rule777 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->-     _stepsIuses-   {-# INLINE rule778 #-}-   rule778 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _stepsIvisitKinds-   {-# INLINE rule779 #-}-   rule779 = \ ((_stepsIisLast) :: Bool) ->-     _stepsIisLast-   {-# INLINE rule780 #-}-   rule780 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule781 #-}-   rule781 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule782 #-}-   rule782 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule783 #-}-   rule783 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule784 #-}-   rule784 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule785 #-}-   rule785 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule786 #-}-   rule786 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule787 #-}-   rule787 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule788 #-}-   rule788 = \ ((_lhsIfmtMode) :: FormatMode) ->-     _lhsIfmtMode-   {-# INLINE rule789 #-}-   rule789 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule790 #-}-   rule790 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule791 #-}-   rule791 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule792 #-}-   rule792 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-   {-# INLINE rule793 #-}-   rule793 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule794 #-}-   rule794 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule795 #-}-   rule795 = \ _useParallel ->-     _useParallel-{-# NOINLINE sem_VisitStep_ChildIntro #-}-sem_VisitStep_ChildIntro :: (Identifier) -> T_VisitStep -sem_VisitStep_ChildIntro arg_child_ = T_VisitStep (return st50) where-   {-# NOINLINE st50 #-}-   st50 = let-      v49 :: T_VisitStep_v49 -      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _attachItf = rule796 _lhsIchildintros arg_child_-         _lhsOerrors :: Seq Error-         _lhsOsem_steps :: PP_Doc-         _lhsOdefs :: Set String-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         (_lhsOerrors,_lhsOsem_steps,_lhsOdefs,_lhsOuses) = rule797 _attachItf _lhsIfmtMode _lhsIkind-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule798  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule799  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule800  ()-         _lhsOsync_steps :: PP_Doc-         _lhsOsync_steps = rule801  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule802  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule803  ()-         _lhsOindex :: Int-         _lhsOindex = rule804 _lhsIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule805 _lhsIisLast-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule806 _lhsIprevMaxSimRefs-         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitStep_s50 v49-   {-# INLINE rule796 #-}-   {-# LINE 791 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule796 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) child_ ->-                                 {-# LINE 791 "./src-ag/ExecutionPlan2Hs.ag" #-}-                                 Map.findWithDefault (error $ "Child " ++ show child_ ++ " not found") child_ _lhsIchildintros-                                 {-# LINE 6225 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule797 #-}-   {-# LINE 793 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule797 = \ _attachItf ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) ->-                     {-# LINE 793 "./src-ag/ExecutionPlan2Hs.ag" #-}-                     case _attachItf     _lhsIkind _lhsIfmtMode of-                       Left e                   -> (Seq.singleton e, empty, Set.empty, Map.empty)-                       Right (code, defs, uses) -> (Seq.empty, code, defs, uses)-                     {-# LINE 6233 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule798 #-}-   rule798 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule799 #-}-   rule799 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule800 #-}-   rule800 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule801 #-}-   rule801 = \  (_ :: ()) ->-     empty-   {-# INLINE rule802 #-}-   rule802 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule803 #-}-   rule803 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule804 #-}-   rule804 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule805 #-}-   rule805 = \ ((_lhsIisLast) :: Bool) ->-     _lhsIisLast-   {-# INLINE rule806 #-}-   rule806 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs---- VisitSteps ----------------------------------------------------- wrapper-data Inh_VisitSteps  = Inh_VisitSteps { allFromToStates_Inh_VisitSteps :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitSteps :: (Map NontermIdent Int), allVisitKinds_Inh_VisitSteps :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitSteps :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitSteps :: (Map Identifier Type), childintros_Inh_VisitSteps :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), fmtMode_Inh_VisitSteps :: (FormatMode), index_Inh_VisitSteps :: (Int), kind_Inh_VisitSteps :: (VisitKind), mrules_Inh_VisitSteps :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), options_Inh_VisitSteps :: (Options), prevMaxSimRefs_Inh_VisitSteps :: (Int), ruledefs_Inh_VisitSteps :: (Map Identifier (Set String)), ruleuses_Inh_VisitSteps :: (Map Identifier (Map String (Maybe NonLocalAttr))), useParallel_Inh_VisitSteps :: (Bool) }-data Syn_VisitSteps  = Syn_VisitSteps { defs_Syn_VisitSteps :: (Set String), errors_Syn_VisitSteps :: (Seq Error), index_Syn_VisitSteps :: (Int), isLast_Syn_VisitSteps :: (Bool), lazyIntras_Syn_VisitSteps :: (Set String), prevMaxSimRefs_Syn_VisitSteps :: (Int), ruleKinds_Syn_VisitSteps :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitSteps :: (Map Identifier Int), sem_steps_Syn_VisitSteps :: (PP_Doc), size_Syn_VisitSteps :: (Int), sync_steps_Syn_VisitSteps :: (PP_Doc), usedArgs_Syn_VisitSteps :: (Set String), uses_Syn_VisitSteps :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitSteps :: (Map VisitIdentifier VisitKind) }-{-# INLINABLE wrap_VisitSteps #-}-wrap_VisitSteps :: T_VisitSteps  -> Inh_VisitSteps  -> (Syn_VisitSteps )-wrap_VisitSteps (T_VisitSteps act) (Inh_VisitSteps _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel-        (T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds) <- return (inv_VisitSteps_s53 sem arg)-        return (Syn_VisitSteps _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds)-   )---- cata-{-# NOINLINE sem_VisitSteps #-}-sem_VisitSteps :: VisitSteps  -> T_VisitSteps -sem_VisitSteps list = Prelude.foldr sem_VisitSteps_Cons sem_VisitSteps_Nil (Prelude.map sem_VisitStep list)---- semantic domain-newtype T_VisitSteps  = T_VisitSteps {-                                     attach_T_VisitSteps :: Identity (T_VisitSteps_s53 )-                                     }-newtype T_VisitSteps_s53  = C_VisitSteps_s53 {-                                             inv_VisitSteps_s53 :: (T_VisitSteps_v52 )-                                             }-data T_VisitSteps_s54  = C_VisitSteps_s54-type T_VisitSteps_v52  = (T_VisitSteps_vIn52 ) -> (T_VisitSteps_vOut52 )-data T_VisitSteps_vIn52  = T_VisitSteps_vIn52 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (FormatMode) (Int) (VisitKind) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Options) (Int) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Bool)-data T_VisitSteps_vOut52  = T_VisitSteps_vOut52 (Set String) (Seq Error) (Int) (Bool) (Set String) (Int) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Int) (PP_Doc) (Set String) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)-{-# NOINLINE sem_VisitSteps_Cons #-}-sem_VisitSteps_Cons :: T_VisitStep  -> T_VisitSteps  -> T_VisitSteps -sem_VisitSteps_Cons arg_hd_ arg_tl_ = T_VisitSteps (return st53) where-   {-# NOINLINE st53 #-}-   st53 = let-      v52 :: T_VisitSteps_v52 -      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _hdX50 = Control.Monad.Identity.runIdentity (attach_T_VisitStep (arg_hd_))-         _tlX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_tl_))-         (T_VisitStep_vOut49 _hdIdefs _hdIerrors _hdIindex _hdIisLast _hdIlazyIntras _hdIprevMaxSimRefs _hdIruleKinds _hdIruleUsage _hdIsem_steps _hdIsync_steps _hdIusedArgs _hdIuses _hdIvisitKinds) = inv_VisitStep_s50 _hdX50 (T_VisitStep_vIn49 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOchildTypes _hdOchildintros _hdOfmtMode _hdOindex _hdOisLast _hdOkind _hdOmrules _hdOoptions _hdOprevMaxSimRefs _hdOruledefs _hdOruleuses _hdOuseParallel)-         (T_VisitSteps_vOut52 _tlIdefs _tlIerrors _tlIindex _tlIisLast _tlIlazyIntras _tlIprevMaxSimRefs _tlIruleKinds _tlIruleUsage _tlIsem_steps _tlIsize _tlIsync_steps _tlIusedArgs _tlIuses _tlIvisitKinds) = inv_VisitSteps_s53 _tlX53 (T_VisitSteps_vIn52 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOchildTypes _tlOchildintros _tlOfmtMode _tlOindex _tlOkind _tlOmrules _tlOoptions _tlOprevMaxSimRefs _tlOruledefs _tlOruleuses _tlOuseParallel)-         _lhsOsize :: Int-         _lhsOsize = rule807 _tlIsize-         _hdOindex = rule808 _lhsIindex-         _tlOindex = rule809 _lhsIindex-         _lhsOindex :: Int-         _lhsOindex = rule810 _tlIindex-         _lhsOisLast :: Bool-         _lhsOisLast = rule811  ()-         _hdOisLast = rule812 _tlIisLast-         _lhsOdefs :: Set String-         _lhsOdefs = rule813 _hdIdefs _tlIdefs-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule814 _hdIerrors _tlIerrors-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule815 _hdIlazyIntras _tlIlazyIntras-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule816 _hdIruleKinds _tlIruleKinds-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule817 _hdIruleUsage _tlIruleUsage-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule818 _hdIsem_steps _tlIsem_steps-         _lhsOsync_steps :: PP_Doc-         _lhsOsync_steps = rule819 _hdIsync_steps _tlIsync_steps-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule820 _hdIusedArgs _tlIusedArgs-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule821 _hdIuses _tlIuses-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule822 _hdIvisitKinds _tlIvisitKinds-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule823 _tlIprevMaxSimRefs-         _hdOallFromToStates = rule824 _lhsIallFromToStates-         _hdOallInitStates = rule825 _lhsIallInitStates-         _hdOallVisitKinds = rule826 _lhsIallVisitKinds-         _hdOallchildvisit = rule827 _lhsIallchildvisit-         _hdOavisitdefs = rule828 _lhsIavisitdefs-         _hdOavisituses = rule829 _lhsIavisituses-         _hdOchildTypes = rule830 _lhsIchildTypes-         _hdOchildintros = rule831 _lhsIchildintros-         _hdOfmtMode = rule832 _lhsIfmtMode-         _hdOkind = rule833 _lhsIkind-         _hdOmrules = rule834 _lhsImrules-         _hdOoptions = rule835 _lhsIoptions-         _hdOprevMaxSimRefs = rule836 _lhsIprevMaxSimRefs-         _hdOruledefs = rule837 _lhsIruledefs-         _hdOruleuses = rule838 _lhsIruleuses-         _hdOuseParallel = rule839 _lhsIuseParallel-         _tlOallFromToStates = rule840 _lhsIallFromToStates-         _tlOallInitStates = rule841 _lhsIallInitStates-         _tlOallVisitKinds = rule842 _lhsIallVisitKinds-         _tlOallchildvisit = rule843 _lhsIallchildvisit-         _tlOavisitdefs = rule844 _lhsIavisitdefs-         _tlOavisituses = rule845 _lhsIavisituses-         _tlOchildTypes = rule846 _lhsIchildTypes-         _tlOchildintros = rule847 _lhsIchildintros-         _tlOfmtMode = rule848 _lhsIfmtMode-         _tlOkind = rule849 _lhsIkind-         _tlOmrules = rule850 _lhsImrules-         _tlOoptions = rule851 _lhsIoptions-         _tlOprevMaxSimRefs = rule852 _hdIprevMaxSimRefs-         _tlOruledefs = rule853 _lhsIruledefs-         _tlOruleuses = rule854 _lhsIruleuses-         _tlOuseParallel = rule855 _lhsIuseParallel-         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitSteps_s53 v52-   {-# INLINE rule807 #-}-   {-# LINE 870 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule807 = \ ((_tlIsize) :: Int) ->-                      {-# LINE 870 "./src-ag/ExecutionPlan2Hs.ag" #-}-                      1 + _tlIsize-                      {-# LINE 6374 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule808 #-}-   {-# LINE 875 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule808 = \ ((_lhsIindex) :: Int) ->-                {-# LINE 875 "./src-ag/ExecutionPlan2Hs.ag" #-}-                _lhsIindex-                {-# LINE 6380 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule809 #-}-   {-# LINE 876 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule809 = \ ((_lhsIindex) :: Int) ->-                {-# LINE 876 "./src-ag/ExecutionPlan2Hs.ag" #-}-                1 + _lhsIindex-                {-# LINE 6386 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule810 #-}-   {-# LINE 877 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule810 = \ ((_tlIindex) :: Int) ->-                {-# LINE 877 "./src-ag/ExecutionPlan2Hs.ag" #-}-                _tlIindex-                {-# LINE 6392 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule811 #-}-   {-# LINE 896 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule811 = \  (_ :: ()) ->-                         {-# LINE 896 "./src-ag/ExecutionPlan2Hs.ag" #-}-                         False-                         {-# LINE 6398 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule812 #-}-   {-# LINE 897 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule812 = \ ((_tlIisLast) :: Bool) ->-                         {-# LINE 897 "./src-ag/ExecutionPlan2Hs.ag" #-}-                         _tlIisLast-                         {-# LINE 6404 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule813 #-}-   rule813 = \ ((_hdIdefs) :: Set String) ((_tlIdefs) :: Set String) ->-     _hdIdefs `Set.union` _tlIdefs-   {-# INLINE rule814 #-}-   rule814 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->-     _hdIerrors Seq.>< _tlIerrors-   {-# INLINE rule815 #-}-   rule815 = \ ((_hdIlazyIntras) :: Set String) ((_tlIlazyIntras) :: Set String) ->-     _hdIlazyIntras `Set.union` _tlIlazyIntras-   {-# INLINE rule816 #-}-   rule816 = \ ((_hdIruleKinds) :: Map Identifier (Set VisitKind)) ((_tlIruleKinds) :: Map Identifier (Set VisitKind)) ->-     _hdIruleKinds `unionWithMappend` _tlIruleKinds-   {-# INLINE rule817 #-}-   rule817 = \ ((_hdIruleUsage) :: Map Identifier Int) ((_tlIruleUsage) :: Map Identifier Int) ->-     _hdIruleUsage `unionWithSum` _tlIruleUsage-   {-# INLINE rule818 #-}-   rule818 = \ ((_hdIsem_steps) :: PP_Doc) ((_tlIsem_steps) :: PP_Doc) ->-     _hdIsem_steps >-< _tlIsem_steps-   {-# INLINE rule819 #-}-   rule819 = \ ((_hdIsync_steps) :: PP_Doc) ((_tlIsync_steps) :: PP_Doc) ->-     _hdIsync_steps >-< _tlIsync_steps-   {-# INLINE rule820 #-}-   rule820 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->-     _hdIusedArgs `Set.union` _tlIusedArgs-   {-# INLINE rule821 #-}-   rule821 = \ ((_hdIuses) :: Map String (Maybe NonLocalAttr)) ((_tlIuses) :: Map String (Maybe NonLocalAttr)) ->-     _hdIuses `Map.union` _tlIuses-   {-# INLINE rule822 #-}-   rule822 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->-     _hdIvisitKinds `mappend` _tlIvisitKinds-   {-# INLINE rule823 #-}-   rule823 = \ ((_tlIprevMaxSimRefs) :: Int) ->-     _tlIprevMaxSimRefs-   {-# INLINE rule824 #-}-   rule824 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule825 #-}-   rule825 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule826 #-}-   rule826 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule827 #-}-   rule827 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule828 #-}-   rule828 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule829 #-}-   rule829 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule830 #-}-   rule830 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule831 #-}-   rule831 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule832 #-}-   rule832 = \ ((_lhsIfmtMode) :: FormatMode) ->-     _lhsIfmtMode-   {-# INLINE rule833 #-}-   rule833 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule834 #-}-   rule834 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule835 #-}-   rule835 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule836 #-}-   rule836 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs-   {-# INLINE rule837 #-}-   rule837 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule838 #-}-   rule838 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule839 #-}-   rule839 = \ ((_lhsIuseParallel) :: Bool) ->-     _lhsIuseParallel-   {-# INLINE rule840 #-}-   rule840 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->-     _lhsIallFromToStates-   {-# INLINE rule841 #-}-   rule841 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->-     _lhsIallInitStates-   {-# INLINE rule842 #-}-   rule842 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->-     _lhsIallVisitKinds-   {-# INLINE rule843 #-}-   rule843 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->-     _lhsIallchildvisit-   {-# INLINE rule844 #-}-   rule844 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisitdefs-   {-# INLINE rule845 #-}-   rule845 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->-     _lhsIavisituses-   {-# INLINE rule846 #-}-   rule846 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->-     _lhsIchildTypes-   {-# INLINE rule847 #-}-   rule847 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->-     _lhsIchildintros-   {-# INLINE rule848 #-}-   rule848 = \ ((_lhsIfmtMode) :: FormatMode) ->-     _lhsIfmtMode-   {-# INLINE rule849 #-}-   rule849 = \ ((_lhsIkind) :: VisitKind) ->-     _lhsIkind-   {-# INLINE rule850 #-}-   rule850 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->-     _lhsImrules-   {-# INLINE rule851 #-}-   rule851 = \ ((_lhsIoptions) :: Options) ->-     _lhsIoptions-   {-# INLINE rule852 #-}-   rule852 = \ ((_hdIprevMaxSimRefs) :: Int) ->-     _hdIprevMaxSimRefs-   {-# INLINE rule853 #-}-   rule853 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->-     _lhsIruledefs-   {-# INLINE rule854 #-}-   rule854 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->-     _lhsIruleuses-   {-# INLINE rule855 #-}-   rule855 = \ ((_lhsIuseParallel) :: Bool) ->-     _lhsIuseParallel-{-# NOINLINE sem_VisitSteps_Nil #-}-sem_VisitSteps_Nil ::  T_VisitSteps -sem_VisitSteps_Nil  = T_VisitSteps (return st53) where-   {-# NOINLINE st53 #-}-   st53 = let-      v52 :: T_VisitSteps_v52 -      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let-         _lhsOsize :: Int-         _lhsOsize = rule856  ()-         _lhsOisLast :: Bool-         _lhsOisLast = rule857  ()-         _lhsOdefs :: Set String-         _lhsOdefs = rule858  ()-         _lhsOerrors :: Seq Error-         _lhsOerrors = rule859  ()-         _lhsOlazyIntras :: Set String-         _lhsOlazyIntras = rule860  ()-         _lhsOruleKinds :: Map Identifier (Set VisitKind)-         _lhsOruleKinds = rule861  ()-         _lhsOruleUsage :: Map Identifier Int-         _lhsOruleUsage = rule862  ()-         _lhsOsem_steps :: PP_Doc-         _lhsOsem_steps = rule863  ()-         _lhsOsync_steps :: PP_Doc-         _lhsOsync_steps = rule864  ()-         _lhsOusedArgs :: Set String-         _lhsOusedArgs = rule865  ()-         _lhsOuses :: Map String (Maybe NonLocalAttr)-         _lhsOuses = rule866  ()-         _lhsOvisitKinds :: Map VisitIdentifier VisitKind-         _lhsOvisitKinds = rule867  ()-         _lhsOindex :: Int-         _lhsOindex = rule868 _lhsIindex-         _lhsOprevMaxSimRefs :: Int-         _lhsOprevMaxSimRefs = rule869 _lhsIprevMaxSimRefs-         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds-         in __result_ )-     in C_VisitSteps_s53 v52-   {-# INLINE rule856 #-}-   {-# LINE 869 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule856 = \  (_ :: ()) ->-                      {-# LINE 869 "./src-ag/ExecutionPlan2Hs.ag" #-}-                      0-                      {-# LINE 6577 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule857 #-}-   {-# LINE 895 "./src-ag/ExecutionPlan2Hs.ag" #-}-   rule857 = \  (_ :: ()) ->-                         {-# LINE 895 "./src-ag/ExecutionPlan2Hs.ag" #-}-                         True-                         {-# LINE 6583 "dist/build/ExecutionPlan2Hs.hs"#-}-   {-# INLINE rule858 #-}-   rule858 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule859 #-}-   rule859 = \  (_ :: ()) ->-     Seq.empty-   {-# INLINE rule860 #-}-   rule860 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule861 #-}-   rule861 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule862 #-}-   rule862 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule863 #-}-   rule863 = \  (_ :: ()) ->-     empty-   {-# INLINE rule864 #-}-   rule864 = \  (_ :: ()) ->-     empty-   {-# INLINE rule865 #-}-   rule865 = \  (_ :: ()) ->-     Set.empty-   {-# INLINE rule866 #-}-   rule866 = \  (_ :: ()) ->-     Map.empty-   {-# INLINE rule867 #-}-   rule867 = \  (_ :: ()) ->-     mempty-   {-# INLINE rule868 #-}-   rule868 = \ ((_lhsIindex) :: Int) ->-     _lhsIindex-   {-# INLINE rule869 #-}-   rule869 = \ ((_lhsIprevMaxSimRefs) :: Int) ->-     _lhsIprevMaxSimRefs---- Visits --------------------------------------------------------- wrapper-data Inh_Visits  = Inh_Visits { allFromToStates_Inh_Visits :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visits :: (Map NontermIdent Attributes), allInitStates_Inh_Visits :: (Map NontermIdent Int), allSynmap_Inh_Visits :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visits :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visits :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allintramap_Inh_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visits :: (Map Identifier Type), childintros_Inh_Visits :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visits :: (ConstructorIdent), inhmap_Inh_Visits :: (Attributes), mrules_Inh_Visits :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), nextVisits_Inh_Visits :: (Map StateIdentifier StateCtx), nt_Inh_Visits :: (NontermIdent), options_Inh_Visits :: (Options), params_Inh_Visits :: ([Identifier]), prevVisits_Inh_Visits :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visits :: (Map Identifier (Set String)), ruleuses_Inh_Visits :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visits :: (Attributes), terminaldefs_Inh_Visits :: (Set String) }-data Syn_Visits  = Syn_Visits { allvisits_Syn_Visits :: ([VisitStateState]), childvisit_Syn_Visits :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_Visits :: (Seq Error), fromToStates_Syn_Visits :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visits :: (Set String), ruleKinds_Syn_Visits :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visits :: (Map Identifier Int), sem_visit_Syn_Visits :: ( [(StateIdentifier,Bool -> PP_Doc)] ), t_visits_Syn_Visits :: (PP_Doc), usedArgs_Syn_Visits :: (Set String), visitKinds_Syn_Visits :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visits :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visits :: (Map VisitIdentifier (Set Identifier)) }-{-# INLINABLE wrap_Visits #-}-wrap_Visits :: T_Visits  -> Inh_Visits  -> (Syn_Visits )-wrap_Visits (T_Visits act) (Inh_Visits _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =-   Control.Monad.Identity.runIdentity (-     do sem <- act-        let arg = T_Visits_vIn55 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs-        (T_Visits_vOut55 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visits_s56 sem arg)+{-# LINE 2 "src-ag/HsToken.ag" #-}++import CommonTypes+import UU.Scanner.Position(Pos)+{-# LINE 10 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 2 "src-ag/Expression.ag" #-}++import UU.Scanner.Position(Pos)+import HsToken+{-# LINE 16 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 2 "src-ag/Patterns.ag" #-}++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)+{-# LINE 23 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 2 "src-ag/ExecutionPlan.ag" #-}++-- VisitSyntax.ag imports+import Patterns    (Pattern(..),Patterns)+import Expression  (Expression(..))+import CommonTypes+import ErrorMessages++import qualified Data.Set as Set+import Data.Set(Set)+import qualified Data.Map as Map+import Data.Map(Map)+{-# LINE 37 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 7 "src-ag/ExecutionPlan2Hs.ag" #-}++import ExecutionPlan+import Pretty+import PPUtil+import Options+import Data.Monoid(mappend,mempty)+import Data.Maybe+import Debug.Trace+import System.IO+import System.Directory+import System.FilePath+import UU.Scanner.Position++import TokenDef+import HsToken+import ErrorMessages++import Data.Set (Set)+import qualified Data.Set as Set+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Sequence(Seq)+import qualified Data.Sequence as Seq+import Data.Foldable(toList)+{-# LINE 64 "dist/build/ExecutionPlan2Hs.hs" #-}+import Control.Monad.Identity (Identity)+import qualified Control.Monad.Identity+{-# LINE 163 "src-ag/ExecutionPlan2Hs.ag" #-}++classCtxsToDocs :: ClassContext -> [PP_Doc]+classCtxsToDocs = map toDoc where+  toDoc (ident,args) = (ident >#< ppSpaced (map pp_parens args))++classConstrsToDocs :: [Type] -> [PP_Doc]+classConstrsToDocs = map ppTp++ppClasses :: [PP_Doc] -> PP_Doc+ppClasses [] = empty+ppClasses xs = pp_block "(" ")" "," xs >#< "=>"++ppQuants :: [Identifier] -> PP_Doc+ppQuants [] = empty+ppQuants ps = "forall" >#< ppSpaced ps >#< "."+{-# LINE 83 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 192 "src-ag/ExecutionPlan2Hs.ag" #-}++-- first parameter indicates: generate a record or not+ppConFields :: Bool -> [PP_Doc] -> PP_Doc+ppConFields True  flds = ppListSep "{" "}" ", " $ filter (not . isEmpty) flds+ppConFields False flds = ppSpaced flds+{-# LINE 91 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 218 "src-ag/ExecutionPlan2Hs.ag" #-}++ppTp :: Type -> PP_Doc+ppTp = text . typeToHaskellString Nothing []+{-# LINE 97 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 332 "src-ag/ExecutionPlan2Hs.ag" #-}+type VisitStateState = (VisitIdentifier,StateIdentifier, StateIdentifier)+{-# LINE 101 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 428 "src-ag/ExecutionPlan2Hs.ag" #-}++conNmTVisit nt vId      = "T_" >|< nt >|< "_v"    >|< vId+conNmTVisitIn nt vId    = "T_" >|< nt >|< "_vIn"  >|< vId+conNmTVisitOut nt vId   = "T_" >|< nt >|< "_vOut" >|< vId+conNmTNextVisit nt stId = "T_" >|< nt >|< "_s"    >|< stId++ppMonadType :: Options -> PP_Doc+ppMonadType opts+  | parallelInvoke opts = text "IO"+  | otherwise           = text "Identity"+{-# LINE 114 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 589 "src-ag/ExecutionPlan2Hs.ag" #-}++ppDefor :: Type -> PP_Doc+ppDefor (NT nt args _) = "T_" >|< nt >#< ppSpaced (map pp_parens args)+ppDefor (Haskell s)    = text s+{-# LINE 121 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 713 "src-ag/ExecutionPlan2Hs.ag" #-}++mklet :: (PP a, PP b, PP c) => a -> b -> c -> PP_Doc+mklet prefix defs body =+  prefix >#< "let"+  >-< indent 3 defs+  >-< indent 2 "in" >#< body+{-# LINE 130 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 779 "src-ag/ExecutionPlan2Hs.ag" #-}++resultValName :: String+resultValName = "__result_"++nextStName :: String+nextStName = "__st_"+{-# LINE 139 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 850 "src-ag/ExecutionPlan2Hs.ag" #-}++parResultName :: String+parResultName = "__outcome_"++fmtDecl :: PP a => Bool -> FormatMode -> a -> PP_Doc+fmtDecl declPure fmt decl = case fmt of+  FormatLetDecl -> pp decl+  FormatLetLine -> "let" >#< decl >#< "in"+  FormatDo | declPure  -> "let" >#< decl+           | otherwise -> pp decl+{-# LINE 152 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 976 "src-ag/ExecutionPlan2Hs.ag" #-}++stname :: Identifier -> Int -> String+stname child st = "_" ++ getName child ++ "X" ++ show st++-- should actually return some conversion info+compatibleAttach :: VisitKind -> NontermIdent -> Options -> Bool+compatibleAttach _ _ _ = True++unMon :: Options -> PP_Doc+unMon options+  | parallelInvoke options = text "System.IO.Unsafe.unsafePerformIO"    -- IO monad+  | otherwise              = text "Control.Monad.Identity.runIdentity"  -- identity monad+{-# LINE 167 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 1084 "src-ag/ExecutionPlan2Hs.ag" #-}++dummyPat :: Options -> Bool -> PP_Doc+dummyPat opts noArgs+  | not noArgs && tupleAsDummyToken opts = empty  -- no unnecessary tuples+  | tupleAsDummyToken opts = if strictDummyToken opts+                             then text "()"+                             else text "(_ :: ())"+  | otherwise              = let match | strictDummyToken opts = "!_"+                                       | otherwise             = "_"+                             in pp_parens (match >#< "::" >#< dummyType opts noArgs)+  where match | strictDummyToken opts = "(!_)"+              | otherwise             = "_"++dummyArg :: Options -> Bool -> PP_Doc+dummyArg opts noArgs+  | not noArgs && tupleAsDummyToken opts = empty    -- no unnecessary tuples+  | tupleAsDummyToken opts = text "()"+  | otherwise              = text "GHC.Prim.realWorld#"++dummyType :: Options -> Bool -> PP_Doc+dummyType opts noArgs+  | not noArgs && tupleAsDummyToken opts = empty     -- no unnecessary tuples+  | tupleAsDummyToken opts = text "()"+  | otherwise              = text "(GHC.Prim.State# GHC.Prim.RealWorld)"+{-# LINE 194 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 1110 "src-ag/ExecutionPlan2Hs.ag" #-}++-- rules are "deinlined" to prevent needless code duplication.+-- if there is only a bit of duplication, we allow ghc to decide if it is worth it.+-- if the duplication crosses this threshold, however, we tell ghc definitely not to inline it.+ruleInlineThresholdSoft :: Int+ruleInlineThresholdSoft = 3++ruleInlineThresholdHard :: Int+ruleInlineThresholdHard = 5++reallyOftenUsedThreshold :: Int+reallyOftenUsedThreshold = 12+{-# LINE 209 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 1176 "src-ag/ExecutionPlan2Hs.ag" #-}++data NonLocalAttr+  = AttrInh Identifier Identifier+  | AttrSyn Identifier Identifier deriving Show++mkNonLocalAttr :: Bool -> Identifier -> Identifier -> NonLocalAttr+mkNonLocalAttr True  = AttrInh  -- True: inherited attr+mkNonLocalAttr False = AttrSyn++lookupAttrType :: NonLocalAttr -> Map Identifier Attributes -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc+lookupAttrType (AttrInh child name) inhs _ = lookupType child name inhs+lookupAttrType (AttrSyn child name) _ syns = lookupType child name syns++-- Note: if the child takes type parameters, the type of an attribute of this child may refer to these parameters. This means that+-- the actual type of the attribute needs to have its type parameters substituted with the actual type argument of the child.+-- However, for now we simply decide to return Nothing in this case, which skips the type annotation.+lookupType :: Identifier -> Identifier -> Map Identifier Attributes -> Map Identifier Type -> Maybe PP_Doc+lookupType child name attrMp childMp+  | noParameters childTp = Just ppDoc+  | otherwise            = Nothing+  where+    attrTp     = Map.findWithDefault (error "lookupType: the attribute is not in the attrs of the child") name childAttrs+    childAttrs = Map.findWithDefault (error "lookupType: the attributes of the nonterm are not in the map") nonterm attrMp+    nonterm    = extractNonterminal childTp+    childTp    = Map.findWithDefault (error ("lookupType: the child " ++ show child ++ "is not in the appropriate map")) child childMp+    ppDoc      = ppTp attrTp++noParameters :: Type -> Bool+noParameters (Haskell _)   = True+noParameters (NT _ args _) = null args+{-# LINE 242 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 1263 "src-ag/ExecutionPlan2Hs.ag" #-}++-- a `compatibleKind` b  means: can kind b be invoked from a+compatibleKind :: VisitKind -> VisitKind -> Bool+compatibleKind _              _             = True++compatibleRule :: VisitKind -> Bool -> Bool+compatibleRule (VisitPure _) False = False+compatibleRule _             _     = True+{-# LINE 253 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 1285 "src-ag/ExecutionPlan2Hs.ag" #-}++unionWithSum = Map.unionWith (+)+{-# LINE 258 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 1308 "src-ag/ExecutionPlan2Hs.ag" #-}++uwSetUnion :: (Ord a, Ord b) => Map a (Set b) -> Map a (Set b) -> Map a (Set b)+uwSetUnion = Map.unionWith Set.union++uwMapUnion :: (Ord a, Ord b) => Map a (Map b c) -> Map a (Map b c) -> Map a (Map b c)+uwMapUnion = Map.unionWith Map.union+{-# LINE 267 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 1525 "src-ag/ExecutionPlan2Hs.ag" #-}++renderDocs :: [PP_Doc] -> String+renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) ""++writeModule :: FilePath -> [PP_Doc] -> IO ()+writeModule path docs+  = do bExists <- doesFileExist path+       if bExists+        then do input <- readFile path+                seq (length input) (return ())+                if input /= output+                 then dumpIt+                 else return ()+        else dumpIt+  where+    output = renderDocs docs+    dumpIt = writeFile path output+{-# LINE 287 "dist/build/ExecutionPlan2Hs.hs" #-}++{-# LINE 1672 "src-ag/ExecutionPlan2Hs.ag" #-}++ppNoInline :: PP a => a -> PP_Doc+ppNoInline = ppPragmaBinding "NOINLINE"++ppInline :: PP a => a -> PP_Doc+ppInline = ppPragmaBinding "INLINE"++ppInlinable :: PP a => a -> PP_Doc+ppInlinable = ppPragmaBinding "INLINABLE"++ppPragmaBinding :: (PP a, PP b) => a -> b -> PP_Doc+ppPragmaBinding pragma nm = "{-#" >#< pragma >#< nm >#< "#-}"++ppCostCentre :: PP a => a -> PP_Doc+ppCostCentre nm = "{-#" >#< "SCC" >#< "\"" >|< nm >|< "\"" >#< "#-}"++warrenFlagsPP :: Options -> PP_Doc+warrenFlagsPP options = vlist+  [ pp "{-# LANGUAGE Rank2Types, GADTs #-}"+  , if bangpats options+    then pp "{-# LANGUAGE BangPatterns #-}"+    else empty+  , if noPerRuleTypeSigs options && noPerStateTypeSigs options+    then empty+    else pp "{-# LANGUAGE ScopedTypeVariables #-}"+  , if tupleAsDummyToken options+    then empty+    else pp "{-# LANGUAGE ScopedTypeVariables, MagicHash #-}"+  , -- not that the meaning of "unbox" is here that strict fields in data types may be+    -- unboxed if possible. This may affect user-defined data types declared in the module.+    -- Unfortunately, we cannot turn it on for only the AG generated data types without+    -- causing a zillion of warnings.+    if unbox options && bangpats options+        then pp $ "{-# OPTIONS_GHC -funbox-strict-fields -fstrictness #-}"+        else empty+  , if parallelInvoke options && not (noEagerBlackholing options)+    then pp $ "{-# OPTIONS_GHC -feager-blackholing #-}"+    else empty+  ]+{-# LINE 329 "dist/build/ExecutionPlan2Hs.hs" #-}+-- EChild ------------------------------------------------------+-- wrapper+data Inh_EChild  = Inh_EChild { allInitStates_Inh_EChild :: (Map NontermIdent Int), con_Inh_EChild :: (ConstructorIdent), importBlocks_Inh_EChild :: (PP_Doc), mainFile_Inh_EChild :: (String), mainName_Inh_EChild :: (String), moduleHeader_Inh_EChild :: (String -> String -> String -> Bool -> String), nt_Inh_EChild :: (NontermIdent), options_Inh_EChild :: (Options), pragmaBlocks_Inh_EChild :: (String), textBlocks_Inh_EChild :: (PP_Doc) }+data Syn_EChild  = Syn_EChild { argnamesw_Syn_EChild :: ( PP_Doc ), argpats_Syn_EChild :: (  PP_Doc  ), argtps_Syn_EChild :: (  PP_Doc  ), childTypes_Syn_EChild :: (Map Identifier Type), childintros_Syn_EChild :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), datatype_Syn_EChild :: (PP_Doc), terminaldefs_Syn_EChild :: (Set String), usedArgs_Syn_EChild :: (Set String) }+{-# INLINABLE wrap_EChild #-}+wrap_EChild :: T_EChild  -> Inh_EChild  -> (Syn_EChild )+wrap_EChild (T_EChild act) (Inh_EChild _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg1 = T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks+        (T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs) <- return (inv_EChild_s2 sem arg1)+        return (Syn_EChild _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs)+   )++-- cata+{-# NOINLINE sem_EChild #-}+sem_EChild :: EChild  -> T_EChild +sem_EChild ( EChild name_ tp_ kind_ hasAround_ merges_ isMerged_ ) = sem_EChild_EChild name_ tp_ kind_ hasAround_ merges_ isMerged_+sem_EChild ( ETerm name_ tp_ ) = sem_EChild_ETerm name_ tp_++-- semantic domain+newtype T_EChild  = T_EChild {+                             attach_T_EChild :: Identity (T_EChild_s2 )+                             }+newtype T_EChild_s2  = C_EChild_s2 {+                                   inv_EChild_s2 :: (T_EChild_v1 )+                                   }+data T_EChild_s3  = C_EChild_s3+type T_EChild_v1  = (T_EChild_vIn1 ) -> (T_EChild_vOut1 )+data T_EChild_vIn1  = T_EChild_vIn1 (Map NontermIdent Int) (ConstructorIdent) (PP_Doc) (String) (String) (String -> String -> String -> Bool -> String) (NontermIdent) (Options) (String) (PP_Doc)+data T_EChild_vOut1  = T_EChild_vOut1 ( PP_Doc ) (  PP_Doc  ) (  PP_Doc  ) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (PP_Doc) (Set String) (Set String)+{-# NOINLINE sem_EChild_EChild #-}+sem_EChild_EChild :: (Identifier) -> (Type) -> (ChildKind) -> (Bool) -> (Maybe [Identifier]) -> (Bool) -> T_EChild +sem_EChild_EChild arg_name_ arg_tp_ arg_kind_ arg_hasAround_ _ _ = T_EChild (return st2) where+   {-# NOINLINE st2 #-}+   st2 = let+      v1 :: T_EChild_v1 +      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) -> ( let+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule0 _usedArgs_augmented_f1 _usedArgs_augmented_syn+         _usedArgs_augmented_f1 = rule1 arg_kind_ arg_name_+         _tpDoc = rule2 _addStrict arg_tp_+         _strNm = rule3 _lhsIcon _lhsInt arg_name_+         _field = rule4 _lhsIoptions _strNm _tpDoc+         _addStrict = rule5 _lhsIoptions+         _lhsOdatatype :: PP_Doc+         _lhsOdatatype = rule6 _field arg_kind_+         _lhsOargnamesw ::  PP_Doc +         _lhsOargnamesw = rule7 _nt arg_kind_ arg_name_+         _lhsOargtps ::   PP_Doc  +         _lhsOargtps = rule8 arg_kind_ arg_tp_+         _argpats = rule9 arg_kind_ arg_name_+         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule10 _introcode arg_name_+         _isDefor = rule11 arg_tp_+         _valcode = rule12 _isDefor _lhsIoptions _nt arg_kind_ arg_name_+         _aroundcode = rule13 _lhsIoptions arg_hasAround_ arg_name_+         _introcode = rule14 _addbang _aroundcode _initSt _isDefor _lhsIoptions _nt _valcode arg_hasAround_ arg_kind_ arg_name_+         _nt = rule15 arg_tp_+         _addbang = rule16 _lhsIoptions+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule17 arg_name_ arg_tp_+         _initSt = rule18 _lhsIallInitStates _nt+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule19  ()+         _usedArgs_augmented_syn = rule20  ()+         _lhsOargpats ::   PP_Doc  +         _lhsOargpats = rule21 _argpats+         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs+         in __result_ )+     in C_EChild_s2 v1+   {-# INLINE rule0 #-}+   rule0 = \ _usedArgs_augmented_f1 _usedArgs_augmented_syn ->+     foldr ($) _usedArgs_augmented_syn [_usedArgs_augmented_f1]+   {-# INLINE rule1 #-}+   rule1 = \ kind_ name_ ->+                         \s -> case kind_ of+                               ChildSyntax -> Set.insert ("arg_" ++ show name_ ++ "_") s+                               _           -> s+   {-# INLINE rule2 #-}+   {-# LINE 206 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule2 = \ _addStrict tp_ ->+                     {-# LINE 206 "src-ag/ExecutionPlan2Hs.ag" #-}+                     _addStrict     $ pp_parens $ ppTp $ removeDeforested tp_+                     {-# LINE 414 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule3 #-}+   {-# LINE 207 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule3 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->+                     {-# LINE 207 "src-ag/ExecutionPlan2Hs.ag" #-}+                     recordFieldname _lhsInt _lhsIcon name_+                     {-# LINE 420 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule4 #-}+   {-# LINE 208 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule4 = \ ((_lhsIoptions) :: Options) _strNm _tpDoc ->+                     {-# LINE 208 "src-ag/ExecutionPlan2Hs.ag" #-}+                     if dataRecords _lhsIoptions+                     then _strNm     >#< "::" >#< _tpDoc+                     else _tpDoc+                     {-# LINE 428 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule5 #-}+   {-# LINE 211 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule5 = \ ((_lhsIoptions) :: Options) ->+                        {-# LINE 211 "src-ag/ExecutionPlan2Hs.ag" #-}+                        \x -> if strictData _lhsIoptions then "!" >|< x else x+                        {-# LINE 434 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule6 #-}+   {-# LINE 212 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule6 = \ _field kind_ ->+                             {-# LINE 212 "src-ag/ExecutionPlan2Hs.ag" #-}+                             case kind_ of+                               ChildAttr -> empty+                               _         -> _field+                             {-# LINE 442 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule7 #-}+   {-# LINE 300 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule7 = \ _nt kind_ name_ ->+                             {-# LINE 300 "src-ag/ExecutionPlan2Hs.ag" #-}+                             case kind_ of+                               ChildSyntax     -> "(" >#< "sem_" >|< _nt     >#< name_ >|< "_" >#< ")"+                               ChildAttr       -> empty+                               ChildReplace tp -> "(" >#< "sem_" >|< extractNonterminal tp >#< name_ >|< "_" >#< ")"+                             {-# LINE 451 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule8 #-}+   {-# LINE 578 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule8 = \ kind_ tp_ ->+                            {-# LINE 578 "src-ag/ExecutionPlan2Hs.ag" #-}+                            case kind_ of+                              ChildSyntax     -> ppDefor tp_ >#< "->"+                              ChildReplace tp -> ppDefor tp >#< "->"+                              _               -> empty+                            {-# LINE 460 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule9 #-}+   {-# LINE 582 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule9 = \ kind_ name_ ->+                           {-# LINE 582 "src-ag/ExecutionPlan2Hs.ag" #-}+                           case kind_ of+                             ChildSyntax    -> name_ >|< "_"+                             ChildReplace _ -> name_ >|< "_"+                             _              -> empty+                           {-# LINE 469 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule10 #-}+   {-# LINE 930 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule10 = \ _introcode name_ ->+                               {-# LINE 930 "src-ag/ExecutionPlan2Hs.ag" #-}+                               Map.singleton name_ _introcode+                               {-# LINE 475 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule11 #-}+   {-# LINE 931 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule11 = \ tp_ ->+                               {-# LINE 931 "src-ag/ExecutionPlan2Hs.ag" #-}+                               case tp_ of+                                 NT _ _ defor -> defor+                                 _            -> False+                               {-# LINE 483 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule12 #-}+   {-# LINE 934 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule12 = \ _isDefor ((_lhsIoptions) :: Options) _nt kind_ name_ ->+                               {-# LINE 934 "src-ag/ExecutionPlan2Hs.ag" #-}+                               case kind_ of+                                 ChildSyntax -> "arg_" >|< name_ >|< "_"+                                 ChildAttr   ->+                                                let prefix | not _isDefor     = if lateHigherOrderBinding _lhsIoptions+                                                                                then lateSemNtLabel _nt     >#< lhsname _lhsIoptions True idLateBindingAttr+                                                                                else "sem_" >|< _nt+                                                           | otherwise        = empty+                                                in pp_parens (prefix >#< instname name_)+                                 ChildReplace _ ->+                                                   pp_parens (instname name_ >#< name_ >|< "_")+                               {-# LINE 498 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule13 #-}+   {-# LINE 945 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule13 = \ ((_lhsIoptions) :: Options) hasAround_ name_ ->+                               {-# LINE 945 "src-ag/ExecutionPlan2Hs.ag" #-}+                               if hasAround_+                               then locname _lhsIoptions name_ >|< "_around"+                               else empty+                               {-# LINE 506 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule14 #-}+   {-# LINE 948 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule14 = \ _addbang _aroundcode _initSt _isDefor ((_lhsIoptions) :: Options) _nt _valcode hasAround_ kind_ name_ ->+                               {-# LINE 948 "src-ag/ExecutionPlan2Hs.ag" #-}+                               \kind fmtMode ->+                                        let pat       = text $ stname name_ _initSt+                                            patStrict = _addbang     pat+                                            attach    = "attach_T_" >|< _nt     >#< pp_parens (_aroundcode     >#< _valcode    )+                                            runAttach = unMon _lhsIoptions >#< pp_parens attach+                                            decl      = case kind of+                                                          VisitPure False -> pat >#< "=" >#< runAttach+                                                          VisitPure True  -> patStrict >#< "=" >#< runAttach+                                                          VisitMonadic    -> patStrict >#< "<-" >#< attach+                                        in if compatibleAttach kind _nt     _lhsIoptions+                                           then Right ( fmtDecl False fmtMode decl+                                                      , Set.singleton (stname name_ _initSt    )+                                                      , case kind_ of+                                                          ChildAttr   -> Map.insert (instname name_) Nothing $+                                                                           ( if _isDefor     || not (lateHigherOrderBinding _lhsIoptions)+                                                                             then id+                                                                             else Map.insert (lhsname _lhsIoptions True idLateBindingAttr) (Just $ AttrInh _LHS idLateBindingAttr)+                                                                           ) $+                                                                           ( if hasAround_+                                                                             then Map.insert (locname _lhsIoptions (name_) ++ "_around") Nothing+                                                                             else id+                                                                           ) $ Map.empty+                                                          ChildReplace _ -> Map.singleton (instname name_) Nothing+                                                          ChildSyntax    -> Map.empty+                                                      )+                                           else Left $ IncompatibleAttachKind name_ kind+                               {-# LINE 537 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule15 #-}+   {-# LINE 974 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule15 = \ tp_ ->+                            {-# LINE 974 "src-ag/ExecutionPlan2Hs.ag" #-}+                            extractNonterminal tp_+                            {-# LINE 543 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule16 #-}+   {-# LINE 1553 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule16 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1553 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 549 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule17 #-}+   {-# LINE 1605 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule17 = \ name_ tp_ ->+                     {-# LINE 1605 "src-ag/ExecutionPlan2Hs.ag" #-}+                     Map.singleton name_ tp_+                     {-# LINE 555 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule18 #-}+   {-# LINE 1649 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule18 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) _nt ->+                 {-# LINE 1649 "src-ag/ExecutionPlan2Hs.ag" #-}+                 Map.findWithDefault (error "nonterminal not in allInitStates map") _nt     _lhsIallInitStates+                 {-# LINE 561 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule19 #-}+   rule19 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule20 #-}+   rule20 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule21 #-}+   rule21 = \ _argpats ->+     _argpats+{-# NOINLINE sem_EChild_ETerm #-}+sem_EChild_ETerm :: (Identifier) -> (Type) -> T_EChild +sem_EChild_ETerm arg_name_ arg_tp_ = T_EChild (return st2) where+   {-# NOINLINE st2 #-}+   st2 = let+      v1 :: T_EChild_v1 +      v1 = \ (T_EChild_vIn1 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) -> ( let+         _tpDoc = rule22 _addStrict arg_tp_+         _strNm = rule23 _lhsIcon _lhsInt arg_name_+         _field = rule24 _lhsIoptions _strNm _tpDoc+         _addStrict = rule25 _lhsIoptions+         _lhsOdatatype :: PP_Doc+         _lhsOdatatype = rule26 _field+         _lhsOargnamesw ::  PP_Doc +         _lhsOargnamesw = rule27 arg_name_+         _lhsOargtps ::   PP_Doc  +         _lhsOargtps = rule28 arg_tp_+         _argpats = rule29 _addbang arg_name_+         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule30 arg_name_+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule31 arg_name_+         _addbang = rule32 _lhsIoptions+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule33 arg_name_ arg_tp_+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule34  ()+         _lhsOargpats ::   PP_Doc  +         _lhsOargpats = rule35 _argpats+         __result_ = T_EChild_vOut1 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs+         in __result_ )+     in C_EChild_s2 v1+   {-# INLINE rule22 #-}+   {-# LINE 206 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule22 = \ _addStrict tp_ ->+                     {-# LINE 206 "src-ag/ExecutionPlan2Hs.ag" #-}+                     _addStrict     $ pp_parens $ ppTp $ removeDeforested tp_+                     {-# LINE 608 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule23 #-}+   {-# LINE 207 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule23 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ ->+                     {-# LINE 207 "src-ag/ExecutionPlan2Hs.ag" #-}+                     recordFieldname _lhsInt _lhsIcon name_+                     {-# LINE 614 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule24 #-}+   {-# LINE 208 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule24 = \ ((_lhsIoptions) :: Options) _strNm _tpDoc ->+                     {-# LINE 208 "src-ag/ExecutionPlan2Hs.ag" #-}+                     if dataRecords _lhsIoptions+                     then _strNm     >#< "::" >#< _tpDoc+                     else _tpDoc+                     {-# LINE 622 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule25 #-}+   {-# LINE 211 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule25 = \ ((_lhsIoptions) :: Options) ->+                        {-# LINE 211 "src-ag/ExecutionPlan2Hs.ag" #-}+                        \x -> if strictData _lhsIoptions then "!" >|< x else x+                        {-# LINE 628 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule26 #-}+   {-# LINE 216 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule26 = \ _field ->+                             {-# LINE 216 "src-ag/ExecutionPlan2Hs.ag" #-}+                             _field+                             {-# LINE 634 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule27 #-}+   {-# LINE 304 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule27 = \ name_ ->+                             {-# LINE 304 "src-ag/ExecutionPlan2Hs.ag" #-}+                             text $ fieldname name_+                             {-# LINE 640 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule28 #-}+   {-# LINE 586 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule28 = \ tp_ ->+                           {-# LINE 586 "src-ag/ExecutionPlan2Hs.ag" #-}+                           (pp_parens $ show tp_) >#< "->"+                           {-# LINE 646 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule29 #-}+   {-# LINE 587 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule29 = \ _addbang name_ ->+                           {-# LINE 587 "src-ag/ExecutionPlan2Hs.ag" #-}+                           _addbang     $ text $ fieldname name_+                           {-# LINE 652 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule30 #-}+   {-# LINE 929 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule30 = \ name_ ->+                               {-# LINE 929 "src-ag/ExecutionPlan2Hs.ag" #-}+                               Map.singleton name_ (\_ _ -> Right (empty, Set.empty, Map.empty))+                               {-# LINE 658 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule31 #-}+   {-# LINE 1322 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule31 = \ name_ ->+                       {-# LINE 1322 "src-ag/ExecutionPlan2Hs.ag" #-}+                       Set.singleton $ fieldname name_+                       {-# LINE 664 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule32 #-}+   {-# LINE 1554 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule32 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1554 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 670 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule33 #-}+   {-# LINE 1605 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule33 = \ name_ tp_ ->+                     {-# LINE 1605 "src-ag/ExecutionPlan2Hs.ag" #-}+                     Map.singleton name_ tp_+                     {-# LINE 676 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule34 #-}+   rule34 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule35 #-}+   rule35 = \ _argpats ->+     _argpats++-- EChildren ---------------------------------------------------+-- wrapper+data Inh_EChildren  = Inh_EChildren { allInitStates_Inh_EChildren :: (Map NontermIdent Int), con_Inh_EChildren :: (ConstructorIdent), importBlocks_Inh_EChildren :: (PP_Doc), mainFile_Inh_EChildren :: (String), mainName_Inh_EChildren :: (String), moduleHeader_Inh_EChildren :: (String -> String -> String -> Bool -> String), nt_Inh_EChildren :: (NontermIdent), options_Inh_EChildren :: (Options), pragmaBlocks_Inh_EChildren :: (String), textBlocks_Inh_EChildren :: (PP_Doc) }+data Syn_EChildren  = Syn_EChildren { argnamesw_Syn_EChildren :: ([PP_Doc]), argpats_Syn_EChildren :: ( [PP_Doc] ), argtps_Syn_EChildren :: ( [PP_Doc] ), childTypes_Syn_EChildren :: (Map Identifier Type), childintros_Syn_EChildren :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), datatype_Syn_EChildren :: ([PP_Doc]), terminaldefs_Syn_EChildren :: (Set String), usedArgs_Syn_EChildren :: (Set String) }+{-# INLINABLE wrap_EChildren #-}+wrap_EChildren :: T_EChildren  -> Inh_EChildren  -> (Syn_EChildren )+wrap_EChildren (T_EChildren act) (Inh_EChildren _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg4 = T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks+        (T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs) <- return (inv_EChildren_s5 sem arg4)+        return (Syn_EChildren _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs)+   )++-- cata+{-# NOINLINE sem_EChildren #-}+sem_EChildren :: EChildren  -> T_EChildren +sem_EChildren list = Prelude.foldr sem_EChildren_Cons sem_EChildren_Nil (Prelude.map sem_EChild list)++-- semantic domain+newtype T_EChildren  = T_EChildren {+                                   attach_T_EChildren :: Identity (T_EChildren_s5 )+                                   }+newtype T_EChildren_s5  = C_EChildren_s5 {+                                         inv_EChildren_s5 :: (T_EChildren_v4 )+                                         }+data T_EChildren_s6  = C_EChildren_s6+type T_EChildren_v4  = (T_EChildren_vIn4 ) -> (T_EChildren_vOut4 )+data T_EChildren_vIn4  = T_EChildren_vIn4 (Map NontermIdent Int) (ConstructorIdent) (PP_Doc) (String) (String) (String -> String -> String -> Bool -> String) (NontermIdent) (Options) (String) (PP_Doc)+data T_EChildren_vOut4  = T_EChildren_vOut4 ([PP_Doc]) ( [PP_Doc] ) ( [PP_Doc] ) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ([PP_Doc]) (Set String) (Set String)+{-# NOINLINE sem_EChildren_Cons #-}+sem_EChildren_Cons :: T_EChild  -> T_EChildren  -> T_EChildren +sem_EChildren_Cons arg_hd_ arg_tl_ = T_EChildren (return st5) where+   {-# NOINLINE st5 #-}+   st5 = let+      v4 :: T_EChildren_v4 +      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) -> ( let+         _hdX2 = Control.Monad.Identity.runIdentity (attach_T_EChild (arg_hd_))+         _tlX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_tl_))+         (T_EChild_vOut1 _hdIargnamesw _hdIargpats _hdIargtps _hdIchildTypes _hdIchildintros _hdIdatatype _hdIterminaldefs _hdIusedArgs) = inv_EChild_s2 _hdX2 (T_EChild_vIn1 _hdOallInitStates _hdOcon _hdOimportBlocks _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnt _hdOoptions _hdOpragmaBlocks _hdOtextBlocks)+         (T_EChildren_vOut4 _tlIargnamesw _tlIargpats _tlIargtps _tlIchildTypes _tlIchildintros _tlIdatatype _tlIterminaldefs _tlIusedArgs) = inv_EChildren_s5 _tlX5 (T_EChildren_vIn4 _tlOallInitStates _tlOcon _tlOimportBlocks _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnt _tlOoptions _tlOpragmaBlocks _tlOtextBlocks)+         _lhsOargnamesw :: [PP_Doc]+         _lhsOargnamesw = rule36 _hdIargnamesw _tlIargnamesw+         _lhsOargpats ::  [PP_Doc] +         _lhsOargpats = rule37 _hdIargpats _tlIargpats+         _lhsOargtps ::  [PP_Doc] +         _lhsOargtps = rule38 _hdIargtps _tlIargtps+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule39 _hdIchildTypes _tlIchildTypes+         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule40 _hdIchildintros _tlIchildintros+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule41 _hdIdatatype _tlIdatatype+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule42 _hdIterminaldefs _tlIterminaldefs+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule43 _hdIusedArgs _tlIusedArgs+         _hdOallInitStates = rule44 _lhsIallInitStates+         _hdOcon = rule45 _lhsIcon+         _hdOimportBlocks = rule46 _lhsIimportBlocks+         _hdOmainFile = rule47 _lhsImainFile+         _hdOmainName = rule48 _lhsImainName+         _hdOmoduleHeader = rule49 _lhsImoduleHeader+         _hdOnt = rule50 _lhsInt+         _hdOoptions = rule51 _lhsIoptions+         _hdOpragmaBlocks = rule52 _lhsIpragmaBlocks+         _hdOtextBlocks = rule53 _lhsItextBlocks+         _tlOallInitStates = rule54 _lhsIallInitStates+         _tlOcon = rule55 _lhsIcon+         _tlOimportBlocks = rule56 _lhsIimportBlocks+         _tlOmainFile = rule57 _lhsImainFile+         _tlOmainName = rule58 _lhsImainName+         _tlOmoduleHeader = rule59 _lhsImoduleHeader+         _tlOnt = rule60 _lhsInt+         _tlOoptions = rule61 _lhsIoptions+         _tlOpragmaBlocks = rule62 _lhsIpragmaBlocks+         _tlOtextBlocks = rule63 _lhsItextBlocks+         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs+         in __result_ )+     in C_EChildren_s5 v4+   {-# INLINE rule36 #-}+   rule36 = \ ((_hdIargnamesw) ::  PP_Doc ) ((_tlIargnamesw) :: [PP_Doc]) ->+     _hdIargnamesw : _tlIargnamesw+   {-# INLINE rule37 #-}+   rule37 = \ ((_hdIargpats) ::   PP_Doc  ) ((_tlIargpats) ::  [PP_Doc] ) ->+     _hdIargpats : _tlIargpats+   {-# INLINE rule38 #-}+   rule38 = \ ((_hdIargtps) ::   PP_Doc  ) ((_tlIargtps) ::  [PP_Doc] ) ->+     _hdIargtps : _tlIargtps+   {-# INLINE rule39 #-}+   rule39 = \ ((_hdIchildTypes) :: Map Identifier Type) ((_tlIchildTypes) :: Map Identifier Type) ->+     _hdIchildTypes `mappend` _tlIchildTypes+   {-# INLINE rule40 #-}+   rule40 = \ ((_hdIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ((_tlIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _hdIchildintros `Map.union` _tlIchildintros+   {-# INLINE rule41 #-}+   rule41 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->+     _hdIdatatype : _tlIdatatype+   {-# INLINE rule42 #-}+   rule42 = \ ((_hdIterminaldefs) :: Set String) ((_tlIterminaldefs) :: Set String) ->+     _hdIterminaldefs `Set.union` _tlIterminaldefs+   {-# INLINE rule43 #-}+   rule43 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->+     _hdIusedArgs `Set.union` _tlIusedArgs+   {-# INLINE rule44 #-}+   rule44 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule45 #-}+   rule45 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule46 #-}+   rule46 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule47 #-}+   rule47 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule48 #-}+   rule48 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule49 #-}+   rule49 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule50 #-}+   rule50 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule51 #-}+   rule51 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule52 #-}+   rule52 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule53 #-}+   rule53 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule54 #-}+   rule54 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule55 #-}+   rule55 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule56 #-}+   rule56 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule57 #-}+   rule57 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule58 #-}+   rule58 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule59 #-}+   rule59 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule60 #-}+   rule60 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule61 #-}+   rule61 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule62 #-}+   rule62 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule63 #-}+   rule63 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+{-# NOINLINE sem_EChildren_Nil #-}+sem_EChildren_Nil ::  T_EChildren +sem_EChildren_Nil  = T_EChildren (return st5) where+   {-# NOINLINE st5 #-}+   st5 = let+      v4 :: T_EChildren_v4 +      v4 = \ (T_EChildren_vIn4 _lhsIallInitStates _lhsIcon _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsItextBlocks) -> ( let+         _lhsOargnamesw :: [PP_Doc]+         _lhsOargnamesw = rule64  ()+         _lhsOargpats ::  [PP_Doc] +         _lhsOargpats = rule65  ()+         _lhsOargtps ::  [PP_Doc] +         _lhsOargtps = rule66  ()+         _lhsOchildTypes :: Map Identifier Type+         _lhsOchildTypes = rule67  ()+         _lhsOchildintros :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))+         _lhsOchildintros = rule68  ()+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule69  ()+         _lhsOterminaldefs :: Set String+         _lhsOterminaldefs = rule70  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule71  ()+         __result_ = T_EChildren_vOut4 _lhsOargnamesw _lhsOargpats _lhsOargtps _lhsOchildTypes _lhsOchildintros _lhsOdatatype _lhsOterminaldefs _lhsOusedArgs+         in __result_ )+     in C_EChildren_s5 v4+   {-# INLINE rule64 #-}+   rule64 = \  (_ :: ()) ->+     []+   {-# INLINE rule65 #-}+   rule65 = \  (_ :: ()) ->+     []+   {-# INLINE rule66 #-}+   rule66 = \  (_ :: ()) ->+     []+   {-# INLINE rule67 #-}+   rule67 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule68 #-}+   rule68 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule69 #-}+   rule69 = \  (_ :: ()) ->+     []+   {-# INLINE rule70 #-}+   rule70 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule71 #-}+   rule71 = \  (_ :: ()) ->+     Set.empty++-- ENonterminal ------------------------------------------------+-- wrapper+data Inh_ENonterminal  = Inh_ENonterminal { allFromToStates_Inh_ENonterminal :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminal :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminal :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminal :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminal :: (Map VisitIdentifier (Set Identifier)), derivings_Inh_ENonterminal :: (Derivings), importBlocks_Inh_ENonterminal :: (PP_Doc), inhmap_Inh_ENonterminal :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminal :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminal :: (String), mainName_Inh_ENonterminal :: (String), moduleHeader_Inh_ENonterminal :: (String -> String -> String -> Bool -> String), options_Inh_ENonterminal :: (Options), pragmaBlocks_Inh_ENonterminal :: (String), synmap_Inh_ENonterminal :: (Map NontermIdent Attributes), textBlocks_Inh_ENonterminal :: (PP_Doc), typeSyns_Inh_ENonterminal :: (TypeSyns), wrappers_Inh_ENonterminal :: (Set NontermIdent) }+data Syn_ENonterminal  = Syn_ENonterminal { appendCommon_Syn_ENonterminal :: ( PP_Doc ), appendMain_Syn_ENonterminal :: ( PP_Doc ), childvisit_Syn_ENonterminal :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_ENonterminal :: (Seq Error), fromToStates_Syn_ENonterminal :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_ENonterminal :: (IO ()), imports_Syn_ENonterminal :: ([PP_Doc]), initStates_Syn_ENonterminal :: (Map NontermIdent Int), output_Syn_ENonterminal :: (PP_Doc), semFunBndDefs_Syn_ENonterminal :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminal :: (Seq PP_Doc), visitKinds_Syn_ENonterminal :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminal :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_ENonterminal #-}+wrap_ENonterminal :: T_ENonterminal  -> Inh_ENonterminal  -> (Syn_ENonterminal )+wrap_ENonterminal (T_ENonterminal act) (Inh_ENonterminal _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg7 = T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers+        (T_ENonterminal_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminal_s8 sem arg7)+        return (Syn_ENonterminal _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_ENonterminal #-}+sem_ENonterminal :: ENonterminal  -> T_ENonterminal +sem_ENonterminal ( ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ prods_ recursive_ hoInfo_ ) = sem_ENonterminal_ENonterminal nt_ params_ classCtxs_ initial_ initialv_ nextVisits_ prevVisits_ ( sem_EProductions prods_ ) recursive_ hoInfo_++-- semantic domain+newtype T_ENonterminal  = T_ENonterminal {+                                         attach_T_ENonterminal :: Identity (T_ENonterminal_s8 )+                                         }+newtype T_ENonterminal_s8  = C_ENonterminal_s8 {+                                               inv_ENonterminal_s8 :: (T_ENonterminal_v7 )+                                               }+data T_ENonterminal_s9  = C_ENonterminal_s9+type T_ENonterminal_v7  = (T_ENonterminal_vIn7 ) -> (T_ENonterminal_vOut7 )+data T_ENonterminal_vIn7  = T_ENonterminal_vIn7 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Derivings) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (String -> String -> String -> Bool -> String) (Options) (String) (Map NontermIdent Attributes) (PP_Doc) (TypeSyns) (Set NontermIdent)+data T_ENonterminal_vOut7  = T_ENonterminal_vOut7 ( PP_Doc ) ( PP_Doc ) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Map NontermIdent Int) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_ENonterminal_ENonterminal #-}+sem_ENonterminal_ENonterminal :: (NontermIdent) -> ([Identifier]) -> (ClassContext) -> (StateIdentifier) -> ([VisitIdentifier]) -> (Map StateIdentifier StateCtx) -> (Map StateIdentifier StateCtx) -> T_EProductions  -> (Bool) -> (HigherOrderInfo) -> T_ENonterminal +sem_ENonterminal_ENonterminal arg_nt_ arg_params_ arg_classCtxs_ arg_initial_ arg_initialv_ arg_nextVisits_ arg_prevVisits_ arg_prods_ arg_recursive_ _ = T_ENonterminal (return st8) where+   {-# NOINLINE st8 #-}+   st8 = let+      v7 :: T_ENonterminal_v7 +      v7 = \ (T_ENonterminal_vIn7 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let+         _prodsX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_prods_))+         (T_EProductions_vOut16 _prodsIallvisits _prodsIchildvisit _prodsIcount _prodsIdatatype _prodsIerrors _prodsIfromToStates _prodsIgenProdIO _prodsIimports _prodsIsemFunBndDefs _prodsIsemFunBndTps _prodsIsem_nt _prodsIsem_prod _prodsIt_visits _prodsIvisitKinds _prodsIvisitdefs _prodsIvisituses) = inv_EProductions_s17 _prodsX17 (T_EProductions_vIn16 _prodsOallFromToStates _prodsOallInhmap _prodsOallInitStates _prodsOallSynmap _prodsOallVisitKinds _prodsOallchildvisit _prodsOallstates _prodsOavisitdefs _prodsOavisituses _prodsOclassCtxs _prodsOimportBlocks _prodsOinhmap _prodsOinitial _prodsOlocalAttrTypes _prodsOmainFile _prodsOmainName _prodsOmoduleHeader _prodsOnextVisits _prodsOnt _prodsOntType _prodsOoptions _prodsOparams _prodsOpragmaBlocks _prodsOprevVisits _prodsOrename _prodsOsynmap _prodsOtextBlocks)+         _prodsOrename = rule72 _lhsIoptions+         _prodsOnt = rule73 arg_nt_+         _prodsOparams = rule74 arg_params_+         _prodsOclassCtxs = rule75 arg_classCtxs_+         _lhsOoutput :: PP_Doc+         _lhsOoutput = rule76 _datatype _hasWrapper _k_states _lhsIoptions _prodsIsem_prod _prodsIt_visits _sem_nt _t_init _t_states _wr_inh _wr_syn _wrapper arg_nt_+         _hasWrapper = rule77 _lhsIwrappers arg_nt_+         _classPP = rule78 arg_classCtxs_+         _aliasPre = rule79 _classPP _t_params arg_nt_+         _datatype = rule80 _aliasPre _classPP _derivings _lhsItypeSyns _prodsIdatatype _t_params arg_nt_+         _derivings = rule81 _lhsIderivings arg_nt_+         _fsemname = rule82  ()+         _semname = rule83 _fsemname arg_nt_+         _frecarg = rule84 _fsemname+         _sem_tp = rule85 _classPP _quantPP _t_params _t_type arg_nt_+         _quantPP = rule86 arg_params_+         _sem_nt = rule87 _frecarg _fsemname _lhsItypeSyns _prodsIsem_nt _semPragma _sem_tp _semname arg_nt_+         _inlineNt = rule88 _hasWrapper _lhsIoptions _prodsIcount arg_recursive_+         _semPragma = rule89 _inlineNt _lhsIoptions _semname+         (Just _prodsOinhmap) = rule90 _lhsIinhmap arg_nt_+         (Just _prodsOsynmap) = rule91 _lhsIsynmap arg_nt_+         _prodsOallInhmap = rule92 _lhsIinhmap+         _prodsOallSynmap = rule93 _lhsIsynmap+         _outedges = rule94 _prodsIallvisits+         _inedges = rule95 _prodsIallvisits+         _allstates = rule96 _inedges _outedges arg_initial_+         _stvisits = rule97 _prodsIallvisits+         _t_type = rule98 arg_nt_+         _t_params = rule99 arg_params_+         _t_init = rule100 _lhsIoptions _t_params _t_type arg_initial_+         _t_states = rule101 _allstates _t_params arg_nextVisits_ arg_nt_+         _k_type = rule102 arg_nt_+         _k_states = rule103 _allstates _k_type _prodsIallvisits _t_params _t_type arg_nextVisits_ arg_nt_+         _wr_inh = rule104 _genwrap _wr_inhs+         _wr_syn = rule105 _genwrap _wr_syns+         _genwrap = rule106 _addbang _t_params arg_nt_+         _synAttrs = rule107 _lhsIinhmap arg_nt_+         _wr_inhs = rule108 _synAttrs _wr_filter+         _wr_inhs1 = rule109 _synAttrs+         _wr_filter = rule110 _lhsIoptions+         _wr_syns = rule111 _lhsIsynmap arg_nt_+         _inhlist = rule112 _lhsIoptions _wr_inhs+         _inhlist1 = rule113 _lhsIoptions _wr_inhs1+         _synlist = rule114 _lhsIoptions _wr_syns+         _wrapname = rule115 arg_nt_+         _inhname = rule116 arg_nt_+         _synname = rule117 arg_nt_+         _firstVisitInfo = rule118 arg_initial_ arg_nextVisits_+         _wrapper = rule119 _addbang _addbangWrap _classPP _inhlist _inhname _k_type _lhsIallVisitKinds _lhsImainName _lhsIoptions _prodsIvisitdefs _prodsIvisituses _quantPP _synlist _synname _t_params _t_type _wrapPragma _wrapname arg_initial_ arg_initialv_ arg_nextVisits_ arg_nt_+         _wrapPragma = rule120 _lhsIoptions _wrapname+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule121 _prodsIsemFunBndDefs _semFunBndDef+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule122 _prodsIsemFunBndTps _semFunBndTp+         _semFunBndDef = rule123 _semFunBndNm _semname+         _semFunBndTp = rule124 _semFunBndNm _sem_tp+         _semFunBndNm = rule125 arg_nt_+         _prodsOinitial = rule126 arg_initial_+         _prodsOallstates = rule127 _allstates+         _lhsOappendMain ::  PP_Doc +         _lhsOappendMain = rule128 _lhsIwrappers _sem_nt _wr_inh _wr_syn _wrapper arg_nt_+         _lhsOappendCommon ::  PP_Doc +         _lhsOappendCommon = rule129 _datatype _k_states _lhsIoptions _prodsIt_visits _t_init _t_states+         _addbang = rule130 _lhsIoptions+         _addbangWrap = rule131  ()+         _prodsOnextVisits = rule132 arg_nextVisits_+         _prodsOprevVisits = rule133 arg_prevVisits_+         _prodsOlocalAttrTypes = rule134 _lhsIlocalAttrTypes arg_nt_+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule135 arg_initial_ arg_nt_+         _ntType = rule136 arg_nt_ arg_params_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule137 _prodsIchildvisit+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule138 _prodsIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule139 _prodsIfromToStates+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule140 _prodsIgenProdIO+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule141 _prodsIimports+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule142 _prodsIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule143 _prodsIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule144 _prodsIvisituses+         _prodsOallFromToStates = rule145 _lhsIallFromToStates+         _prodsOallInitStates = rule146 _lhsIallInitStates+         _prodsOallVisitKinds = rule147 _lhsIallVisitKinds+         _prodsOallchildvisit = rule148 _lhsIallchildvisit+         _prodsOavisitdefs = rule149 _lhsIavisitdefs+         _prodsOavisituses = rule150 _lhsIavisituses+         _prodsOimportBlocks = rule151 _lhsIimportBlocks+         _prodsOmainFile = rule152 _lhsImainFile+         _prodsOmainName = rule153 _lhsImainName+         _prodsOmoduleHeader = rule154 _lhsImoduleHeader+         _prodsOntType = rule155 _ntType+         _prodsOoptions = rule156 _lhsIoptions+         _prodsOpragmaBlocks = rule157 _lhsIpragmaBlocks+         _prodsOtextBlocks = rule158 _lhsItextBlocks+         __result_ = T_ENonterminal_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminal_s8 v7+   {-# INLINE rule72 #-}+   {-# LINE 57 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule72 = \ ((_lhsIoptions) :: Options) ->+                                  {-# LINE 57 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  rename _lhsIoptions+                                  {-# LINE 1047 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule73 #-}+   {-# LINE 65 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule73 = \ nt_ ->+                              {-# LINE 65 "src-ag/ExecutionPlan2Hs.ag" #-}+                              nt_+                              {-# LINE 1053 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule74 #-}+   {-# LINE 77 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule74 = \ params_ ->+                   {-# LINE 77 "src-ag/ExecutionPlan2Hs.ag" #-}+                   params_+                   {-# LINE 1059 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule75 #-}+   {-# LINE 81 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule75 = \ classCtxs_ ->+                      {-# LINE 81 "src-ag/ExecutionPlan2Hs.ag" #-}+                      classCtxs_+                      {-# LINE 1065 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule76 #-}+   {-# LINE 98 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule76 = \ _datatype _hasWrapper _k_states ((_lhsIoptions) :: Options) ((_prodsIsem_prod) :: PP_Doc) ((_prodsIt_visits) :: PP_Doc) _sem_nt _t_init _t_states _wr_inh _wr_syn _wrapper nt_ ->+                                {-# LINE 98 "src-ag/ExecutionPlan2Hs.ag" #-}+                                ("-- " ++ getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-')+                                >-< (if dataTypes _lhsIoptions+                                     then "-- data"+                                          >-< _datatype+                                          >-< ""+                                     else empty)+                                >-< (if _hasWrapper+                                     then "-- wrapper"+                                          >-< _wr_inh+                                          >-< _wr_syn+                                          >-< _wrapper+                                          >-< ""+                                     else empty)+                                >-< (if   folds _lhsIoptions+                                     then "-- cata"+                                          >-< _sem_nt+                                          >-< ""+                                     else empty)+                                >-< (if   semfuns _lhsIoptions+                                     then "-- semantic domain"+                                          >-< _t_init+                                          >-< _t_states+                                          >-< _k_states+                                          >-< _prodsIt_visits+                                          >-< _prodsIsem_prod+                                          >-< ""+                                     else empty)+                                {-# LINE 1097 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule77 #-}+   {-# LINE 125 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule77 = \ ((_lhsIwrappers) :: Set NontermIdent) nt_ ->+                                    {-# LINE 125 "src-ag/ExecutionPlan2Hs.ag" #-}+                                    nt_ `Set.member` _lhsIwrappers+                                    {-# LINE 1103 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule78 #-}+   {-# LINE 138 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule78 = \ classCtxs_ ->+                                  {-# LINE 138 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  ppClasses $ classCtxsToDocs classCtxs_+                                  {-# LINE 1109 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule79 #-}+   {-# LINE 139 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule79 = \ _classPP _t_params nt_ ->+                                  {-# LINE 139 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  "type" >#< _classPP     >#< nt_ >#< _t_params     >#< "="+                                  {-# LINE 1115 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule80 #-}+   {-# LINE 140 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule80 = \ _aliasPre _classPP _derivings ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdatatype) :: [PP_Doc]) _t_params nt_ ->+                                  {-# LINE 140 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  case lookup nt_ _lhsItypeSyns of+                                     Nothing -> "data" >#< _classPP     >#< nt_ >#< _t_params+                                                >-< ( if null _prodsIdatatype+                                                      then empty+                                                      else indent 2 $ vlist $ ( ("=" >#< head _prodsIdatatype)+                                                                              : (map ("|" >#<) $ tail _prodsIdatatype))+                                                    )+                                                >-< indent 2 _derivings+                                     Just (List t)     -> _aliasPre     >#< "[" >#< show t >#< "]"+                                     Just (Maybe t)    -> _aliasPre     >#< "Maybe" >#< pp_parens (show t)+                                     Just (Tuple ts)   -> _aliasPre     >#< pp_parens (ppCommas $ map (show . snd) ts)+                                     Just (Either l r) -> _aliasPre     >#< "Either" >#< pp_parens (show l) >#< pp_parens (show r)+                                     Just (Map k v)    -> _aliasPre     >#< "Data.Map" >#< pp_parens (show k) >#< pp_parens (show v)+                                     Just (IntMap t)   -> _aliasPre     >#< "Data.IntMap.IntMap" >#< pp_parens (show t)+                                     Just (OrdSet t)   -> _aliasPre     >#< "Data.Set.Set" >#< pp_parens (show t)+                                     Just IntSet       -> _aliasPre     >#< "Data.IntSet.IntSet"+                                  {-# LINE 1136 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule81 #-}+   {-# LINE 157 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule81 = \ ((_lhsIderivings) :: Derivings) nt_ ->+                                   {-# LINE 157 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   case Map.lookup nt_ _lhsIderivings of+                                      Nothing -> empty+                                      Just s  -> if   Set.null s+                                                 then empty+                                                 else "deriving" >#< (pp_parens $ ppCommas $ map pp $ Set.toList s)+                                   {-# LINE 1146 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule82 #-}+   {-# LINE 227 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule82 = \  (_ :: ()) ->+                                  {-# LINE 227 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  \x -> "sem_" ++ show x+                                  {-# LINE 1152 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule83 #-}+   {-# LINE 228 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule83 = \ _fsemname nt_ ->+                                 {-# LINE 228 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _fsemname     nt_+                                 {-# LINE 1158 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule84 #-}+   {-# LINE 229 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule84 = \ _fsemname ->+                                 {-# LINE 229 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 \t x -> case t of+                                            NT nt _ _ -> pp_parens (_fsemname nt >#< x)+                                            _         -> pp x+                                 {-# LINE 1166 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule85 #-}+   {-# LINE 235 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule85 = \ _classPP _quantPP _t_params _t_type nt_ ->+                                 {-# LINE 235 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _quantPP     >#< _classPP     >#< nt_ >#< _t_params     >#< "->" >#< _t_type     >#< _t_params+                                 {-# LINE 1172 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule86 #-}+   {-# LINE 236 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule86 = \ params_ ->+                                 {-# LINE 236 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 ppQuants params_+                                 {-# LINE 1178 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule87 #-}+   {-# LINE 237 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule87 = \ _frecarg _fsemname ((_lhsItypeSyns) :: TypeSyns) ((_prodsIsem_nt) :: PP_Doc) _semPragma _sem_tp _semname nt_ ->+                                 {-# LINE 237 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _semPragma+                                 >-< _semname     >#< "::" >#< _sem_tp+                                 >-< case lookup nt_ _lhsItypeSyns of+                                        Nothing -> _prodsIsem_nt+                                        Just (List t) -> _semname     >#< "list" >#< "=" >#< "Prelude.foldr" >#< _semname     >|< "_Cons"+                                                         >#< _semname     >|< "_Nil"+                                                         >#< case t of+                                                                NT nt _ _ -> pp_parens ("Prelude.map" >#< _fsemname nt >#< "list")+                                                                _         -> pp "list"+                                        Just (Maybe t) -> _semname     >#< "Prelude.Nothing" >#< "=" >#< _semname     >|< "_Nothing"+                                                          >-< _semname     >#< pp_parens ("Prelude.Just just") >#< "="+                                                          >#< _semname     >|< "_Just" >#< _frecarg t "just"+                                        Just (Tuple ts) -> _semname     >#< pp_parens (ppCommas $ map fst ts) >#< "="+                                                           >#< _semname     >|< "_Tuple" >#< ppSpaced (map (\t -> _frecarg (snd t) (show $ fst t)) ts)+                                        Just (Either l r) -> _semname     >#< "(Prelude.Left left)" >#< "=" >#< _semname     >|< "_Left" >#< _frecarg l "left"+                                                             >-< _semname     >#< "(Prelude.Right right)" >#< "=" >#< _semname     >|< "_Right" >#< _frecarg r "right"+                                        Just (Map k v) -> _semname     >#< "m" >#< "=" >#< "Data.Map.foldrWithKey"+                                                          >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil"+                                                          >#< case v of+                                                                 NT nt _ _ -> pp_parens ("Data.Map.map" >#< _fsemname nt >#< "m")+                                                                 _         -> pp "m"+                                        Just (IntMap v) -> _semname     >#< "m" >#< "=" >#< "Data.IntMap.foldWithKey"+                                                           >#< _semname     >|< "_Entry" >#< _semname     >|< "_Nil"+                                                           >#< case v of+                                                                  NT nt _ _ -> pp_parens ("Data.IntMap.map" >#< _fsemname nt >#< "m")+                                                                  _         -> pp "m"+                                        Just (OrdSet t) -> _semname     >#< "s" >#< "=" >#< "Prelude.foldr" >#< _semname     >|< "_Entry"+                                                           >#< _semname     >|< "_Nil"+                                                           >#< pp_parens (+                                                                 ( case t of+                                                                     NT nt _ _ -> pp_parens ("Prelude.map" >#< _fsemname nt)+                                                                     _         -> empty+                                                                 ) >#< pp_parens ("Data.IntSet.elems" >#< "s")+                                                               )+                                        Just IntSet     -> _semname     >#< "s" >#< "=" >#< "Prelude.foldr" >#< _semname     >|< "_Entry"+                                                           >#< _semname     >|< "_Nil"+                                                           >#< pp_parens ("Data.IntSet.elems" >#< "s")+                                 {-# LINE 1220 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule88 #-}+   {-# LINE 277 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule88 = \ _hasWrapper ((_lhsIoptions) :: Options) ((_prodsIcount) :: Int) recursive_ ->+                                  {-# LINE 277 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  not (lateHigherOrderBinding _lhsIoptions) && not recursive_ && (_prodsIcount == 1 || (aggressiveInlinePragmas _lhsIoptions && not _hasWrapper    ))+                                  {-# LINE 1226 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule89 #-}+   {-# LINE 278 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule89 = \ _inlineNt ((_lhsIoptions) :: Options) _semname ->+                                  {-# LINE 278 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  if noInlinePragmas _lhsIoptions+                                  then empty+                                  else if _inlineNt+                                       then ppInline _semname+                                       else if helpInlining _lhsIoptions && not (lateHigherOrderBinding _lhsIoptions)+                                            then ppInlinable _semname+                                            else ppNoInline _semname+                                  {-# LINE 1238 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule90 #-}+   {-# LINE 324 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule90 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->+                                         {-# LINE 324 "src-ag/ExecutionPlan2Hs.ag" #-}+                                         Map.lookup nt_ _lhsIinhmap+                                         {-# LINE 1244 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule91 #-}+   {-# LINE 325 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule91 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->+                                         {-# LINE 325 "src-ag/ExecutionPlan2Hs.ag" #-}+                                         Map.lookup nt_ _lhsIsynmap+                                         {-# LINE 1250 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule92 #-}+   {-# LINE 326 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule92 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+                                     {-# LINE 326 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     _lhsIinhmap+                                     {-# LINE 1256 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule93 #-}+   {-# LINE 327 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule93 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+                                     {-# LINE 327 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     _lhsIsynmap+                                     {-# LINE 1262 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule94 #-}+   {-# LINE 348 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule94 = \ ((_prodsIallvisits) :: [VisitStateState]) ->+                                   {-# LINE 348 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   Set.fromList $ map (\(_,f,_) -> f) _prodsIallvisits+                                   {-# LINE 1268 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule95 #-}+   {-# LINE 349 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule95 = \ ((_prodsIallvisits) :: [VisitStateState]) ->+                                   {-# LINE 349 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   Set.fromList $ map (\(_,_,t) -> t) _prodsIallvisits+                                   {-# LINE 1274 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule96 #-}+   {-# LINE 350 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule96 = \ _inedges _outedges initial_ ->+                                   {-# LINE 350 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   Set.insert initial_ $ _inedges     `Set.union` _outedges+                                   {-# LINE 1280 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule97 #-}+   {-# LINE 351 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule97 = \ ((_prodsIallvisits) :: [VisitStateState]) ->+                                   {-# LINE 351 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   \st -> filter (\(v,f,t) -> f == st) _prodsIallvisits+                                   {-# LINE 1286 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule98 #-}+   {-# LINE 352 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule98 = \ nt_ ->+                                   {-# LINE 352 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   "T_" >|< nt_+                                   {-# LINE 1292 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule99 #-}+   {-# LINE 353 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule99 = \ params_ ->+                                   {-# LINE 353 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   ppSpaced params_+                                   {-# LINE 1298 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule100 #-}+   {-# LINE 354 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule100 = \ ((_lhsIoptions) :: Options) _t_params _t_type initial_ ->+                                   {-# LINE 354 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   "newtype" >#< _t_type     >#< _t_params     >#< "=" >#< _t_type     >#<+                                     pp_braces (+                                       "attach_">|< _t_type     >#< "::"+                                         >#< ppMonadType _lhsIoptions >#< pp_parens (_t_type     >|< "_s" >|< initial_ >#< _t_params    ))+                                   {-# LINE 1307 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule101 #-}+   {-# LINE 358 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule101 = \ _allstates _t_params nextVisits_ nt_ ->+                                   {-# LINE 358 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   vlist $ map (\st ->+                                      let nt_st = nt_ >|< "_s" >|< st+                                          t_st  = "T_" >|< nt_st+                                          k_st  = "K_" >|< nt_st+                                          c_st  = "C_" >|< nt_st+                                          inv_st  = "inv_" >|< nt_st+                                          nextVisit = Map.findWithDefault ManyVis st nextVisits_+                                      in  case nextVisit of+                                            NoneVis    -> "data" >#< t_st >#< _t_params     >#< "=" >#< c_st+                                            OneVis vId -> "newtype" >#< t_st >#< _t_params     >#< "=" >#< c_st+                                                           >#< (pp_braces $ inv_st >#< "::" >#< pp_parens (conNmTVisit nt_ vId >#< _t_params    ))+                                            ManyVis    -> "data" >#< t_st >#< _t_params     >#< "where" >#< c_st >#< "::"+                                                            >#< (pp_braces $ inv_st >#< "::" >#< "!" >|< pp_parens ("forall t." >#< k_st >#< _t_params     >#< "t" >#< "->" >#< "t"))+                                                            >#< "->" >#< t_st >#< _t_params+                                          ) $ Set.toList _allstates+                                   {-# LINE 1327 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule102 #-}+   {-# LINE 376 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule102 = \ nt_ ->+                                  {-# LINE 376 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  "K_" ++ show nt_+                                  {-# LINE 1333 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule103 #-}+   {-# LINE 377 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule103 = \ _allstates _k_type ((_prodsIallvisits) :: [VisitStateState]) _t_params _t_type nextVisits_ nt_ ->+                                  {-# LINE 377 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  vlist $ map (\st ->+                                     let nt_st = nt_ >|< "_s" >|< st+                                         k_st  = "K_" >|< nt_st+                                         outg  = filter (\(v,f,t) -> f == st) _prodsIallvisits+                                         visitlist = vlist $ map (\(v,f,t) ->+                                             _k_type     >|< "_v" >|< v >#< "::" >#< k_st >#< _t_params     >#< pp_parens (_t_type     >|< "_v" >|< v >#< _t_params    )+                                              ) outg+                                         nextVisit = Map.findWithDefault ManyVis st nextVisits_+                                         decl = "data" >#< k_st >#< "k" >#< _t_params     >#< "where" >-< indent 3 visitlist+                                     in  case nextVisit of+                                           NoneVis  -> empty+                                           OneVis _ -> empty+                                           ManyVis  -> decl+                                     ) $ Set.toList _allstates+                                  {-# LINE 1352 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule104 #-}+   {-# LINE 444 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule104 = \ _genwrap _wr_inhs ->+                                  {-# LINE 444 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  _genwrap     "Inh" _wr_inhs+                                  {-# LINE 1358 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule105 #-}+   {-# LINE 445 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule105 = \ _genwrap _wr_syns ->+                                  {-# LINE 445 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  _genwrap     "Syn" _wr_syns+                                  {-# LINE 1364 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule106 #-}+   {-# LINE 446 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule106 = \ _addbang _t_params nt_ ->+                                  {-# LINE 446 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  \nm attr -> "data" >#< nm >|< "_" >|< nt_ >#< _t_params     >#< "=" >#< nm >|< "_" >|< nt_ >#< "{"+                                              >#< (ppCommas $ map (\(i,t) -> i >|< "_" >|< nm >|< "_" >|< nt_ >#< "::"+                                              >#< (_addbang     $ pp_parens $ typeToHaskellString (Just nt_) [] t)) attr) >#< "}"+                                  {-# LINE 1372 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule107 #-}+   {-# LINE 449 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule107 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) nt_ ->+                                  {-# LINE 449 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  fromJust $ Map.lookup nt_ _lhsIinhmap+                                  {-# LINE 1378 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule108 #-}+   {-# LINE 450 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule108 = \ _synAttrs _wr_filter ->+                                  {-# LINE 450 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  Map.toList $ _wr_filter     $ _synAttrs+                                  {-# LINE 1384 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule109 #-}+   {-# LINE 451 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule109 = \ _synAttrs ->+                                  {-# LINE 451 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  Map.toList _synAttrs+                                  {-# LINE 1390 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule110 #-}+   {-# LINE 452 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule110 = \ ((_lhsIoptions) :: Options) ->+                                   {-# LINE 452 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   if lateHigherOrderBinding _lhsIoptions+                                   then Map.delete idLateBindingAttr+                                   else id+                                   {-# LINE 1398 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule111 #-}+   {-# LINE 455 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule111 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) nt_ ->+                                  {-# LINE 455 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  Map.toList $ fromJust $ Map.lookup nt_ _lhsIsynmap+                                  {-# LINE 1404 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule112 #-}+   {-# LINE 456 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule112 = \ ((_lhsIoptions) :: Options) _wr_inhs ->+                                  {-# LINE 456 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  map (lhsname _lhsIoptions True . fst) _wr_inhs+                                  {-# LINE 1410 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule113 #-}+   {-# LINE 457 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule113 = \ ((_lhsIoptions) :: Options) _wr_inhs1 ->+                                  {-# LINE 457 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  map (lhsname _lhsIoptions True . fst) _wr_inhs1+                                  {-# LINE 1416 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule114 #-}+   {-# LINE 458 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule114 = \ ((_lhsIoptions) :: Options) _wr_syns ->+                                  {-# LINE 458 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  map (lhsname _lhsIoptions False . fst) _wr_syns+                                  {-# LINE 1422 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule115 #-}+   {-# LINE 459 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule115 = \ nt_ ->+                                  {-# LINE 459 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  "wrap_" ++ show nt_+                                  {-# LINE 1428 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule116 #-}+   {-# LINE 460 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule116 = \ nt_ ->+                                  {-# LINE 460 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  "Inh_" ++ show nt_+                                  {-# LINE 1434 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule117 #-}+   {-# LINE 461 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule117 = \ nt_ ->+                                  {-# LINE 461 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  "Syn_" ++ show nt_+                                  {-# LINE 1440 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule118 #-}+   {-# LINE 462 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule118 = \ initial_ nextVisits_ ->+                                        {-# LINE 462 "src-ag/ExecutionPlan2Hs.ag" #-}+                                        Map.findWithDefault ManyVis initial_ nextVisits_+                                        {-# LINE 1446 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule119 #-}+   {-# LINE 463 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule119 = \ _addbang _addbangWrap _classPP _inhlist _inhname _k_type ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ((_lhsImainName) :: String) ((_lhsIoptions) :: Options) ((_prodsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_prodsIvisituses) :: Map VisitIdentifier (Set Identifier)) _quantPP _synlist _synname _t_params _t_type _wrapPragma _wrapname initial_ initialv_ nextVisits_ nt_ ->+                                  {-# LINE 463 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  _wrapPragma+                                  >-< (_wrapname     >#< "::" >#< _quantPP     >#< _classPP     >#< _t_type     >#< _t_params     >#< "->"+                                        >#< _inhname     >#< _t_params     >#< "->" >#< ( if monadicWrappers _lhsIoptions then ppMonadType _lhsIoptions else empty) >#< pp_parens (_synname     >#< _t_params    ))+                                  >-< (_wrapname     >#< (_addbang     $ pp_parens (_t_type     >#< pp "act"))+                                      >#< (_addbang     $ pp_parens (_inhname+                                             >#< (ppSpaced $ map (_addbangWrap     . pp) _inhlist    )) >#< "="))+                                  >-<+                                  indent 3 (case initialv_ of+                                    [] -> _synname     >#< " { }"+                                    initvs@(initv:_) ->+                                      let extra  = if dummyTokenVisit _lhsIoptions+                                                   then pp $ dummyArg _lhsIoptions True+                                                   else empty+                                          unMonad | monadicWrappers _lhsIoptions = empty+                                                  | otherwise                    = unMon _lhsIoptions+                                          genSteps _      []           = []+                                          genSteps curst (curv:nextvs) = setarg : dovis : genSteps nextst nextvs where+                                            inCon = conNmTVisitIn nt_ curv+                                            outCon = conNmTVisitOut nt_ curv+                                            pat    = _addbang     $ pp_parens $ pat0+                                            pat0   = outCon >#< ppSpaced (map (lhsname _lhsIoptions False) syns) >#< cont+                                            cont   | null nextvs = empty+                                                   | otherwise   = pp "sem"+                                            inhs = Set.toList $ Map.findWithDefault Set.empty curv _prodsIvisituses+                                            syns = Set.toList $ Map.findWithDefault Set.empty curv _prodsIvisitdefs+                                            arg = inCon >#< ppSpaced (map (lhsname _lhsIoptions True) inhs)+                                            setarg = "let" >#< _addbangWrap     (pp "arg" >|< curv) >#< "=" >#< arg+                                            ind    = case Map.findWithDefault ManyVis curst nextVisits_ of+                                                     NoneVis  -> error "wrapper: initial state should have a next visit but it has none"+                                                     OneVis _ -> empty+                                                     ManyVis  -> _k_type     >|< "_v" >|< initv+                                            nextst = curst + 1+                                            convert = case Map.lookup curv _lhsIallVisitKinds of+                                                        Just kind -> case kind of+                                                           VisitPure _  -> text "return"+                                                           VisitMonadic -> empty+                                            dovis  = pat >#< "<-" >#< convert >#< pp_parens+                                              ("inv_" >|< nt_ >|< "_s" >|< curst >#< "sem" >#< ind+                                              >#< "arg" >|< curv >#< extra)+                                      in unMonad >#< "("+                                         >-< indent 2 (+                                                "do" >#< ( _addbang     (pp "sem") >#< "<-" >#< "act"+                                                         >-< vlist (genSteps initial_ initvs)+                                                         >-< "return" >#< pp_parens (_synname     >#< ppSpaced _synlist    )+                                                         )+                                              )+                                         >-< ")" )+                                  >-< if lateHigherOrderBinding _lhsIoptions+                                      then indent 2 ("where" >#< lhsname _lhsIoptions True idLateBindingAttr >#< "=" >#< lateBindingFieldNm _lhsImainName)+                                      else empty+                                  {-# LINE 1501 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule120 #-}+   {-# LINE 515 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule120 = \ ((_lhsIoptions) :: Options) _wrapname ->+                                    {-# LINE 515 "src-ag/ExecutionPlan2Hs.ag" #-}+                                    if parallelInvoke _lhsIoptions && not (monadicWrappers _lhsIoptions)+                                    then ppNoInline _wrapname+                                    else if noInlinePragmas _lhsIoptions+                                         then empty+                                         else ppInlinable _wrapname+                                    {-# LINE 1511 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule121 #-}+   {-# LINE 527 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule121 = \ ((_prodsIsemFunBndDefs) :: Seq PP_Doc) _semFunBndDef ->+                        {-# LINE 527 "src-ag/ExecutionPlan2Hs.ag" #-}+                        _semFunBndDef     Seq.<| _prodsIsemFunBndDefs+                        {-# LINE 1517 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule122 #-}+   {-# LINE 528 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule122 = \ ((_prodsIsemFunBndTps) :: Seq PP_Doc) _semFunBndTp ->+                        {-# LINE 528 "src-ag/ExecutionPlan2Hs.ag" #-}+                        _semFunBndTp     Seq.<| _prodsIsemFunBndTps+                        {-# LINE 1523 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule123 #-}+   {-# LINE 529 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule123 = \ _semFunBndNm _semname ->+                        {-# LINE 529 "src-ag/ExecutionPlan2Hs.ag" #-}+                        _semFunBndNm     >#< "=" >#< _semname+                        {-# LINE 1529 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule124 #-}+   {-# LINE 530 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule124 = \ _semFunBndNm _sem_tp ->+                        {-# LINE 530 "src-ag/ExecutionPlan2Hs.ag" #-}+                        _semFunBndNm     >#< "::" >#< _sem_tp+                        {-# LINE 1535 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule125 #-}+   {-# LINE 531 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule125 = \ nt_ ->+                        {-# LINE 531 "src-ag/ExecutionPlan2Hs.ag" #-}+                        lateSemNtLabel nt_+                        {-# LINE 1541 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule126 #-}+   {-# LINE 569 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule126 = \ initial_ ->+                                     {-# LINE 569 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     initial_+                                     {-# LINE 1547 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule127 #-}+   {-# LINE 570 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule127 = \ _allstates ->+                                     {-# LINE 570 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     _allstates+                                     {-# LINE 1553 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule128 #-}+   {-# LINE 1485 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule128 = \ ((_lhsIwrappers) :: Set NontermIdent) _sem_nt _wr_inh _wr_syn _wrapper nt_ ->+                                      {-# LINE 1485 "src-ag/ExecutionPlan2Hs.ag" #-}+                                      (if nt_ `Set.member` _lhsIwrappers+                                       then     _wr_inh+                                            >-< _wr_syn+                                            >-< _wrapper+                                       else empty)+                                      >-< _sem_nt+                                      {-# LINE 1564 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule129 #-}+   {-# LINE 1491 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule129 = \ _datatype _k_states ((_lhsIoptions) :: Options) ((_prodsIt_visits) :: PP_Doc) _t_init _t_states ->+                                      {-# LINE 1491 "src-ag/ExecutionPlan2Hs.ag" #-}+                                      (if dataTypes _lhsIoptions then _datatype     else empty)+                                      >-< _t_init+                                      >-< _t_states+                                      >-< _k_states+                                      >-< _prodsIt_visits+                                      {-# LINE 1574 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule130 #-}+   {-# LINE 1551 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule130 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1551 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 1580 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule131 #-}+   {-# LINE 1559 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule131 = \  (_ :: ()) ->+                                                        {-# LINE 1559 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                        id+                                                        {-# LINE 1586 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule132 #-}+   {-# LINE 1571 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule132 = \ nextVisits_ ->+                       {-# LINE 1571 "src-ag/ExecutionPlan2Hs.ag" #-}+                       nextVisits_+                       {-# LINE 1592 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule133 #-}+   {-# LINE 1572 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule133 = \ prevVisits_ ->+                       {-# LINE 1572 "src-ag/ExecutionPlan2Hs.ag" #-}+                       prevVisits_+                       {-# LINE 1598 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule134 #-}+   {-# LINE 1616 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule134 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) nt_ ->+                           {-# LINE 1616 "src-ag/ExecutionPlan2Hs.ag" #-}+                           Map.findWithDefault Map.empty nt_ _lhsIlocalAttrTypes+                           {-# LINE 1604 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule135 #-}+   {-# LINE 1643 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule135 = \ initial_ nt_ ->+                     {-# LINE 1643 "src-ag/ExecutionPlan2Hs.ag" #-}+                     Map.singleton nt_ initial_+                     {-# LINE 1610 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule136 #-}+   {-# LINE 1657 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule136 = \ nt_ params_ ->+                 {-# LINE 1657 "src-ag/ExecutionPlan2Hs.ag" #-}+                 NT nt_ (map show params_) False+                 {-# LINE 1616 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule137 #-}+   rule137 = \ ((_prodsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _prodsIchildvisit+   {-# INLINE rule138 #-}+   rule138 = \ ((_prodsIerrors) :: Seq Error) ->+     _prodsIerrors+   {-# INLINE rule139 #-}+   rule139 = \ ((_prodsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _prodsIfromToStates+   {-# INLINE rule140 #-}+   rule140 = \ ((_prodsIgenProdIO) :: IO ()) ->+     _prodsIgenProdIO+   {-# INLINE rule141 #-}+   rule141 = \ ((_prodsIimports) :: [PP_Doc]) ->+     _prodsIimports+   {-# INLINE rule142 #-}+   rule142 = \ ((_prodsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _prodsIvisitKinds+   {-# INLINE rule143 #-}+   rule143 = \ ((_prodsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _prodsIvisitdefs+   {-# INLINE rule144 #-}+   rule144 = \ ((_prodsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _prodsIvisituses+   {-# INLINE rule145 #-}+   rule145 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule146 #-}+   rule146 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule147 #-}+   rule147 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule148 #-}+   rule148 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule149 #-}+   rule149 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule150 #-}+   rule150 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule151 #-}+   rule151 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule152 #-}+   rule152 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule153 #-}+   rule153 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule154 #-}+   rule154 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule155 #-}+   rule155 = \ _ntType ->+     _ntType+   {-# INLINE rule156 #-}+   rule156 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule157 #-}+   rule157 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule158 #-}+   rule158 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks++-- ENonterminals -----------------------------------------------+-- wrapper+data Inh_ENonterminals  = Inh_ENonterminals { allFromToStates_Inh_ENonterminals :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_ENonterminals :: (Map NontermIdent Int), allVisitKinds_Inh_ENonterminals :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_ENonterminals :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_ENonterminals :: (Map VisitIdentifier (Set Identifier)), derivings_Inh_ENonterminals :: (Derivings), importBlocks_Inh_ENonterminals :: (PP_Doc), inhmap_Inh_ENonterminals :: (Map NontermIdent Attributes), localAttrTypes_Inh_ENonterminals :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainFile_Inh_ENonterminals :: (String), mainName_Inh_ENonterminals :: (String), moduleHeader_Inh_ENonterminals :: (String -> String -> String -> Bool -> String), options_Inh_ENonterminals :: (Options), pragmaBlocks_Inh_ENonterminals :: (String), synmap_Inh_ENonterminals :: (Map NontermIdent Attributes), textBlocks_Inh_ENonterminals :: (PP_Doc), typeSyns_Inh_ENonterminals :: (TypeSyns), wrappers_Inh_ENonterminals :: (Set NontermIdent) }+data Syn_ENonterminals  = Syn_ENonterminals { appendCommon_Syn_ENonterminals :: ([PP_Doc]), appendMain_Syn_ENonterminals :: ([PP_Doc]), childvisit_Syn_ENonterminals :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_ENonterminals :: (Seq Error), fromToStates_Syn_ENonterminals :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_ENonterminals :: (IO ()), imports_Syn_ENonterminals :: ([PP_Doc]), initStates_Syn_ENonterminals :: (Map NontermIdent Int), output_Syn_ENonterminals :: (PP_Doc), semFunBndDefs_Syn_ENonterminals :: (Seq PP_Doc), semFunBndTps_Syn_ENonterminals :: (Seq PP_Doc), visitKinds_Syn_ENonterminals :: (Map VisitIdentifier VisitKind), visitdefs_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_ENonterminals :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_ENonterminals #-}+wrap_ENonterminals :: T_ENonterminals  -> Inh_ENonterminals  -> (Syn_ENonterminals )+wrap_ENonterminals (T_ENonterminals act) (Inh_ENonterminals _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg10 = T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers+        (T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_ENonterminals_s11 sem arg10)+        return (Syn_ENonterminals _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# NOINLINE sem_ENonterminals #-}+sem_ENonterminals :: ENonterminals  -> T_ENonterminals +sem_ENonterminals list = Prelude.foldr sem_ENonterminals_Cons sem_ENonterminals_Nil (Prelude.map sem_ENonterminal list)++-- semantic domain+newtype T_ENonterminals  = T_ENonterminals {+                                           attach_T_ENonterminals :: Identity (T_ENonterminals_s11 )+                                           }+newtype T_ENonterminals_s11  = C_ENonterminals_s11 {+                                                   inv_ENonterminals_s11 :: (T_ENonterminals_v10 )+                                                   }+data T_ENonterminals_s12  = C_ENonterminals_s12+type T_ENonterminals_v10  = (T_ENonterminals_vIn10 ) -> (T_ENonterminals_vOut10 )+data T_ENonterminals_vIn10  = T_ENonterminals_vIn10 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Derivings) (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (String) (String) (String -> String -> String -> Bool -> String) (Options) (String) (Map NontermIdent Attributes) (PP_Doc) (TypeSyns) (Set NontermIdent)+data T_ENonterminals_vOut10  = T_ENonterminals_vOut10 ([PP_Doc]) ([PP_Doc]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Map NontermIdent Int) (PP_Doc) (Seq PP_Doc) (Seq PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_ENonterminals_Cons #-}+sem_ENonterminals_Cons :: T_ENonterminal  -> T_ENonterminals  -> T_ENonterminals +sem_ENonterminals_Cons arg_hd_ arg_tl_ = T_ENonterminals (return st11) where+   {-# NOINLINE st11 #-}+   st11 = let+      v10 :: T_ENonterminals_v10 +      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let+         _hdX8 = Control.Monad.Identity.runIdentity (attach_T_ENonterminal (arg_hd_))+         _tlX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_tl_))+         (T_ENonterminal_vOut7 _hdIappendCommon _hdIappendMain _hdIchildvisit _hdIerrors _hdIfromToStates _hdIgenProdIO _hdIimports _hdIinitStates _hdIoutput _hdIsemFunBndDefs _hdIsemFunBndTps _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_ENonterminal_s8 _hdX8 (T_ENonterminal_vIn7 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOderivings _hdOimportBlocks _hdOinhmap _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOoptions _hdOpragmaBlocks _hdOsynmap _hdOtextBlocks _hdOtypeSyns _hdOwrappers)+         (T_ENonterminals_vOut10 _tlIappendCommon _tlIappendMain _tlIchildvisit _tlIerrors _tlIfromToStates _tlIgenProdIO _tlIimports _tlIinitStates _tlIoutput _tlIsemFunBndDefs _tlIsemFunBndTps _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_ENonterminals_s11 _tlX11 (T_ENonterminals_vIn10 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOderivings _tlOimportBlocks _tlOinhmap _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOoptions _tlOpragmaBlocks _tlOsynmap _tlOtextBlocks _tlOtypeSyns _tlOwrappers)+         _lhsOappendCommon :: [PP_Doc]+         _lhsOappendCommon = rule159 _hdIappendCommon _tlIappendCommon+         _lhsOappendMain :: [PP_Doc]+         _lhsOappendMain = rule160 _hdIappendMain _tlIappendMain+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule161 _hdIchildvisit _tlIchildvisit+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule162 _hdIerrors _tlIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule163 _hdIfromToStates _tlIfromToStates+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule164 _hdIgenProdIO _tlIgenProdIO+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule165 _hdIimports _tlIimports+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule166 _hdIinitStates _tlIinitStates+         _lhsOoutput :: PP_Doc+         _lhsOoutput = rule167 _hdIoutput _tlIoutput+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule168 _hdIsemFunBndDefs _tlIsemFunBndDefs+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule169 _hdIsemFunBndTps _tlIsemFunBndTps+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule170 _hdIvisitKinds _tlIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule171 _hdIvisitdefs _tlIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule172 _hdIvisituses _tlIvisituses+         _hdOallFromToStates = rule173 _lhsIallFromToStates+         _hdOallInitStates = rule174 _lhsIallInitStates+         _hdOallVisitKinds = rule175 _lhsIallVisitKinds+         _hdOallchildvisit = rule176 _lhsIallchildvisit+         _hdOavisitdefs = rule177 _lhsIavisitdefs+         _hdOavisituses = rule178 _lhsIavisituses+         _hdOderivings = rule179 _lhsIderivings+         _hdOimportBlocks = rule180 _lhsIimportBlocks+         _hdOinhmap = rule181 _lhsIinhmap+         _hdOlocalAttrTypes = rule182 _lhsIlocalAttrTypes+         _hdOmainFile = rule183 _lhsImainFile+         _hdOmainName = rule184 _lhsImainName+         _hdOmoduleHeader = rule185 _lhsImoduleHeader+         _hdOoptions = rule186 _lhsIoptions+         _hdOpragmaBlocks = rule187 _lhsIpragmaBlocks+         _hdOsynmap = rule188 _lhsIsynmap+         _hdOtextBlocks = rule189 _lhsItextBlocks+         _hdOtypeSyns = rule190 _lhsItypeSyns+         _hdOwrappers = rule191 _lhsIwrappers+         _tlOallFromToStates = rule192 _lhsIallFromToStates+         _tlOallInitStates = rule193 _lhsIallInitStates+         _tlOallVisitKinds = rule194 _lhsIallVisitKinds+         _tlOallchildvisit = rule195 _lhsIallchildvisit+         _tlOavisitdefs = rule196 _lhsIavisitdefs+         _tlOavisituses = rule197 _lhsIavisituses+         _tlOderivings = rule198 _lhsIderivings+         _tlOimportBlocks = rule199 _lhsIimportBlocks+         _tlOinhmap = rule200 _lhsIinhmap+         _tlOlocalAttrTypes = rule201 _lhsIlocalAttrTypes+         _tlOmainFile = rule202 _lhsImainFile+         _tlOmainName = rule203 _lhsImainName+         _tlOmoduleHeader = rule204 _lhsImoduleHeader+         _tlOoptions = rule205 _lhsIoptions+         _tlOpragmaBlocks = rule206 _lhsIpragmaBlocks+         _tlOsynmap = rule207 _lhsIsynmap+         _tlOtextBlocks = rule208 _lhsItextBlocks+         _tlOtypeSyns = rule209 _lhsItypeSyns+         _tlOwrappers = rule210 _lhsIwrappers+         __result_ = T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminals_s11 v10+   {-# INLINE rule159 #-}+   rule159 = \ ((_hdIappendCommon) ::  PP_Doc ) ((_tlIappendCommon) :: [PP_Doc]) ->+     _hdIappendCommon : _tlIappendCommon+   {-# INLINE rule160 #-}+   rule160 = \ ((_hdIappendMain) ::  PP_Doc ) ((_tlIappendMain) :: [PP_Doc]) ->+     _hdIappendMain : _tlIappendMain+   {-# INLINE rule161 #-}+   rule161 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _hdIchildvisit `Map.union` _tlIchildvisit+   {-# INLINE rule162 #-}+   rule162 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule163 #-}+   rule163 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _hdIfromToStates `mappend` _tlIfromToStates+   {-# INLINE rule164 #-}+   rule164 = \ ((_hdIgenProdIO) :: IO ()) ((_tlIgenProdIO) :: IO ()) ->+     _hdIgenProdIO >> _tlIgenProdIO+   {-# INLINE rule165 #-}+   rule165 = \ ((_hdIimports) :: [PP_Doc]) ((_tlIimports) :: [PP_Doc]) ->+     _hdIimports ++ _tlIimports+   {-# INLINE rule166 #-}+   rule166 = \ ((_hdIinitStates) :: Map NontermIdent Int) ((_tlIinitStates) :: Map NontermIdent Int) ->+     _hdIinitStates `mappend` _tlIinitStates+   {-# INLINE rule167 #-}+   rule167 = \ ((_hdIoutput) :: PP_Doc) ((_tlIoutput) :: PP_Doc) ->+     _hdIoutput >-< _tlIoutput+   {-# INLINE rule168 #-}+   rule168 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->+     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs+   {-# INLINE rule169 #-}+   rule169 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->+     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps+   {-# INLINE rule170 #-}+   rule170 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule171 #-}+   rule171 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs+   {-# INLINE rule172 #-}+   rule172 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisituses `uwSetUnion` _tlIvisituses+   {-# INLINE rule173 #-}+   rule173 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule174 #-}+   rule174 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule175 #-}+   rule175 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule176 #-}+   rule176 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule177 #-}+   rule177 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule178 #-}+   rule178 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule179 #-}+   rule179 = \ ((_lhsIderivings) :: Derivings) ->+     _lhsIderivings+   {-# INLINE rule180 #-}+   rule180 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule181 #-}+   rule181 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule182 #-}+   rule182 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule183 #-}+   rule183 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule184 #-}+   rule184 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule185 #-}+   rule185 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule186 #-}+   rule186 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule187 #-}+   rule187 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule188 #-}+   rule188 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap+   {-# INLINE rule189 #-}+   rule189 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule190 #-}+   rule190 = \ ((_lhsItypeSyns) :: TypeSyns) ->+     _lhsItypeSyns+   {-# INLINE rule191 #-}+   rule191 = \ ((_lhsIwrappers) :: Set NontermIdent) ->+     _lhsIwrappers+   {-# INLINE rule192 #-}+   rule192 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule193 #-}+   rule193 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule194 #-}+   rule194 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule195 #-}+   rule195 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule196 #-}+   rule196 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule197 #-}+   rule197 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule198 #-}+   rule198 = \ ((_lhsIderivings) :: Derivings) ->+     _lhsIderivings+   {-# INLINE rule199 #-}+   rule199 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule200 #-}+   rule200 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule201 #-}+   rule201 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule202 #-}+   rule202 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule203 #-}+   rule203 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule204 #-}+   rule204 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule205 #-}+   rule205 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule206 #-}+   rule206 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule207 #-}+   rule207 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap+   {-# INLINE rule208 #-}+   rule208 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule209 #-}+   rule209 = \ ((_lhsItypeSyns) :: TypeSyns) ->+     _lhsItypeSyns+   {-# INLINE rule210 #-}+   rule210 = \ ((_lhsIwrappers) :: Set NontermIdent) ->+     _lhsIwrappers+{-# NOINLINE sem_ENonterminals_Nil #-}+sem_ENonterminals_Nil ::  T_ENonterminals +sem_ENonterminals_Nil  = T_ENonterminals (return st11) where+   {-# NOINLINE st11 #-}+   st11 = let+      v10 :: T_ENonterminals_v10 +      v10 = \ (T_ENonterminals_vIn10 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers) -> ( let+         _lhsOappendCommon :: [PP_Doc]+         _lhsOappendCommon = rule211  ()+         _lhsOappendMain :: [PP_Doc]+         _lhsOappendMain = rule212  ()+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule213  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule214  ()+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule215  ()+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule216  ()+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule217  ()+         _lhsOinitStates :: Map NontermIdent Int+         _lhsOinitStates = rule218  ()+         _lhsOoutput :: PP_Doc+         _lhsOoutput = rule219  ()+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule220  ()+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule221  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule222  ()+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule223  ()+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule224  ()+         __result_ = T_ENonterminals_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOinitStates _lhsOoutput _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_ENonterminals_s11 v10+   {-# INLINE rule211 #-}+   rule211 = \  (_ :: ()) ->+     []+   {-# INLINE rule212 #-}+   rule212 = \  (_ :: ()) ->+     []+   {-# INLINE rule213 #-}+   rule213 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule214 #-}+   rule214 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule215 #-}+   rule215 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule216 #-}+   rule216 = \  (_ :: ()) ->+     return ()+   {-# INLINE rule217 #-}+   rule217 = \  (_ :: ()) ->+     []+   {-# INLINE rule218 #-}+   rule218 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule219 #-}+   rule219 = \  (_ :: ()) ->+     empty+   {-# INLINE rule220 #-}+   rule220 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule221 #-}+   rule221 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule222 #-}+   rule222 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule223 #-}+   rule223 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule224 #-}+   rule224 = \  (_ :: ()) ->+     Map.empty++-- EProduction -------------------------------------------------+-- wrapper+data Inh_EProduction  = Inh_EProduction { allFromToStates_Inh_EProduction :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProduction :: (Map NontermIdent Attributes), allInitStates_Inh_EProduction :: (Map NontermIdent Int), allSynmap_Inh_EProduction :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProduction :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProduction :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allstates_Inh_EProduction :: (Set StateIdentifier), avisitdefs_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProduction :: (Map VisitIdentifier (Set Identifier)), classCtxs_Inh_EProduction :: (ClassContext), importBlocks_Inh_EProduction :: (PP_Doc), inhmap_Inh_EProduction :: (Attributes), initial_Inh_EProduction :: (StateIdentifier), localAttrTypes_Inh_EProduction :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProduction :: (String), mainName_Inh_EProduction :: (String), moduleHeader_Inh_EProduction :: (String -> String -> String -> Bool -> String), nextVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), nt_Inh_EProduction :: (NontermIdent), ntType_Inh_EProduction :: (Type), options_Inh_EProduction :: (Options), params_Inh_EProduction :: ([Identifier]), pragmaBlocks_Inh_EProduction :: (String), prevVisits_Inh_EProduction :: (Map StateIdentifier StateCtx), rename_Inh_EProduction :: (Bool), synmap_Inh_EProduction :: (Attributes), textBlocks_Inh_EProduction :: (PP_Doc) }+data Syn_EProduction  = Syn_EProduction { allvisits_Syn_EProduction :: ([VisitStateState]), childvisit_Syn_EProduction :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), count_Syn_EProduction :: (Int), datatype_Syn_EProduction :: (PP_Doc), errors_Syn_EProduction :: (Seq Error), fromToStates_Syn_EProduction :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_EProduction :: (IO ()), imports_Syn_EProduction :: ([PP_Doc]), semFunBndDefs_Syn_EProduction :: (Seq PP_Doc), semFunBndTps_Syn_EProduction :: (Seq PP_Doc), sem_nt_Syn_EProduction :: (PP_Doc), sem_prod_Syn_EProduction :: (PP_Doc), t_visits_Syn_EProduction :: (PP_Doc), visitKinds_Syn_EProduction :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProduction :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_EProduction #-}+wrap_EProduction :: T_EProduction  -> Inh_EProduction  -> (Syn_EProduction )+wrap_EProduction (T_EProduction act) (Inh_EProduction _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg13 = T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks+        (T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProduction_s14 sem arg13)+        return (Syn_EProduction _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_EProduction #-}+sem_EProduction :: EProduction  -> T_EProduction +sem_EProduction ( EProduction con_ params_ constraints_ rules_ children_ visits_ ) = sem_EProduction_EProduction con_ params_ constraints_ ( sem_ERules rules_ ) ( sem_EChildren children_ ) ( sem_Visits visits_ )++-- semantic domain+newtype T_EProduction  = T_EProduction {+                                       attach_T_EProduction :: Identity (T_EProduction_s14 )+                                       }+newtype T_EProduction_s14  = C_EProduction_s14 {+                                               inv_EProduction_s14 :: (T_EProduction_v13 )+                                               }+data T_EProduction_s15  = C_EProduction_s15+type T_EProduction_v13  = (T_EProduction_vIn13 ) -> (T_EProduction_vOut13 )+data T_EProduction_vIn13  = T_EProduction_vIn13 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Set StateIdentifier) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (ClassContext) (PP_Doc) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (String -> String -> String -> Bool -> String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (String) (Map StateIdentifier StateCtx) (Bool) (Attributes) (PP_Doc)+data T_EProduction_vOut13  = T_EProduction_vOut13 ([VisitStateState]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Int) (PP_Doc) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_EProduction_EProduction #-}+sem_EProduction_EProduction :: (ConstructorIdent) -> ([Identifier]) -> ([Type]) -> T_ERules  -> T_EChildren  -> T_Visits  -> T_EProduction +sem_EProduction_EProduction arg_con_ arg_params_ arg_constraints_ arg_rules_ arg_children_ arg_visits_ = T_EProduction (return st14) where+   {-# NOINLINE st14 #-}+   st14 = let+      v13 :: T_EProduction_v13 +      v13 = \ (T_EProduction_vIn13 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let+         _rulesX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_rules_))+         _childrenX5 = Control.Monad.Identity.runIdentity (attach_T_EChildren (arg_children_))+         _visitsX56 = Control.Monad.Identity.runIdentity (attach_T_Visits (arg_visits_))+         (T_ERules_vOut22 _rulesIerrors _rulesImrules _rulesIruledefs _rulesIruleuses _rulesIsem_rules _rulesIusedArgs) = inv_ERules_s23 _rulesX23 (T_ERules_vIn22 _rulesOallInhmap _rulesOallSynmap _rulesOchildTypes _rulesOcon _rulesOimportBlocks _rulesOinhmap _rulesOlazyIntras _rulesOlocalAttrTypes _rulesOmainFile _rulesOmainName _rulesOmoduleHeader _rulesOnt _rulesOoptions _rulesOpragmaBlocks _rulesOruleKinds _rulesOsynmap _rulesOtextBlocks _rulesOusageInfo)+         (T_EChildren_vOut4 _childrenIargnamesw _childrenIargpats _childrenIargtps _childrenIchildTypes _childrenIchildintros _childrenIdatatype _childrenIterminaldefs _childrenIusedArgs) = inv_EChildren_s5 _childrenX5 (T_EChildren_vIn4 _childrenOallInitStates _childrenOcon _childrenOimportBlocks _childrenOmainFile _childrenOmainName _childrenOmoduleHeader _childrenOnt _childrenOoptions _childrenOpragmaBlocks _childrenOtextBlocks)+         (T_Visits_vOut55 _visitsIallvisits _visitsIchildvisit _visitsIerrors _visitsIfromToStates _visitsIintramap _visitsIlazyIntras _visitsIruleKinds _visitsIruleUsage _visitsIsem_visit _visitsIt_visits _visitsIusedArgs _visitsIvisitKinds _visitsIvisitdefs _visitsIvisituses) = inv_Visits_s56 _visitsX56 (T_Visits_vIn55 _visitsOallFromToStates _visitsOallInhmap _visitsOallInitStates _visitsOallSynmap _visitsOallVisitKinds _visitsOallchildvisit _visitsOallintramap _visitsOavisitdefs _visitsOavisituses _visitsOchildTypes _visitsOchildintros _visitsOcon _visitsOinhmap _visitsOmrules _visitsOnextVisits _visitsOnt _visitsOoptions _visitsOparams _visitsOprevVisits _visitsOruledefs _visitsOruleuses _visitsOsynmap _visitsOterminaldefs)+         _childrenOcon = rule225 arg_con_+         _rulesOcon = rule226 arg_con_+         _visitsOcon = rule227 arg_con_+         _lhsOdatatype :: PP_Doc+         _lhsOdatatype = rule228 _childrenIdatatype _classPP1 _lhsInt _lhsIoptions _lhsIrename _quantPP1 arg_con_+         _classPP1 = rule229 arg_constraints_+         _quantPP1 = rule230 arg_params_+         _lhsOcount :: Int+         _lhsOcount = rule231  ()+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule232 _childrenIargnamesw _childrenIargpats _lhsInt _lhsIrename arg_con_+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule233 _semFunBndDef+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule234 _semFunBndTp+         _semFunBndDef = rule235 _semFunBndNm _semname+         _semFunBndTp = rule236 _semFunBndNm _sem_tp+         _semFunBndNm = rule237 _lhsInt arg_con_+         _t_type = rule238 _lhsInt+         _t_params = rule239 _lhsIparams+         _usedArgs = rule240 _childrenIusedArgs _rulesIusedArgs _visitsIusedArgs+         _args = rule241 _childrenIargpats _usedArgs+         _semname = rule242 _lhsInt arg_con_+         _sem_tp = rule243 _childrenIargtps _classPP2 _quantPP2 _t_params _t_type+         _classPP2 = rule244 _lhsIclassCtxs arg_constraints_+         _quantPP2 = rule245 _lhsIparams arg_params_+         _sem_prod = rule246 _args _lhsIinitial _mbInitializer _mkSemBody _outerlet _scc _semInlinePragma _sem_tp _semname _t_type+         _mkSemBody = rule247  ()+         _mbInitializer = rule248 _lhsIoptions+         _scc = rule249 _lhsIoptions _semname+         _semInlinePragma = rule250 _lhsIoptions _semname+         _outerlet = rule251 _rulesIsem_rules _statefns+         _statefns = rule252 _genstfn _lhsIallstates+         _genstfn = rule253 _addbang _lhsIinitial _lhsInextVisits _lhsInt _lhsIoptions _lhsIprevVisits _stargs _stks _stvs+         _stargs = rule254 _addbang _childTypes _lazyIntras _lhsIallInhmap _lhsIallSynmap _lhsIoptions _localAttrTypes _visitsIintramap+         _stks = rule255 _lhsInt _lhsIoptions _stvisits _t_params+         _stvisits = rule256 _visitsIallvisits+         _stvs = rule257 _visitsIsem_visit+         _visitsOmrules = rule258 _rulesImrules+         _visitsOchildintros = rule259 _childrenIchildintros+         _rulesOusageInfo = rule260 _visitsIruleUsage+         _rulesOruleKinds = rule261 _visitsIruleKinds+         _visitsOallintramap = rule262 _visitsIintramap+         _visitsOterminaldefs = rule263 _childrenIterminaldefs+         _visitsOruledefs = rule264 _rulesIruledefs+         _visitsOruleuses = rule265 _rulesIruleuses+         _lazyIntras = rule266 _visitsIlazyIntras+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule267 _moduleName+         _moduleName = rule268 _lhsImainName _suffix+         _suffix = rule269 _lhsInt arg_con_+         _outputfile = rule270 _lhsImainFile _suffix+         _ppMonadImports = rule271 _lhsIoptions+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule272 _lhsIimportBlocks _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _outputfile _ppMonadImports _sem_prod _semname _suffix+         _addbang = rule273 _lhsIoptions+         _childTypes = rule274 _childrenIchildTypes _lhsIntType+         _localAttrTypes = rule275 _lhsIlocalAttrTypes arg_con_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule276 _visitsIchildvisit+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule277 _rulesIerrors _visitsIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule278 _visitsIfromToStates+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule279 _visitsIt_visits+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule280 _visitsIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule281 _visitsIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule282 _visitsIvisituses+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule283 _visitsIallvisits+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule284 _sem_prod+         _rulesOallInhmap = rule285 _lhsIallInhmap+         _rulesOallSynmap = rule286 _lhsIallSynmap+         _rulesOchildTypes = rule287 _childTypes+         _rulesOimportBlocks = rule288 _lhsIimportBlocks+         _rulesOinhmap = rule289 _lhsIinhmap+         _rulesOlazyIntras = rule290 _lazyIntras+         _rulesOlocalAttrTypes = rule291 _localAttrTypes+         _rulesOmainFile = rule292 _lhsImainFile+         _rulesOmainName = rule293 _lhsImainName+         _rulesOmoduleHeader = rule294 _lhsImoduleHeader+         _rulesOnt = rule295 _lhsInt+         _rulesOoptions = rule296 _lhsIoptions+         _rulesOpragmaBlocks = rule297 _lhsIpragmaBlocks+         _rulesOsynmap = rule298 _lhsIsynmap+         _rulesOtextBlocks = rule299 _lhsItextBlocks+         _childrenOallInitStates = rule300 _lhsIallInitStates+         _childrenOimportBlocks = rule301 _lhsIimportBlocks+         _childrenOmainFile = rule302 _lhsImainFile+         _childrenOmainName = rule303 _lhsImainName+         _childrenOmoduleHeader = rule304 _lhsImoduleHeader+         _childrenOnt = rule305 _lhsInt+         _childrenOoptions = rule306 _lhsIoptions+         _childrenOpragmaBlocks = rule307 _lhsIpragmaBlocks+         _childrenOtextBlocks = rule308 _lhsItextBlocks+         _visitsOallFromToStates = rule309 _lhsIallFromToStates+         _visitsOallInhmap = rule310 _lhsIallInhmap+         _visitsOallInitStates = rule311 _lhsIallInitStates+         _visitsOallSynmap = rule312 _lhsIallSynmap+         _visitsOallVisitKinds = rule313 _lhsIallVisitKinds+         _visitsOallchildvisit = rule314 _lhsIallchildvisit+         _visitsOavisitdefs = rule315 _lhsIavisitdefs+         _visitsOavisituses = rule316 _lhsIavisituses+         _visitsOchildTypes = rule317 _childTypes+         _visitsOinhmap = rule318 _lhsIinhmap+         _visitsOnextVisits = rule319 _lhsInextVisits+         _visitsOnt = rule320 _lhsInt+         _visitsOoptions = rule321 _lhsIoptions+         _visitsOparams = rule322 _lhsIparams+         _visitsOprevVisits = rule323 _lhsIprevVisits+         _visitsOsynmap = rule324 _lhsIsynmap+         __result_ = T_EProduction_vOut13 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProduction_s14 v13+   {-# INLINE rule225 #-}+   {-# LINE 71 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule225 = \ con_ ->+                                 {-# LINE 71 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 con_+                                 {-# LINE 2198 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule226 #-}+   {-# LINE 72 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule226 = \ con_ ->+                                 {-# LINE 72 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 con_+                                 {-# LINE 2204 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule227 #-}+   {-# LINE 73 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule227 = \ con_ ->+                                 {-# LINE 73 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 con_+                                 {-# LINE 2210 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule228 #-}+   {-# LINE 186 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule228 = \ ((_childrenIdatatype) :: [PP_Doc]) _classPP1 ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIrename) :: Bool) _quantPP1 con_ ->+                                 {-# LINE 186 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _quantPP1     >#< _classPP1+                                 >#< conname _lhsIrename _lhsInt con_+                                 >#< ppConFields (dataRecords _lhsIoptions) _childrenIdatatype+                                 {-# LINE 2218 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule229 #-}+   {-# LINE 189 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule229 = \ constraints_ ->+                                 {-# LINE 189 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 ppClasses (classConstrsToDocs constraints_)+                                 {-# LINE 2224 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule230 #-}+   {-# LINE 190 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule230 = \ params_ ->+                                 {-# LINE 190 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 ppQuants params_+                                 {-# LINE 2230 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule231 #-}+   {-# LINE 288 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule231 = \  (_ :: ()) ->+                                              {-# LINE 288 "src-ag/ExecutionPlan2Hs.ag" #-}+                                              1+                                              {-# LINE 2236 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule232 #-}+   {-# LINE 293 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule232 = \ ((_childrenIargnamesw) :: [PP_Doc]) ((_childrenIargpats) ::  [PP_Doc] ) ((_lhsInt) :: NontermIdent) ((_lhsIrename) :: Bool) con_ ->+                               {-# LINE 293 "src-ag/ExecutionPlan2Hs.ag" #-}+                               "sem_" >|< _lhsInt >#< "(" >#< conname _lhsIrename _lhsInt con_ >#< ppSpaced _childrenIargpats >#< ")"+                               >#< "=" >#< "sem_" >|< _lhsInt >|< "_" >|< con_ >#< ppSpaced _childrenIargnamesw+                               {-# LINE 2243 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule233 #-}+   {-# LINE 534 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule233 = \ _semFunBndDef ->+                        {-# LINE 534 "src-ag/ExecutionPlan2Hs.ag" #-}+                        Seq.singleton _semFunBndDef+                        {-# LINE 2249 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule234 #-}+   {-# LINE 535 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule234 = \ _semFunBndTp ->+                        {-# LINE 535 "src-ag/ExecutionPlan2Hs.ag" #-}+                        Seq.singleton _semFunBndTp+                        {-# LINE 2255 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule235 #-}+   {-# LINE 536 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule235 = \ _semFunBndNm _semname ->+                        {-# LINE 536 "src-ag/ExecutionPlan2Hs.ag" #-}+                        _semFunBndNm     >#< "=" >#< _semname+                        {-# LINE 2261 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule236 #-}+   {-# LINE 537 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule236 = \ _semFunBndNm _sem_tp ->+                        {-# LINE 537 "src-ag/ExecutionPlan2Hs.ag" #-}+                        _semFunBndNm     >#< "::" >#< _sem_tp+                        {-# LINE 2267 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule237 #-}+   {-# LINE 538 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule237 = \ ((_lhsInt) :: NontermIdent) con_ ->+                        {-# LINE 538 "src-ag/ExecutionPlan2Hs.ag" #-}+                        lateSemConLabel _lhsInt con_+                        {-# LINE 2273 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule238 #-}+   {-# LINE 596 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule238 = \ ((_lhsInt) :: NontermIdent) ->+                                 {-# LINE 596 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 "T_" >|< _lhsInt+                                 {-# LINE 2279 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule239 #-}+   {-# LINE 597 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule239 = \ ((_lhsIparams) :: [Identifier]) ->+                                 {-# LINE 597 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 ppSpaced _lhsIparams+                                 {-# LINE 2285 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule240 #-}+   {-# LINE 598 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule240 = \ ((_childrenIusedArgs) :: Set String) ((_rulesIusedArgs) :: Set String) ((_visitsIusedArgs) :: Set String) ->+                                 {-# LINE 598 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _childrenIusedArgs `Set.union` _visitsIusedArgs `Set.union` _rulesIusedArgs+                                 {-# LINE 2291 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule241 #-}+   {-# LINE 601 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule241 = \ ((_childrenIargpats) ::  [PP_Doc] ) _usedArgs ->+                                 {-# LINE 601 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 map (\x -> let (name,arg) = case show x of+                                                         ""       -> ("", empty)+                                                         '!':name -> ("arg_" ++ name, "!arg_" >|< name)+                                                         name     -> ("arg_" ++ name, "arg_"  >|< name)+                                            in  if null name || name `Set.member` _usedArgs+                                                then arg+                                                else text "_") _childrenIargpats+                                 {-# LINE 2303 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule242 #-}+   {-# LINE 608 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule242 = \ ((_lhsInt) :: NontermIdent) con_ ->+                                 {-# LINE 608 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 "sem_" ++ show _lhsInt ++ "_" ++ show con_+                                 {-# LINE 2309 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule243 #-}+   {-# LINE 609 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule243 = \ ((_childrenIargtps) ::  [PP_Doc] ) _classPP2 _quantPP2 _t_params _t_type ->+                                 {-# LINE 609 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _quantPP2     >#< _classPP2     >#< ppSpaced _childrenIargtps >#< _t_type     >#< _t_params+                                 {-# LINE 2315 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule244 #-}+   {-# LINE 610 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule244 = \ ((_lhsIclassCtxs) :: ClassContext) constraints_ ->+                                 {-# LINE 610 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 ppClasses (classCtxsToDocs _lhsIclassCtxs ++ classConstrsToDocs constraints_)+                                 {-# LINE 2321 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule245 #-}+   {-# LINE 611 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule245 = \ ((_lhsIparams) :: [Identifier]) params_ ->+                                 {-# LINE 611 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 ppQuants (_lhsIparams ++ params_)+                                 {-# LINE 2327 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule246 #-}+   {-# LINE 612 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule246 = \ _args ((_lhsIinitial) :: StateIdentifier) _mbInitializer _mkSemBody _outerlet _scc _semInlinePragma _sem_tp _semname _t_type ->+                                 {-# LINE 612 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _semInlinePragma+                                 >-< _semname     >#< "::" >#< _sem_tp+                                 >-< _mkSemBody     (_semname     >#< ppSpaced _args     >#< "=" >#< _scc     >#< _t_type    )+                                                    _mbInitializer     _outerlet     ("return" >#< "st" >|< _lhsIinitial)+                                 {-# LINE 2336 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule247 #-}+   {-# LINE 616 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule247 = \  (_ :: ()) ->+                                  {-# LINE 616 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  \prefix mbInit outerlet ret ->+                                    case mbInit of+                                      Nothing -> prefix >#< pp_parens ret >#< "where"+                                                 >-< indent 3 outerlet+                                      Just m  -> prefix >#< "(" >#< "do"+                                                 >-< indent 1 (+                                                       m+                                                       >-< "let"+                                                       >-< indent 2 outerlet+                                                       >-< ret )+                                                 >-< indent 1 ")"+                                  {-# LINE 2352 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule248 #-}+   {-# LINE 628 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule248 = \ ((_lhsIoptions) :: Options) ->+                                        {-# LINE 628 "src-ag/ExecutionPlan2Hs.ag" #-}+                                        if parallelInvoke _lhsIoptions+                                        then (Nothing :: Maybe PP_Doc)+                                        else Nothing+                                        {-# LINE 2360 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule249 #-}+   {-# LINE 634 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule249 = \ ((_lhsIoptions) :: Options) _semname ->+                                        {-# LINE 634 "src-ag/ExecutionPlan2Hs.ag" #-}+                                        if genCostCentres _lhsIoptions+                                        then ppCostCentre _semname+                                        else empty+                                        {-# LINE 2368 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule250 #-}+   {-# LINE 637 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule250 = \ ((_lhsIoptions) :: Options) _semname ->+                                        {-# LINE 637 "src-ag/ExecutionPlan2Hs.ag" #-}+                                        if noInlinePragmas _lhsIoptions+                                        then empty+                                        else ppNoInline _semname+                                        {-# LINE 2376 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule251 #-}+   {-# LINE 640 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule251 = \ ((_rulesIsem_rules) :: PP_Doc) _statefns ->+                                 {-# LINE 640 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 vlist _statefns     >-< _rulesIsem_rules+                                 {-# LINE 2382 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule252 #-}+   {-# LINE 641 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule252 = \ _genstfn ((_lhsIallstates) :: Set StateIdentifier) ->+                                 {-# LINE 641 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 map _genstfn     $ Set.toList _lhsIallstates+                                 {-# LINE 2388 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule253 #-}+   {-# LINE 642 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule253 = \ _addbang ((_lhsIinitial) :: StateIdentifier) ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) _stargs _stks _stvs ->+                                 {-# LINE 642 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 \st -> let nextVisitInfo = Map.findWithDefault ManyVis st _lhsInextVisits+                                            prevVisitInfo = Map.findWithDefault ManyVis st _lhsIprevVisits+                                            stNm = "st" >|< st+                                            lhs  = pragma >-< bang stNm >#< "=" >#<+                                                   (+                                                     if st == _lhsIinitial+                                                     then empty+                                                     else "\\" >#< _stargs     st >#< "->"+                                                   )+                                            pragma = if noInlinePragmas _lhsIoptions+                                                     then empty+                                                     else if helpInlining _lhsIoptions+                                                          then case prevVisitInfo of+                                                                 ManyVis  -> ppNoInline stNm+                                                                 OneVis _ -> if aggressiveInlinePragmas _lhsIoptions+                                                                             then ppInline stNm+                                                                             else ppInlinable stNm+                                                                 NoneVis  -> if st /= _lhsIinitial+                                                                             then error ("State " ++ show st ++ " is not reachable from the initial state.")+                                                                             else if aggressiveInlinePragmas _lhsIoptions+                                                                                  then ppInline stNm+                                                                                  else ppInlinable stNm+                                                          else ppNoInline stNm+                                            cCon = "C_" >|< _lhsInt >|< "_s" >|< st+                                            bang | st == _lhsIinitial = _addbang+                                                 | otherwise          = id+                                        in case nextVisitInfo of+                                             NoneVis    ->+                                                           if st == _lhsIinitial+                                                           then lhs >#< cCon+                                                           else empty+                                             OneVis vId -> mklet lhs (_stvs     st False) (cCon >#< "v" >|< vId)+                                             ManyVis    -> mklet lhs (_stks     st >-< _stvs     st True) (cCon >#< "k" >|< st)+                                 {-# LINE 2426 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule254 #-}+   {-# LINE 684 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule254 = \ _addbang _childTypes _lazyIntras ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIoptions) :: Options) _localAttrTypes ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->+                                 {-# LINE 684 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 \st -> let attrs = maybe Map.empty id $ Map.lookup st _visitsIintramap+                                        in ppSpaced [ let match | str `Set.member` _lazyIntras     = pp str+                                                                | otherwise                        = _addbang     (pp str)+                                                      in case mbAttr of+                                                           Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->+                                                             case Map.lookup nm _localAttrTypes     of+                                                               Just tp -> pp_parens (pp_parens match >#< "::" >#< ppTp tp)+                                                               Nothing -> match+                                                           Just attr | not (noPerStateTypeSigs _lhsIoptions) ->+                                                             case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _childTypes     of+                                                               Just tpDoc -> pp_parens (pp_parens match >#< "::" >#< tpDoc)+                                                               Nothing    -> match+                                                           _ -> match+                                                   | (str,mbAttr) <- Map.assocs attrs+                                                   ] >#< dummyPat _lhsIoptions (Map.null attrs)+                                 {-# LINE 2446 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule255 #-}+   {-# LINE 700 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule255 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _stvisits _t_params ->+                                 {-# LINE 700 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 \st -> if null (_stvisits     st)+                                        then empty+                                        else ( if not (noInlinePragmas _lhsIoptions) && helpInlining _lhsIoptions+                                               then ppNoInline ("k" >|< st)+                                               else empty+                                             )+                                             >-< "k" >|< st >#< "::" >#< "K_" >|< _lhsInt >|< "_s" >|< st >#< _t_params     >#< "t" >#< "->" >#< "t"+                                             >-< vlist (map (\(v,f,t) -> "k" >|< st >#< "K_" >|< _lhsInt >|< "_v" >|< v >#< "="+                                                                    >#< "v" >|< v) $ _stvisits     st)+                                 {-# LINE 2460 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule256 #-}+   {-# LINE 709 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule256 = \ ((_visitsIallvisits) :: [VisitStateState]) ->+                                 {-# LINE 709 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 \st -> filter (\(v,f,t) -> f == st) _visitsIallvisits+                                 {-# LINE 2466 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule257 #-}+   {-# LINE 710 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule257 = \ ((_visitsIsem_visit) ::  [(StateIdentifier,Bool -> PP_Doc)] ) ->+                                 {-# LINE 710 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 \st inlinePragma -> vlist [ppf inlinePragma | (f,ppf) <- _visitsIsem_visit, f == st]+                                 {-# LINE 2472 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule258 #-}+   {-# LINE 711 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule258 = \ ((_rulesImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+                                  {-# LINE 711 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  _rulesImrules+                                  {-# LINE 2478 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule259 #-}+   {-# LINE 926 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule259 = \ ((_childrenIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+                                       {-# LINE 926 "src-ag/ExecutionPlan2Hs.ag" #-}+                                       _childrenIchildintros+                                       {-# LINE 2484 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule260 #-}+   {-# LINE 1281 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule260 = \ ((_visitsIruleUsage) :: Map Identifier Int) ->+                                                   {-# LINE 1281 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                   _visitsIruleUsage+                                                   {-# LINE 2490 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule261 #-}+   {-# LINE 1296 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule261 = \ ((_visitsIruleKinds) :: Map Identifier (Set VisitKind)) ->+                      {-# LINE 1296 "src-ag/ExecutionPlan2Hs.ag" #-}+                      _visitsIruleKinds+                      {-# LINE 2496 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule262 #-}+   {-# LINE 1325 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule262 = \ ((_visitsIintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) ->+                          {-# LINE 1325 "src-ag/ExecutionPlan2Hs.ag" #-}+                          _visitsIintramap+                          {-# LINE 2502 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule263 #-}+   {-# LINE 1326 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule263 = \ ((_childrenIterminaldefs) :: Set String) ->+                          {-# LINE 1326 "src-ag/ExecutionPlan2Hs.ag" #-}+                          _childrenIterminaldefs+                          {-# LINE 2508 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule264 #-}+   {-# LINE 1350 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule264 = \ ((_rulesIruledefs) :: Map Identifier (Set String)) ->+                                    {-# LINE 1350 "src-ag/ExecutionPlan2Hs.ag" #-}+                                    _rulesIruledefs+                                    {-# LINE 2514 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule265 #-}+   {-# LINE 1351 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule265 = \ ((_rulesIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+                                    {-# LINE 1351 "src-ag/ExecutionPlan2Hs.ag" #-}+                                    _rulesIruleuses+                                    {-# LINE 2520 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule266 #-}+   {-# LINE 1405 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule266 = \ ((_visitsIlazyIntras) :: Set String) ->+                     {-# LINE 1405 "src-ag/ExecutionPlan2Hs.ag" #-}+                     _visitsIlazyIntras+                     {-# LINE 2526 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule267 #-}+   {-# LINE 1502 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule267 = \ _moduleName ->+                                   {-# LINE 1502 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   [pp $ "import " ++ _moduleName    ]+                                   {-# LINE 2532 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule268 #-}+   {-# LINE 1503 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule268 = \ ((_lhsImainName) :: String) _suffix ->+                                   {-# LINE 1503 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   _lhsImainName ++ _suffix+                                   {-# LINE 2538 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule269 #-}+   {-# LINE 1504 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule269 = \ ((_lhsInt) :: NontermIdent) con_ ->+                                   {-# LINE 1504 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   "_" ++ show _lhsInt ++ "_" ++ show con_+                                   {-# LINE 2544 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule270 #-}+   {-# LINE 1505 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule270 = \ ((_lhsImainFile) :: String) _suffix ->+                                   {-# LINE 1505 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ _suffix    )+                                   {-# LINE 2550 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule271 #-}+   {-# LINE 1506 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule271 = \ ((_lhsIoptions) :: Options) ->+                                        {-# LINE 1506 "src-ag/ExecutionPlan2Hs.ag" #-}+                                        if parallelInvoke _lhsIoptions+                                        then pp "import qualified System.IO.Unsafe(unsafePerformIO)"+                                             >-< pp "import System.IO(IO)"+                                             >-< pp "import Control.Concurrent(newEmptyMVar,forkIO,putMVar,takeMVar)"+                                        else pp "import Control.Monad.Identity"+                                        {-# LINE 2560 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule272 #-}+   {-# LINE 1511 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule272 = \ ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptions) :: Options) ((_lhsIpragmaBlocks) :: String) _outputfile _ppMonadImports _sem_prod _semname _suffix ->+                                   {-# LINE 1511 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   writeModule _outputfile+                                       [ warrenFlagsPP _lhsIoptions+                                       , pp $ _lhsIpragmaBlocks+                                       , pp $ _lhsImoduleHeader _lhsImainName _suffix     _semname     True+                                       , _lhsIimportBlocks+                                       , _ppMonadImports+                                       , ( if tupleAsDummyToken _lhsIoptions+                                              then empty+                                              else pp "import GHC.Prim"+                                        )+                                       , pp $ "import " ++ _lhsImainName ++ "_common"+                                       , _sem_prod+                                       ]+                                   {-# LINE 2578 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule273 #-}+   {-# LINE 1552 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule273 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1552 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 2584 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule274 #-}+   {-# LINE 1602 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule274 = \ ((_childrenIchildTypes) :: Map Identifier Type) ((_lhsIntType) :: Type) ->+                     {-# LINE 1602 "src-ag/ExecutionPlan2Hs.ag" #-}+                     Map.singleton _LHS _lhsIntType `Map.union` _childrenIchildTypes+                     {-# LINE 2590 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule275 #-}+   {-# LINE 1619 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule275 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) con_ ->+                           {-# LINE 1619 "src-ag/ExecutionPlan2Hs.ag" #-}+                           Map.findWithDefault Map.empty con_ _lhsIlocalAttrTypes+                           {-# LINE 2596 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule276 #-}+   rule276 = \ ((_visitsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _visitsIchildvisit+   {-# INLINE rule277 #-}+   rule277 = \ ((_rulesIerrors) :: Seq Error) ((_visitsIerrors) :: Seq Error) ->+     _rulesIerrors Seq.>< _visitsIerrors+   {-# INLINE rule278 #-}+   rule278 = \ ((_visitsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _visitsIfromToStates+   {-# INLINE rule279 #-}+   rule279 = \ ((_visitsIt_visits) :: PP_Doc) ->+     _visitsIt_visits+   {-# INLINE rule280 #-}+   rule280 = \ ((_visitsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _visitsIvisitKinds+   {-# INLINE rule281 #-}+   rule281 = \ ((_visitsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _visitsIvisitdefs+   {-# INLINE rule282 #-}+   rule282 = \ ((_visitsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _visitsIvisituses+   {-# INLINE rule283 #-}+   rule283 = \ ((_visitsIallvisits) :: [VisitStateState]) ->+     _visitsIallvisits+   {-# INLINE rule284 #-}+   rule284 = \ _sem_prod ->+     _sem_prod+   {-# INLINE rule285 #-}+   rule285 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule286 #-}+   rule286 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule287 #-}+   rule287 = \ _childTypes ->+     _childTypes+   {-# INLINE rule288 #-}+   rule288 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule289 #-}+   rule289 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule290 #-}+   rule290 = \ _lazyIntras ->+     _lazyIntras+   {-# INLINE rule291 #-}+   rule291 = \ _localAttrTypes ->+     _localAttrTypes+   {-# INLINE rule292 #-}+   rule292 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule293 #-}+   rule293 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule294 #-}+   rule294 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule295 #-}+   rule295 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule296 #-}+   rule296 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule297 #-}+   rule297 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule298 #-}+   rule298 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule299 #-}+   rule299 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule300 #-}+   rule300 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule301 #-}+   rule301 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule302 #-}+   rule302 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule303 #-}+   rule303 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule304 #-}+   rule304 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule305 #-}+   rule305 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule306 #-}+   rule306 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule307 #-}+   rule307 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule308 #-}+   rule308 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule309 #-}+   rule309 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule310 #-}+   rule310 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule311 #-}+   rule311 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule312 #-}+   rule312 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule313 #-}+   rule313 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule314 #-}+   rule314 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule315 #-}+   rule315 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule316 #-}+   rule316 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule317 #-}+   rule317 = \ _childTypes ->+     _childTypes+   {-# INLINE rule318 #-}+   rule318 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule319 #-}+   rule319 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule320 #-}+   rule320 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule321 #-}+   rule321 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule322 #-}+   rule322 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule323 #-}+   rule323 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule324 #-}+   rule324 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap++-- EProductions ------------------------------------------------+-- wrapper+data Inh_EProductions  = Inh_EProductions { allFromToStates_Inh_EProductions :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_EProductions :: (Map NontermIdent Attributes), allInitStates_Inh_EProductions :: (Map NontermIdent Int), allSynmap_Inh_EProductions :: (Map NontermIdent Attributes), allVisitKinds_Inh_EProductions :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_EProductions :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allstates_Inh_EProductions :: (Set StateIdentifier), avisitdefs_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_EProductions :: (Map VisitIdentifier (Set Identifier)), classCtxs_Inh_EProductions :: (ClassContext), importBlocks_Inh_EProductions :: (PP_Doc), inhmap_Inh_EProductions :: (Attributes), initial_Inh_EProductions :: (StateIdentifier), localAttrTypes_Inh_EProductions :: (Map ConstructorIdent (Map Identifier Type)), mainFile_Inh_EProductions :: (String), mainName_Inh_EProductions :: (String), moduleHeader_Inh_EProductions :: (String -> String -> String -> Bool -> String), nextVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), nt_Inh_EProductions :: (NontermIdent), ntType_Inh_EProductions :: (Type), options_Inh_EProductions :: (Options), params_Inh_EProductions :: ([Identifier]), pragmaBlocks_Inh_EProductions :: (String), prevVisits_Inh_EProductions :: (Map StateIdentifier StateCtx), rename_Inh_EProductions :: (Bool), synmap_Inh_EProductions :: (Attributes), textBlocks_Inh_EProductions :: (PP_Doc) }+data Syn_EProductions  = Syn_EProductions { allvisits_Syn_EProductions :: ([VisitStateState]), childvisit_Syn_EProductions :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), count_Syn_EProductions :: (Int), datatype_Syn_EProductions :: ([PP_Doc]), errors_Syn_EProductions :: (Seq Error), fromToStates_Syn_EProductions :: (Map VisitIdentifier (Int,Int)), genProdIO_Syn_EProductions :: (IO ()), imports_Syn_EProductions :: ([PP_Doc]), semFunBndDefs_Syn_EProductions :: (Seq PP_Doc), semFunBndTps_Syn_EProductions :: (Seq PP_Doc), sem_nt_Syn_EProductions :: (PP_Doc), sem_prod_Syn_EProductions :: (PP_Doc), t_visits_Syn_EProductions :: (PP_Doc), visitKinds_Syn_EProductions :: (Map VisitIdentifier VisitKind), visitdefs_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_EProductions :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_EProductions #-}+wrap_EProductions :: T_EProductions  -> Inh_EProductions  -> (Syn_EProductions )+wrap_EProductions (T_EProductions act) (Inh_EProductions _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg16 = T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks+        (T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_EProductions_s17 sem arg16)+        return (Syn_EProductions _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# NOINLINE sem_EProductions #-}+sem_EProductions :: EProductions  -> T_EProductions +sem_EProductions list = Prelude.foldr sem_EProductions_Cons sem_EProductions_Nil (Prelude.map sem_EProduction list)++-- semantic domain+newtype T_EProductions  = T_EProductions {+                                         attach_T_EProductions :: Identity (T_EProductions_s17 )+                                         }+newtype T_EProductions_s17  = C_EProductions_s17 {+                                                 inv_EProductions_s17 :: (T_EProductions_v16 )+                                                 }+data T_EProductions_s18  = C_EProductions_s18+type T_EProductions_v16  = (T_EProductions_vIn16 ) -> (T_EProductions_vOut16 )+data T_EProductions_vIn16  = T_EProductions_vIn16 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Set StateIdentifier) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (ClassContext) (PP_Doc) (Attributes) (StateIdentifier) (Map ConstructorIdent (Map Identifier Type)) (String) (String) (String -> String -> String -> Bool -> String) (Map StateIdentifier StateCtx) (NontermIdent) (Type) (Options) ([Identifier]) (String) (Map StateIdentifier StateCtx) (Bool) (Attributes) (PP_Doc)+data T_EProductions_vOut16  = T_EProductions_vOut16 ([VisitStateState]) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Int) ([PP_Doc]) (Seq Error) (Map VisitIdentifier (Int,Int)) (IO ()) ([PP_Doc]) (Seq PP_Doc) (Seq PP_Doc) (PP_Doc) (PP_Doc) (PP_Doc) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_EProductions_Cons #-}+sem_EProductions_Cons :: T_EProduction  -> T_EProductions  -> T_EProductions +sem_EProductions_Cons arg_hd_ arg_tl_ = T_EProductions (return st17) where+   {-# NOINLINE st17 #-}+   st17 = let+      v16 :: T_EProductions_v16 +      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let+         _hdX14 = Control.Monad.Identity.runIdentity (attach_T_EProduction (arg_hd_))+         _tlX17 = Control.Monad.Identity.runIdentity (attach_T_EProductions (arg_tl_))+         (T_EProduction_vOut13 _hdIallvisits _hdIchildvisit _hdIcount _hdIdatatype _hdIerrors _hdIfromToStates _hdIgenProdIO _hdIimports _hdIsemFunBndDefs _hdIsemFunBndTps _hdIsem_nt _hdIsem_prod _hdIt_visits _hdIvisitKinds _hdIvisitdefs _hdIvisituses) = inv_EProduction_s14 _hdX14 (T_EProduction_vIn13 _hdOallFromToStates _hdOallInhmap _hdOallInitStates _hdOallSynmap _hdOallVisitKinds _hdOallchildvisit _hdOallstates _hdOavisitdefs _hdOavisituses _hdOclassCtxs _hdOimportBlocks _hdOinhmap _hdOinitial _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnextVisits _hdOnt _hdOntType _hdOoptions _hdOparams _hdOpragmaBlocks _hdOprevVisits _hdOrename _hdOsynmap _hdOtextBlocks)+         (T_EProductions_vOut16 _tlIallvisits _tlIchildvisit _tlIcount _tlIdatatype _tlIerrors _tlIfromToStates _tlIgenProdIO _tlIimports _tlIsemFunBndDefs _tlIsemFunBndTps _tlIsem_nt _tlIsem_prod _tlIt_visits _tlIvisitKinds _tlIvisitdefs _tlIvisituses) = inv_EProductions_s17 _tlX17 (T_EProductions_vIn16 _tlOallFromToStates _tlOallInhmap _tlOallInitStates _tlOallSynmap _tlOallVisitKinds _tlOallchildvisit _tlOallstates _tlOavisitdefs _tlOavisituses _tlOclassCtxs _tlOimportBlocks _tlOinhmap _tlOinitial _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnextVisits _tlOnt _tlOntType _tlOoptions _tlOparams _tlOpragmaBlocks _tlOprevVisits _tlOrename _tlOsynmap _tlOtextBlocks)+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule325 _hdIallvisits+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule326 _hdIt_visits+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule327 _hdIchildvisit _tlIchildvisit+         _lhsOcount :: Int+         _lhsOcount = rule328 _hdIcount _tlIcount+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule329 _hdIdatatype _tlIdatatype+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule330 _hdIerrors _tlIerrors+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule331 _hdIfromToStates _tlIfromToStates+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule332 _hdIgenProdIO _tlIgenProdIO+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule333 _hdIimports _tlIimports+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule334 _hdIsemFunBndDefs _tlIsemFunBndDefs+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule335 _hdIsemFunBndTps _tlIsemFunBndTps+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule336 _hdIsem_nt _tlIsem_nt+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule337 _hdIsem_prod _tlIsem_prod+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule338 _hdIvisitKinds _tlIvisitKinds+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule339 _hdIvisitdefs _tlIvisitdefs+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule340 _hdIvisituses _tlIvisituses+         _hdOallFromToStates = rule341 _lhsIallFromToStates+         _hdOallInhmap = rule342 _lhsIallInhmap+         _hdOallInitStates = rule343 _lhsIallInitStates+         _hdOallSynmap = rule344 _lhsIallSynmap+         _hdOallVisitKinds = rule345 _lhsIallVisitKinds+         _hdOallchildvisit = rule346 _lhsIallchildvisit+         _hdOallstates = rule347 _lhsIallstates+         _hdOavisitdefs = rule348 _lhsIavisitdefs+         _hdOavisituses = rule349 _lhsIavisituses+         _hdOclassCtxs = rule350 _lhsIclassCtxs+         _hdOimportBlocks = rule351 _lhsIimportBlocks+         _hdOinhmap = rule352 _lhsIinhmap+         _hdOinitial = rule353 _lhsIinitial+         _hdOlocalAttrTypes = rule354 _lhsIlocalAttrTypes+         _hdOmainFile = rule355 _lhsImainFile+         _hdOmainName = rule356 _lhsImainName+         _hdOmoduleHeader = rule357 _lhsImoduleHeader+         _hdOnextVisits = rule358 _lhsInextVisits+         _hdOnt = rule359 _lhsInt+         _hdOntType = rule360 _lhsIntType+         _hdOoptions = rule361 _lhsIoptions+         _hdOparams = rule362 _lhsIparams+         _hdOpragmaBlocks = rule363 _lhsIpragmaBlocks+         _hdOprevVisits = rule364 _lhsIprevVisits+         _hdOrename = rule365 _lhsIrename+         _hdOsynmap = rule366 _lhsIsynmap+         _hdOtextBlocks = rule367 _lhsItextBlocks+         _tlOallFromToStates = rule368 _lhsIallFromToStates+         _tlOallInhmap = rule369 _lhsIallInhmap+         _tlOallInitStates = rule370 _lhsIallInitStates+         _tlOallSynmap = rule371 _lhsIallSynmap+         _tlOallVisitKinds = rule372 _lhsIallVisitKinds+         _tlOallchildvisit = rule373 _lhsIallchildvisit+         _tlOallstates = rule374 _lhsIallstates+         _tlOavisitdefs = rule375 _lhsIavisitdefs+         _tlOavisituses = rule376 _lhsIavisituses+         _tlOclassCtxs = rule377 _lhsIclassCtxs+         _tlOimportBlocks = rule378 _lhsIimportBlocks+         _tlOinhmap = rule379 _lhsIinhmap+         _tlOinitial = rule380 _lhsIinitial+         _tlOlocalAttrTypes = rule381 _lhsIlocalAttrTypes+         _tlOmainFile = rule382 _lhsImainFile+         _tlOmainName = rule383 _lhsImainName+         _tlOmoduleHeader = rule384 _lhsImoduleHeader+         _tlOnextVisits = rule385 _lhsInextVisits+         _tlOnt = rule386 _lhsInt+         _tlOntType = rule387 _lhsIntType+         _tlOoptions = rule388 _lhsIoptions+         _tlOparams = rule389 _lhsIparams+         _tlOpragmaBlocks = rule390 _lhsIpragmaBlocks+         _tlOprevVisits = rule391 _lhsIprevVisits+         _tlOrename = rule392 _lhsIrename+         _tlOsynmap = rule393 _lhsIsynmap+         _tlOtextBlocks = rule394 _lhsItextBlocks+         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProductions_s17 v16+   {-# INLINE rule325 #-}+   {-# LINE 343 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule325 = \ ((_hdIallvisits) :: [VisitStateState]) ->+                           {-# LINE 343 "src-ag/ExecutionPlan2Hs.ag" #-}+                           _hdIallvisits+                           {-# LINE 2880 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule326 #-}+   {-# LINE 396 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule326 = \ ((_hdIt_visits) :: PP_Doc) ->+                          {-# LINE 396 "src-ag/ExecutionPlan2Hs.ag" #-}+                          _hdIt_visits+                          {-# LINE 2886 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule327 #-}+   rule327 = \ ((_hdIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ((_tlIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _hdIchildvisit `Map.union` _tlIchildvisit+   {-# INLINE rule328 #-}+   rule328 = \ ((_hdIcount) :: Int) ((_tlIcount) :: Int) ->+     _hdIcount + _tlIcount+   {-# INLINE rule329 #-}+   rule329 = \ ((_hdIdatatype) :: PP_Doc) ((_tlIdatatype) :: [PP_Doc]) ->+     _hdIdatatype : _tlIdatatype+   {-# INLINE rule330 #-}+   rule330 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule331 #-}+   rule331 = \ ((_hdIfromToStates) :: Map VisitIdentifier (Int,Int)) ((_tlIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _hdIfromToStates `mappend` _tlIfromToStates+   {-# INLINE rule332 #-}+   rule332 = \ ((_hdIgenProdIO) :: IO ()) ((_tlIgenProdIO) :: IO ()) ->+     _hdIgenProdIO >> _tlIgenProdIO+   {-# INLINE rule333 #-}+   rule333 = \ ((_hdIimports) :: [PP_Doc]) ((_tlIimports) :: [PP_Doc]) ->+     _hdIimports ++ _tlIimports+   {-# INLINE rule334 #-}+   rule334 = \ ((_hdIsemFunBndDefs) :: Seq PP_Doc) ((_tlIsemFunBndDefs) :: Seq PP_Doc) ->+     _hdIsemFunBndDefs Seq.>< _tlIsemFunBndDefs+   {-# INLINE rule335 #-}+   rule335 = \ ((_hdIsemFunBndTps) :: Seq PP_Doc) ((_tlIsemFunBndTps) :: Seq PP_Doc) ->+     _hdIsemFunBndTps Seq.>< _tlIsemFunBndTps+   {-# INLINE rule336 #-}+   rule336 = \ ((_hdIsem_nt) :: PP_Doc) ((_tlIsem_nt) :: PP_Doc) ->+     _hdIsem_nt >-< _tlIsem_nt+   {-# INLINE rule337 #-}+   rule337 = \ ((_hdIsem_prod) :: PP_Doc) ((_tlIsem_prod) :: PP_Doc) ->+     _hdIsem_prod >-< _tlIsem_prod+   {-# INLINE rule338 #-}+   rule338 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule339 #-}+   rule339 = \ ((_hdIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisitdefs `uwSetUnion` _tlIvisitdefs+   {-# INLINE rule340 #-}+   rule340 = \ ((_hdIvisituses) :: Map VisitIdentifier (Set Identifier)) ((_tlIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _hdIvisituses `uwSetUnion` _tlIvisituses+   {-# INLINE rule341 #-}+   rule341 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule342 #-}+   rule342 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule343 #-}+   rule343 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule344 #-}+   rule344 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule345 #-}+   rule345 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule346 #-}+   rule346 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule347 #-}+   rule347 = \ ((_lhsIallstates) :: Set StateIdentifier) ->+     _lhsIallstates+   {-# INLINE rule348 #-}+   rule348 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule349 #-}+   rule349 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule350 #-}+   rule350 = \ ((_lhsIclassCtxs) :: ClassContext) ->+     _lhsIclassCtxs+   {-# INLINE rule351 #-}+   rule351 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule352 #-}+   rule352 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule353 #-}+   rule353 = \ ((_lhsIinitial) :: StateIdentifier) ->+     _lhsIinitial+   {-# INLINE rule354 #-}+   rule354 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule355 #-}+   rule355 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule356 #-}+   rule356 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule357 #-}+   rule357 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule358 #-}+   rule358 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule359 #-}+   rule359 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule360 #-}+   rule360 = \ ((_lhsIntType) :: Type) ->+     _lhsIntType+   {-# INLINE rule361 #-}+   rule361 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule362 #-}+   rule362 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule363 #-}+   rule363 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule364 #-}+   rule364 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule365 #-}+   rule365 = \ ((_lhsIrename) :: Bool) ->+     _lhsIrename+   {-# INLINE rule366 #-}+   rule366 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule367 #-}+   rule367 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule368 #-}+   rule368 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule369 #-}+   rule369 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule370 #-}+   rule370 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule371 #-}+   rule371 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule372 #-}+   rule372 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule373 #-}+   rule373 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule374 #-}+   rule374 = \ ((_lhsIallstates) :: Set StateIdentifier) ->+     _lhsIallstates+   {-# INLINE rule375 #-}+   rule375 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule376 #-}+   rule376 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule377 #-}+   rule377 = \ ((_lhsIclassCtxs) :: ClassContext) ->+     _lhsIclassCtxs+   {-# INLINE rule378 #-}+   rule378 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule379 #-}+   rule379 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule380 #-}+   rule380 = \ ((_lhsIinitial) :: StateIdentifier) ->+     _lhsIinitial+   {-# INLINE rule381 #-}+   rule381 = \ ((_lhsIlocalAttrTypes) :: Map ConstructorIdent (Map Identifier Type)) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule382 #-}+   rule382 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule383 #-}+   rule383 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule384 #-}+   rule384 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule385 #-}+   rule385 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) ->+     _lhsInextVisits+   {-# INLINE rule386 #-}+   rule386 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule387 #-}+   rule387 = \ ((_lhsIntType) :: Type) ->+     _lhsIntType+   {-# INLINE rule388 #-}+   rule388 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule389 #-}+   rule389 = \ ((_lhsIparams) :: [Identifier]) ->+     _lhsIparams+   {-# INLINE rule390 #-}+   rule390 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule391 #-}+   rule391 = \ ((_lhsIprevVisits) :: Map StateIdentifier StateCtx) ->+     _lhsIprevVisits+   {-# INLINE rule392 #-}+   rule392 = \ ((_lhsIrename) :: Bool) ->+     _lhsIrename+   {-# INLINE rule393 #-}+   rule393 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule394 #-}+   rule394 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+{-# NOINLINE sem_EProductions_Nil #-}+sem_EProductions_Nil ::  T_EProductions +sem_EProductions_Nil  = T_EProductions (return st17) where+   {-# NOINLINE st17 #-}+   st17 = let+      v16 :: T_EProductions_v16 +      v16 = \ (T_EProductions_vIn16 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIclassCtxs _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInextVisits _lhsInt _lhsIntType _lhsIoptions _lhsIparams _lhsIpragmaBlocks _lhsIprevVisits _lhsIrename _lhsIsynmap _lhsItextBlocks) -> ( let+         _lhsOallvisits :: [VisitStateState]+         _lhsOallvisits = rule395  ()+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule396  ()+         _lhsOcount :: Int+         _lhsOcount = rule397  ()+         _lhsOdatatype :: [PP_Doc]+         _lhsOdatatype = rule398  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule399  ()+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule400  ()+         _lhsOgenProdIO :: IO ()+         _lhsOgenProdIO = rule401  ()+         _lhsOimports :: [PP_Doc]+         _lhsOimports = rule402  ()+         _lhsOsemFunBndDefs :: Seq PP_Doc+         _lhsOsemFunBndDefs = rule403  ()+         _lhsOsemFunBndTps :: Seq PP_Doc+         _lhsOsemFunBndTps = rule404  ()+         _lhsOsem_nt :: PP_Doc+         _lhsOsem_nt = rule405  ()+         _lhsOsem_prod :: PP_Doc+         _lhsOsem_prod = rule406  ()+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule407  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule408  ()+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule409  ()+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule410  ()+         __result_ = T_EProductions_vOut16 _lhsOallvisits _lhsOchildvisit _lhsOcount _lhsOdatatype _lhsOerrors _lhsOfromToStates _lhsOgenProdIO _lhsOimports _lhsOsemFunBndDefs _lhsOsemFunBndTps _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_EProductions_s17 v16+   {-# INLINE rule395 #-}+   {-# LINE 344 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule395 = \  (_ :: ()) ->+                           {-# LINE 344 "src-ag/ExecutionPlan2Hs.ag" #-}+                           error "Every nonterminal should have at least 1 production"+                           {-# LINE 3138 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule396 #-}+   rule396 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule397 #-}+   rule397 = \  (_ :: ()) ->+     0+   {-# INLINE rule398 #-}+   rule398 = \  (_ :: ()) ->+     []+   {-# INLINE rule399 #-}+   rule399 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule400 #-}+   rule400 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule401 #-}+   rule401 = \  (_ :: ()) ->+     return ()+   {-# INLINE rule402 #-}+   rule402 = \  (_ :: ()) ->+     []+   {-# INLINE rule403 #-}+   rule403 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule404 #-}+   rule404 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule405 #-}+   rule405 = \  (_ :: ()) ->+     empty+   {-# INLINE rule406 #-}+   rule406 = \  (_ :: ()) ->+     empty+   {-# INLINE rule407 #-}+   rule407 = \  (_ :: ()) ->+     empty+   {-# INLINE rule408 #-}+   rule408 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule409 #-}+   rule409 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule410 #-}+   rule410 = \  (_ :: ()) ->+     Map.empty++-- ERule -------------------------------------------------------+-- wrapper+data Inh_ERule  = Inh_ERule { allInhmap_Inh_ERule :: (Map NontermIdent Attributes), allSynmap_Inh_ERule :: (Map NontermIdent Attributes), childTypes_Inh_ERule :: (Map Identifier Type), con_Inh_ERule :: (ConstructorIdent), importBlocks_Inh_ERule :: (PP_Doc), inhmap_Inh_ERule :: (Attributes), lazyIntras_Inh_ERule :: (Set String), localAttrTypes_Inh_ERule :: (Map Identifier Type), mainFile_Inh_ERule :: (String), mainName_Inh_ERule :: (String), moduleHeader_Inh_ERule :: (String -> String -> String -> Bool -> String), nt_Inh_ERule :: (NontermIdent), options_Inh_ERule :: (Options), pragmaBlocks_Inh_ERule :: (String), ruleKinds_Inh_ERule :: (Map Identifier (Set VisitKind)), synmap_Inh_ERule :: (Attributes), textBlocks_Inh_ERule :: (PP_Doc), usageInfo_Inh_ERule :: (Map Identifier Int) }+data Syn_ERule  = Syn_ERule { errors_Syn_ERule :: (Seq Error), mrules_Syn_ERule :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), ruledefs_Syn_ERule :: (Map Identifier (Set String)), ruleuses_Syn_ERule :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERule :: (PP_Doc), usedArgs_Syn_ERule :: (Set String) }+{-# INLINABLE wrap_ERule #-}+wrap_ERule :: T_ERule  -> Inh_ERule  -> (Syn_ERule )+wrap_ERule (T_ERule act) (Inh_ERule _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg19 = T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo+        (T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs) <- return (inv_ERule_s20 sem arg19)+        return (Syn_ERule _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs)+   )++-- cata+{-# INLINE sem_ERule #-}+sem_ERule :: ERule  -> T_ERule +sem_ERule ( ERule name_ pattern_ rhs_ owrt_ origin_ explicit_ pure_ mbError_ ) = sem_ERule_ERule name_ ( sem_Pattern pattern_ ) ( sem_Expression rhs_ ) owrt_ origin_ explicit_ pure_ mbError_++-- semantic domain+newtype T_ERule  = T_ERule {+                           attach_T_ERule :: Identity (T_ERule_s20 )+                           }+newtype T_ERule_s20  = C_ERule_s20 {+                                   inv_ERule_s20 :: (T_ERule_v19 )+                                   }+data T_ERule_s21  = C_ERule_s21+type T_ERule_v19  = (T_ERule_vIn19 ) -> (T_ERule_vOut19 )+data T_ERule_vIn19  = T_ERule_vIn19 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (PP_Doc) (Attributes) (Set String) (Map Identifier Type) (String) (String) (String -> String -> String -> Bool -> String) (NontermIdent) (Options) (String) (Map Identifier (Set VisitKind)) (Attributes) (PP_Doc) (Map Identifier Int)+data T_ERule_vOut19  = T_ERule_vOut19 (Seq Error) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc) (Set String)+{-# NOINLINE sem_ERule_ERule #-}+sem_ERule_ERule :: (Identifier) -> T_Pattern  -> T_Expression  -> (Bool) -> (String) -> (Bool) -> (Bool) -> (Maybe Error) -> T_ERule +sem_ERule_ERule arg_name_ arg_pattern_ arg_rhs_ _ _ arg_explicit_ arg_pure_ arg_mbError_ = T_ERule (return st20) where+   {-# NOINLINE st20 #-}+   st20 = let+      v19 :: T_ERule_v19 +      v19 = \ (T_ERule_vIn19 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let+         _patternX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pattern_))+         _rhsX29 = Control.Monad.Identity.runIdentity (attach_T_Expression (arg_rhs_))+         (T_Pattern_vOut40 _patternIattrTypes _patternIattrs _patternIcopy _patternIisUnderscore _patternIsem_lhs) = inv_Pattern_s41 _patternX41 (T_Pattern_vIn40 _patternOallInhmap _patternOallSynmap _patternOanyLazyKind _patternOinhmap _patternOlocalAttrTypes _patternOoptions _patternOsynmap)+         (T_Expression_vOut28 _rhsIattrs _rhsIpos _rhsIsemfunc _rhsItks) = inv_Expression_s29 _rhsX29 (T_Expression_vIn28 _rhsOoptions)+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule411 _usedArgs_augmented_f1 _usedArgs_augmented_syn+         _usedArgs_augmented_f1 = rule412 _rhsIattrs+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule413 _rulePragma _rulecode _used+         _rulecode = rule414 _endpragma _genpragma _lambda _pragma _rhsIpos _rhsIsemfunc _scc+         _rulePragma = rule415 _lhsIoptions _used arg_explicit_ arg_name_+         _scc = rule416 _lhsIcon _lhsInt _lhsIoptions _rhsIpos arg_explicit_ arg_name_ arg_pure_+         _pragma = rule417 _rhsIpos+         _endpragma = rule418 _lhsImainFile+         _genpragma = rule419 _haspos _lhsIoptions arg_explicit_+         _haspos = rule420 _rhsIpos+         _lambda = rule421 _argPats _lhsIoptions _rhsIattrs arg_name_+         _argPats = rule422 _addbang1 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIlazyIntras _lhsIlocalAttrTypes _lhsIoptions _rhsIattrs+         _argExprs = rule423 _rhsIattrs+         _stepcode = rule424 _argExprs _lhsIoptions _patternIattrTypes _patternIsem_lhs _rhsIattrs arg_name_ arg_pure_+         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)+         _lhsOmrules = rule425 _stepcode arg_name_+         _used = rule426 _lhsIusageInfo arg_name_+         _kinds = rule427 _lhsIruleKinds arg_name_+         _anyLazyKind = rule428 _kinds+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule429 _patternIattrs arg_name_+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule430 _rhsIattrs arg_name_+         _addbang = rule431 _lhsIoptions+         _addbang1 = rule432 _addbang _anyLazyKind+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule433 _used arg_mbError_+         _usedArgs_augmented_syn = rule434  ()+         _patternOallInhmap = rule435 _lhsIallInhmap+         _patternOallSynmap = rule436 _lhsIallSynmap+         _patternOanyLazyKind = rule437 _anyLazyKind+         _patternOinhmap = rule438 _lhsIinhmap+         _patternOlocalAttrTypes = rule439 _lhsIlocalAttrTypes+         _patternOoptions = rule440 _lhsIoptions+         _patternOsynmap = rule441 _lhsIsynmap+         _rhsOoptions = rule442 _lhsIoptions+         __result_ = T_ERule_vOut19 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs+         in __result_ )+     in C_ERule_s20 v19+   {-# INLINE rule411 #-}+   rule411 = \ _usedArgs_augmented_f1 _usedArgs_augmented_syn ->+     foldr ($) _usedArgs_augmented_syn [_usedArgs_augmented_f1]+   {-# INLINE rule412 #-}+   rule412 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->+                        Set.union $ Map.keysSet $ Map.mapKeys (\a -> "arg_" ++ a) $ Map.filter isNothing _rhsIattrs+   {-# INLINE rule413 #-}+   {-# LINE 995 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule413 = \ _rulePragma _rulecode _used ->+                          {-# LINE 995 "src-ag/ExecutionPlan2Hs.ag" #-}+                          if _used     == 0+                          then empty+                          else _rulePragma     >-< _rulecode+                          {-# LINE 3280 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule414 #-}+   {-# LINE 998 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule414 = \ _endpragma _genpragma _lambda _pragma ((_rhsIpos) :: Pos) ((_rhsIsemfunc) :: PP_Doc) _scc ->+                          {-# LINE 998 "src-ag/ExecutionPlan2Hs.ag" #-}+                          ( if _genpragma+                            then _pragma+                            else empty+                          )+                          >-< _lambda     >#< _scc+                          >-< indent ((column _rhsIpos - 2) `max` 2)+                                ( if _genpragma+                                  then _pragma     >-< _rhsIsemfunc >-< _endpragma+                                  else _rhsIsemfunc+                                )+                          {-# LINE 3295 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule415 #-}+   {-# LINE 1010 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule415 = \ ((_lhsIoptions) :: Options) _used explicit_ name_ ->+                           {-# LINE 1010 "src-ag/ExecutionPlan2Hs.ag" #-}+                           ( let reallyInlineStr   = "INLINE"+                                 reallyNoInlineStr = "NOINLINE"+                             in  if noInlinePragmas _lhsIoptions+                                 then empty+                                 else if _used     == 1+                                      then ppPragmaBinding reallyInlineStr name_+                                      else if helpInlining _lhsIoptions+                                           then if not explicit_ && _used     <= reallyOftenUsedThreshold+                                                then ppPragmaBinding "INLINE[1]" name_+                                                else if _used     > ruleInlineThresholdSoft && explicit_+                                                     then if _used     > ruleInlineThresholdHard+                                                          then ppPragmaBinding reallyNoInlineStr name_+                                                          else if aggressiveInlinePragmas _lhsIoptions+                                                               then ppPragmaBinding "NOINLINE[2]" name_+                                                               else ppNoInline name_+                                                     else if aggressiveInlinePragmas _lhsIoptions+                                                          then ppPragmaBinding "NOINLINE[1]" name_+                                                          else ppNoInline name_+                                           else if not explicit_ || _used     <= ruleInlineThresholdSoft+                                                then ppPragmaBinding "NOINLINE[1]" name_+                                                else ppNoInline name_+                               )+                           {-# LINE 3322 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule416 #-}+   {-# LINE 1032 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule416 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_rhsIpos) :: Pos) explicit_ name_ pure_ ->+                           {-# LINE 1032 "src-ag/ExecutionPlan2Hs.ag" #-}+                           if genCostCentres _lhsIoptions && explicit_ && pure_ && not (noPerRuleCostCentres _lhsIoptions)+                           then ppCostCentre (name_ >|< "_" >|< line _rhsIpos >|< "_" >|< _lhsInt >|< "_" >|< _lhsIcon)+                           else empty+                           {-# LINE 3330 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule417 #-}+   {-# LINE 1035 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule417 = \ ((_rhsIpos) :: Pos) ->+                           {-# LINE 1035 "src-ag/ExecutionPlan2Hs.ag" #-}+                           "{-# LINE" >#< show (line _rhsIpos) >#< show (file _rhsIpos) >#< "#-}"+                           {-# LINE 3336 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule418 #-}+   {-# LINE 1036 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule418 = \ ((_lhsImainFile) :: String) ->+                           {-# LINE 1036 "src-ag/ExecutionPlan2Hs.ag" #-}+                           ppWithLineNr (\ln -> "{-# LINE " ++ show (ln+1) ++ " " ++ show _lhsImainFile ++ "#-}")+                           {-# LINE 3342 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule419 #-}+   {-# LINE 1037 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule419 = \ _haspos ((_lhsIoptions) :: Options) explicit_ ->+                           {-# LINE 1037 "src-ag/ExecutionPlan2Hs.ag" #-}+                           genLinePragmas _lhsIoptions && explicit_ && _haspos+                           {-# LINE 3348 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule420 #-}+   {-# LINE 1038 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule420 = \ ((_rhsIpos) :: Pos) ->+                           {-# LINE 1038 "src-ag/ExecutionPlan2Hs.ag" #-}+                           line _rhsIpos > 0 && column _rhsIpos >= 0 && not (null (file _rhsIpos))+                           {-# LINE 3354 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule421 #-}+   {-# LINE 1047 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule421 = \ _argPats ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->+                           {-# LINE 1047 "src-ag/ExecutionPlan2Hs.ag" #-}+                           name_ >#< "=" >#< "\\" >#< _argPats     >#< dummyPat _lhsIoptions (Map.null _rhsIattrs) >#< "->"+                           {-# LINE 3360 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule422 #-}+   {-# LINE 1049 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule422 = \ _addbang1 ((_lhsIallInhmap) :: Map NontermIdent Attributes) ((_lhsIallSynmap) :: Map NontermIdent Attributes) ((_lhsIchildTypes) :: Map Identifier Type) ((_lhsIlazyIntras) :: Set String) ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIoptions) :: Options) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->+                           {-# LINE 1049 "src-ag/ExecutionPlan2Hs.ag" #-}+                           ppSpaced [ let match | str `Set.member` _lhsIlazyIntras = pp str+                                                | otherwise                        = _addbang1     (pp str)+                                      in case mbAttr of+                                           Just (AttrSyn child nm) | child == _LOC && not (noPerStateTypeSigs _lhsIoptions) ->+                                             case Map.lookup nm _lhsIlocalAttrTypes of+                                               Just tp -> pp_parens (pp_parens match >#< "::" >#< ppTp tp)+                                               Nothing -> match+                                           Just attr | not (noPerRuleTypeSigs _lhsIoptions) ->+                                             case lookupAttrType attr _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes of+                                               Just tpDoc -> pp_parens (pp_parens match >#< "::" >#< tpDoc)+                                               Nothing    -> match+                                           _ -> match+                                    | (str,mbAttr) <- Map.assocs _rhsIattrs+                                    ]+                           {-# LINE 3379 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule423 #-}+   {-# LINE 1063 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule423 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) ->+                           {-# LINE 1063 "src-ag/ExecutionPlan2Hs.ag" #-}+                           ppSpaced [ case mbAttr of+                                         Nothing -> "arg_" >|< str+                                         _       -> text str+                                    | (str,mbAttr) <- Map.assocs _rhsIattrs+                                    ]+                           {-# LINE 3389 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule424 #-}+   {-# LINE 1068 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule424 = \ _argExprs ((_lhsIoptions) :: Options) ((_patternIattrTypes) :: PP_Doc) ((_patternIsem_lhs) ::  PP_Doc ) ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ pure_ ->+                           {-# LINE 1068 "src-ag/ExecutionPlan2Hs.ag" #-}+                           \kind fmtMode -> if kind `compatibleRule` pure_+                                            then Right $ let oper | pure_     = "="+                                                                  | otherwise = "<-"+                                                             decl = _patternIsem_lhs >#< oper >#< name_ >#< _argExprs     >#< dummyArg _lhsIoptions (Map.null _rhsIattrs)+                                                             tp   = if pure_ && not (noPerRuleTypeSigs _lhsIoptions)+                                                                    then _patternIattrTypes+                                                                    else empty+                                                         in fmtDecl pure_ fmtMode (tp >-< decl)+                                            else Left $ IncompatibleRuleKind name_ kind+                           {-# LINE 3403 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule425 #-}+   {-# LINE 1078 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule425 = \ _stepcode name_ ->+                           {-# LINE 1078 "src-ag/ExecutionPlan2Hs.ag" #-}+                           Map.singleton name_ _stepcode+                           {-# LINE 3409 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule426 #-}+   {-# LINE 1283 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule426 = \ ((_lhsIusageInfo) :: Map Identifier Int) name_ ->+                                                 {-# LINE 1283 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                 Map.findWithDefault 0 name_ _lhsIusageInfo+                                                 {-# LINE 3415 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule427 #-}+   {-# LINE 1299 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule427 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) name_ ->+                {-# LINE 1299 "src-ag/ExecutionPlan2Hs.ag" #-}+                Map.findWithDefault Set.empty name_ _lhsIruleKinds+                {-# LINE 3421 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule428 #-}+   {-# LINE 1300 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule428 = \ _kinds ->+                      {-# LINE 1300 "src-ag/ExecutionPlan2Hs.ag" #-}+                      Set.fold (\k r -> isLazyKind k || r) False _kinds+                      {-# LINE 3427 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule429 #-}+   {-# LINE 1346 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule429 = \ ((_patternIattrs) :: Set String) name_ ->+                           {-# LINE 1346 "src-ag/ExecutionPlan2Hs.ag" #-}+                           Map.singleton name_ _patternIattrs+                           {-# LINE 3433 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule430 #-}+   {-# LINE 1347 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule430 = \ ((_rhsIattrs) :: Map String (Maybe NonLocalAttr)) name_ ->+                           {-# LINE 1347 "src-ag/ExecutionPlan2Hs.ag" #-}+                           Map.singleton name_ _rhsIattrs+                           {-# LINE 3439 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule431 #-}+   {-# LINE 1549 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule431 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1549 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 3445 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule432 #-}+   {-# LINE 1560 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule432 = \ _addbang _anyLazyKind ->+                                                     {-# LINE 1560 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                     if _anyLazyKind     then id else _addbang+                                                     {-# LINE 3451 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule433 #-}+   {-# LINE 1666 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule433 = \ _used mbError_ ->+                 {-# LINE 1666 "src-ag/ExecutionPlan2Hs.ag" #-}+                 case mbError_ of+                   Just e | _used     > 0 -> Seq.singleton e+                   _                      -> Seq.empty+                 {-# LINE 3459 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule434 #-}+   rule434 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule435 #-}+   rule435 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule436 #-}+   rule436 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule437 #-}+   rule437 = \ _anyLazyKind ->+     _anyLazyKind+   {-# INLINE rule438 #-}+   rule438 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule439 #-}+   rule439 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule440 #-}+   rule440 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule441 #-}+   rule441 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule442 #-}+   rule442 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions++-- ERules ------------------------------------------------------+-- wrapper+data Inh_ERules  = Inh_ERules { allInhmap_Inh_ERules :: (Map NontermIdent Attributes), allSynmap_Inh_ERules :: (Map NontermIdent Attributes), childTypes_Inh_ERules :: (Map Identifier Type), con_Inh_ERules :: (ConstructorIdent), importBlocks_Inh_ERules :: (PP_Doc), inhmap_Inh_ERules :: (Attributes), lazyIntras_Inh_ERules :: (Set String), localAttrTypes_Inh_ERules :: (Map Identifier Type), mainFile_Inh_ERules :: (String), mainName_Inh_ERules :: (String), moduleHeader_Inh_ERules :: (String -> String -> String -> Bool -> String), nt_Inh_ERules :: (NontermIdent), options_Inh_ERules :: (Options), pragmaBlocks_Inh_ERules :: (String), ruleKinds_Inh_ERules :: (Map Identifier (Set VisitKind)), synmap_Inh_ERules :: (Attributes), textBlocks_Inh_ERules :: (PP_Doc), usageInfo_Inh_ERules :: (Map Identifier Int) }+data Syn_ERules  = Syn_ERules { errors_Syn_ERules :: (Seq Error), mrules_Syn_ERules :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), ruledefs_Syn_ERules :: (Map Identifier (Set String)), ruleuses_Syn_ERules :: (Map Identifier (Map String (Maybe NonLocalAttr))), sem_rules_Syn_ERules :: (PP_Doc), usedArgs_Syn_ERules :: (Set String) }+{-# INLINABLE wrap_ERules #-}+wrap_ERules :: T_ERules  -> Inh_ERules  -> (Syn_ERules )+wrap_ERules (T_ERules act) (Inh_ERules _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg22 = T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo+        (T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs) <- return (inv_ERules_s23 sem arg22)+        return (Syn_ERules _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs)+   )++-- cata+{-# NOINLINE sem_ERules #-}+sem_ERules :: ERules  -> T_ERules +sem_ERules list = Prelude.foldr sem_ERules_Cons sem_ERules_Nil (Prelude.map sem_ERule list)++-- semantic domain+newtype T_ERules  = T_ERules {+                             attach_T_ERules :: Identity (T_ERules_s23 )+                             }+newtype T_ERules_s23  = C_ERules_s23 {+                                     inv_ERules_s23 :: (T_ERules_v22 )+                                     }+data T_ERules_s24  = C_ERules_s24+type T_ERules_v22  = (T_ERules_vIn22 ) -> (T_ERules_vOut22 )+data T_ERules_vIn22  = T_ERules_vIn22 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Map Identifier Type) (ConstructorIdent) (PP_Doc) (Attributes) (Set String) (Map Identifier Type) (String) (String) (String -> String -> String -> Bool -> String) (NontermIdent) (Options) (String) (Map Identifier (Set VisitKind)) (Attributes) (PP_Doc) (Map Identifier Int)+data T_ERules_vOut22  = T_ERules_vOut22 (Seq Error) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (PP_Doc) (Set String)+{-# NOINLINE sem_ERules_Cons #-}+sem_ERules_Cons :: T_ERule  -> T_ERules  -> T_ERules +sem_ERules_Cons arg_hd_ arg_tl_ = T_ERules (return st23) where+   {-# NOINLINE st23 #-}+   st23 = let+      v22 :: T_ERules_v22 +      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let+         _hdX20 = Control.Monad.Identity.runIdentity (attach_T_ERule (arg_hd_))+         _tlX23 = Control.Monad.Identity.runIdentity (attach_T_ERules (arg_tl_))+         (T_ERule_vOut19 _hdIerrors _hdImrules _hdIruledefs _hdIruleuses _hdIsem_rules _hdIusedArgs) = inv_ERule_s20 _hdX20 (T_ERule_vIn19 _hdOallInhmap _hdOallSynmap _hdOchildTypes _hdOcon _hdOimportBlocks _hdOinhmap _hdOlazyIntras _hdOlocalAttrTypes _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnt _hdOoptions _hdOpragmaBlocks _hdOruleKinds _hdOsynmap _hdOtextBlocks _hdOusageInfo)+         (T_ERules_vOut22 _tlIerrors _tlImrules _tlIruledefs _tlIruleuses _tlIsem_rules _tlIusedArgs) = inv_ERules_s23 _tlX23 (T_ERules_vIn22 _tlOallInhmap _tlOallSynmap _tlOchildTypes _tlOcon _tlOimportBlocks _tlOinhmap _tlOlazyIntras _tlOlocalAttrTypes _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnt _tlOoptions _tlOpragmaBlocks _tlOruleKinds _tlOsynmap _tlOtextBlocks _tlOusageInfo)+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule443 _hdIerrors _tlIerrors+         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)+         _lhsOmrules = rule444 _hdImrules _tlImrules+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule445 _hdIruledefs _tlIruledefs+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule446 _hdIruleuses _tlIruleuses+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule447 _hdIsem_rules _tlIsem_rules+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule448 _hdIusedArgs _tlIusedArgs+         _hdOallInhmap = rule449 _lhsIallInhmap+         _hdOallSynmap = rule450 _lhsIallSynmap+         _hdOchildTypes = rule451 _lhsIchildTypes+         _hdOcon = rule452 _lhsIcon+         _hdOimportBlocks = rule453 _lhsIimportBlocks+         _hdOinhmap = rule454 _lhsIinhmap+         _hdOlazyIntras = rule455 _lhsIlazyIntras+         _hdOlocalAttrTypes = rule456 _lhsIlocalAttrTypes+         _hdOmainFile = rule457 _lhsImainFile+         _hdOmainName = rule458 _lhsImainName+         _hdOmoduleHeader = rule459 _lhsImoduleHeader+         _hdOnt = rule460 _lhsInt+         _hdOoptions = rule461 _lhsIoptions+         _hdOpragmaBlocks = rule462 _lhsIpragmaBlocks+         _hdOruleKinds = rule463 _lhsIruleKinds+         _hdOsynmap = rule464 _lhsIsynmap+         _hdOtextBlocks = rule465 _lhsItextBlocks+         _hdOusageInfo = rule466 _lhsIusageInfo+         _tlOallInhmap = rule467 _lhsIallInhmap+         _tlOallSynmap = rule468 _lhsIallSynmap+         _tlOchildTypes = rule469 _lhsIchildTypes+         _tlOcon = rule470 _lhsIcon+         _tlOimportBlocks = rule471 _lhsIimportBlocks+         _tlOinhmap = rule472 _lhsIinhmap+         _tlOlazyIntras = rule473 _lhsIlazyIntras+         _tlOlocalAttrTypes = rule474 _lhsIlocalAttrTypes+         _tlOmainFile = rule475 _lhsImainFile+         _tlOmainName = rule476 _lhsImainName+         _tlOmoduleHeader = rule477 _lhsImoduleHeader+         _tlOnt = rule478 _lhsInt+         _tlOoptions = rule479 _lhsIoptions+         _tlOpragmaBlocks = rule480 _lhsIpragmaBlocks+         _tlOruleKinds = rule481 _lhsIruleKinds+         _tlOsynmap = rule482 _lhsIsynmap+         _tlOtextBlocks = rule483 _lhsItextBlocks+         _tlOusageInfo = rule484 _lhsIusageInfo+         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs+         in __result_ )+     in C_ERules_s23 v22+   {-# INLINE rule443 #-}+   rule443 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule444 #-}+   rule444 = \ ((_hdImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ((_tlImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _hdImrules `Map.union` _tlImrules+   {-# INLINE rule445 #-}+   rule445 = \ ((_hdIruledefs) :: Map Identifier (Set String)) ((_tlIruledefs) :: Map Identifier (Set String)) ->+     _hdIruledefs `uwSetUnion` _tlIruledefs+   {-# INLINE rule446 #-}+   rule446 = \ ((_hdIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ((_tlIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _hdIruleuses `uwMapUnion` _tlIruleuses+   {-# INLINE rule447 #-}+   rule447 = \ ((_hdIsem_rules) :: PP_Doc) ((_tlIsem_rules) :: PP_Doc) ->+     _hdIsem_rules >-< _tlIsem_rules+   {-# INLINE rule448 #-}+   rule448 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->+     _hdIusedArgs `Set.union` _tlIusedArgs+   {-# INLINE rule449 #-}+   rule449 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule450 #-}+   rule450 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule451 #-}+   rule451 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule452 #-}+   rule452 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule453 #-}+   rule453 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule454 #-}+   rule454 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule455 #-}+   rule455 = \ ((_lhsIlazyIntras) :: Set String) ->+     _lhsIlazyIntras+   {-# INLINE rule456 #-}+   rule456 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule457 #-}+   rule457 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule458 #-}+   rule458 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule459 #-}+   rule459 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule460 #-}+   rule460 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule461 #-}+   rule461 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule462 #-}+   rule462 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule463 #-}+   rule463 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _lhsIruleKinds+   {-# INLINE rule464 #-}+   rule464 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule465 #-}+   rule465 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule466 #-}+   rule466 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->+     _lhsIusageInfo+   {-# INLINE rule467 #-}+   rule467 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule468 #-}+   rule468 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule469 #-}+   rule469 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule470 #-}+   rule470 = \ ((_lhsIcon) :: ConstructorIdent) ->+     _lhsIcon+   {-# INLINE rule471 #-}+   rule471 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule472 #-}+   rule472 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule473 #-}+   rule473 = \ ((_lhsIlazyIntras) :: Set String) ->+     _lhsIlazyIntras+   {-# INLINE rule474 #-}+   rule474 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule475 #-}+   rule475 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule476 #-}+   rule476 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule477 #-}+   rule477 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule478 #-}+   rule478 = \ ((_lhsInt) :: NontermIdent) ->+     _lhsInt+   {-# INLINE rule479 #-}+   rule479 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule480 #-}+   rule480 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule481 #-}+   rule481 = \ ((_lhsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _lhsIruleKinds+   {-# INLINE rule482 #-}+   rule482 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule483 #-}+   rule483 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks+   {-# INLINE rule484 #-}+   rule484 = \ ((_lhsIusageInfo) :: Map Identifier Int) ->+     _lhsIusageInfo+{-# NOINLINE sem_ERules_Nil #-}+sem_ERules_Nil ::  T_ERules +sem_ERules_Nil  = T_ERules (return st23) where+   {-# NOINLINE st23 #-}+   st23 = let+      v22 :: T_ERules_v22 +      v22 = \ (T_ERules_vIn22 _lhsIallInhmap _lhsIallSynmap _lhsIchildTypes _lhsIcon _lhsIimportBlocks _lhsIinhmap _lhsIlazyIntras _lhsIlocalAttrTypes _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIpragmaBlocks _lhsIruleKinds _lhsIsynmap _lhsItextBlocks _lhsIusageInfo) -> ( let+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule485  ()+         _lhsOmrules :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)+         _lhsOmrules = rule486  ()+         _lhsOruledefs :: Map Identifier (Set String)+         _lhsOruledefs = rule487  ()+         _lhsOruleuses :: Map Identifier (Map String (Maybe NonLocalAttr))+         _lhsOruleuses = rule488  ()+         _lhsOsem_rules :: PP_Doc+         _lhsOsem_rules = rule489  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule490  ()+         __result_ = T_ERules_vOut22 _lhsOerrors _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules _lhsOusedArgs+         in __result_ )+     in C_ERules_s23 v22+   {-# INLINE rule485 #-}+   rule485 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule486 #-}+   rule486 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule487 #-}+   rule487 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule488 #-}+   rule488 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule489 #-}+   rule489 = \  (_ :: ()) ->+     empty+   {-# INLINE rule490 #-}+   rule490 = \  (_ :: ()) ->+     Set.empty++-- ExecutionPlan -----------------------------------------------+-- wrapper+data Inh_ExecutionPlan  = Inh_ExecutionPlan { importBlocks_Inh_ExecutionPlan :: (PP_Doc), inhmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), localAttrTypes_Inh_ExecutionPlan :: (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))), mainBlocksDoc_Inh_ExecutionPlan :: (PP_Doc), mainFile_Inh_ExecutionPlan :: (String), mainName_Inh_ExecutionPlan :: (String), moduleHeader_Inh_ExecutionPlan :: (String -> String -> String -> Bool -> String), options_Inh_ExecutionPlan :: (Options), pragmaBlocks_Inh_ExecutionPlan :: (String), synmap_Inh_ExecutionPlan :: (Map NontermIdent Attributes), textBlockMap_Inh_ExecutionPlan :: (Map BlockInfo PP_Doc), textBlocks_Inh_ExecutionPlan :: (PP_Doc) }+data Syn_ExecutionPlan  = Syn_ExecutionPlan { errors_Syn_ExecutionPlan :: (Seq Error), genIO_Syn_ExecutionPlan :: (IO ()), output_Syn_ExecutionPlan :: (PP_Doc) }+{-# INLINABLE wrap_ExecutionPlan #-}+wrap_ExecutionPlan :: T_ExecutionPlan  -> Inh_ExecutionPlan  -> (Syn_ExecutionPlan )+wrap_ExecutionPlan (T_ExecutionPlan act) (Inh_ExecutionPlan _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg25 = T_ExecutionPlan_vIn25 _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks+        (T_ExecutionPlan_vOut25 _lhsOerrors _lhsOgenIO _lhsOoutput) <- return (inv_ExecutionPlan_s26 sem arg25)+        return (Syn_ExecutionPlan _lhsOerrors _lhsOgenIO _lhsOoutput)+   )++-- cata+{-# INLINE sem_ExecutionPlan #-}+sem_ExecutionPlan :: ExecutionPlan  -> T_ExecutionPlan +sem_ExecutionPlan ( ExecutionPlan nonts_ typeSyns_ wrappers_ derivings_ ) = sem_ExecutionPlan_ExecutionPlan ( sem_ENonterminals nonts_ ) typeSyns_ wrappers_ derivings_++-- semantic domain+newtype T_ExecutionPlan  = T_ExecutionPlan {+                                           attach_T_ExecutionPlan :: Identity (T_ExecutionPlan_s26 )+                                           }+newtype T_ExecutionPlan_s26  = C_ExecutionPlan_s26 {+                                                   inv_ExecutionPlan_s26 :: (T_ExecutionPlan_v25 )+                                                   }+data T_ExecutionPlan_s27  = C_ExecutionPlan_s27+type T_ExecutionPlan_v25  = (T_ExecutionPlan_vIn25 ) -> (T_ExecutionPlan_vOut25 )+data T_ExecutionPlan_vIn25  = T_ExecutionPlan_vIn25 (PP_Doc) (Map NontermIdent Attributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) (PP_Doc) (String) (String) (String -> String -> String -> Bool -> String) (Options) (String) (Map NontermIdent Attributes) (Map BlockInfo PP_Doc) (PP_Doc)+data T_ExecutionPlan_vOut25  = T_ExecutionPlan_vOut25 (Seq Error) (IO ()) (PP_Doc)+{-# NOINLINE sem_ExecutionPlan_ExecutionPlan #-}+sem_ExecutionPlan_ExecutionPlan :: T_ENonterminals  -> (TypeSyns) -> (Set NontermIdent) -> (Derivings) -> T_ExecutionPlan +sem_ExecutionPlan_ExecutionPlan arg_nonts_ arg_typeSyns_ arg_wrappers_ arg_derivings_ = T_ExecutionPlan (return st26) where+   {-# NOINLINE st26 #-}+   st26 = let+      v25 :: T_ExecutionPlan_v25 +      v25 = \ (T_ExecutionPlan_vIn25 _lhsIimportBlocks _lhsIinhmap _lhsIlocalAttrTypes _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlockMap _lhsItextBlocks) -> ( let+         _nontsX11 = Control.Monad.Identity.runIdentity (attach_T_ENonterminals (arg_nonts_))+         (T_ENonterminals_vOut10 _nontsIappendCommon _nontsIappendMain _nontsIchildvisit _nontsIerrors _nontsIfromToStates _nontsIgenProdIO _nontsIimports _nontsIinitStates _nontsIoutput _nontsIsemFunBndDefs _nontsIsemFunBndTps _nontsIvisitKinds _nontsIvisitdefs _nontsIvisituses) = inv_ENonterminals_s11 _nontsX11 (T_ENonterminals_vIn10 _nontsOallFromToStates _nontsOallInitStates _nontsOallVisitKinds _nontsOallchildvisit _nontsOavisitdefs _nontsOavisituses _nontsOderivings _nontsOimportBlocks _nontsOinhmap _nontsOlocalAttrTypes _nontsOmainFile _nontsOmainName _nontsOmoduleHeader _nontsOoptions _nontsOpragmaBlocks _nontsOsynmap _nontsOtextBlocks _nontsOtypeSyns _nontsOwrappers)+         _lhsOoutput :: PP_Doc+         _lhsOoutput = rule491 _commonExtra _nontsIoutput _wrappersExtra+         _nontsOwrappers = rule492 arg_wrappers_+         _nontsOtypeSyns = rule493 arg_typeSyns_+         _nontsOderivings = rule494 arg_derivings_+         _wrappersExtra = rule495 _lateSemBndDef _lhsIoptions+         _commonExtra = rule496 _lateSemBndTp _lhsIoptions+         _lateSemBndTp = rule497 _lhsImainName _nontsIsemFunBndTps+         _lateSemBndDef = rule498 _lhsImainName _lhsIoptions _nontsIsemFunBndDefs arg_wrappers_+         _nontsOallchildvisit = rule499 _nontsIchildvisit+         _nontsOavisitdefs = rule500 _nontsIvisitdefs+         _nontsOavisituses = rule501 _nontsIvisituses+         _lhsOgenIO :: IO ()+         _lhsOgenIO = rule502 _genCommonModule _genMainModule _nontsIgenProdIO+         _mainModuleFile = rule503 _lhsImainFile+         _ppMonadImports = rule504 _lhsIoptions+         _genMainModule = rule505 _lhsImainBlocksDoc _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIpragmaBlocks _mainModuleFile _nontsIappendMain _nontsIimports _ppMonadImports _wrappersExtra+         _commonFile = rule506 _lhsImainFile+         _genCommonModule = rule507 _commonExtra _commonFile _lhsIimportBlocks _lhsImainName _lhsImoduleHeader _lhsIpragmaBlocks _lhsItextBlocks _nontsIappendCommon _ppMonadImports+         _nontsOallFromToStates = rule508 _nontsIfromToStates+         _nontsOallVisitKinds = rule509 _nontsIvisitKinds+         _nontsOallInitStates = rule510 _nontsIinitStates+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule511 _nontsIerrors+         _nontsOimportBlocks = rule512 _lhsIimportBlocks+         _nontsOinhmap = rule513 _lhsIinhmap+         _nontsOlocalAttrTypes = rule514 _lhsIlocalAttrTypes+         _nontsOmainFile = rule515 _lhsImainFile+         _nontsOmainName = rule516 _lhsImainName+         _nontsOmoduleHeader = rule517 _lhsImoduleHeader+         _nontsOoptions = rule518 _lhsIoptions+         _nontsOpragmaBlocks = rule519 _lhsIpragmaBlocks+         _nontsOsynmap = rule520 _lhsIsynmap+         _nontsOtextBlocks = rule521 _lhsItextBlocks+         __result_ = T_ExecutionPlan_vOut25 _lhsOerrors _lhsOgenIO _lhsOoutput+         in __result_ )+     in C_ExecutionPlan_s26 v25+   {-# INLINE rule491 #-}+   {-# LINE 89 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule491 = \ _commonExtra ((_nontsIoutput) :: PP_Doc) _wrappersExtra ->+                                 {-# LINE 89 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _nontsIoutput >-< _commonExtra     >-< _wrappersExtra+                                 {-# LINE 3828 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule492 #-}+   {-# LINE 95 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule492 = \ wrappers_ ->+                                     {-# LINE 95 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     wrappers_+                                     {-# LINE 3834 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule493 #-}+   {-# LINE 134 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule493 = \ typeSyns_ ->+                                     {-# LINE 134 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     typeSyns_+                                     {-# LINE 3840 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule494 #-}+   {-# LINE 135 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule494 = \ derivings_ ->+                                      {-# LINE 135 "src-ag/ExecutionPlan2Hs.ag" #-}+                                      derivings_+                                      {-# LINE 3846 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule495 #-}+   {-# LINE 542 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule495 = \ _lateSemBndDef ((_lhsIoptions) :: Options) ->+                        {-# LINE 542 "src-ag/ExecutionPlan2Hs.ag" #-}+                        if lateHigherOrderBinding _lhsIoptions+                        then _lateSemBndDef+                        else empty+                        {-# LINE 3854 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule496 #-}+   {-# LINE 545 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule496 = \ _lateSemBndTp ((_lhsIoptions) :: Options) ->+                        {-# LINE 545 "src-ag/ExecutionPlan2Hs.ag" #-}+                        if lateHigherOrderBinding _lhsIoptions+                        then _lateSemBndTp+                        else empty+                        {-# LINE 3862 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule497 #-}+   {-# LINE 548 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule497 = \ ((_lhsImainName) :: String) ((_nontsIsemFunBndTps) :: Seq PP_Doc) ->+                       {-# LINE 548 "src-ag/ExecutionPlan2Hs.ag" #-}+                       "data" >#< lateBindingTypeNm _lhsImainName >#< "=" >#< lateBindingTypeNm _lhsImainName+                        >-< (indent 2 $ pp_block "{" "}" "," $ toList _nontsIsemFunBndTps)+                       {-# LINE 3869 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule498 #-}+   {-# LINE 550 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule498 = \ ((_lhsImainName) :: String) ((_lhsIoptions) :: Options) ((_nontsIsemFunBndDefs) :: Seq PP_Doc) wrappers_ ->+                        {-# LINE 550 "src-ag/ExecutionPlan2Hs.ag" #-}+                        ( if noInlinePragmas _lhsIoptions+                          then empty+                          else if helpInlining _lhsIoptions && Set.size wrappers_ == 1+                               then ppInline $ lateBindingFieldNm _lhsImainName+                               else ppNoInline $ lateBindingFieldNm _lhsImainName+                        )+                        >-< lateBindingFieldNm _lhsImainName >#< "::" >#< lateBindingTypeNm _lhsImainName+                        >-< lateBindingFieldNm _lhsImainName >#< "=" >#< lateBindingTypeNm _lhsImainName+                        >-< (indent 2 $ pp_block "{" "}" "," $ toList _nontsIsemFunBndDefs )+                        {-# LINE 3883 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule499 #-}+   {-# LINE 1227 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule499 = \ ((_nontsIchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+                                          {-# LINE 1227 "src-ag/ExecutionPlan2Hs.ag" #-}+                                          _nontsIchildvisit+                                          {-# LINE 3889 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule500 #-}+   {-# LINE 1371 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule500 = \ ((_nontsIvisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+                                       {-# LINE 1371 "src-ag/ExecutionPlan2Hs.ag" #-}+                                       _nontsIvisitdefs+                                       {-# LINE 3895 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule501 #-}+   {-# LINE 1372 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule501 = \ ((_nontsIvisituses) :: Map VisitIdentifier (Set Identifier)) ->+                                       {-# LINE 1372 "src-ag/ExecutionPlan2Hs.ag" #-}+                                       _nontsIvisituses+                                       {-# LINE 3901 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule502 #-}+   {-# LINE 1443 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule502 = \ _genCommonModule _genMainModule ((_nontsIgenProdIO) :: IO ()) ->+                                          {-# LINE 1443 "src-ag/ExecutionPlan2Hs.ag" #-}+                                          do _genMainModule+                                             _genCommonModule+                                             _nontsIgenProdIO+                                          {-# LINE 3909 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule503 #-}+   {-# LINE 1446 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule503 = \ ((_lhsImainFile) :: String) ->+                                          {-# LINE 1446 "src-ag/ExecutionPlan2Hs.ag" #-}+                                          _lhsImainFile+                                          {-# LINE 3915 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule504 #-}+   {-# LINE 1447 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule504 = \ ((_lhsIoptions) :: Options) ->+                                          {-# LINE 1447 "src-ag/ExecutionPlan2Hs.ag" #-}+                                          ( if tupleAsDummyToken _lhsIoptions+                                            then empty+                                            else pp "import GHC.Prim"+                                          )+                                          >-< if parallelInvoke _lhsIoptions+                                              then pp "import qualified System.IO.Unsafe(unsafePerformIO)"+                                                   >-< pp "import System.IO(IO)"+                                                   >-< pp "import Control.Concurrent(newEmptyMVar,forkIO,putMVar,takeMVar)"+                                              else pp "import Control.Monad.Identity"+                                          {-# LINE 3929 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule505 #-}+   {-# LINE 1456 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule505 = \ ((_lhsImainBlocksDoc) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptions) :: Options) ((_lhsIpragmaBlocks) :: String) _mainModuleFile ((_nontsIappendMain) :: [PP_Doc]) ((_nontsIimports) :: [PP_Doc]) _ppMonadImports _wrappersExtra ->+                                          {-# LINE 1456 "src-ag/ExecutionPlan2Hs.ag" #-}+                                          writeModule _mainModuleFile+                                            ( [ warrenFlagsPP _lhsIoptions+                                              , pp $ _lhsIpragmaBlocks+                                              , pp $ _lhsImoduleHeader _lhsImainName "" "" False+                                              , _ppMonadImports+                                              , pp $ "import " ++ _lhsImainName ++ "_common"+                                              ]+                                              ++ _nontsIimports+                                              ++ [_lhsImainBlocksDoc]+                                              ++ [_wrappersExtra    ]+                                              ++ _nontsIappendMain+                                            )+                                          {-# LINE 3946 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule506 #-}+   {-# LINE 1468 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule506 = \ ((_lhsImainFile) :: String) ->+                                          {-# LINE 1468 "src-ag/ExecutionPlan2Hs.ag" #-}+                                          replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ "_common")+                                          {-# LINE 3952 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule507 #-}+   {-# LINE 1469 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule507 = \ _commonExtra _commonFile ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIpragmaBlocks) :: String) ((_lhsItextBlocks) :: PP_Doc) ((_nontsIappendCommon) :: [PP_Doc]) _ppMonadImports ->+                                          {-# LINE 1469 "src-ag/ExecutionPlan2Hs.ag" #-}+                                          writeModule _commonFile+                                            ( [ pp $ "{-# LANGUAGE Rank2Types, GADTs #-}"+                                              , pp $ _lhsIpragmaBlocks+                                              , pp $ _lhsImoduleHeader _lhsImainName "_common" "" True+                                              , _ppMonadImports+                                              , _lhsIimportBlocks+                                              , _lhsItextBlocks+                                              , _commonExtra+                                              ]+                                              ++ _nontsIappendCommon+                                            )+                                          {-# LINE 3968 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule508 #-}+   {-# LINE 1588 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule508 = \ ((_nontsIfromToStates) :: Map VisitIdentifier (Int,Int)) ->+                            {-# LINE 1588 "src-ag/ExecutionPlan2Hs.ag" #-}+                            _nontsIfromToStates+                            {-# LINE 3974 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule509 #-}+   {-# LINE 1632 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule509 = \ ((_nontsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+                          {-# LINE 1632 "src-ag/ExecutionPlan2Hs.ag" #-}+                          _nontsIvisitKinds+                          {-# LINE 3980 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule510 #-}+   {-# LINE 1646 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule510 = \ ((_nontsIinitStates) :: Map NontermIdent Int) ->+                          {-# LINE 1646 "src-ag/ExecutionPlan2Hs.ag" #-}+                          _nontsIinitStates+                          {-# LINE 3986 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule511 #-}+   rule511 = \ ((_nontsIerrors) :: Seq Error) ->+     _nontsIerrors+   {-# INLINE rule512 #-}+   rule512 = \ ((_lhsIimportBlocks) :: PP_Doc) ->+     _lhsIimportBlocks+   {-# INLINE rule513 #-}+   rule513 = \ ((_lhsIinhmap) :: Map NontermIdent Attributes) ->+     _lhsIinhmap+   {-# INLINE rule514 #-}+   rule514 = \ ((_lhsIlocalAttrTypes) :: Map NontermIdent (Map ConstructorIdent (Map Identifier Type))) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule515 #-}+   rule515 = \ ((_lhsImainFile) :: String) ->+     _lhsImainFile+   {-# INLINE rule516 #-}+   rule516 = \ ((_lhsImainName) :: String) ->+     _lhsImainName+   {-# INLINE rule517 #-}+   rule517 = \ ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ->+     _lhsImoduleHeader+   {-# INLINE rule518 #-}+   rule518 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule519 #-}+   rule519 = \ ((_lhsIpragmaBlocks) :: String) ->+     _lhsIpragmaBlocks+   {-# INLINE rule520 #-}+   rule520 = \ ((_lhsIsynmap) :: Map NontermIdent Attributes) ->+     _lhsIsynmap+   {-# INLINE rule521 #-}+   rule521 = \ ((_lhsItextBlocks) :: PP_Doc) ->+     _lhsItextBlocks++-- Expression --------------------------------------------------+-- wrapper+data Inh_Expression  = Inh_Expression { options_Inh_Expression :: (Options) }+data Syn_Expression  = Syn_Expression { attrs_Syn_Expression :: (Map String (Maybe NonLocalAttr)), pos_Syn_Expression :: (Pos), semfunc_Syn_Expression :: (PP_Doc), tks_Syn_Expression :: ([HsToken]) }+{-# INLINABLE wrap_Expression #-}+wrap_Expression :: T_Expression  -> Inh_Expression  -> (Syn_Expression )+wrap_Expression (T_Expression act) (Inh_Expression _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg28 = T_Expression_vIn28 _lhsIoptions+        (T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks) <- return (inv_Expression_s29 sem arg28)+        return (Syn_Expression _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks)+   )++-- cata+{-# INLINE sem_Expression #-}+sem_Expression :: Expression  -> T_Expression +sem_Expression ( Expression pos_ tks_ ) = sem_Expression_Expression pos_ tks_++-- semantic domain+newtype T_Expression  = T_Expression {+                                     attach_T_Expression :: Identity (T_Expression_s29 )+                                     }+newtype T_Expression_s29  = C_Expression_s29 {+                                             inv_Expression_s29 :: (T_Expression_v28 )+                                             }+data T_Expression_s30  = C_Expression_s30+type T_Expression_v28  = (T_Expression_vIn28 ) -> (T_Expression_vOut28 )+data T_Expression_vIn28  = T_Expression_vIn28 (Options)+data T_Expression_vOut28  = T_Expression_vOut28 (Map String (Maybe NonLocalAttr)) (Pos) (PP_Doc) ([HsToken])+{-# NOINLINE sem_Expression_Expression #-}+sem_Expression_Expression :: (Pos) -> ([HsToken]) -> T_Expression +sem_Expression_Expression arg_pos_ arg_tks_ = T_Expression (return st29) where+   {-# NOINLINE st29 #-}+   st29 = let+      v28 :: T_Expression_v28 +      v28 = \ (T_Expression_vIn28 _lhsIoptions) -> ( let+         _lhsOtks :: [HsToken]+         _lhsOtks = rule522 arg_tks_+         _lhsOpos :: Pos+         _lhsOpos = rule523 arg_pos_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule524 _inhhstoken arg_tks_+         _lhsOsemfunc :: PP_Doc+         _lhsOsemfunc = rule525 _inhhstoken arg_tks_+         _inhhstoken = rule526 _lhsIoptions+         __result_ = T_Expression_vOut28 _lhsOattrs _lhsOpos _lhsOsemfunc _lhsOtks+         in __result_ )+     in C_Expression_s29 v28+   {-# INLINE rule522 #-}+   {-# LINE 1082 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule522 = \ tks_ ->+                           {-# LINE 1082 "src-ag/ExecutionPlan2Hs.ag" #-}+                           tks_+                           {-# LINE 4075 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule523 #-}+   {-# LINE 1125 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule523 = \ pos_ ->+                                        {-# LINE 1125 "src-ag/ExecutionPlan2Hs.ag" #-}+                                        pos_+                                        {-# LINE 4081 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule524 #-}+   {-# LINE 1211 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule524 = \ _inhhstoken tks_ ->+                               {-# LINE 1211 "src-ag/ExecutionPlan2Hs.ag" #-}+                               Map.unions $ map (\tok -> attrs_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_+                               {-# LINE 4087 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule525 #-}+   {-# LINE 1212 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule525 = \ _inhhstoken tks_ ->+                               {-# LINE 1212 "src-ag/ExecutionPlan2Hs.ag" #-}+                               vlist $ showTokens $ map (\tok -> tok_Syn_HsToken (wrap_HsToken (sem_HsToken tok) _inhhstoken    )) tks_+                               {-# LINE 4093 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule526 #-}+   {-# LINE 1213 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule526 = \ ((_lhsIoptions) :: Options) ->+                                  {-# LINE 1213 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  Inh_HsToken _lhsIoptions+                                  {-# LINE 4099 "dist/build/ExecutionPlan2Hs.hs"#-}++-- HsToken -----------------------------------------------------+-- wrapper+data Inh_HsToken  = Inh_HsToken { options_Inh_HsToken :: (Options) }+data Syn_HsToken  = Syn_HsToken { attrs_Syn_HsToken :: (Map String (Maybe NonLocalAttr)), tok_Syn_HsToken :: ((Pos,String)) }+{-# INLINABLE wrap_HsToken #-}+wrap_HsToken :: T_HsToken  -> Inh_HsToken  -> (Syn_HsToken )+wrap_HsToken (T_HsToken act) (Inh_HsToken _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg31 = T_HsToken_vIn31 _lhsIoptions+        (T_HsToken_vOut31 _lhsOattrs _lhsOtok) <- return (inv_HsToken_s32 sem arg31)+        return (Syn_HsToken _lhsOattrs _lhsOtok)+   )++-- cata+{-# NOINLINE sem_HsToken #-}+sem_HsToken :: HsToken  -> T_HsToken +sem_HsToken ( AGLocal var_ pos_ rdesc_ ) = sem_HsToken_AGLocal var_ pos_ rdesc_+sem_HsToken ( AGField field_ attr_ pos_ rdesc_ ) = sem_HsToken_AGField field_ attr_ pos_ rdesc_+sem_HsToken ( HsToken value_ pos_ ) = sem_HsToken_HsToken value_ pos_+sem_HsToken ( CharToken value_ pos_ ) = sem_HsToken_CharToken value_ pos_+sem_HsToken ( StrToken value_ pos_ ) = sem_HsToken_StrToken value_ pos_+sem_HsToken ( Err mesg_ pos_ ) = sem_HsToken_Err mesg_ pos_++-- semantic domain+newtype T_HsToken  = T_HsToken {+                               attach_T_HsToken :: Identity (T_HsToken_s32 )+                               }+newtype T_HsToken_s32  = C_HsToken_s32 {+                                       inv_HsToken_s32 :: (T_HsToken_v31 )+                                       }+data T_HsToken_s33  = C_HsToken_s33+type T_HsToken_v31  = (T_HsToken_vIn31 ) -> (T_HsToken_vOut31 )+data T_HsToken_vIn31  = T_HsToken_vIn31 (Options)+data T_HsToken_vOut31  = T_HsToken_vOut31 (Map String (Maybe NonLocalAttr)) ((Pos,String))+{-# NOINLINE sem_HsToken_AGLocal #-}+sem_HsToken_AGLocal :: (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken +sem_HsToken_AGLocal arg_var_ arg_pos_ _ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule527 arg_var_+         _tok = rule528 arg_pos_ arg_var_+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule529 _tok+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule527 #-}+   {-# LINE 1170 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule527 = \ var_ ->+                              {-# LINE 1170 "src-ag/ExecutionPlan2Hs.ag" #-}+                              Map.singleton (fieldname var_) Nothing+                              {-# LINE 4156 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule528 #-}+   {-# LINE 1416 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule528 = \ pos_ var_ ->+                          {-# LINE 1416 "src-ag/ExecutionPlan2Hs.ag" #-}+                          (pos_,fieldname var_)+                          {-# LINE 4162 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule529 #-}+   rule529 = \ _tok ->+     _tok+{-# NOINLINE sem_HsToken_AGField #-}+sem_HsToken_AGField :: (Identifier) -> (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken +sem_HsToken_AGField arg_field_ arg_attr_ arg_pos_ arg_rdesc_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _mbAttr = rule530 arg_attr_ arg_field_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule531 _lhsIoptions _mbAttr arg_attr_ arg_field_+         _addTrace = rule532 arg_attr_ arg_field_ arg_rdesc_+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule533 _addTrace _lhsIoptions arg_attr_ arg_field_ arg_pos_+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule530 #-}+   {-# LINE 1171 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule530 = \ attr_ field_ ->+                              {-# LINE 1171 "src-ag/ExecutionPlan2Hs.ag" #-}+                              if field_ == _INST || field_ == _FIELD || field_ == _INST'+                              then Nothing+                              else Just $ mkNonLocalAttr (field_ == _LHS) field_ attr_+                              {-# LINE 4189 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule531 #-}+   {-# LINE 1174 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule531 = \ ((_lhsIoptions) :: Options) _mbAttr attr_ field_ ->+                              {-# LINE 1174 "src-ag/ExecutionPlan2Hs.ag" #-}+                              Map.singleton (attrname _lhsIoptions True field_ attr_) _mbAttr+                              {-# LINE 4195 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule532 #-}+   {-# LINE 1420 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule532 = \ attr_ field_ rdesc_ ->+                        {-# LINE 1420 "src-ag/ExecutionPlan2Hs.ag" #-}+                        case rdesc_ of+                          Just d  -> \x -> "(trace " ++ show (d ++ " -> " ++ show field_ ++ "." ++ show attr_) ++ " (" ++ x ++ "))"+                          Nothing -> id+                        {-# LINE 4203 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule533 #-}+   {-# LINE 1423 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule533 = \ _addTrace ((_lhsIoptions) :: Options) attr_ field_ pos_ ->+                   {-# LINE 1423 "src-ag/ExecutionPlan2Hs.ag" #-}+                   (pos_, _addTrace     $ attrname _lhsIoptions True field_ attr_)+                   {-# LINE 4209 "dist/build/ExecutionPlan2Hs.hs"#-}+{-# NOINLINE sem_HsToken_HsToken #-}+sem_HsToken_HsToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_HsToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule534 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule535  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule534 #-}+   {-# LINE 1425 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule534 = \ pos_ value_ ->+                         {-# LINE 1425 "src-ag/ExecutionPlan2Hs.ag" #-}+                         (pos_, value_)+                         {-# LINE 4229 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule535 #-}+   rule535 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_CharToken #-}+sem_HsToken_CharToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_CharToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule536 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule537  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule536 #-}+   {-# LINE 1427 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule536 = \ pos_ value_ ->+                           {-# LINE 1427 "src-ag/ExecutionPlan2Hs.ag" #-}+                           (pos_, if null value_+                                     then ""+                                     else showCharShort (head value_)+                           )+                           {-# LINE 4255 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule537 #-}+   rule537 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_StrToken #-}+sem_HsToken_StrToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_StrToken arg_value_ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule538 arg_pos_ arg_value_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule539  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule538 #-}+   {-# LINE 1432 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule538 = \ pos_ value_ ->+                           {-# LINE 1432 "src-ag/ExecutionPlan2Hs.ag" #-}+                           (pos_, showStrShort value_)+                           {-# LINE 4278 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule539 #-}+   rule539 = \  (_ :: ()) ->+     Map.empty+{-# NOINLINE sem_HsToken_Err #-}+sem_HsToken_Err :: (String) -> (Pos) -> T_HsToken +sem_HsToken_Err _ arg_pos_ = T_HsToken (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_HsToken_v31 +      v31 = \ (T_HsToken_vIn31 _lhsIoptions) -> ( let+         _lhsOtok :: (Pos,String)+         _lhsOtok = rule540 arg_pos_+         _lhsOattrs :: Map String (Maybe NonLocalAttr)+         _lhsOattrs = rule541  ()+         __result_ = T_HsToken_vOut31 _lhsOattrs _lhsOtok+         in __result_ )+     in C_HsToken_s32 v31+   {-# INLINE rule540 #-}+   {-# LINE 1433 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule540 = \ pos_ ->+                           {-# LINE 1433 "src-ag/ExecutionPlan2Hs.ag" #-}+                           (pos_, "")+                           {-# LINE 4301 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule541 #-}+   rule541 = \  (_ :: ()) ->+     Map.empty++-- HsTokens ----------------------------------------------------+-- wrapper+data Inh_HsTokens  = Inh_HsTokens { options_Inh_HsTokens :: (Options) }+data Syn_HsTokens  = Syn_HsTokens { tks_Syn_HsTokens :: ([(Pos,String)]) }+{-# INLINABLE wrap_HsTokens #-}+wrap_HsTokens :: T_HsTokens  -> Inh_HsTokens  -> (Syn_HsTokens )+wrap_HsTokens (T_HsTokens act) (Inh_HsTokens _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg34 = T_HsTokens_vIn34 _lhsIoptions+        (T_HsTokens_vOut34 _lhsOtks) <- return (inv_HsTokens_s35 sem arg34)+        return (Syn_HsTokens _lhsOtks)+   )++-- cata+{-# NOINLINE sem_HsTokens #-}+sem_HsTokens :: HsTokens  -> T_HsTokens +sem_HsTokens list = Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list)++-- semantic domain+newtype T_HsTokens  = T_HsTokens {+                                 attach_T_HsTokens :: Identity (T_HsTokens_s35 )+                                 }+newtype T_HsTokens_s35  = C_HsTokens_s35 {+                                         inv_HsTokens_s35 :: (T_HsTokens_v34 )+                                         }+data T_HsTokens_s36  = C_HsTokens_s36+type T_HsTokens_v34  = (T_HsTokens_vIn34 ) -> (T_HsTokens_vOut34 )+data T_HsTokens_vIn34  = T_HsTokens_vIn34 (Options)+data T_HsTokens_vOut34  = T_HsTokens_vOut34 ([(Pos,String)])+{-# NOINLINE sem_HsTokens_Cons #-}+sem_HsTokens_Cons :: T_HsToken  -> T_HsTokens  -> T_HsTokens +sem_HsTokens_Cons arg_hd_ arg_tl_ = T_HsTokens (return st35) where+   {-# NOINLINE st35 #-}+   st35 = let+      v34 :: T_HsTokens_v34 +      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let+         _hdX32 = Control.Monad.Identity.runIdentity (attach_T_HsToken (arg_hd_))+         _tlX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tl_))+         (T_HsToken_vOut31 _hdIattrs _hdItok) = inv_HsToken_s32 _hdX32 (T_HsToken_vIn31 _hdOoptions)+         (T_HsTokens_vOut34 _tlItks) = inv_HsTokens_s35 _tlX35 (T_HsTokens_vIn34 _tlOoptions)+         _lhsOtks :: [(Pos,String)]+         _lhsOtks = rule542 _hdItok _tlItks+         _hdOoptions = rule543 _lhsIoptions+         _tlOoptions = rule544 _lhsIoptions+         __result_ = T_HsTokens_vOut34 _lhsOtks+         in __result_ )+     in C_HsTokens_s35 v34+   {-# INLINE rule542 #-}+   {-# LINE 1412 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule542 = \ ((_hdItok) :: (Pos,String)) ((_tlItks) :: [(Pos,String)]) ->+                     {-# LINE 1412 "src-ag/ExecutionPlan2Hs.ag" #-}+                     _hdItok : _tlItks+                     {-# LINE 4359 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule543 #-}+   rule543 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule544 #-}+   rule544 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+{-# NOINLINE sem_HsTokens_Nil #-}+sem_HsTokens_Nil ::  T_HsTokens +sem_HsTokens_Nil  = T_HsTokens (return st35) where+   {-# NOINLINE st35 #-}+   st35 = let+      v34 :: T_HsTokens_v34 +      v34 = \ (T_HsTokens_vIn34 _lhsIoptions) -> ( let+         _lhsOtks :: [(Pos,String)]+         _lhsOtks = rule545  ()+         __result_ = T_HsTokens_vOut34 _lhsOtks+         in __result_ )+     in C_HsTokens_s35 v34+   {-# INLINE rule545 #-}+   {-# LINE 1413 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule545 = \  (_ :: ()) ->+                     {-# LINE 1413 "src-ag/ExecutionPlan2Hs.ag" #-}+                     []+                     {-# LINE 4383 "dist/build/ExecutionPlan2Hs.hs"#-}++-- HsTokensRoot ------------------------------------------------+-- wrapper+data Inh_HsTokensRoot  = Inh_HsTokensRoot { options_Inh_HsTokensRoot :: (Options) }+data Syn_HsTokensRoot  = Syn_HsTokensRoot {  }+{-# INLINABLE wrap_HsTokensRoot #-}+wrap_HsTokensRoot :: T_HsTokensRoot  -> Inh_HsTokensRoot  -> (Syn_HsTokensRoot )+wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg37 = T_HsTokensRoot_vIn37 _lhsIoptions+        (T_HsTokensRoot_vOut37 ) <- return (inv_HsTokensRoot_s38 sem arg37)+        return (Syn_HsTokensRoot )+   )++-- cata+{-# INLINE sem_HsTokensRoot #-}+sem_HsTokensRoot :: HsTokensRoot  -> T_HsTokensRoot +sem_HsTokensRoot ( HsTokensRoot tokens_ ) = sem_HsTokensRoot_HsTokensRoot ( sem_HsTokens tokens_ )++-- semantic domain+newtype T_HsTokensRoot  = T_HsTokensRoot {+                                         attach_T_HsTokensRoot :: Identity (T_HsTokensRoot_s38 )+                                         }+newtype T_HsTokensRoot_s38  = C_HsTokensRoot_s38 {+                                                 inv_HsTokensRoot_s38 :: (T_HsTokensRoot_v37 )+                                                 }+data T_HsTokensRoot_s39  = C_HsTokensRoot_s39+type T_HsTokensRoot_v37  = (T_HsTokensRoot_vIn37 ) -> (T_HsTokensRoot_vOut37 )+data T_HsTokensRoot_vIn37  = T_HsTokensRoot_vIn37 (Options)+data T_HsTokensRoot_vOut37  = T_HsTokensRoot_vOut37 +{-# NOINLINE sem_HsTokensRoot_HsTokensRoot #-}+sem_HsTokensRoot_HsTokensRoot :: T_HsTokens  -> T_HsTokensRoot +sem_HsTokensRoot_HsTokensRoot arg_tokens_ = T_HsTokensRoot (return st38) where+   {-# NOINLINE st38 #-}+   st38 = let+      v37 :: T_HsTokensRoot_v37 +      v37 = \ (T_HsTokensRoot_vIn37 _lhsIoptions) -> ( let+         _tokensX35 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tokens_))+         (T_HsTokens_vOut34 _tokensItks) = inv_HsTokens_s35 _tokensX35 (T_HsTokens_vIn34 _tokensOoptions)+         _tokensOoptions = rule546 _lhsIoptions+         __result_ = T_HsTokensRoot_vOut37 +         in __result_ )+     in C_HsTokensRoot_s38 v37+   {-# INLINE rule546 #-}+   rule546 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions++-- Pattern -----------------------------------------------------+-- wrapper+data Inh_Pattern  = Inh_Pattern { allInhmap_Inh_Pattern :: (Map NontermIdent Attributes), allSynmap_Inh_Pattern :: (Map NontermIdent Attributes), anyLazyKind_Inh_Pattern :: (Bool), inhmap_Inh_Pattern :: (Attributes), localAttrTypes_Inh_Pattern :: (Map Identifier Type), options_Inh_Pattern :: (Options), synmap_Inh_Pattern :: (Attributes) }+data Syn_Pattern  = Syn_Pattern { attrTypes_Syn_Pattern :: (PP_Doc), attrs_Syn_Pattern :: (Set String), copy_Syn_Pattern :: (Pattern), isUnderscore_Syn_Pattern :: (Bool), sem_lhs_Syn_Pattern :: ( PP_Doc ) }+{-# INLINABLE wrap_Pattern #-}+wrap_Pattern :: T_Pattern  -> Inh_Pattern  -> (Syn_Pattern )+wrap_Pattern (T_Pattern act) (Inh_Pattern _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg40 = T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap+        (T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs) <- return (inv_Pattern_s41 sem arg40)+        return (Syn_Pattern _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs)+   )++-- cata+{-# NOINLINE sem_Pattern #-}+sem_Pattern :: Pattern  -> T_Pattern +sem_Pattern ( Constr name_ pats_ ) = sem_Pattern_Constr name_ ( sem_Patterns pats_ )+sem_Pattern ( Product pos_ pats_ ) = sem_Pattern_Product pos_ ( sem_Patterns pats_ )+sem_Pattern ( Alias field_ attr_ pat_ ) = sem_Pattern_Alias field_ attr_ ( sem_Pattern pat_ )+sem_Pattern ( Irrefutable pat_ ) = sem_Pattern_Irrefutable ( sem_Pattern pat_ )+sem_Pattern ( Underscore pos_ ) = sem_Pattern_Underscore pos_++-- semantic domain+newtype T_Pattern  = T_Pattern {+                               attach_T_Pattern :: Identity (T_Pattern_s41 )+                               }+newtype T_Pattern_s41  = C_Pattern_s41 {+                                       inv_Pattern_s41 :: (T_Pattern_v40 )+                                       }+data T_Pattern_s42  = C_Pattern_s42+type T_Pattern_v40  = (T_Pattern_vIn40 ) -> (T_Pattern_vOut40 )+data T_Pattern_vIn40  = T_Pattern_vIn40 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)+data T_Pattern_vOut40  = T_Pattern_vOut40 (PP_Doc) (Set String) (Pattern) (Bool) ( PP_Doc )+{-# NOINLINE sem_Pattern_Constr #-}+sem_Pattern_Constr :: (ConstructorIdent) -> T_Patterns  -> T_Pattern +sem_Pattern_Constr arg_name_ arg_pats_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))+         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule547 _addbang1 _patsIsem_lhs arg_name_+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule548  ()+         _addbang = rule549 _lhsIoptions+         _addbang1 = rule550 _addbang _lhsIanyLazyKind+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule551 _patsIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule552 _patsIattrs+         _copy = rule553 _patsIcopy arg_name_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule554 _copy+         _patsOallInhmap = rule555 _lhsIallInhmap+         _patsOallSynmap = rule556 _lhsIallSynmap+         _patsOanyLazyKind = rule557 _lhsIanyLazyKind+         _patsOinhmap = rule558 _lhsIinhmap+         _patsOlocalAttrTypes = rule559 _lhsIlocalAttrTypes+         _patsOoptions = rule560 _lhsIoptions+         _patsOsynmap = rule561 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule547 #-}+   {-# LINE 1139 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule547 = \ _addbang1 ((_patsIsem_lhs) :: [PP_Doc]) name_ ->+                                  {-# LINE 1139 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  _addbang1     $ pp_parens $ name_ >#< hv_sp _patsIsem_lhs+                                  {-# LINE 4503 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule548 #-}+   {-# LINE 1146 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule548 = \  (_ :: ()) ->+                                    {-# LINE 1146 "src-ag/ExecutionPlan2Hs.ag" #-}+                                    False+                                    {-# LINE 4509 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule549 #-}+   {-# LINE 1556 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule549 = \ ((_lhsIoptions) :: Options) ->+                                                     {-# LINE 1556 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                     {-# LINE 4515 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule550 #-}+   {-# LINE 1561 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule550 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->+                                                     {-# LINE 1561 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                     if _lhsIanyLazyKind then id else _addbang+                                                     {-# LINE 4521 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule551 #-}+   rule551 = \ ((_patsIattrTypes) :: PP_Doc) ->+     _patsIattrTypes+   {-# INLINE rule552 #-}+   rule552 = \ ((_patsIattrs) :: Set String) ->+     _patsIattrs+   {-# INLINE rule553 #-}+   rule553 = \ ((_patsIcopy) :: Patterns) name_ ->+     Constr name_ _patsIcopy+   {-# INLINE rule554 #-}+   rule554 = \ _copy ->+     _copy+   {-# INLINE rule555 #-}+   rule555 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule556 #-}+   rule556 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule557 #-}+   rule557 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule558 #-}+   rule558 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule559 #-}+   rule559 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule560 #-}+   rule560 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule561 #-}+   rule561 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Product #-}+sem_Pattern_Product :: (Pos) -> T_Patterns  -> T_Pattern +sem_Pattern_Product arg_pos_ arg_pats_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patsX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))+         (T_Patterns_vOut43 _patsIattrTypes _patsIattrs _patsIcopy _patsIsem_lhs) = inv_Patterns_s44 _patsX44 (T_Patterns_vIn43 _patsOallInhmap _patsOallSynmap _patsOanyLazyKind _patsOinhmap _patsOlocalAttrTypes _patsOoptions _patsOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule562 _addbang1 _patsIsem_lhs+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule563  ()+         _addbang = rule564 _lhsIoptions+         _addbang1 = rule565 _addbang _lhsIanyLazyKind+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule566 _patsIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule567 _patsIattrs+         _copy = rule568 _patsIcopy arg_pos_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule569 _copy+         _patsOallInhmap = rule570 _lhsIallInhmap+         _patsOallSynmap = rule571 _lhsIallSynmap+         _patsOanyLazyKind = rule572 _lhsIanyLazyKind+         _patsOinhmap = rule573 _lhsIinhmap+         _patsOlocalAttrTypes = rule574 _lhsIlocalAttrTypes+         _patsOoptions = rule575 _lhsIoptions+         _patsOsynmap = rule576 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule562 #-}+   {-# LINE 1138 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule562 = \ _addbang1 ((_patsIsem_lhs) :: [PP_Doc]) ->+                                  {-# LINE 1138 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  _addbang1     $ pp_block "(" ")" "," _patsIsem_lhs+                                  {-# LINE 4592 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule563 #-}+   {-# LINE 1147 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule563 = \  (_ :: ()) ->+                                    {-# LINE 1147 "src-ag/ExecutionPlan2Hs.ag" #-}+                                    False+                                    {-# LINE 4598 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule564 #-}+   {-# LINE 1556 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule564 = \ ((_lhsIoptions) :: Options) ->+                                                     {-# LINE 1556 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                     {-# LINE 4604 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule565 #-}+   {-# LINE 1561 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule565 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->+                                                     {-# LINE 1561 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                     if _lhsIanyLazyKind then id else _addbang+                                                     {-# LINE 4610 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule566 #-}+   rule566 = \ ((_patsIattrTypes) :: PP_Doc) ->+     _patsIattrTypes+   {-# INLINE rule567 #-}+   rule567 = \ ((_patsIattrs) :: Set String) ->+     _patsIattrs+   {-# INLINE rule568 #-}+   rule568 = \ ((_patsIcopy) :: Patterns) pos_ ->+     Product pos_ _patsIcopy+   {-# INLINE rule569 #-}+   rule569 = \ _copy ->+     _copy+   {-# INLINE rule570 #-}+   rule570 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule571 #-}+   rule571 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule572 #-}+   rule572 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule573 #-}+   rule573 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule574 #-}+   rule574 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule575 #-}+   rule575 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule576 #-}+   rule576 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Alias #-}+sem_Pattern_Alias :: (Identifier) -> (Identifier) -> T_Pattern  -> T_Pattern +sem_Pattern_Alias arg_field_ arg_attr_ arg_pat_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))+         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)+         _varPat = rule577 _lhsIoptions arg_attr_ arg_field_+         _patExpr = rule578 _patIisUnderscore _patIsem_lhs _varPat+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule579 _addbang1 _patExpr+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule580  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule581 _lhsIoptions _patIattrs arg_attr_ arg_field_+         _mbTp = rule582 _lhsIlocalAttrTypes _lhsIsynmap arg_attr_ arg_field_+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule583 _lhsIoptions _mbTp _patIattrTypes arg_attr_ arg_field_+         _addbang = rule584 _lhsIoptions+         _addbang1 = rule585 _addbang _lhsIanyLazyKind+         _copy = rule586 _patIcopy arg_attr_ arg_field_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule587 _copy+         _patOallInhmap = rule588 _lhsIallInhmap+         _patOallSynmap = rule589 _lhsIallSynmap+         _patOanyLazyKind = rule590 _lhsIanyLazyKind+         _patOinhmap = rule591 _lhsIinhmap+         _patOlocalAttrTypes = rule592 _lhsIlocalAttrTypes+         _patOoptions = rule593 _lhsIoptions+         _patOsynmap = rule594 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule577 #-}+   {-# LINE 1133 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule577 = \ ((_lhsIoptions) :: Options) attr_ field_ ->+                                  {-# LINE 1133 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  text $ attrname _lhsIoptions False field_ attr_+                                  {-# LINE 4684 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule578 #-}+   {-# LINE 1134 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule578 = \ ((_patIisUnderscore) :: Bool) ((_patIsem_lhs) ::  PP_Doc ) _varPat ->+                                  {-# LINE 1134 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  if _patIisUnderscore+                                  then _varPat+                                  else _varPat     >|< "@" >|< _patIsem_lhs+                                  {-# LINE 4692 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule579 #-}+   {-# LINE 1137 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule579 = \ _addbang1 _patExpr ->+                                  {-# LINE 1137 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  _addbang1     _patExpr+                                  {-# LINE 4698 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule580 #-}+   {-# LINE 1148 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule580 = \  (_ :: ()) ->+                                    {-# LINE 1148 "src-ag/ExecutionPlan2Hs.ag" #-}+                                    False+                                    {-# LINE 4704 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule581 #-}+   {-# LINE 1154 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule581 = \ ((_lhsIoptions) :: Options) ((_patIattrs) :: Set String) attr_ field_ ->+                    {-# LINE 1154 "src-ag/ExecutionPlan2Hs.ag" #-}+                    Set.insert (attrname _lhsIoptions False field_ attr_) _patIattrs+                    {-# LINE 4710 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule582 #-}+   {-# LINE 1159 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule582 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ((_lhsIsynmap) :: Attributes) attr_ field_ ->+                    {-# LINE 1159 "src-ag/ExecutionPlan2Hs.ag" #-}+                    if field_ == _LHS+                    then Map.lookup attr_ _lhsIsynmap+                    else if field_ == _LOC+                         then Map.lookup attr_ _lhsIlocalAttrTypes+                         else Nothing+                    {-# LINE 4720 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule583 #-}+   {-# LINE 1164 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule583 = \ ((_lhsIoptions) :: Options) _mbTp ((_patIattrTypes) :: PP_Doc) attr_ field_ ->+                    {-# LINE 1164 "src-ag/ExecutionPlan2Hs.ag" #-}+                    maybe empty (\tp -> (attrname _lhsIoptions False field_ attr_) >#< "::" >#< ppTp tp) _mbTp+                    >-< _patIattrTypes+                    {-# LINE 4727 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule584 #-}+   {-# LINE 1556 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule584 = \ ((_lhsIoptions) :: Options) ->+                                                     {-# LINE 1556 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                     \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                     {-# LINE 4733 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule585 #-}+   {-# LINE 1561 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule585 = \ _addbang ((_lhsIanyLazyKind) :: Bool) ->+                                                     {-# LINE 1561 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                     if _lhsIanyLazyKind then id else _addbang+                                                     {-# LINE 4739 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule586 #-}+   rule586 = \ ((_patIcopy) :: Pattern) attr_ field_ ->+     Alias field_ attr_ _patIcopy+   {-# INLINE rule587 #-}+   rule587 = \ _copy ->+     _copy+   {-# INLINE rule588 #-}+   rule588 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule589 #-}+   rule589 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule590 #-}+   rule590 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule591 #-}+   rule591 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule592 #-}+   rule592 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule593 #-}+   rule593 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule594 #-}+   rule594 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Irrefutable #-}+sem_Pattern_Irrefutable :: T_Pattern  -> T_Pattern +sem_Pattern_Irrefutable arg_pat_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _patX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))+         (T_Pattern_vOut40 _patIattrTypes _patIattrs _patIcopy _patIisUnderscore _patIsem_lhs) = inv_Pattern_s41 _patX41 (T_Pattern_vIn40 _patOallInhmap _patOallSynmap _patOanyLazyKind _patOinhmap _patOlocalAttrTypes _patOoptions _patOsynmap)+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule595 _patIsem_lhs+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule596 _patIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule597 _patIattrs+         _copy = rule598 _patIcopy+         _lhsOcopy :: Pattern+         _lhsOcopy = rule599 _copy+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule600 _patIisUnderscore+         _patOallInhmap = rule601 _lhsIallInhmap+         _patOallSynmap = rule602 _lhsIallSynmap+         _patOanyLazyKind = rule603 _lhsIanyLazyKind+         _patOinhmap = rule604 _lhsIinhmap+         _patOlocalAttrTypes = rule605 _lhsIlocalAttrTypes+         _patOoptions = rule606 _lhsIoptions+         _patOsynmap = rule607 _lhsIsynmap+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule595 #-}+   {-# LINE 1141 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule595 = \ ((_patIsem_lhs) ::  PP_Doc ) ->+                                  {-# LINE 1141 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  text "~" >|< pp_parens _patIsem_lhs+                                  {-# LINE 4802 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule596 #-}+   rule596 = \ ((_patIattrTypes) :: PP_Doc) ->+     _patIattrTypes+   {-# INLINE rule597 #-}+   rule597 = \ ((_patIattrs) :: Set String) ->+     _patIattrs+   {-# INLINE rule598 #-}+   rule598 = \ ((_patIcopy) :: Pattern) ->+     Irrefutable _patIcopy+   {-# INLINE rule599 #-}+   rule599 = \ _copy ->+     _copy+   {-# INLINE rule600 #-}+   rule600 = \ ((_patIisUnderscore) :: Bool) ->+     _patIisUnderscore+   {-# INLINE rule601 #-}+   rule601 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule602 #-}+   rule602 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule603 #-}+   rule603 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule604 #-}+   rule604 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule605 #-}+   rule605 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule606 #-}+   rule606 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule607 #-}+   rule607 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Pattern_Underscore #-}+sem_Pattern_Underscore :: (Pos) -> T_Pattern +sem_Pattern_Underscore arg_pos_ = T_Pattern (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Pattern_v40 +      v40 = \ (T_Pattern_vIn40 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _lhsOsem_lhs ::  PP_Doc +         _lhsOsem_lhs = rule608  ()+         _lhsOisUnderscore :: Bool+         _lhsOisUnderscore = rule609  ()+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule610  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule611  ()+         _copy = rule612 arg_pos_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule613 _copy+         __result_ = T_Pattern_vOut40 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOisUnderscore _lhsOsem_lhs+         in __result_ )+     in C_Pattern_s41 v40+   {-# INLINE rule608 #-}+   {-# LINE 1140 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule608 = \  (_ :: ()) ->+                                  {-# LINE 1140 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  text "_"+                                  {-# LINE 4865 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule609 #-}+   {-# LINE 1149 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule609 = \  (_ :: ()) ->+                                    {-# LINE 1149 "src-ag/ExecutionPlan2Hs.ag" #-}+                                    True+                                    {-# LINE 4871 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule610 #-}+   rule610 = \  (_ :: ()) ->+     empty+   {-# INLINE rule611 #-}+   rule611 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule612 #-}+   rule612 = \ pos_ ->+     Underscore pos_+   {-# INLINE rule613 #-}+   rule613 = \ _copy ->+     _copy++-- Patterns ----------------------------------------------------+-- wrapper+data Inh_Patterns  = Inh_Patterns { allInhmap_Inh_Patterns :: (Map NontermIdent Attributes), allSynmap_Inh_Patterns :: (Map NontermIdent Attributes), anyLazyKind_Inh_Patterns :: (Bool), inhmap_Inh_Patterns :: (Attributes), localAttrTypes_Inh_Patterns :: (Map Identifier Type), options_Inh_Patterns :: (Options), synmap_Inh_Patterns :: (Attributes) }+data Syn_Patterns  = Syn_Patterns { attrTypes_Syn_Patterns :: (PP_Doc), attrs_Syn_Patterns :: (Set String), copy_Syn_Patterns :: (Patterns), sem_lhs_Syn_Patterns :: ([PP_Doc]) }+{-# INLINABLE wrap_Patterns #-}+wrap_Patterns :: T_Patterns  -> Inh_Patterns  -> (Syn_Patterns )+wrap_Patterns (T_Patterns act) (Inh_Patterns _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg43 = T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap+        (T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs) <- return (inv_Patterns_s44 sem arg43)+        return (Syn_Patterns _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs)+   )++-- cata+{-# NOINLINE sem_Patterns #-}+sem_Patterns :: Patterns  -> T_Patterns +sem_Patterns list = Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list)++-- semantic domain+newtype T_Patterns  = T_Patterns {+                                 attach_T_Patterns :: Identity (T_Patterns_s44 )+                                 }+newtype T_Patterns_s44  = C_Patterns_s44 {+                                         inv_Patterns_s44 :: (T_Patterns_v43 )+                                         }+data T_Patterns_s45  = C_Patterns_s45+type T_Patterns_v43  = (T_Patterns_vIn43 ) -> (T_Patterns_vOut43 )+data T_Patterns_vIn43  = T_Patterns_vIn43 (Map NontermIdent Attributes) (Map NontermIdent Attributes) (Bool) (Attributes) (Map Identifier Type) (Options) (Attributes)+data T_Patterns_vOut43  = T_Patterns_vOut43 (PP_Doc) (Set String) (Patterns) ([PP_Doc])+{-# NOINLINE sem_Patterns_Cons #-}+sem_Patterns_Cons :: T_Pattern  -> T_Patterns  -> T_Patterns +sem_Patterns_Cons arg_hd_ arg_tl_ = T_Patterns (return st44) where+   {-# NOINLINE st44 #-}+   st44 = let+      v43 :: T_Patterns_v43 +      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _hdX41 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_hd_))+         _tlX44 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_tl_))+         (T_Pattern_vOut40 _hdIattrTypes _hdIattrs _hdIcopy _hdIisUnderscore _hdIsem_lhs) = inv_Pattern_s41 _hdX41 (T_Pattern_vIn40 _hdOallInhmap _hdOallSynmap _hdOanyLazyKind _hdOinhmap _hdOlocalAttrTypes _hdOoptions _hdOsynmap)+         (T_Patterns_vOut43 _tlIattrTypes _tlIattrs _tlIcopy _tlIsem_lhs) = inv_Patterns_s44 _tlX44 (T_Patterns_vIn43 _tlOallInhmap _tlOallSynmap _tlOanyLazyKind _tlOinhmap _tlOlocalAttrTypes _tlOoptions _tlOsynmap)+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule614 _hdIattrTypes _tlIattrTypes+         _lhsOattrs :: Set String+         _lhsOattrs = rule615 _hdIattrs _tlIattrs+         _lhsOsem_lhs :: [PP_Doc]+         _lhsOsem_lhs = rule616 _hdIsem_lhs _tlIsem_lhs+         _copy = rule617 _hdIcopy _tlIcopy+         _lhsOcopy :: Patterns+         _lhsOcopy = rule618 _copy+         _hdOallInhmap = rule619 _lhsIallInhmap+         _hdOallSynmap = rule620 _lhsIallSynmap+         _hdOanyLazyKind = rule621 _lhsIanyLazyKind+         _hdOinhmap = rule622 _lhsIinhmap+         _hdOlocalAttrTypes = rule623 _lhsIlocalAttrTypes+         _hdOoptions = rule624 _lhsIoptions+         _hdOsynmap = rule625 _lhsIsynmap+         _tlOallInhmap = rule626 _lhsIallInhmap+         _tlOallSynmap = rule627 _lhsIallSynmap+         _tlOanyLazyKind = rule628 _lhsIanyLazyKind+         _tlOinhmap = rule629 _lhsIinhmap+         _tlOlocalAttrTypes = rule630 _lhsIlocalAttrTypes+         _tlOoptions = rule631 _lhsIoptions+         _tlOsynmap = rule632 _lhsIsynmap+         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs+         in __result_ )+     in C_Patterns_s44 v43+   {-# INLINE rule614 #-}+   rule614 = \ ((_hdIattrTypes) :: PP_Doc) ((_tlIattrTypes) :: PP_Doc) ->+     _hdIattrTypes >-< _tlIattrTypes+   {-# INLINE rule615 #-}+   rule615 = \ ((_hdIattrs) :: Set String) ((_tlIattrs) :: Set String) ->+     _hdIattrs `Set.union` _tlIattrs+   {-# INLINE rule616 #-}+   rule616 = \ ((_hdIsem_lhs) ::  PP_Doc ) ((_tlIsem_lhs) :: [PP_Doc]) ->+     _hdIsem_lhs : _tlIsem_lhs+   {-# INLINE rule617 #-}+   rule617 = \ ((_hdIcopy) :: Pattern) ((_tlIcopy) :: Patterns) ->+     (:) _hdIcopy _tlIcopy+   {-# INLINE rule618 #-}+   rule618 = \ _copy ->+     _copy+   {-# INLINE rule619 #-}+   rule619 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule620 #-}+   rule620 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule621 #-}+   rule621 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule622 #-}+   rule622 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule623 #-}+   rule623 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule624 #-}+   rule624 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule625 #-}+   rule625 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+   {-# INLINE rule626 #-}+   rule626 = \ ((_lhsIallInhmap) :: Map NontermIdent Attributes) ->+     _lhsIallInhmap+   {-# INLINE rule627 #-}+   rule627 = \ ((_lhsIallSynmap) :: Map NontermIdent Attributes) ->+     _lhsIallSynmap+   {-# INLINE rule628 #-}+   rule628 = \ ((_lhsIanyLazyKind) :: Bool) ->+     _lhsIanyLazyKind+   {-# INLINE rule629 #-}+   rule629 = \ ((_lhsIinhmap) :: Attributes) ->+     _lhsIinhmap+   {-# INLINE rule630 #-}+   rule630 = \ ((_lhsIlocalAttrTypes) :: Map Identifier Type) ->+     _lhsIlocalAttrTypes+   {-# INLINE rule631 #-}+   rule631 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule632 #-}+   rule632 = \ ((_lhsIsynmap) :: Attributes) ->+     _lhsIsynmap+{-# NOINLINE sem_Patterns_Nil #-}+sem_Patterns_Nil ::  T_Patterns +sem_Patterns_Nil  = T_Patterns (return st44) where+   {-# NOINLINE st44 #-}+   st44 = let+      v43 :: T_Patterns_v43 +      v43 = \ (T_Patterns_vIn43 _lhsIallInhmap _lhsIallSynmap _lhsIanyLazyKind _lhsIinhmap _lhsIlocalAttrTypes _lhsIoptions _lhsIsynmap) -> ( let+         _lhsOattrTypes :: PP_Doc+         _lhsOattrTypes = rule633  ()+         _lhsOattrs :: Set String+         _lhsOattrs = rule634  ()+         _lhsOsem_lhs :: [PP_Doc]+         _lhsOsem_lhs = rule635  ()+         _copy = rule636  ()+         _lhsOcopy :: Patterns+         _lhsOcopy = rule637 _copy+         __result_ = T_Patterns_vOut43 _lhsOattrTypes _lhsOattrs _lhsOcopy _lhsOsem_lhs+         in __result_ )+     in C_Patterns_s44 v43+   {-# INLINE rule633 #-}+   rule633 = \  (_ :: ()) ->+     empty+   {-# INLINE rule634 #-}+   rule634 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule635 #-}+   rule635 = \  (_ :: ()) ->+     []+   {-# INLINE rule636 #-}+   rule636 = \  (_ :: ()) ->+     []+   {-# INLINE rule637 #-}+   rule637 = \ _copy ->+     _copy++-- Visit -------------------------------------------------------+-- wrapper+data Inh_Visit  = Inh_Visit { allFromToStates_Inh_Visit :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visit :: (Map NontermIdent Attributes), allInitStates_Inh_Visit :: (Map NontermIdent Int), allSynmap_Inh_Visit :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visit :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visit :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allintramap_Inh_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visit :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visit :: (Map Identifier Type), childintros_Inh_Visit :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visit :: (ConstructorIdent), inhmap_Inh_Visit :: (Attributes), mrules_Inh_Visit :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), nextVisits_Inh_Visit :: (Map StateIdentifier StateCtx), nt_Inh_Visit :: (NontermIdent), options_Inh_Visit :: (Options), params_Inh_Visit :: ([Identifier]), prevVisits_Inh_Visit :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visit :: (Map Identifier (Set String)), ruleuses_Inh_Visit :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visit :: (Attributes), terminaldefs_Inh_Visit :: (Set String) }+data Syn_Visit  = Syn_Visit { allvisits_Syn_Visit :: ( VisitStateState ), childvisit_Syn_Visit :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_Visit :: (Seq Error), fromToStates_Syn_Visit :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visit :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visit :: (Set String), ruleKinds_Syn_Visit :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visit :: (Map Identifier Int), sem_visit_Syn_Visit :: (  (StateIdentifier,Bool -> PP_Doc)  ), t_visits_Syn_Visit :: (PP_Doc), usedArgs_Syn_Visit :: (Set String), visitKinds_Syn_Visit :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visit :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visit :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_Visit #-}+wrap_Visit :: T_Visit  -> Inh_Visit  -> (Syn_Visit )+wrap_Visit (T_Visit act) (Inh_Visit _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg46 = T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs+        (T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visit_s47 sem arg46)+        return (Syn_Visit _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)+   )++-- cata+{-# INLINE sem_Visit #-}+sem_Visit :: Visit  -> T_Visit +sem_Visit ( Visit ident_ from_ to_ inh_ syn_ steps_ kind_ ) = sem_Visit_Visit ident_ from_ to_ inh_ syn_ ( sem_VisitSteps steps_ ) kind_++-- semantic domain+newtype T_Visit  = T_Visit {+                           attach_T_Visit :: Identity (T_Visit_s47 )+                           }+newtype T_Visit_s47  = C_Visit_s47 {+                                   inv_Visit_s47 :: (T_Visit_v46 )+                                   }+data T_Visit_s48  = C_Visit_s48+type T_Visit_v46  = (T_Visit_vIn46 ) -> (T_Visit_vOut46 )+data T_Visit_vIn46  = T_Visit_vIn46 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Attributes) (Map NontermIdent Int) (Map NontermIdent Attributes) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (ConstructorIdent) (Attributes) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Map StateIdentifier StateCtx) (NontermIdent) (Options) ([Identifier]) (Map StateIdentifier StateCtx) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Attributes) (Set String)+data T_Visit_vOut46  = T_Visit_vOut46 ( VisitStateState ) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Seq Error) (Map VisitIdentifier (Int,Int)) (Map StateIdentifier (Map String (Maybe NonLocalAttr))) (Set String) (Map Identifier (Set VisitKind)) (Map Identifier Int) (  (StateIdentifier,Bool -> PP_Doc)  ) (PP_Doc) (Set String) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier))+{-# NOINLINE sem_Visit_Visit #-}+sem_Visit_Visit :: (VisitIdentifier) -> (StateIdentifier) -> (StateIdentifier) -> (Set Identifier) -> (Set Identifier) -> T_VisitSteps  -> (VisitKind) -> T_Visit +sem_Visit_Visit arg_ident_ arg_from_ arg_to_ arg_inh_ arg_syn_ arg_steps_ arg_kind_ = T_Visit (return st47) where+   {-# NOINLINE st47 #-}+   st47 = let+      v46 :: T_Visit_v46 +      v46 = \ (T_Visit_vIn46 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIsync_steps _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)+         _lhsOallvisits ::  VisitStateState +         _lhsOallvisits = rule638 arg_from_ arg_ident_ arg_to_+         _nameT_visit = rule639 _lhsInt arg_ident_+         _nameTIn_visit = rule640 _lhsInt arg_ident_+         _nameTOut_visit = rule641 _lhsInt arg_ident_+         _nameTNext_visit = rule642 _lhsInt arg_to_+         _nextVisitInfo = rule643 _lhsInextVisits arg_to_+         _typecon = rule644 _lhsIoptions arg_kind_+         _t_params = rule645 _lhsIparams+         _lhsOt_visits :: PP_Doc+         _lhsOt_visits = rule646 _addbang1 _inhpart _lhsIoptions _nameTIn_visit _nameTNext_visit _nameTOut_visit _nameT_visit _nextVisitInfo _synpart _t_params _typecon+         _inhpart = rule647 _lhsIinhmap _ppTypeList arg_inh_+         _synpart = rule648 _lhsIsynmap _ppTypeList arg_syn_+         _ppTypeList = rule649 _addbang1+         _lhsOsem_visit ::   (StateIdentifier,Bool -> PP_Doc)  +         _lhsOsem_visit = rule650 _addbang _inhpats _lhsIcon _lhsInt _lhsIoptions _nameTIn_visit _nameT_visit _stepsClosing _stepsInitial _stepsIsem_steps _t_params _vname arg_from_ arg_ident_+         _stepsInitial = rule651 arg_kind_+         _stepsClosing = rule652 _addbang _nextStBuild _resultval arg_kind_+         _vname = rule653 arg_ident_+         _inhpats = rule654 _lhsIoptions arg_inh_+         _inhargs = rule655 _lhsIoptions arg_inh_+         _synargs = rule656 _lhsIoptions arg_syn_+         _nextargsMp = rule657 _lhsIallintramap arg_to_+         _nextargs = rule658 _nextargsMp+         _nextst = rule659 _lhsIoptions _nextargs _nextargsMp arg_to_+         _resultval = rule660 _nameTOut_visit _nextStRef _synargs+         (_nextStBuild,_nextStRef) = rule661 _addbang _nextVisitInfo _nextst+         _stepsOkind = rule662 arg_kind_+         _stepsOfmtMode = rule663 arg_kind_+         _stepsOindex = rule664  ()+         _stepsOprevMaxSimRefs = rule665  ()+         _stepsOuseParallel = rule666  ()+         _prevVisitInfo = rule667 _lhsInextVisits arg_from_+         _lhsOchildvisit :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))+         _lhsOchildvisit = rule668 _invokecode arg_ident_+         _invokecode = rule669 _addbang _inhargs _lhsInt _lhsIoptions _nameTIn_visit _nameTOut_visit _nextVisitInfo _prevVisitInfo arg_from_ arg_ident_ arg_kind_ arg_syn_ arg_to_+         _thisintra = rule670 _defsAsMap _nextintra _uses+         _lhsOintramap :: Map StateIdentifier (Map String (Maybe NonLocalAttr))+         _lhsOintramap = rule671 _thisintra arg_from_+         _nextintra = rule672 _lhsIallintramap arg_to_+         _uses = rule673 _lhsIoptions _stepsIuses arg_syn_+         _inhVarNms = rule674 _lhsIoptions arg_inh_+         _defs = rule675 _inhVarNms _lhsIterminaldefs _stepsIdefs+         _defsAsMap = rule676 _defs+         _lhsOvisitdefs :: Map VisitIdentifier (Set Identifier)+         _lhsOvisitdefs = rule677 arg_ident_ arg_syn_+         _lhsOvisituses :: Map VisitIdentifier (Set Identifier)+         _lhsOvisituses = rule678 arg_ident_ arg_inh_+         _lazyIntrasInh = rule679 _inhVarNms _stepsIdefs arg_kind_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule680 _lazyIntrasInh _stepsIlazyIntras+         _addbang = rule681 _lhsIoptions+         _addbang1 = rule682 _addbang arg_kind_+         _lhsOfromToStates :: Map VisitIdentifier (Int,Int)+         _lhsOfromToStates = rule683 arg_from_ arg_ident_ arg_to_+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule684 arg_ident_ arg_kind_+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule685 _stepsIerrors+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule686 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule687 _stepsIruleUsage+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule688 _stepsIusedArgs+         _stepsOallFromToStates = rule689 _lhsIallFromToStates+         _stepsOallInitStates = rule690 _lhsIallInitStates+         _stepsOallVisitKinds = rule691 _lhsIallVisitKinds+         _stepsOallchildvisit = rule692 _lhsIallchildvisit+         _stepsOavisitdefs = rule693 _lhsIavisitdefs+         _stepsOavisituses = rule694 _lhsIavisituses+         _stepsOchildTypes = rule695 _lhsIchildTypes+         _stepsOchildintros = rule696 _lhsIchildintros+         _stepsOmrules = rule697 _lhsImrules+         _stepsOoptions = rule698 _lhsIoptions+         _stepsOruledefs = rule699 _lhsIruledefs+         _stepsOruleuses = rule700 _lhsIruleuses+         __result_ = T_Visit_vOut46 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses+         in __result_ )+     in C_Visit_s47 v46+   {-# INLINE rule638 #-}+   {-# LINE 340 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule638 = \ from_ ident_ to_ ->+                            {-# LINE 340 "src-ag/ExecutionPlan2Hs.ag" #-}+                            (ident_, from_, to_)+                            {-# LINE 5168 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule639 #-}+   {-# LINE 399 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule639 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                                  {-# LINE 399 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  conNmTVisit _lhsInt ident_+                                  {-# LINE 5174 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule640 #-}+   {-# LINE 400 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule640 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                                  {-# LINE 400 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  conNmTVisitIn _lhsInt ident_+                                  {-# LINE 5180 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule641 #-}+   {-# LINE 401 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule641 = \ ((_lhsInt) :: NontermIdent) ident_ ->+                                  {-# LINE 401 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  conNmTVisitOut _lhsInt ident_+                                  {-# LINE 5186 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule642 #-}+   {-# LINE 402 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule642 = \ ((_lhsInt) :: NontermIdent) to_ ->+                                  {-# LINE 402 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  conNmTNextVisit _lhsInt to_+                                  {-# LINE 5192 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule643 #-}+   {-# LINE 404 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule643 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) to_ ->+                                  {-# LINE 404 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  Map.findWithDefault ManyVis to_ _lhsInextVisits+                                  {-# LINE 5198 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule644 #-}+   {-# LINE 405 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule644 = \ ((_lhsIoptions) :: Options) kind_ ->+                                  {-# LINE 405 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  case kind_ of+                                    VisitPure _  -> empty+                                    VisitMonadic -> ppMonadType _lhsIoptions+                                  {-# LINE 5206 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule645 #-}+   {-# LINE 409 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule645 = \ ((_lhsIparams) :: [Identifier]) ->+                            {-# LINE 409 "src-ag/ExecutionPlan2Hs.ag" #-}+                            ppSpaced _lhsIparams+                            {-# LINE 5212 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule646 #-}+   {-# LINE 410 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule646 = \ _addbang1 _inhpart ((_lhsIoptions) :: Options) _nameTIn_visit _nameTNext_visit _nameTOut_visit _nameT_visit _nextVisitInfo _synpart _t_params _typecon ->+                           {-# LINE 410 "src-ag/ExecutionPlan2Hs.ag" #-}+                           "type" >#< _nameT_visit     >#< _t_params     >#< "=" >#<+                             pp_parens (_nameTIn_visit     >#< _t_params    )+                               >#< ( if dummyTokenVisit _lhsIoptions+                                     then "->" >#< dummyType _lhsIoptions True+                                     else empty+                                   )+                               >#< "->" >#< _typecon     >#< pp_parens (_nameTOut_visit     >#< _t_params    )+                           >-< "data" >#< _nameTIn_visit     >#< _t_params     >#< "=" >#< _nameTIn_visit     >#<+                                _inhpart+                           >-< "data" >#< _nameTOut_visit     >#< _t_params     >#< "=" >#< _nameTOut_visit     >#<+                                _synpart     >#< case _nextVisitInfo     of+                                                   NoneVis    -> empty+                                                   _          -> _addbang1     $ pp_parens (_nameTNext_visit     >#< _t_params    )+                           {-# LINE 5230 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule647 #-}+   {-# LINE 423 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule647 = \ ((_lhsIinhmap) :: Attributes) _ppTypeList inh_ ->+                            {-# LINE 423 "src-ag/ExecutionPlan2Hs.ag" #-}+                            _ppTypeList     inh_ _lhsIinhmap+                            {-# LINE 5236 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule648 #-}+   {-# LINE 424 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule648 = \ ((_lhsIsynmap) :: Attributes) _ppTypeList syn_ ->+                            {-# LINE 424 "src-ag/ExecutionPlan2Hs.ag" #-}+                            _ppTypeList     syn_ _lhsIsynmap+                            {-# LINE 5242 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule649 #-}+   {-# LINE 425 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule649 = \ _addbang1 ->+                             {-# LINE 425 "src-ag/ExecutionPlan2Hs.ag" #-}+                             \s m -> ppSpaced $ map (\i -> _addbang1     $ pp_parens $ case Map.lookup i m of+                                                                                        Just tp -> ppTp tp ) $ Set.toList s+                             {-# LINE 5249 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule650 #-}+   {-# LINE 728 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule650 = \ _addbang _inhpats ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTIn_visit _nameT_visit _stepsClosing _stepsInitial ((_stepsIsem_steps) :: PP_Doc) _t_params _vname from_ ident_ ->+                            {-# LINE 728 "src-ag/ExecutionPlan2Hs.ag" #-}+                            ( from_+                            , \addInlinePragma ->+                                 ( if noInlinePragmas _lhsIoptions+                                   then empty+                                   else if addInlinePragma && aggressiveInlinePragmas _lhsIoptions+                                        then ppInline _vname+                                        else if helpInlining _lhsIoptions+                                             then ppNoInline _vname+                                             else empty+                                 )+                                 >-< "v" >|< ident_ >#< "::" >#< _nameT_visit     >#< _t_params+                                 >-< "v" >|< ident_ >#< "=" >#< "\\" >#< (_addbang     $ pp_parens (_nameTIn_visit     >#< _inhpats    ))+                                 >#< ( if dummyTokenVisit _lhsIoptions+                                       then pp $ dummyPat _lhsIoptions True+                                       else empty+                                     )+                                 >#< "->"+                                 >#< ( if genCostCentres _lhsIoptions+                                       then ppCostCentre (_vname     >|< "_" >|< _lhsInt >|< "_" >|< _lhsIcon)+                                       else empty+                                     ) >#< "(" >#< _stepsInitial+                                 >-< indent 3 (_stepsIsem_steps >-< _stepsClosing     >#< ")")+                            )+                            {-# LINE 5277 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule651 #-}+   {-# LINE 753 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule651 = \ kind_ ->+                               {-# LINE 753 "src-ag/ExecutionPlan2Hs.ag" #-}+                               case kind_ of+                                 VisitPure False -> text "let"+                                 VisitPure True  -> empty+                                 VisitMonadic    -> text "do"+                               {-# LINE 5286 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule652 #-}+   {-# LINE 757 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule652 = \ _addbang _nextStBuild _resultval kind_ ->+                                {-# LINE 757 "src-ag/ExecutionPlan2Hs.ag" #-}+                                let decls =  _nextStBuild+                                             >-<  _addbang     (pp resultValName) >#< "=" >#< _resultval+                                in case kind_ of+                                     VisitPure False -> decls+                                                        >-< "in" >#< resultValName+                                     VisitPure True  -> "let" >#< decls+                                                        >-< indent 1 ("in" >#< resultValName)+                                     VisitMonadic    -> "let" >#< decls+                                                        >-< "return" >#< resultValName+                                {-# LINE 5300 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule653 #-}+   {-# LINE 766 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule653 = \ ident_ ->+                            {-# LINE 766 "src-ag/ExecutionPlan2Hs.ag" #-}+                            "v" >|< ident_+                            {-# LINE 5306 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule654 #-}+   {-# LINE 767 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule654 = \ ((_lhsIoptions) :: Options) inh_ ->+                            {-# LINE 767 "src-ag/ExecutionPlan2Hs.ag" #-}+                            ppSpaced $ map (\arg ->                    pp $ attrname _lhsIoptions True _LHS arg) $ Set.toList inh_+                            {-# LINE 5312 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule655 #-}+   {-# LINE 768 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule655 = \ ((_lhsIoptions) :: Options) inh_ ->+                            {-# LINE 768 "src-ag/ExecutionPlan2Hs.ag" #-}+                            \chn -> ppSpaced $ map (attrname _lhsIoptions False chn) $ Set.toList inh_+                            {-# LINE 5318 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule656 #-}+   {-# LINE 769 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule656 = \ ((_lhsIoptions) :: Options) syn_ ->+                            {-# LINE 769 "src-ag/ExecutionPlan2Hs.ag" #-}+                            ppSpaced $ map (\arg -> attrname _lhsIoptions False _LHS arg) $ Set.toList syn_+                            {-# LINE 5324 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule657 #-}+   {-# LINE 770 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule657 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->+                             {-# LINE 770 "src-ag/ExecutionPlan2Hs.ag" #-}+                             maybe Map.empty id $ Map.lookup to_ _lhsIallintramap+                             {-# LINE 5330 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule658 #-}+   {-# LINE 771 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule658 = \ _nextargsMp ->+                            {-# LINE 771 "src-ag/ExecutionPlan2Hs.ag" #-}+                            ppSpaced $ Map.keys $ _nextargsMp+                            {-# LINE 5336 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule659 #-}+   {-# LINE 772 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule659 = \ ((_lhsIoptions) :: Options) _nextargs _nextargsMp to_ ->+                            {-# LINE 772 "src-ag/ExecutionPlan2Hs.ag" #-}+                            "st" >|< to_ >#< _nextargs     >#< dummyArg _lhsIoptions (Map.null _nextargsMp    )+                            {-# LINE 5342 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule660 #-}+   {-# LINE 773 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule660 = \ _nameTOut_visit _nextStRef _synargs ->+                            {-# LINE 773 "src-ag/ExecutionPlan2Hs.ag" #-}+                            _nameTOut_visit     >#< _synargs     >#< _nextStRef+                            {-# LINE 5348 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule661 #-}+   {-# LINE 775 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule661 = \ _addbang _nextVisitInfo _nextst ->+                {-# LINE 775 "src-ag/ExecutionPlan2Hs.ag" #-}+                case _nextVisitInfo     of+                  NoneVis  -> (empty, empty)+                  _        -> (_addbang     (pp nextStName) >#< "=" >#< _nextst    , pp nextStName)+                {-# LINE 5356 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule662 #-}+   {-# LINE 789 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule662 = \ kind_ ->+                                  {-# LINE 789 "src-ag/ExecutionPlan2Hs.ag" #-}+                                  kind_+                                  {-# LINE 5362 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule663 #-}+   {-# LINE 840 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule663 = \ kind_ ->+                    {-# LINE 840 "src-ag/ExecutionPlan2Hs.ag" #-}+                    case kind_ of+                      VisitPure False -> FormatLetDecl+                      VisitPure True  -> FormatLetLine+                      VisitMonadic    -> FormatDo+                    {-# LINE 5371 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule664 #-}+   {-# LINE 889 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule664 = \  (_ :: ()) ->+                                     {-# LINE 889 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     0+                                     {-# LINE 5377 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule665 #-}+   {-# LINE 896 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule665 = \  (_ :: ()) ->+                                              {-# LINE 896 "src-ag/ExecutionPlan2Hs.ag" #-}+                                              0+                                              {-# LINE 5383 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule666 #-}+   {-# LINE 912 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule666 = \  (_ :: ()) ->+                                           {-# LINE 912 "src-ag/ExecutionPlan2Hs.ag" #-}+                                           False+                                           {-# LINE 5389 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule667 #-}+   {-# LINE 1231 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule667 = \ ((_lhsInextVisits) :: Map StateIdentifier StateCtx) from_ ->+                           {-# LINE 1231 "src-ag/ExecutionPlan2Hs.ag" #-}+                           Map.findWithDefault ManyVis from_ _lhsInextVisits+                           {-# LINE 5395 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule668 #-}+   {-# LINE 1232 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule668 = \ _invokecode ident_ ->+                        {-# LINE 1232 "src-ag/ExecutionPlan2Hs.ag" #-}+                        Map.singleton ident_ _invokecode+                        {-# LINE 5401 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule669 #-}+   {-# LINE 1233 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule669 = \ _addbang _inhargs ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) _nameTIn_visit _nameTOut_visit _nextVisitInfo _prevVisitInfo from_ ident_ kind_ syn_ to_ ->+                        {-# LINE 1233 "src-ag/ExecutionPlan2Hs.ag" #-}+                        \chn kind ->+                          if kind `compatibleKind` kind_+                          then Right $+                            let pat | isLazyKind kind_ = pat0+                                    | otherwise        = _addbang     pat0+                                pat0  = pp_parens pat1+                                pat1  = _nameTOut_visit     >#< (ppSpaced $ map (attrname _lhsIoptions True chn) $ Set.toList syn_)+                                                            >#< cont+                                cont  = case _nextVisitInfo     of+                                          NoneVis  -> empty+                                          _        -> ch1+                                ch0   = text $ stname chn from_+                                ch1   = text $ stname chn to_+                                expr  = case (kind, kind_) of+                                          (VisitPure _,  VisitPure _)  -> expr0+                                          (VisitPure _,  VisitMonadic) -> unMon _lhsIoptions >#< expr0+                                          (VisitMonadic, VisitPure _)  -> "return" >#< expr0+                                          (VisitMonadic, VisitMonadic) -> expr0+                                expr0 = case _prevVisitInfo     of+                                          NoneVis  -> error "error: invocation of a visit from a state that has no next visits"+                                          OneVis _ -> "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< ch0 >#< args+                                          ManyVis  -> "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< ch0+                                                      >#< "K_" >|< _lhsInt >|< "_v" >|< ident_ >#< args+                                args  = pp_parens args0 >#< args1+                                args0 = _nameTIn_visit     >#< _inhargs     chn+                                args1 | dummyTokenVisit _lhsIoptions = pp $ dummyArg _lhsIoptions True+                                      | otherwise                    = empty+                            in (pat, expr)+                          else Left $ IncompatibleVisitKind chn ident_ kind kind_+                        {-# LINE 5435 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule670 #-}+   {-# LINE 1329 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule670 = \ _defsAsMap _nextintra _uses ->+                            {-# LINE 1329 "src-ag/ExecutionPlan2Hs.ag" #-}+                            (_uses     `Map.union` _nextintra    ) `Map.difference` _defsAsMap+                            {-# LINE 5441 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule671 #-}+   {-# LINE 1330 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule671 = \ _thisintra from_ ->+                            {-# LINE 1330 "src-ag/ExecutionPlan2Hs.ag" #-}+                            Map.singleton from_ _thisintra+                            {-# LINE 5447 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule672 #-}+   {-# LINE 1331 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule672 = \ ((_lhsIallintramap) :: Map StateIdentifier (Map String (Maybe NonLocalAttr))) to_ ->+                            {-# LINE 1331 "src-ag/ExecutionPlan2Hs.ag" #-}+                            maybe Map.empty id $ Map.lookup to_ _lhsIallintramap+                            {-# LINE 5453 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule673 #-}+   {-# LINE 1332 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule673 = \ ((_lhsIoptions) :: Options) ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) syn_ ->+                            {-# LINE 1332 "src-ag/ExecutionPlan2Hs.ag" #-}+                            let mp1 = _stepsIuses+                                mp2 = Map.fromList [ (lhsname _lhsIoptions False i, Just (AttrSyn _LHS i)) | i <- Set.elems syn_ ]+                            in mp1 `Map.union` mp2+                            {-# LINE 5461 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule674 #-}+   {-# LINE 1335 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule674 = \ ((_lhsIoptions) :: Options) inh_ ->+                            {-# LINE 1335 "src-ag/ExecutionPlan2Hs.ag" #-}+                            Set.map (lhsname _lhsIoptions True) inh_+                            {-# LINE 5467 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule675 #-}+   {-# LINE 1336 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule675 = \ _inhVarNms ((_lhsIterminaldefs) :: Set String) ((_stepsIdefs) :: Set String) ->+                            {-# LINE 1336 "src-ag/ExecutionPlan2Hs.ag" #-}+                            _stepsIdefs `Set.union` _inhVarNms     `Set.union` _lhsIterminaldefs+                            {-# LINE 5473 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule676 #-}+   {-# LINE 1337 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule676 = \ _defs ->+                            {-# LINE 1337 "src-ag/ExecutionPlan2Hs.ag" #-}+                            Map.fromList [ (a, Nothing) | a <- Set.elems _defs     ]+                            {-# LINE 5479 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule677 #-}+   {-# LINE 1361 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule677 = \ ident_ syn_ ->+                            {-# LINE 1361 "src-ag/ExecutionPlan2Hs.ag" #-}+                            Map.singleton ident_ syn_+                            {-# LINE 5485 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule678 #-}+   {-# LINE 1362 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule678 = \ ident_ inh_ ->+                            {-# LINE 1362 "src-ag/ExecutionPlan2Hs.ag" #-}+                            Map.singleton ident_ inh_+                            {-# LINE 5491 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule679 #-}+   {-# LINE 1394 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule679 = \ _inhVarNms ((_stepsIdefs) :: Set String) kind_ ->+                        {-# LINE 1394 "src-ag/ExecutionPlan2Hs.ag" #-}+                        case kind_ of+                          VisitPure False -> _inhVarNms     `Set.union` _stepsIdefs+                          _               -> Set.empty+                        {-# LINE 5499 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule680 #-}+   {-# LINE 1397 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule680 = \ _lazyIntrasInh ((_stepsIlazyIntras) :: Set String) ->+                     {-# LINE 1397 "src-ag/ExecutionPlan2Hs.ag" #-}+                     _lazyIntrasInh     `Set.union` _stepsIlazyIntras+                     {-# LINE 5505 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule681 #-}+   {-# LINE 1550 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule681 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1550 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 5511 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule682 #-}+   {-# LINE 1558 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule682 = \ _addbang kind_ ->+                                                     {-# LINE 1558 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                     if isLazyKind kind_ then id else _addbang+                                                     {-# LINE 5517 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule683 #-}+   {-# LINE 1585 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule683 = \ from_ ident_ to_ ->+                       {-# LINE 1585 "src-ag/ExecutionPlan2Hs.ag" #-}+                       Map.singleton ident_ (from_, to_)+                       {-# LINE 5523 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule684 #-}+   {-# LINE 1629 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule684 = \ ident_ kind_ ->+                     {-# LINE 1629 "src-ag/ExecutionPlan2Hs.ag" #-}+                     Map.singleton ident_ kind_+                     {-# LINE 5529 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule685 #-}+   rule685 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule686 #-}+   rule686 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule687 #-}+   rule687 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule688 #-}+   rule688 = \ ((_stepsIusedArgs) :: Set String) ->+     _stepsIusedArgs+   {-# INLINE rule689 #-}+   rule689 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule690 #-}+   rule690 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule691 #-}+   rule691 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule692 #-}+   rule692 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule693 #-}+   rule693 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule694 #-}+   rule694 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule695 #-}+   rule695 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule696 #-}+   rule696 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule697 #-}+   rule697 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule698 #-}+   rule698 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule699 #-}+   rule699 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule700 #-}+   rule700 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses++-- VisitStep ---------------------------------------------------+-- wrapper+data Inh_VisitStep  = Inh_VisitStep { allFromToStates_Inh_VisitStep :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitStep :: (Map NontermIdent Int), allVisitKinds_Inh_VisitStep :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitStep :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitStep :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitStep :: (Map Identifier Type), childintros_Inh_VisitStep :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), fmtMode_Inh_VisitStep :: (FormatMode), index_Inh_VisitStep :: (Int), isLast_Inh_VisitStep :: (Bool), kind_Inh_VisitStep :: (VisitKind), mrules_Inh_VisitStep :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), options_Inh_VisitStep :: (Options), prevMaxSimRefs_Inh_VisitStep :: (Int), ruledefs_Inh_VisitStep :: (Map Identifier (Set String)), ruleuses_Inh_VisitStep :: (Map Identifier (Map String (Maybe NonLocalAttr))), useParallel_Inh_VisitStep :: (Bool) }+data Syn_VisitStep  = Syn_VisitStep { defs_Syn_VisitStep :: (Set String), errors_Syn_VisitStep :: (Seq Error), index_Syn_VisitStep :: (Int), isLast_Syn_VisitStep :: (Bool), lazyIntras_Syn_VisitStep :: (Set String), prevMaxSimRefs_Syn_VisitStep :: (Int), ruleKinds_Syn_VisitStep :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitStep :: (Map Identifier Int), sem_steps_Syn_VisitStep :: (PP_Doc), sync_steps_Syn_VisitStep :: (PP_Doc), usedArgs_Syn_VisitStep :: (Set String), uses_Syn_VisitStep :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitStep :: (Map VisitIdentifier VisitKind) }+{-# INLINABLE wrap_VisitStep #-}+wrap_VisitStep :: T_VisitStep  -> Inh_VisitStep  -> (Syn_VisitStep )+wrap_VisitStep (T_VisitStep act) (Inh_VisitStep _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg49 = T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel+        (T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds) <- return (inv_VisitStep_s50 sem arg49)+        return (Syn_VisitStep _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds)+   )++-- cata+{-# NOINLINE sem_VisitStep #-}+sem_VisitStep :: VisitStep  -> T_VisitStep +sem_VisitStep ( Sem name_ ) = sem_VisitStep_Sem name_+sem_VisitStep ( ChildVisit child_ nonterm_ visit_ ) = sem_VisitStep_ChildVisit child_ nonterm_ visit_+sem_VisitStep ( PureGroup steps_ ordered_ ) = sem_VisitStep_PureGroup ( sem_VisitSteps steps_ ) ordered_+sem_VisitStep ( Sim steps_ ) = sem_VisitStep_Sim ( sem_VisitSteps steps_ )+sem_VisitStep ( ChildIntro child_ ) = sem_VisitStep_ChildIntro child_++-- semantic domain+newtype T_VisitStep  = T_VisitStep {+                                   attach_T_VisitStep :: Identity (T_VisitStep_s50 )+                                   }+newtype T_VisitStep_s50  = C_VisitStep_s50 {+                                           inv_VisitStep_s50 :: (T_VisitStep_v49 )+                                           }+data T_VisitStep_s51  = C_VisitStep_s51+type T_VisitStep_v49  = (T_VisitStep_vIn49 ) -> (T_VisitStep_vOut49 )+data T_VisitStep_vIn49  = T_VisitStep_vIn49 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (FormatMode) (Int) (Bool) (VisitKind) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Options) (Int) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Bool)+data T_VisitStep_vOut49  = T_VisitStep_vOut49 (Set String) (Seq Error) (Int) (Bool) (Set String) (Int) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (PP_Doc) (Set String) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)+{-# NOINLINE sem_VisitStep_Sem #-}+sem_VisitStep_Sem :: (Identifier) -> T_VisitStep +sem_VisitStep_Sem arg_name_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _ruleItf = rule701 _lhsImrules arg_name_+         _lhsOerrors :: Seq Error+         (_lhsOerrors,_sem_steps) = rule702 _lhsIfmtMode _lhsIkind _ruleItf+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule703 arg_name_+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule704 _lhsIkind arg_name_+         _lhsOdefs :: Set String+         _lhsOdefs = rule705 _lhsIruledefs arg_name_+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule706 _lhsIruleuses arg_name_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule707  ()+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule708 _sem_steps+         _lhsOsync_steps :: PP_Doc+         _lhsOsync_steps = rule709  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule710  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule711  ()+         _lhsOindex :: Int+         _lhsOindex = rule712 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule713 _lhsIisLast+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule714 _lhsIprevMaxSimRefs+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule701 #-}+   {-# LINE 798 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule701 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) name_ ->+                               {-# LINE 798 "src-ag/ExecutionPlan2Hs.ag" #-}+                               Map.findWithDefault (error $ "Rule "  ++ show name_  ++ " not found") name_ _lhsImrules+                               {-# LINE 5655 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule702 #-}+   {-# LINE 799 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule702 = \ ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) _ruleItf ->+                                               {-# LINE 799 "src-ag/ExecutionPlan2Hs.ag" #-}+                                               case _ruleItf     _lhsIkind _lhsIfmtMode of+                                                 Left e     -> (Seq.singleton e, empty)+                                                 Right stmt -> (Seq.empty, stmt)+                                               {-# LINE 5663 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule703 #-}+   {-# LINE 1282 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule703 = \ name_ ->+                                                 {-# LINE 1282 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                 Map.singleton name_ 1+                                                 {-# LINE 5669 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule704 #-}+   {-# LINE 1292 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule704 = \ ((_lhsIkind) :: VisitKind) name_ ->+                    {-# LINE 1292 "src-ag/ExecutionPlan2Hs.ag" #-}+                    Map.singleton name_ (Set.singleton _lhsIkind)+                    {-# LINE 5675 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule705 #-}+   {-# LINE 1377 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule705 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) name_ ->+                            {-# LINE 1377 "src-ag/ExecutionPlan2Hs.ag" #-}+                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruledefs+                            {-# LINE 5681 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule706 #-}+   {-# LINE 1378 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule706 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) name_ ->+                            {-# LINE 1378 "src-ag/ExecutionPlan2Hs.ag" #-}+                            maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruleuses+                            {-# LINE 5687 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule707 #-}+   rule707 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule708 #-}+   rule708 = \ _sem_steps ->+     _sem_steps+   {-# INLINE rule709 #-}+   rule709 = \  (_ :: ()) ->+     empty+   {-# INLINE rule710 #-}+   rule710 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule711 #-}+   rule711 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule712 #-}+   rule712 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule713 #-}+   rule713 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast+   {-# INLINE rule714 #-}+   rule714 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+{-# NOINLINE sem_VisitStep_ChildVisit #-}+sem_VisitStep_ChildVisit :: (Identifier) -> (NontermIdent) -> (VisitIdentifier) -> T_VisitStep +sem_VisitStep_ChildVisit arg_child_ _ arg_visit_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _visitItf = rule715 _lhsIallchildvisit arg_visit_+         _lhsOerrors :: Seq Error+         (_lhsOerrors,_patPP,_exprPP) = rule716 _lhsIkind _visitItf arg_child_+         _useParallel = rule717 _lhsIisLast _lhsIuseParallel+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule718 _addbang _convToMonad _exprPP _lhsIfmtMode _lhsIindex _lhsIkind _patPP _useParallel+         _convToMonad = rule719 _callKind+         _callKind = rule720 _lhsIallVisitKinds arg_visit_+         _lhsOsync_steps :: PP_Doc+         _lhsOsync_steps = rule721 _lhsIindex _patPP _useParallel+         _lhsOdefs :: Set String+         _lhsOdefs = rule722 _lhsIavisitdefs _lhsIoptions _to arg_child_ arg_visit_+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule723 _from _lhsIavisituses _lhsIoptions arg_child_ arg_visit_+         _addbang = rule724 _lhsIoptions+         (_from,_to) = rule725 _lhsIallFromToStates arg_visit_+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule726  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule727  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule728  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule729  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule730  ()+         _lhsOindex :: Int+         _lhsOindex = rule731 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule732 _lhsIisLast+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule733 _lhsIprevMaxSimRefs+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule715 #-}+   {-# LINE 807 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule715 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) visit_ ->+                                {-# LINE 807 "src-ag/ExecutionPlan2Hs.ag" #-}+                                Map.findWithDefault (error $ "Visit " ++ show visit_ ++ " not found") visit_ _lhsIallchildvisit+                                {-# LINE 5759 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule716 #-}+   {-# LINE 808 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule716 = \ ((_lhsIkind) :: VisitKind) _visitItf child_ ->+                                                       {-# LINE 808 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                       case _visitItf     child_ _lhsIkind of+                                                         Left e           -> (Seq.singleton e, empty, empty)+                                                         Right (pat,expr) -> (Seq.empty, pat, expr)+                                                       {-# LINE 5767 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule717 #-}+   {-# LINE 812 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule717 = \ ((_lhsIisLast) :: Bool) ((_lhsIuseParallel) :: Bool) ->+                                   {-# LINE 812 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   _lhsIuseParallel && not _lhsIisLast+                                   {-# LINE 5773 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule718 #-}+   {-# LINE 813 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule718 = \ _addbang _convToMonad _exprPP ((_lhsIfmtMode) :: FormatMode) ((_lhsIindex) :: Int) ((_lhsIkind) :: VisitKind) _patPP _useParallel ->+                                 {-# LINE 813 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 if _useParallel+                                 then _addbang     ("sync_" >|< _lhsIindex) >#< "<- newEmptyMVar"+                                      >-< "forkIO" >#< pp_parens (_convToMonad     >#< pp_parens _exprPP     >#< ">>= \\" >#< _addbang     (pp parResultName) >#< " -> putMVar sync_" >|< _lhsIindex >#< parResultName)+                                 else let decl = case _lhsIkind of+                                                   VisitPure _  -> _patPP     >#< "=" >#< _exprPP+                                                   VisitMonadic -> _patPP     >#< "<-" >#< _exprPP+                                      in fmtDecl False _lhsIfmtMode decl+                                 {-# LINE 5785 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule719 #-}+   {-# LINE 820 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule719 = \ _callKind ->+                                   {-# LINE 820 "src-ag/ExecutionPlan2Hs.ag" #-}+                                   case _callKind     of+                                     VisitPure _  -> text "return"+                                     VisitMonadic -> empty+                                   {-# LINE 5793 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule720 #-}+   {-# LINE 823 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule720 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) visit_ ->+                                 {-# LINE 823 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 Map.findWithDefault (error "visit kind should be in the map") visit_ _lhsIallVisitKinds+                                 {-# LINE 5799 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule721 #-}+   {-# LINE 831 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule721 = \ ((_lhsIindex) :: Int) _patPP _useParallel ->+                     {-# LINE 831 "src-ag/ExecutionPlan2Hs.ag" #-}+                     if _useParallel+                     then _patPP     >#< "<-" >#< "takeMVar sync_" >|< _lhsIindex+                     else empty+                     {-# LINE 5807 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule722 #-}+   {-# LINE 1379 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule722 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) _to child_ visit_ ->+                            {-# LINE 1379 "src-ag/ExecutionPlan2Hs.ag" #-}+                            Set.insert (stname child_ _to) $ maybe (error "Visit not found") (Set.map $ attrname _lhsIoptions True child_) $ Map.lookup visit_ _lhsIavisitdefs+                            {-# LINE 5813 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule723 #-}+   {-# LINE 1380 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule723 = \ _from ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ((_lhsIoptions) :: Options) child_ visit_ ->+                            {-# LINE 1380 "src-ag/ExecutionPlan2Hs.ag" #-}+                            let convert attrs = Map.fromList [ (attrname _lhsIoptions False child_ attr, Just $ mkNonLocalAttr True child_ attr) | attr <- Set.elems attrs ]+                            in Map.insert (stname child_ _from) Nothing $ convert $+                                 maybe (error "Visit not found") id $ Map.lookup visit_ _lhsIavisituses+                            {-# LINE 5821 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule724 #-}+   {-# LINE 1555 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule724 = \ ((_lhsIoptions) :: Options) ->+                                                    {-# LINE 1555 "src-ag/ExecutionPlan2Hs.ag" #-}+                                                    \x -> if bangpats _lhsIoptions then "!" >|< x else x+                                                    {-# LINE 5827 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule725 #-}+   {-# LINE 1591 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule725 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) visit_ ->+                         {-# LINE 1591 "src-ag/ExecutionPlan2Hs.ag" #-}+                         Map.findWithDefault (error "visit not in allFromToStates") visit_ _lhsIallFromToStates+                         {-# LINE 5833 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule726 #-}+   rule726 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule727 #-}+   rule727 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule728 #-}+   rule728 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule729 #-}+   rule729 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule730 #-}+   rule730 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule731 #-}+   rule731 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule732 #-}+   rule732 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast+   {-# INLINE rule733 #-}+   rule733 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+{-# NOINLINE sem_VisitStep_PureGroup #-}+sem_VisitStep_PureGroup :: T_VisitSteps  -> (Bool) -> T_VisitStep +sem_VisitStep_PureGroup arg_steps_ arg_ordered_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIsync_steps _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)+         _stepsOkind = rule734 arg_ordered_+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule735 _lhsIfmtMode _stepsIsem_steps+         _stepsOfmtMode = rule736 _lhsIfmtMode+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule737 _stepsIdefs _stepsIlazyIntras arg_ordered_+         _lhsOdefs :: Set String+         _lhsOdefs = rule738 _stepsIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule739 _stepsIerrors+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule740 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule741 _stepsIruleUsage+         _lhsOsync_steps :: PP_Doc+         _lhsOsync_steps = rule742 _stepsIsync_steps+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule743 _stepsIusedArgs+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule744 _stepsIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule745 _stepsIvisitKinds+         _lhsOindex :: Int+         _lhsOindex = rule746 _stepsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule747 _stepsIisLast+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule748 _stepsIprevMaxSimRefs+         _stepsOallFromToStates = rule749 _lhsIallFromToStates+         _stepsOallInitStates = rule750 _lhsIallInitStates+         _stepsOallVisitKinds = rule751 _lhsIallVisitKinds+         _stepsOallchildvisit = rule752 _lhsIallchildvisit+         _stepsOavisitdefs = rule753 _lhsIavisitdefs+         _stepsOavisituses = rule754 _lhsIavisituses+         _stepsOchildTypes = rule755 _lhsIchildTypes+         _stepsOchildintros = rule756 _lhsIchildintros+         _stepsOindex = rule757 _lhsIindex+         _stepsOmrules = rule758 _lhsImrules+         _stepsOoptions = rule759 _lhsIoptions+         _stepsOprevMaxSimRefs = rule760 _lhsIprevMaxSimRefs+         _stepsOruledefs = rule761 _lhsIruledefs+         _stepsOruleuses = rule762 _lhsIruleuses+         _stepsOuseParallel = rule763 _lhsIuseParallel+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule734 #-}+   {-# LINE 793 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule734 = \ ordered_ ->+                 {-# LINE 793 "src-ag/ExecutionPlan2Hs.ag" #-}+                 VisitPure ordered_+                 {-# LINE 5918 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule735 #-}+   {-# LINE 825 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule735 = \ ((_lhsIfmtMode) :: FormatMode) ((_stepsIsem_steps) :: PP_Doc) ->+                                 {-# LINE 825 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 case _lhsIfmtMode of+                                   FormatDo -> "let" >#< _stepsIsem_steps+                                   _        -> _stepsIsem_steps+                                 {-# LINE 5926 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule736 #-}+   {-# LINE 846 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule736 = \ ((_lhsIfmtMode) :: FormatMode) ->+                    {-# LINE 846 "src-ag/ExecutionPlan2Hs.ag" #-}+                    case _lhsIfmtMode of+                      FormatDo      -> FormatLetDecl+                      mode          -> mode+                    {-# LINE 5934 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule737 #-}+   {-# LINE 1400 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule737 = \ ((_stepsIdefs) :: Set String) ((_stepsIlazyIntras) :: Set String) ordered_ ->+                     {-# LINE 1400 "src-ag/ExecutionPlan2Hs.ag" #-}+                     if ordered_+                     then _stepsIlazyIntras+                     else _stepsIdefs+                     {-# LINE 5942 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule738 #-}+   rule738 = \ ((_stepsIdefs) :: Set String) ->+     _stepsIdefs+   {-# INLINE rule739 #-}+   rule739 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule740 #-}+   rule740 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule741 #-}+   rule741 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule742 #-}+   rule742 = \ ((_stepsIsync_steps) :: PP_Doc) ->+     _stepsIsync_steps+   {-# INLINE rule743 #-}+   rule743 = \ ((_stepsIusedArgs) :: Set String) ->+     _stepsIusedArgs+   {-# INLINE rule744 #-}+   rule744 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->+     _stepsIuses+   {-# INLINE rule745 #-}+   rule745 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _stepsIvisitKinds+   {-# INLINE rule746 #-}+   rule746 = \ ((_stepsIindex) :: Int) ->+     _stepsIindex+   {-# INLINE rule747 #-}+   rule747 = \ ((_stepsIisLast) :: Bool) ->+     _stepsIisLast+   {-# INLINE rule748 #-}+   rule748 = \ ((_stepsIprevMaxSimRefs) :: Int) ->+     _stepsIprevMaxSimRefs+   {-# INLINE rule749 #-}+   rule749 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule750 #-}+   rule750 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule751 #-}+   rule751 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule752 #-}+   rule752 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule753 #-}+   rule753 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule754 #-}+   rule754 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule755 #-}+   rule755 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule756 #-}+   rule756 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule757 #-}+   rule757 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule758 #-}+   rule758 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule759 #-}+   rule759 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule760 #-}+   rule760 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+   {-# INLINE rule761 #-}+   rule761 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule762 #-}+   rule762 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule763 #-}+   rule763 = \ ((_lhsIuseParallel) :: Bool) ->+     _lhsIuseParallel+{-# NOINLINE sem_VisitStep_Sim #-}+sem_VisitStep_Sim :: T_VisitSteps  -> T_VisitStep +sem_VisitStep_Sim arg_steps_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _stepsX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_steps_))+         (T_VisitSteps_vOut52 _stepsIdefs _stepsIerrors _stepsIindex _stepsIisLast _stepsIlazyIntras _stepsIprevMaxSimRefs _stepsIruleKinds _stepsIruleUsage _stepsIsem_steps _stepsIsize _stepsIsync_steps _stepsIusedArgs _stepsIuses _stepsIvisitKinds) = inv_VisitSteps_s53 _stepsX53 (T_VisitSteps_vIn52 _stepsOallFromToStates _stepsOallInitStates _stepsOallVisitKinds _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildTypes _stepsOchildintros _stepsOfmtMode _stepsOindex _stepsOkind _stepsOmrules _stepsOoptions _stepsOprevMaxSimRefs _stepsOruledefs _stepsOruleuses _stepsOuseParallel)+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule764 _stepsIsem_steps _stepsIsync_steps+         _stepsOindex = rule765  ()+         _lhsOindex :: Int+         _lhsOindex = rule766 _lhsIindex+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule767 _lhsIprevMaxSimRefs _stepsIindex _useParallel+         _useParallel = rule768 _isMonadic _lhsIoptions _stepsIsize+         _isMonadic = rule769 _lhsIkind+         _lhsOdefs :: Set String+         _lhsOdefs = rule770 _stepsIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule771 _stepsIerrors+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule772 _stepsIlazyIntras+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule773 _stepsIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule774 _stepsIruleUsage+         _lhsOsync_steps :: PP_Doc+         _lhsOsync_steps = rule775 _stepsIsync_steps+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule776 _stepsIusedArgs+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule777 _stepsIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule778 _stepsIvisitKinds+         _lhsOisLast :: Bool+         _lhsOisLast = rule779 _stepsIisLast+         _stepsOallFromToStates = rule780 _lhsIallFromToStates+         _stepsOallInitStates = rule781 _lhsIallInitStates+         _stepsOallVisitKinds = rule782 _lhsIallVisitKinds+         _stepsOallchildvisit = rule783 _lhsIallchildvisit+         _stepsOavisitdefs = rule784 _lhsIavisitdefs+         _stepsOavisituses = rule785 _lhsIavisituses+         _stepsOchildTypes = rule786 _lhsIchildTypes+         _stepsOchildintros = rule787 _lhsIchildintros+         _stepsOfmtMode = rule788 _lhsIfmtMode+         _stepsOkind = rule789 _lhsIkind+         _stepsOmrules = rule790 _lhsImrules+         _stepsOoptions = rule791 _lhsIoptions+         _stepsOprevMaxSimRefs = rule792 _lhsIprevMaxSimRefs+         _stepsOruledefs = rule793 _lhsIruledefs+         _stepsOruleuses = rule794 _lhsIruleuses+         _stepsOuseParallel = rule795 _useParallel+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule764 #-}+   {-# LINE 824 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule764 = \ ((_stepsIsem_steps) :: PP_Doc) ((_stepsIsync_steps) :: PP_Doc) ->+                                 {-# LINE 824 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 _stepsIsem_steps >-< _stepsIsync_steps+                                 {-# LINE 6083 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule765 #-}+   {-# LINE 890 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule765 = \  (_ :: ()) ->+                                     {-# LINE 890 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     0+                                     {-# LINE 6089 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule766 #-}+   {-# LINE 891 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule766 = \ ((_lhsIindex) :: Int) ->+                                     {-# LINE 891 "src-ag/ExecutionPlan2Hs.ag" #-}+                                     _lhsIindex+                                     {-# LINE 6095 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule767 #-}+   {-# LINE 898 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule767 = \ ((_lhsIprevMaxSimRefs) :: Int) ((_stepsIindex) :: Int) _useParallel ->+                         {-# LINE 898 "src-ag/ExecutionPlan2Hs.ag" #-}+                         if _useParallel+                         then _lhsIprevMaxSimRefs `max` (_stepsIindex - 1)+                         else _lhsIprevMaxSimRefs+                         {-# LINE 6103 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule768 #-}+   {-# LINE 913 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule768 = \ _isMonadic ((_lhsIoptions) :: Options) ((_stepsIsize) :: Int) ->+                                         {-# LINE 913 "src-ag/ExecutionPlan2Hs.ag" #-}+                                         parallelInvoke _lhsIoptions && _stepsIsize > 1 && _isMonadic+                                         {-# LINE 6109 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule769 #-}+   {-# LINE 914 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule769 = \ ((_lhsIkind) :: VisitKind) ->+                                         {-# LINE 914 "src-ag/ExecutionPlan2Hs.ag" #-}+                                         case _lhsIkind of+                                           VisitMonadic -> True+                                           _            -> False+                                         {-# LINE 6117 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule770 #-}+   rule770 = \ ((_stepsIdefs) :: Set String) ->+     _stepsIdefs+   {-# INLINE rule771 #-}+   rule771 = \ ((_stepsIerrors) :: Seq Error) ->+     _stepsIerrors+   {-# INLINE rule772 #-}+   rule772 = \ ((_stepsIlazyIntras) :: Set String) ->+     _stepsIlazyIntras+   {-# INLINE rule773 #-}+   rule773 = \ ((_stepsIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _stepsIruleKinds+   {-# INLINE rule774 #-}+   rule774 = \ ((_stepsIruleUsage) :: Map Identifier Int) ->+     _stepsIruleUsage+   {-# INLINE rule775 #-}+   rule775 = \ ((_stepsIsync_steps) :: PP_Doc) ->+     _stepsIsync_steps+   {-# INLINE rule776 #-}+   rule776 = \ ((_stepsIusedArgs) :: Set String) ->+     _stepsIusedArgs+   {-# INLINE rule777 #-}+   rule777 = \ ((_stepsIuses) :: Map String (Maybe NonLocalAttr)) ->+     _stepsIuses+   {-# INLINE rule778 #-}+   rule778 = \ ((_stepsIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _stepsIvisitKinds+   {-# INLINE rule779 #-}+   rule779 = \ ((_stepsIisLast) :: Bool) ->+     _stepsIisLast+   {-# INLINE rule780 #-}+   rule780 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule781 #-}+   rule781 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule782 #-}+   rule782 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule783 #-}+   rule783 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule784 #-}+   rule784 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule785 #-}+   rule785 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule786 #-}+   rule786 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule787 #-}+   rule787 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule788 #-}+   rule788 = \ ((_lhsIfmtMode) :: FormatMode) ->+     _lhsIfmtMode+   {-# INLINE rule789 #-}+   rule789 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule790 #-}+   rule790 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule791 #-}+   rule791 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule792 #-}+   rule792 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+   {-# INLINE rule793 #-}+   rule793 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule794 #-}+   rule794 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule795 #-}+   rule795 = \ _useParallel ->+     _useParallel+{-# NOINLINE sem_VisitStep_ChildIntro #-}+sem_VisitStep_ChildIntro :: (Identifier) -> T_VisitStep +sem_VisitStep_ChildIntro arg_child_ = T_VisitStep (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_VisitStep_v49 +      v49 = \ (T_VisitStep_vIn49 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIisLast _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _attachItf = rule796 _lhsIchildintros arg_child_+         _lhsOerrors :: Seq Error+         _lhsOsem_steps :: PP_Doc+         _lhsOdefs :: Set String+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         (_lhsOerrors,_lhsOsem_steps,_lhsOdefs,_lhsOuses) = rule797 _attachItf _lhsIfmtMode _lhsIkind+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule798  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule799  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule800  ()+         _lhsOsync_steps :: PP_Doc+         _lhsOsync_steps = rule801  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule802  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule803  ()+         _lhsOindex :: Int+         _lhsOindex = rule804 _lhsIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule805 _lhsIisLast+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule806 _lhsIprevMaxSimRefs+         __result_ = T_VisitStep_vOut49 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitStep_s50 v49+   {-# INLINE rule796 #-}+   {-# LINE 802 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule796 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) child_ ->+                                 {-# LINE 802 "src-ag/ExecutionPlan2Hs.ag" #-}+                                 Map.findWithDefault (error $ "Child " ++ show child_ ++ " not found") child_ _lhsIchildintros+                                 {-# LINE 6235 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule797 #-}+   {-# LINE 804 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule797 = \ _attachItf ((_lhsIfmtMode) :: FormatMode) ((_lhsIkind) :: VisitKind) ->+                     {-# LINE 804 "src-ag/ExecutionPlan2Hs.ag" #-}+                     case _attachItf     _lhsIkind _lhsIfmtMode of+                       Left e                   -> (Seq.singleton e, empty, Set.empty, Map.empty)+                       Right (code, defs, uses) -> (Seq.empty, code, defs, uses)+                     {-# LINE 6243 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule798 #-}+   rule798 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule799 #-}+   rule799 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule800 #-}+   rule800 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule801 #-}+   rule801 = \  (_ :: ()) ->+     empty+   {-# INLINE rule802 #-}+   rule802 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule803 #-}+   rule803 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule804 #-}+   rule804 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule805 #-}+   rule805 = \ ((_lhsIisLast) :: Bool) ->+     _lhsIisLast+   {-# INLINE rule806 #-}+   rule806 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs++-- VisitSteps --------------------------------------------------+-- wrapper+data Inh_VisitSteps  = Inh_VisitSteps { allFromToStates_Inh_VisitSteps :: (Map VisitIdentifier (Int,Int)), allInitStates_Inh_VisitSteps :: (Map NontermIdent Int), allVisitKinds_Inh_VisitSteps :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_VisitSteps :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), avisitdefs_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_VisitSteps :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_VisitSteps :: (Map Identifier Type), childintros_Inh_VisitSteps :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), fmtMode_Inh_VisitSteps :: (FormatMode), index_Inh_VisitSteps :: (Int), kind_Inh_VisitSteps :: (VisitKind), mrules_Inh_VisitSteps :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), options_Inh_VisitSteps :: (Options), prevMaxSimRefs_Inh_VisitSteps :: (Int), ruledefs_Inh_VisitSteps :: (Map Identifier (Set String)), ruleuses_Inh_VisitSteps :: (Map Identifier (Map String (Maybe NonLocalAttr))), useParallel_Inh_VisitSteps :: (Bool) }+data Syn_VisitSteps  = Syn_VisitSteps { defs_Syn_VisitSteps :: (Set String), errors_Syn_VisitSteps :: (Seq Error), index_Syn_VisitSteps :: (Int), isLast_Syn_VisitSteps :: (Bool), lazyIntras_Syn_VisitSteps :: (Set String), prevMaxSimRefs_Syn_VisitSteps :: (Int), ruleKinds_Syn_VisitSteps :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_VisitSteps :: (Map Identifier Int), sem_steps_Syn_VisitSteps :: (PP_Doc), size_Syn_VisitSteps :: (Int), sync_steps_Syn_VisitSteps :: (PP_Doc), usedArgs_Syn_VisitSteps :: (Set String), uses_Syn_VisitSteps :: (Map String (Maybe NonLocalAttr)), visitKinds_Syn_VisitSteps :: (Map VisitIdentifier VisitKind) }+{-# INLINABLE wrap_VisitSteps #-}+wrap_VisitSteps :: T_VisitSteps  -> Inh_VisitSteps  -> (Syn_VisitSteps )+wrap_VisitSteps (T_VisitSteps act) (Inh_VisitSteps _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg52 = T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel+        (T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds) <- return (inv_VisitSteps_s53 sem arg52)+        return (Syn_VisitSteps _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds)+   )++-- cata+{-# NOINLINE sem_VisitSteps #-}+sem_VisitSteps :: VisitSteps  -> T_VisitSteps +sem_VisitSteps list = Prelude.foldr sem_VisitSteps_Cons sem_VisitSteps_Nil (Prelude.map sem_VisitStep list)++-- semantic domain+newtype T_VisitSteps  = T_VisitSteps {+                                     attach_T_VisitSteps :: Identity (T_VisitSteps_s53 )+                                     }+newtype T_VisitSteps_s53  = C_VisitSteps_s53 {+                                             inv_VisitSteps_s53 :: (T_VisitSteps_v52 )+                                             }+data T_VisitSteps_s54  = C_VisitSteps_s54+type T_VisitSteps_v52  = (T_VisitSteps_vIn52 ) -> (T_VisitSteps_vOut52 )+data T_VisitSteps_vIn52  = T_VisitSteps_vIn52 (Map VisitIdentifier (Int,Int)) (Map NontermIdent Int) (Map VisitIdentifier VisitKind) (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) (Map VisitIdentifier (Set Identifier)) (Map VisitIdentifier (Set Identifier)) (Map Identifier Type) (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) (FormatMode) (Int) (VisitKind) (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) (Options) (Int) (Map Identifier (Set String)) (Map Identifier (Map String (Maybe NonLocalAttr))) (Bool)+data T_VisitSteps_vOut52  = T_VisitSteps_vOut52 (Set String) (Seq Error) (Int) (Bool) (Set String) (Int) (Map Identifier (Set VisitKind)) (Map Identifier Int) (PP_Doc) (Int) (PP_Doc) (Set String) (Map String (Maybe NonLocalAttr)) (Map VisitIdentifier VisitKind)+{-# NOINLINE sem_VisitSteps_Cons #-}+sem_VisitSteps_Cons :: T_VisitStep  -> T_VisitSteps  -> T_VisitSteps +sem_VisitSteps_Cons arg_hd_ arg_tl_ = T_VisitSteps (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_VisitSteps_v52 +      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _hdX50 = Control.Monad.Identity.runIdentity (attach_T_VisitStep (arg_hd_))+         _tlX53 = Control.Monad.Identity.runIdentity (attach_T_VisitSteps (arg_tl_))+         (T_VisitStep_vOut49 _hdIdefs _hdIerrors _hdIindex _hdIisLast _hdIlazyIntras _hdIprevMaxSimRefs _hdIruleKinds _hdIruleUsage _hdIsem_steps _hdIsync_steps _hdIusedArgs _hdIuses _hdIvisitKinds) = inv_VisitStep_s50 _hdX50 (T_VisitStep_vIn49 _hdOallFromToStates _hdOallInitStates _hdOallVisitKinds _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOchildTypes _hdOchildintros _hdOfmtMode _hdOindex _hdOisLast _hdOkind _hdOmrules _hdOoptions _hdOprevMaxSimRefs _hdOruledefs _hdOruleuses _hdOuseParallel)+         (T_VisitSteps_vOut52 _tlIdefs _tlIerrors _tlIindex _tlIisLast _tlIlazyIntras _tlIprevMaxSimRefs _tlIruleKinds _tlIruleUsage _tlIsem_steps _tlIsize _tlIsync_steps _tlIusedArgs _tlIuses _tlIvisitKinds) = inv_VisitSteps_s53 _tlX53 (T_VisitSteps_vIn52 _tlOallFromToStates _tlOallInitStates _tlOallVisitKinds _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOchildTypes _tlOchildintros _tlOfmtMode _tlOindex _tlOkind _tlOmrules _tlOoptions _tlOprevMaxSimRefs _tlOruledefs _tlOruleuses _tlOuseParallel)+         _lhsOsize :: Int+         _lhsOsize = rule807 _tlIsize+         _hdOindex = rule808 _lhsIindex+         _tlOindex = rule809 _lhsIindex+         _lhsOindex :: Int+         _lhsOindex = rule810 _tlIindex+         _lhsOisLast :: Bool+         _lhsOisLast = rule811  ()+         _hdOisLast = rule812 _tlIisLast+         _lhsOdefs :: Set String+         _lhsOdefs = rule813 _hdIdefs _tlIdefs+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule814 _hdIerrors _tlIerrors+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule815 _hdIlazyIntras _tlIlazyIntras+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule816 _hdIruleKinds _tlIruleKinds+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule817 _hdIruleUsage _tlIruleUsage+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule818 _hdIsem_steps _tlIsem_steps+         _lhsOsync_steps :: PP_Doc+         _lhsOsync_steps = rule819 _hdIsync_steps _tlIsync_steps+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule820 _hdIusedArgs _tlIusedArgs+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule821 _hdIuses _tlIuses+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule822 _hdIvisitKinds _tlIvisitKinds+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule823 _tlIprevMaxSimRefs+         _hdOallFromToStates = rule824 _lhsIallFromToStates+         _hdOallInitStates = rule825 _lhsIallInitStates+         _hdOallVisitKinds = rule826 _lhsIallVisitKinds+         _hdOallchildvisit = rule827 _lhsIallchildvisit+         _hdOavisitdefs = rule828 _lhsIavisitdefs+         _hdOavisituses = rule829 _lhsIavisituses+         _hdOchildTypes = rule830 _lhsIchildTypes+         _hdOchildintros = rule831 _lhsIchildintros+         _hdOfmtMode = rule832 _lhsIfmtMode+         _hdOkind = rule833 _lhsIkind+         _hdOmrules = rule834 _lhsImrules+         _hdOoptions = rule835 _lhsIoptions+         _hdOprevMaxSimRefs = rule836 _lhsIprevMaxSimRefs+         _hdOruledefs = rule837 _lhsIruledefs+         _hdOruleuses = rule838 _lhsIruleuses+         _hdOuseParallel = rule839 _lhsIuseParallel+         _tlOallFromToStates = rule840 _lhsIallFromToStates+         _tlOallInitStates = rule841 _lhsIallInitStates+         _tlOallVisitKinds = rule842 _lhsIallVisitKinds+         _tlOallchildvisit = rule843 _lhsIallchildvisit+         _tlOavisitdefs = rule844 _lhsIavisitdefs+         _tlOavisituses = rule845 _lhsIavisituses+         _tlOchildTypes = rule846 _lhsIchildTypes+         _tlOchildintros = rule847 _lhsIchildintros+         _tlOfmtMode = rule848 _lhsIfmtMode+         _tlOkind = rule849 _lhsIkind+         _tlOmrules = rule850 _lhsImrules+         _tlOoptions = rule851 _lhsIoptions+         _tlOprevMaxSimRefs = rule852 _hdIprevMaxSimRefs+         _tlOruledefs = rule853 _lhsIruledefs+         _tlOruleuses = rule854 _lhsIruleuses+         _tlOuseParallel = rule855 _lhsIuseParallel+         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitSteps_s53 v52+   {-# INLINE rule807 #-}+   {-# LINE 881 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule807 = \ ((_tlIsize) :: Int) ->+                      {-# LINE 881 "src-ag/ExecutionPlan2Hs.ag" #-}+                      1 + _tlIsize+                      {-# LINE 6384 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule808 #-}+   {-# LINE 886 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule808 = \ ((_lhsIindex) :: Int) ->+                {-# LINE 886 "src-ag/ExecutionPlan2Hs.ag" #-}+                _lhsIindex+                {-# LINE 6390 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule809 #-}+   {-# LINE 887 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule809 = \ ((_lhsIindex) :: Int) ->+                {-# LINE 887 "src-ag/ExecutionPlan2Hs.ag" #-}+                1 + _lhsIindex+                {-# LINE 6396 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule810 #-}+   {-# LINE 888 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule810 = \ ((_tlIindex) :: Int) ->+                {-# LINE 888 "src-ag/ExecutionPlan2Hs.ag" #-}+                _tlIindex+                {-# LINE 6402 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule811 #-}+   {-# LINE 907 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule811 = \  (_ :: ()) ->+                         {-# LINE 907 "src-ag/ExecutionPlan2Hs.ag" #-}+                         False+                         {-# LINE 6408 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule812 #-}+   {-# LINE 908 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule812 = \ ((_tlIisLast) :: Bool) ->+                         {-# LINE 908 "src-ag/ExecutionPlan2Hs.ag" #-}+                         _tlIisLast+                         {-# LINE 6414 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule813 #-}+   rule813 = \ ((_hdIdefs) :: Set String) ((_tlIdefs) :: Set String) ->+     _hdIdefs `Set.union` _tlIdefs+   {-# INLINE rule814 #-}+   rule814 = \ ((_hdIerrors) :: Seq Error) ((_tlIerrors) :: Seq Error) ->+     _hdIerrors Seq.>< _tlIerrors+   {-# INLINE rule815 #-}+   rule815 = \ ((_hdIlazyIntras) :: Set String) ((_tlIlazyIntras) :: Set String) ->+     _hdIlazyIntras `Set.union` _tlIlazyIntras+   {-# INLINE rule816 #-}+   rule816 = \ ((_hdIruleKinds) :: Map Identifier (Set VisitKind)) ((_tlIruleKinds) :: Map Identifier (Set VisitKind)) ->+     _hdIruleKinds `unionWithMappend` _tlIruleKinds+   {-# INLINE rule817 #-}+   rule817 = \ ((_hdIruleUsage) :: Map Identifier Int) ((_tlIruleUsage) :: Map Identifier Int) ->+     _hdIruleUsage `unionWithSum` _tlIruleUsage+   {-# INLINE rule818 #-}+   rule818 = \ ((_hdIsem_steps) :: PP_Doc) ((_tlIsem_steps) :: PP_Doc) ->+     _hdIsem_steps >-< _tlIsem_steps+   {-# INLINE rule819 #-}+   rule819 = \ ((_hdIsync_steps) :: PP_Doc) ((_tlIsync_steps) :: PP_Doc) ->+     _hdIsync_steps >-< _tlIsync_steps+   {-# INLINE rule820 #-}+   rule820 = \ ((_hdIusedArgs) :: Set String) ((_tlIusedArgs) :: Set String) ->+     _hdIusedArgs `Set.union` _tlIusedArgs+   {-# INLINE rule821 #-}+   rule821 = \ ((_hdIuses) :: Map String (Maybe NonLocalAttr)) ((_tlIuses) :: Map String (Maybe NonLocalAttr)) ->+     _hdIuses `Map.union` _tlIuses+   {-# INLINE rule822 #-}+   rule822 = \ ((_hdIvisitKinds) :: Map VisitIdentifier VisitKind) ((_tlIvisitKinds) :: Map VisitIdentifier VisitKind) ->+     _hdIvisitKinds `mappend` _tlIvisitKinds+   {-# INLINE rule823 #-}+   rule823 = \ ((_tlIprevMaxSimRefs) :: Int) ->+     _tlIprevMaxSimRefs+   {-# INLINE rule824 #-}+   rule824 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule825 #-}+   rule825 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule826 #-}+   rule826 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule827 #-}+   rule827 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule828 #-}+   rule828 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule829 #-}+   rule829 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule830 #-}+   rule830 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule831 #-}+   rule831 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule832 #-}+   rule832 = \ ((_lhsIfmtMode) :: FormatMode) ->+     _lhsIfmtMode+   {-# INLINE rule833 #-}+   rule833 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule834 #-}+   rule834 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule835 #-}+   rule835 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule836 #-}+   rule836 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs+   {-# INLINE rule837 #-}+   rule837 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule838 #-}+   rule838 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule839 #-}+   rule839 = \ ((_lhsIuseParallel) :: Bool) ->+     _lhsIuseParallel+   {-# INLINE rule840 #-}+   rule840 = \ ((_lhsIallFromToStates) :: Map VisitIdentifier (Int,Int)) ->+     _lhsIallFromToStates+   {-# INLINE rule841 #-}+   rule841 = \ ((_lhsIallInitStates) :: Map NontermIdent Int) ->+     _lhsIallInitStates+   {-# INLINE rule842 #-}+   rule842 = \ ((_lhsIallVisitKinds) :: Map VisitIdentifier VisitKind) ->+     _lhsIallVisitKinds+   {-# INLINE rule843 #-}+   rule843 = \ ((_lhsIallchildvisit) :: Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))) ->+     _lhsIallchildvisit+   {-# INLINE rule844 #-}+   rule844 = \ ((_lhsIavisitdefs) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisitdefs+   {-# INLINE rule845 #-}+   rule845 = \ ((_lhsIavisituses) :: Map VisitIdentifier (Set Identifier)) ->+     _lhsIavisituses+   {-# INLINE rule846 #-}+   rule846 = \ ((_lhsIchildTypes) :: Map Identifier Type) ->+     _lhsIchildTypes+   {-# INLINE rule847 #-}+   rule847 = \ ((_lhsIchildintros) :: Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))) ->+     _lhsIchildintros+   {-# INLINE rule848 #-}+   rule848 = \ ((_lhsIfmtMode) :: FormatMode) ->+     _lhsIfmtMode+   {-# INLINE rule849 #-}+   rule849 = \ ((_lhsIkind) :: VisitKind) ->+     _lhsIkind+   {-# INLINE rule850 #-}+   rule850 = \ ((_lhsImrules) :: Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)) ->+     _lhsImrules+   {-# INLINE rule851 #-}+   rule851 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule852 #-}+   rule852 = \ ((_hdIprevMaxSimRefs) :: Int) ->+     _hdIprevMaxSimRefs+   {-# INLINE rule853 #-}+   rule853 = \ ((_lhsIruledefs) :: Map Identifier (Set String)) ->+     _lhsIruledefs+   {-# INLINE rule854 #-}+   rule854 = \ ((_lhsIruleuses) :: Map Identifier (Map String (Maybe NonLocalAttr))) ->+     _lhsIruleuses+   {-# INLINE rule855 #-}+   rule855 = \ ((_lhsIuseParallel) :: Bool) ->+     _lhsIuseParallel+{-# NOINLINE sem_VisitSteps_Nil #-}+sem_VisitSteps_Nil ::  T_VisitSteps +sem_VisitSteps_Nil  = T_VisitSteps (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_VisitSteps_v52 +      v52 = \ (T_VisitSteps_vIn52 _lhsIallFromToStates _lhsIallInitStates _lhsIallVisitKinds _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIfmtMode _lhsIindex _lhsIkind _lhsImrules _lhsIoptions _lhsIprevMaxSimRefs _lhsIruledefs _lhsIruleuses _lhsIuseParallel) -> ( let+         _lhsOsize :: Int+         _lhsOsize = rule856  ()+         _lhsOisLast :: Bool+         _lhsOisLast = rule857  ()+         _lhsOdefs :: Set String+         _lhsOdefs = rule858  ()+         _lhsOerrors :: Seq Error+         _lhsOerrors = rule859  ()+         _lhsOlazyIntras :: Set String+         _lhsOlazyIntras = rule860  ()+         _lhsOruleKinds :: Map Identifier (Set VisitKind)+         _lhsOruleKinds = rule861  ()+         _lhsOruleUsage :: Map Identifier Int+         _lhsOruleUsage = rule862  ()+         _lhsOsem_steps :: PP_Doc+         _lhsOsem_steps = rule863  ()+         _lhsOsync_steps :: PP_Doc+         _lhsOsync_steps = rule864  ()+         _lhsOusedArgs :: Set String+         _lhsOusedArgs = rule865  ()+         _lhsOuses :: Map String (Maybe NonLocalAttr)+         _lhsOuses = rule866  ()+         _lhsOvisitKinds :: Map VisitIdentifier VisitKind+         _lhsOvisitKinds = rule867  ()+         _lhsOindex :: Int+         _lhsOindex = rule868 _lhsIindex+         _lhsOprevMaxSimRefs :: Int+         _lhsOprevMaxSimRefs = rule869 _lhsIprevMaxSimRefs+         __result_ = T_VisitSteps_vOut52 _lhsOdefs _lhsOerrors _lhsOindex _lhsOisLast _lhsOlazyIntras _lhsOprevMaxSimRefs _lhsOruleKinds _lhsOruleUsage _lhsOsem_steps _lhsOsize _lhsOsync_steps _lhsOusedArgs _lhsOuses _lhsOvisitKinds+         in __result_ )+     in C_VisitSteps_s53 v52+   {-# INLINE rule856 #-}+   {-# LINE 880 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule856 = \  (_ :: ()) ->+                      {-# LINE 880 "src-ag/ExecutionPlan2Hs.ag" #-}+                      0+                      {-# LINE 6587 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule857 #-}+   {-# LINE 906 "src-ag/ExecutionPlan2Hs.ag" #-}+   rule857 = \  (_ :: ()) ->+                         {-# LINE 906 "src-ag/ExecutionPlan2Hs.ag" #-}+                         True+                         {-# LINE 6593 "dist/build/ExecutionPlan2Hs.hs"#-}+   {-# INLINE rule858 #-}+   rule858 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule859 #-}+   rule859 = \  (_ :: ()) ->+     Seq.empty+   {-# INLINE rule860 #-}+   rule860 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule861 #-}+   rule861 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule862 #-}+   rule862 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule863 #-}+   rule863 = \  (_ :: ()) ->+     empty+   {-# INLINE rule864 #-}+   rule864 = \  (_ :: ()) ->+     empty+   {-# INLINE rule865 #-}+   rule865 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule866 #-}+   rule866 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule867 #-}+   rule867 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule868 #-}+   rule868 = \ ((_lhsIindex) :: Int) ->+     _lhsIindex+   {-# INLINE rule869 #-}+   rule869 = \ ((_lhsIprevMaxSimRefs) :: Int) ->+     _lhsIprevMaxSimRefs++-- Visits ------------------------------------------------------+-- wrapper+data Inh_Visits  = Inh_Visits { allFromToStates_Inh_Visits :: (Map VisitIdentifier (Int,Int)), allInhmap_Inh_Visits :: (Map NontermIdent Attributes), allInitStates_Inh_Visits :: (Map NontermIdent Int), allSynmap_Inh_Visits :: (Map NontermIdent Attributes), allVisitKinds_Inh_Visits :: (Map VisitIdentifier VisitKind), allchildvisit_Inh_Visits :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), allintramap_Inh_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), avisitdefs_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), avisituses_Inh_Visits :: (Map VisitIdentifier (Set Identifier)), childTypes_Inh_Visits :: (Map Identifier Type), childintros_Inh_Visits :: (Map Identifier (VisitKind -> FormatMode -> Either Error (PP_Doc, Set String, Map String (Maybe NonLocalAttr)))), con_Inh_Visits :: (ConstructorIdent), inhmap_Inh_Visits :: (Attributes), mrules_Inh_Visits :: (Map Identifier (VisitKind -> FormatMode -> Either Error PP_Doc)), nextVisits_Inh_Visits :: (Map StateIdentifier StateCtx), nt_Inh_Visits :: (NontermIdent), options_Inh_Visits :: (Options), params_Inh_Visits :: ([Identifier]), prevVisits_Inh_Visits :: (Map StateIdentifier StateCtx), ruledefs_Inh_Visits :: (Map Identifier (Set String)), ruleuses_Inh_Visits :: (Map Identifier (Map String (Maybe NonLocalAttr))), synmap_Inh_Visits :: (Attributes), terminaldefs_Inh_Visits :: (Set String) }+data Syn_Visits  = Syn_Visits { allvisits_Syn_Visits :: ([VisitStateState]), childvisit_Syn_Visits :: (Map VisitIdentifier (Identifier -> VisitKind -> Either Error (PP_Doc, PP_Doc))), errors_Syn_Visits :: (Seq Error), fromToStates_Syn_Visits :: (Map VisitIdentifier (Int,Int)), intramap_Syn_Visits :: (Map StateIdentifier (Map String (Maybe NonLocalAttr))), lazyIntras_Syn_Visits :: (Set String), ruleKinds_Syn_Visits :: (Map Identifier (Set VisitKind)), ruleUsage_Syn_Visits :: (Map Identifier Int), sem_visit_Syn_Visits :: ( [(StateIdentifier,Bool -> PP_Doc)] ), t_visits_Syn_Visits :: (PP_Doc), usedArgs_Syn_Visits :: (Set String), visitKinds_Syn_Visits :: (Map VisitIdentifier VisitKind), visitdefs_Syn_Visits :: (Map VisitIdentifier (Set Identifier)), visituses_Syn_Visits :: (Map VisitIdentifier (Set Identifier)) }+{-# INLINABLE wrap_Visits #-}+wrap_Visits :: T_Visits  -> Inh_Visits  -> (Syn_Visits )+wrap_Visits (T_Visits act) (Inh_Visits _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg55 = T_Visits_vIn55 _lhsIallFromToStates _lhsIallInhmap _lhsIallInitStates _lhsIallSynmap _lhsIallVisitKinds _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildTypes _lhsIchildintros _lhsIcon _lhsIinhmap _lhsImrules _lhsInextVisits _lhsInt _lhsIoptions _lhsIparams _lhsIprevVisits _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs+        (T_Visits_vOut55 _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses) <- return (inv_Visits_s56 sem arg55)         return (Syn_Visits _lhsOallvisits _lhsOchildvisit _lhsOerrors _lhsOfromToStates _lhsOintramap _lhsOlazyIntras _lhsOruleKinds _lhsOruleUsage _lhsOsem_visit _lhsOt_visits _lhsOusedArgs _lhsOvisitKinds _lhsOvisitdefs _lhsOvisituses)    ) 
src-generated/Expression.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/Expression.ag)+-- UUAGC 0.9.51 (src-ag/Expression.ag) module Expression where-{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken
src-generated/GenerateCode.hs view
@@ -2,19 +2,19 @@ {-# LANGUAGE ScopedTypeVariables #-}  module GenerateCode where-{-# LINE 2 "./src-ag/DeclBlocks.ag" #-}+{-# LINE 2 "src-ag/DeclBlocks.ag" #-}  import Code (Decl,Expr) {-# LINE 9 "dist/build/GenerateCode.hs" #-} -{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 16 "dist/build/GenerateCode.hs" #-} -{-# LINE 2 "./src-ag/CodeSyntax.ag" #-}+{-# LINE 2 "src-ag/CodeSyntax.ag" #-}  import Patterns import CommonTypes@@ -22,7 +22,7 @@ import Data.Set(Set) {-# LINE 24 "dist/build/GenerateCode.hs" #-} -{-# LINE 9 "./src-ag/GenerateCode.ag" #-}+{-# LINE 9 "src-ag/GenerateCode.ag" #-}  import CommonTypes import SequentialTypes@@ -51,7 +51,7 @@ {-# LINE 52 "dist/build/GenerateCode.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 107 "./src-ag/GenerateCode.ag" #-}+{-# LINE 107 "src-ag/GenerateCode.ag" #-}  -- remove possible @v references in the types of a data type. cleanupArg :: Options -> String -> String@@ -61,7 +61,7 @@       _             -> error "Only SimpleType supported" {-# LINE 63 "dist/build/GenerateCode.hs" #-} -{-# LINE 123 "./src-ag/GenerateCode.ag" #-}+{-# LINE 123 "src-ag/GenerateCode.ag" #-}  appContext :: ContextMap -> NontermIdent -> Code.Type -> Code.Type appContext mp nt tp@@ -72,7 +72,7 @@   = foldr QuantApp tp $ Map.findWithDefault [] nt mp {-# LINE 74 "dist/build/GenerateCode.hs" #-} -{-# LINE 248 "./src-ag/GenerateCode.ag" #-}+{-# LINE 248 "src-ag/GenerateCode.ag" #-}  mkDecl :: Bool -> Lhs -> Expr -> Set String -> Set String -> Decl mkDecl True  lhs rhs _ _   = Bind lhs rhs@@ -86,7 +86,7 @@         right = SimpleExpr "x" {-# LINE 88 "dist/build/GenerateCode.hs" #-} -{-# LINE 541 "./src-ag/GenerateCode.ag" #-}+{-# LINE 541 "src-ag/GenerateCode.ag" #-}  mkLambdaArg :: String -> Maybe Code.Type -> Expr mkLambdaArg nm Nothing = SimpleExpr nm@@ -111,7 +111,7 @@ pickOrigType x = x {-# LINE 113 "dist/build/GenerateCode.hs" #-} -{-# LINE 638 "./src-ag/GenerateCode.ag" #-}+{-# LINE 638 "src-ag/GenerateCode.ag" #-}  mkPartitionedFunction :: String -> Bool -> [Decl] -> [String] -> DeclBlocks -> ([Decl], Expr) mkPartitionedFunction prefix' optCase nextVisitDecls lastExprVars cpsTree@@ -125,7 +125,7 @@     in (lambdas_Syn_DeclBlocksRoot syn, firstCall_Syn_DeclBlocksRoot syn) {-# LINE 127 "dist/build/GenerateCode.hs" #-} -{-# LINE 688 "./src-ag/GenerateCode.ag" #-}+{-# LINE 688 "src-ag/GenerateCode.ag" #-}  freevars :: [String] -> [Decl] -> [String] freevars additional decls@@ -148,7 +148,7 @@     rhs = mkLet optCase decls expr {-# LINE 150 "dist/build/GenerateCode.hs" #-} -{-# LINE 766 "./src-ag/GenerateCode.ag" #-}+{-# LINE 766 "src-ag/GenerateCode.ag" #-}  typeToCodeType :: Maybe NontermIdent -> [String] -> Type -> Code.Type typeToCodeType _ _ tp@@ -188,7 +188,7 @@ idEvalType options = evalType options id {-# LINE 190 "dist/build/GenerateCode.hs" #-} -{-# LINE 892 "./src-ag/GenerateCode.ag" #-}+{-# LINE 892 "src-ag/GenerateCode.ag" #-}  -- for a virtual child that already existed as a child, returns isFirstOrder :: ChildKind -> Type -> Maybe Type@@ -197,7 +197,7 @@ isFirstOrder (ChildReplace tp) _  = Just tp {-# LINE 199 "dist/build/GenerateCode.hs" #-} -{-# LINE 913 "./src-ag/GenerateCode.ag" #-}+{-# LINE 913 "src-ag/GenerateCode.ag" #-}  makeLocalComment :: Int -> String -> Identifier -> Maybe Type -> String makeLocalComment width what  name tp = let  x = getName name@@ -209,7 +209,7 @@  {-# LINE 211 "dist/build/GenerateCode.hs" #-} -{-# LINE 947 "./src-ag/GenerateCode.ag" #-}+{-# LINE 947 "src-ag/GenerateCode.ag" #-}  -- Lets or nested Cases? -- or even a do-expression?@@ -256,7 +256,7 @@ visitname pre nt n =  pre ++ getName nt ++ "_" ++ show n {-# LINE 258 "dist/build/GenerateCode.hs" #-} -{-# LINE 1038 "./src-ag/GenerateCode.ag" #-}+{-# LINE 1038 "src-ag/GenerateCode.ag" #-}  toNamedType :: Bool -> NontermIdent -> ConstructorIdent -> Identifier -> Code.Type -> Code.NamedType toNamedType genStrict nt con nm tp@@ -272,8 +272,8 @@ wrap_CGrammar (T_CGrammar act) (Inh_CGrammar _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CGrammar_vIn1 _lhsIoptions-        (T_CGrammar_vOut1 _lhsOerrors _lhsOoutput) <- return (inv_CGrammar_s2 sem arg)+        let arg1 = T_CGrammar_vIn1 _lhsIoptions+        (T_CGrammar_vOut1 _lhsOerrors _lhsOoutput) <- return (inv_CGrammar_s2 sem arg1)         return (Syn_CGrammar _lhsOerrors _lhsOoutput)    ) @@ -344,159 +344,159 @@          in __result_ )      in C_CGrammar_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 52 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 52 "src-ag/GenerateCode.ag" #-}    rule0 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 52 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 52 "src-ag/GenerateCode.ag" #-}                                         typeSigs       _lhsIoptions                                         {-# LINE 352 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 53 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 53 "src-ag/GenerateCode.ag" #-}    rule1 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 53 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 53 "src-ag/GenerateCode.ag" #-}                                         folds          _lhsIoptions                                         {-# LINE 358 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 54 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 54 "src-ag/GenerateCode.ag" #-}    rule2 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 54 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 54 "src-ag/GenerateCode.ag" #-}                                         semfuns        _lhsIoptions                                         {-# LINE 364 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule3 #-}-   {-# LINE 55 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 55 "src-ag/GenerateCode.ag" #-}    rule3 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 55 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 55 "src-ag/GenerateCode.ag" #-}                                         newtypes       _lhsIoptions                                         {-# LINE 370 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule4 #-}-   {-# LINE 56 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 56 "src-ag/GenerateCode.ag" #-}    rule4 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 56 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 56 "src-ag/GenerateCode.ag" #-}                                         unbox          _lhsIoptions                                         {-# LINE 376 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule5 #-}-   {-# LINE 57 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 57 "src-ag/GenerateCode.ag" #-}    rule5 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 57 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 57 "src-ag/GenerateCode.ag" #-}                                         cases          _lhsIoptions                                         {-# LINE 382 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule6 #-}-   {-# LINE 58 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 58 "src-ag/GenerateCode.ag" #-}    rule6 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 58 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 58 "src-ag/GenerateCode.ag" #-}                                         attrInfo       _lhsIoptions                                         {-# LINE 388 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule7 #-}-   {-# LINE 59 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 59 "src-ag/GenerateCode.ag" #-}    rule7 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 59 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 59 "src-ag/GenerateCode.ag" #-}                                         rename         _lhsIoptions                                         {-# LINE 394 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule8 #-}-   {-# LINE 60 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 60 "src-ag/GenerateCode.ag" #-}    rule8 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 60 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 60 "src-ag/GenerateCode.ag" #-}                                         strictWrap     _lhsIoptions                                         {-# LINE 400 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule9 #-}-   {-# LINE 61 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 61 "src-ag/GenerateCode.ag" #-}    rule9 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 61 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 61 "src-ag/GenerateCode.ag" #-}                                         splitSems      _lhsIoptions                                         {-# LINE 406 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule10 #-}-   {-# LINE 62 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 62 "src-ag/GenerateCode.ag" #-}    rule10 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 62 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 62 "src-ag/GenerateCode.ag" #-}                                         if dataTypes _lhsIoptions then Just (strictData _lhsIoptions) else Nothing                                         {-# LINE 412 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule11 #-}-   {-# LINE 63 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 63 "src-ag/GenerateCode.ag" #-}    rule11 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 63 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 63 "src-ag/GenerateCode.ag" #-}                                         prefix         _lhsIoptions                                         {-# LINE 418 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule12 #-}-   {-# LINE 64 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 64 "src-ag/GenerateCode.ag" #-}    rule12 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 64 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 64 "src-ag/GenerateCode.ag" #-}                                         genTraces      _lhsIoptions                                         {-# LINE 424 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule13 #-}-   {-# LINE 65 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 65 "src-ag/GenerateCode.ag" #-}    rule13 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 65 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 65 "src-ag/GenerateCode.ag" #-}                                         genCostCentres _lhsIoptions                                         {-# LINE 430 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule14 #-}-   {-# LINE 66 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 66 "src-ag/GenerateCode.ag" #-}    rule14 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 66 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 66 "src-ag/GenerateCode.ag" #-}                                         genLinePragmas _lhsIoptions                                         {-# LINE 436 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule15 #-}-   {-# LINE 67 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 67 "src-ag/GenerateCode.ag" #-}    rule15 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 67 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 67 "src-ag/GenerateCode.ag" #-}                                         monadic        _lhsIoptions                                         {-# LINE 442 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule16 #-}-   {-# LINE 68 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 68 "src-ag/GenerateCode.ag" #-}    rule16 = \ ((_lhsIoptions) :: Options) ->-                                        {-# LINE 68 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 68 "src-ag/GenerateCode.ag" #-}                                         clean          _lhsIoptions                                         {-# LINE 448 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule17 #-}-   {-# LINE 71 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 71 "src-ag/GenerateCode.ag" #-}    rule17 = \ ((_lhsIoptions) :: Options) multivisit_ ->-                  {-# LINE 71 "./src-ag/GenerateCode.ag" #-}+                  {-# LINE 71 "src-ag/GenerateCode.ag" #-}                   _lhsIoptions { breadthFirst = breadthFirst _lhsIoptions && visit _lhsIoptions && cases _lhsIoptions && multivisit_ }                   {-# LINE 454 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule18 #-}-   {-# LINE 76 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 76 "src-ag/GenerateCode.ag" #-}    rule18 = \ pragmas_ ->-                                   {-# LINE 76 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 76 "src-ag/GenerateCode.ag" #-}                                    pragmas_                                    {-# LINE 460 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule19 #-}-   {-# LINE 98 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 98 "src-ag/GenerateCode.ag" #-}    rule19 = \ paramMap_ ->-                                {-# LINE 98 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 98 "src-ag/GenerateCode.ag" #-}                                 paramMap_                                 {-# LINE 466 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule20 #-}-   {-# LINE 120 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 120 "src-ag/GenerateCode.ag" #-}    rule20 = \ contextMap_ ->-                           {-# LINE 120 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 120 "src-ag/GenerateCode.ag" #-}                            contextMap_                            {-# LINE 472 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule21 #-}-   {-# LINE 121 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 121 "src-ag/GenerateCode.ag" #-}    rule21 = \ quantMap_ ->-                           {-# LINE 121 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 121 "src-ag/GenerateCode.ag" #-}                            quantMap_                            {-# LINE 478 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule22 #-}-   {-# LINE 137 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 137 "src-ag/GenerateCode.ag" #-}    rule22 = \ ((_nontsIgathNts) :: Set NontermIdent) ->-                       {-# LINE 137 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 137 "src-ag/GenerateCode.ag" #-}                        _nontsIgathNts                        {-# LINE 484 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule23 #-}-   {-# LINE 587 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 587 "src-ag/GenerateCode.ag" #-}    rule23 = \ aroundsMap_ ->-                                                   {-# LINE 587 "./src-ag/GenerateCode.ag" #-}+                                                   {-# LINE 587 "src-ag/GenerateCode.ag" #-}                                                    aroundsMap_                                                    {-# LINE 490 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule24 #-}-   {-# LINE 603 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 603 "src-ag/GenerateCode.ag" #-}    rule24 = \ mergeMap_ ->-                                                  {-# LINE 603 "./src-ag/GenerateCode.ag" #-}+                                                  {-# LINE 603 "src-ag/GenerateCode.ag" #-}                                                   mergeMap_                                                   {-# LINE 496 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule25 #-}-   {-# LINE 760 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 760 "src-ag/GenerateCode.ag" #-}    rule25 = \ ((_lhsIoptions) :: Options) ((_nontsIsemDomUnfoldGath) :: Map (NontermIdent, Int) ([String], Code.Type)) ->-         {-# LINE 760 "./src-ag/GenerateCode.ag" #-}+         {-# LINE 760 "src-ag/GenerateCode.ag" #-}          \nt nr repl ->           let (params, tp) = Map.findWithDefault (error ("No such semantic domain: " ++ show nt)) (nt, nr) _nontsIsemDomUnfoldGath               replMap = Map.fromList (zip params repl)@@ -504,39 +504,39 @@           in evalType _lhsIoptions replace tp          {-# LINE 506 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule26 #-}-   {-# LINE 861 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 861 "src-ag/GenerateCode.ag" #-}    rule26 = \ ((_lhsIoptions) :: Options) ->-                                {-# LINE 861 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 861 "src-ag/GenerateCode.ag" #-}                                 typeSigs _lhsIoptions                                 {-# LINE 512 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule27 #-}-   {-# LINE 864 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 864 "src-ag/GenerateCode.ag" #-}    rule27 = \  (_ :: ()) ->-                             {-# LINE 864 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 864 "src-ag/GenerateCode.ag" #-}                              Seq.empty                              {-# LINE 518 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule28 #-}-   {-# LINE 933 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 933 "src-ag/GenerateCode.ag" #-}    rule28 = \ ((_nontsIchunks) :: Chunks) multivisit_ ->-                               {-# LINE 933 "./src-ag/GenerateCode.ag" #-}+                               {-# LINE 933 "src-ag/GenerateCode.ag" #-}                                Program _nontsIchunks multivisit_                                {-# LINE 524 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule29 #-}-   {-# LINE 1001 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1001 "src-ag/GenerateCode.ag" #-}    rule29 = \ typeSyns_ ->-                                   {-# LINE 1001 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 1001 "src-ag/GenerateCode.ag" #-}                                    typeSyns_                                    {-# LINE 530 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule30 #-}-   {-# LINE 1002 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1002 "src-ag/GenerateCode.ag" #-}    rule30 = \ derivings_ ->-                                   {-# LINE 1002 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 1002 "src-ag/GenerateCode.ag" #-}                                    derivings_                                    {-# LINE 536 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule31 #-}-   {-# LINE 1003 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1003 "src-ag/GenerateCode.ag" #-}    rule31 = \ wrappers_ ->-                                   {-# LINE 1003 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 1003 "src-ag/GenerateCode.ag" #-}                                    wrappers_                                    {-# LINE 542 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule32 #-}@@ -561,8 +561,8 @@ wrap_CInterface (T_CInterface act) (Inh_CInterface _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CInterface_vIn4 _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn-        (T_CInterface_vOut4 _lhsOcomments _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls) <- return (inv_CInterface_s5 sem arg)+        let arg4 = T_CInterface_vIn4 _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn+        (T_CInterface_vOut4 _lhsOcomments _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls) <- return (inv_CInterface_s5 sem arg4)         return (Syn_CInterface _lhsOcomments _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls)    ) @@ -626,15 +626,15 @@          in __result_ )      in C_CInterface_s5 v4    {-# INLINE rule36 #-}-   {-# LINE 286 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 286 "src-ag/GenerateCode.ag" #-}    rule36 = \  (_ :: ()) ->-                           {-# LINE 286 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 286 "src-ag/GenerateCode.ag" #-}                            0                            {-# LINE 634 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule37 #-}-   {-# LINE 717 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 717 "src-ag/GenerateCode.ag" #-}    rule37 = \ ((_segIsemDom) :: [Decl]) ->-                                {-# LINE 717 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 717 "src-ag/GenerateCode.ag" #-}                                 Comment "semantic domain" : _segIsemDom                                 {-# LINE 640 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule38 #-}@@ -722,8 +722,8 @@ wrap_CNonterminal (T_CNonterminal act) (Inh_CNonterminal _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIderivings _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CNonterminal_vIn7 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIderivings _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers-        (T_CNonterminal_vOut7 _lhsOchunks _lhsOgathNts _lhsOsemDomUnfoldGath) <- return (inv_CNonterminal_s8 sem arg)+        let arg7 = T_CNonterminal_vIn7 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIderivings _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers+        (T_CNonterminal_vOut7 _lhsOchunks _lhsOgathNts _lhsOsemDomUnfoldGath) <- return (inv_CNonterminal_s8 sem arg7)         return (Syn_CNonterminal _lhsOchunks _lhsOgathNts _lhsOsemDomUnfoldGath)    ) @@ -820,39 +820,39 @@          in __result_ )      in C_CNonterminal_s8 v7    {-# INLINE rule63 #-}-   {-# LINE 86 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 86 "src-ag/GenerateCode.ag" #-}    rule63 = \ inh_ nt_ syn_ ->-                                          {-# LINE 86 "./src-ag/GenerateCode.ag" #-}+                                          {-# LINE 86 "src-ag/GenerateCode.ag" #-}                                           (inh_,syn_,nt_)                                           {-# LINE 828 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule64 #-}-   {-# LINE 87 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 87 "src-ag/GenerateCode.ag" #-}    rule64 = \ inh_ nt_ syn_ ->-                                         {-# LINE 87 "./src-ag/GenerateCode.ag" #-}+                                         {-# LINE 87 "src-ag/GenerateCode.ag" #-}                                          (inh_,syn_,nt_)                                          {-# LINE 834 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule65 #-}-   {-# LINE 143 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 143 "src-ag/GenerateCode.ag" #-}    rule65 = \ nt_ ->-                      {-# LINE 143 "./src-ag/GenerateCode.ag" #-}+                      {-# LINE 143 "src-ag/GenerateCode.ag" #-}                       Set.singleton nt_                       {-# LINE 840 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule66 #-}-   {-# LINE 588 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 588 "src-ag/GenerateCode.ag" #-}    rule66 = \ ((_lhsIaroundMap) :: Map NontermIdent (Map ConstructorIdent (Set Identifier))) nt_ ->-                                                   {-# LINE 588 "./src-ag/GenerateCode.ag" #-}+                                                   {-# LINE 588 "src-ag/GenerateCode.ag" #-}                                                    Map.findWithDefault Map.empty nt_ _lhsIaroundMap                                                    {-# LINE 846 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule67 #-}-   {-# LINE 604 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 604 "src-ag/GenerateCode.ag" #-}    rule67 = \ ((_lhsImergeMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier])))) nt_ ->-                                                  {-# LINE 604 "./src-ag/GenerateCode.ag" #-}+                                                  {-# LINE 604 "src-ag/GenerateCode.ag" #-}                                                   Map.findWithDefault Map.empty nt_ _lhsImergeMap                                                   {-# LINE 852 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule68 #-}-   {-# LINE 810 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 810 "src-ag/GenerateCode.ag" #-}    rule68 = \ ((_interIwrapDecls) :: Decls) ((_lhsIo_newtypes) :: Bool) ((_lhsIo_strictwrap) :: Bool) ((_lhsIoptions) :: Options) inh_ nt_ params_ syn_ ->-                                    {-# LINE 810 "./src-ag/GenerateCode.ag" #-}+                                    {-# LINE 810 "src-ag/GenerateCode.ag" #-}                                     let params' = map getName params_                                         inhAttrs = Map.toList inh_                                         synAttrs = Map.toList syn_@@ -879,15 +879,15 @@                                                 ]                                     {-# LINE 881 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule69 #-}-   {-# LINE 871 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 871 "src-ag/GenerateCode.ag" #-}    rule69 = \ ((_interIcomments) :: [String]) ((_prodsIcomments) :: [String]) ->-                                 {-# LINE 871 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 871 "src-ag/GenerateCode.ag" #-}                                  Comment . unlines . map ind $ ( _interIcomments ++ ("alternatives:" : map ind _prodsIcomments) )                                  {-# LINE 887 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule70 #-}-   {-# LINE 936 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 936 "src-ag/GenerateCode.ag" #-}    rule70 = \ _cataFun _comment _dataDef _genCata ((_interIsemDom) :: [Decl]) ((_lhsIo_cata) :: Bool) ((_lhsIo_data) :: Maybe Bool) ((_lhsIo_pretty) :: Bool) ((_lhsIo_sem) :: Bool) ((_lhsIo_sig) :: Bool) ((_lhsIwrappers) :: Set NontermIdent) ((_prodsIdecls) :: Decls) ((_prodsIsemNames) :: [String]) _semWrapper nt_ ->-                                 {-# LINE 936 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 936 "src-ag/GenerateCode.ag" #-}                                  [ Chunk (getName nt_)                                         (Comment (getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-'))                                         (if _lhsIo_pretty                  then [_comment    ]   else [])@@ -900,9 +900,9 @@                                  ]                                  {-# LINE 902 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule71 #-}-   {-# LINE 1006 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1006 "src-ag/GenerateCode.ag" #-}    rule71 = \ ((_lhsIderivings) :: Derivings) ((_lhsIo_data) :: Maybe Bool) ((_lhsIoptions) :: Options) ((_lhsItypeSyns) :: TypeSyns) ((_prodsIdataAlts) :: DataAlts) nt_ params_ ->-                                 {-# LINE 1006 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 1006 "src-ag/GenerateCode.ag" #-}                                  let params' = map getName params_                                      typeSyn tp = let theType =                                                         case tp of@@ -920,15 +920,15 @@                                  in maybe dataDef typeSyn $ lookup nt_ _lhsItypeSyns                                  {-# LINE 922 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule72 #-}-   {-# LINE 1050 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1050 "src-ag/GenerateCode.ag" #-}    rule72 = \ ((_lhsIoptions) :: Options) nt_ ->-                                 {-# LINE 1050 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 1050 "src-ag/GenerateCode.ag" #-}                                  not (nt_ `Set.member` nocatas _lhsIoptions)                                  {-# LINE 928 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule73 #-}-   {-# LINE 1051 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1051 "src-ag/GenerateCode.ag" #-}    rule73 = \ ((_lhsIcontextMap) :: ContextMap) ((_lhsIo_sig) :: Bool) ((_lhsIoptions) :: Options) ((_lhsIprefix) :: String) ((_lhsIquantMap) :: QuantMap) ((_lhsItypeSyns) :: TypeSyns) ((_prodsIcataAlts) :: Decls) nt_ params_ ->-                                 {-# LINE 1051 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 1051 "src-ag/GenerateCode.ag" #-}                                  let appParams nm = TypeApp (SimpleType nm) (map SimpleType (map getName params_))                                      evalTp | null params_ = id                                             | otherwise    = idEvalType _lhsIoptions@@ -1183,8 +1183,8 @@ wrap_CNonterminals (T_CNonterminals act) (Inh_CNonterminals _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIderivings _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CNonterminals_vIn10 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIderivings _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers-        (T_CNonterminals_vOut10 _lhsOchunks _lhsOgathNts _lhsOsemDomUnfoldGath) <- return (inv_CNonterminals_s11 sem arg)+        let arg10 = T_CNonterminals_vIn10 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIderivings _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers+        (T_CNonterminals_vOut10 _lhsOchunks _lhsOgathNts _lhsOsemDomUnfoldGath) <- return (inv_CNonterminals_s11 sem arg10)         return (Syn_CNonterminals _lhsOchunks _lhsOgathNts _lhsOsemDomUnfoldGath)    ) @@ -1508,8 +1508,8 @@ wrap_CProduction (T_CProduction act) (Inh_CProduction _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIinh _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CProduction_vIn13 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIinh _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers-        (T_CProduction_vOut13 _lhsOcataAlt _lhsOcomments _lhsOdataAlt _lhsOdecls _lhsOsemNames) <- return (inv_CProduction_s14 sem arg)+        let arg13 = T_CProduction_vIn13 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIinh _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers+        (T_CProduction_vOut13 _lhsOcataAlt _lhsOcomments _lhsOdataAlt _lhsOdecls _lhsOsemNames) <- return (inv_CProduction_s14 sem arg13)         return (Syn_CProduction _lhsOcataAlt _lhsOcomments _lhsOdataAlt _lhsOdecls _lhsOsemNames)    ) @@ -1595,84 +1595,84 @@          in __result_ )      in C_CProduction_s14 v13    {-# INLINE rule188 #-}-   {-# LINE 92 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 92 "src-ag/GenerateCode.ag" #-}    rule188 = \ con_ ->-                                 {-# LINE 92 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 92 "src-ag/GenerateCode.ag" #-}                                  con_                                  {-# LINE 1603 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule189 #-}-   {-# LINE 93 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 93 "src-ag/GenerateCode.ag" #-}    rule189 = \ terminals_ ->-                                        {-# LINE 93 "./src-ag/GenerateCode.ag" #-}+                                        {-# LINE 93 "src-ag/GenerateCode.ag" #-}                                         terminals_                                         {-# LINE 1609 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule190 #-}-   {-# LINE 105 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 105 "src-ag/GenerateCode.ag" #-}    rule190 = \ ((_lhsIoptions) :: Options) children_ ->-                           {-# LINE 105 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 105 "src-ag/GenerateCode.ag" #-}                            Map.fromList [(nm, (extractNonterminal tp, tps)) | (nm,tp,_) <- children_, let tps = map (cleanupArg _lhsIoptions) $ nontermArgs tp, not (null tps) ]                            {-# LINE 1615 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule191 #-}-   {-# LINE 147 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 147 "src-ag/GenerateCode.ag" #-}    rule191 = \  (_ :: ()) ->-                                                     {-# LINE 147 "./src-ag/GenerateCode.ag" #-}+                                                     {-# LINE 147 "src-ag/GenerateCode.ag" #-}                                                      Set.empty                                                      {-# LINE 1621 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule192 #-}-   {-# LINE 282 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 282 "src-ag/GenerateCode.ag" #-}    rule192 = \  (_ :: ()) ->-                               {-# LINE 282 "./src-ag/GenerateCode.ag" #-}+                               {-# LINE 282 "src-ag/GenerateCode.ag" #-}                                0                                {-# LINE 1627 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule193 #-}-   {-# LINE 414 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 414 "src-ag/GenerateCode.ag" #-}    rule193 = \ children_ ->-                                     {-# LINE 414 "./src-ag/GenerateCode.ag" #-}+                                     {-# LINE 414 "src-ag/GenerateCode.ag" #-}                                      children_                                      {-# LINE 1633 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule194 #-}-   {-# LINE 569 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 569 "src-ag/GenerateCode.ag" #-}    rule194 = \ ((_visitsIgatherInstVisitNrs) :: Map Identifier Int) ->-                              {-# LINE 569 "./src-ag/GenerateCode.ag" #-}+                              {-# LINE 569 "src-ag/GenerateCode.ag" #-}                               _visitsIgatherInstVisitNrs                               {-# LINE 1639 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule195 #-}-   {-# LINE 589 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 589 "src-ag/GenerateCode.ag" #-}    rule195 = \ ((_lhsIaroundMap) :: Map ConstructorIdent (Set Identifier)) con_ ->-                                                   {-# LINE 589 "./src-ag/GenerateCode.ag" #-}+                                                   {-# LINE 589 "src-ag/GenerateCode.ag" #-}                                                    Map.findWithDefault Set.empty con_ _lhsIaroundMap                                                    {-# LINE 1645 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule196 #-}-   {-# LINE 605 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 605 "src-ag/GenerateCode.ag" #-}    rule196 = \ ((_lhsImergeMap) :: Map ConstructorIdent (Map Identifier (Identifier, [Identifier]))) con_ ->-                                                  {-# LINE 605 "./src-ag/GenerateCode.ag" #-}+                                                  {-# LINE 605 "src-ag/GenerateCode.ag" #-}                                                   Map.findWithDefault Map.empty con_ _lhsImergeMap                                                   {-# LINE 1651 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule197 #-}-   {-# LINE 886 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 886 "src-ag/GenerateCode.ag" #-}    rule197 = \ children_ ->-                                            {-# LINE 886 "./src-ag/GenerateCode.ag" #-}+                                            {-# LINE 886 "src-ag/GenerateCode.ag" #-}                                             [ (nm,fromJust mb,virt) | (nm,tp,virt) <- children_, let mb = isFirstOrder virt tp, isJust mb ]                                             {-# LINE 1657 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule198 #-}-   {-# LINE 887 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 887 "src-ag/GenerateCode.ag" #-}    rule198 = \ _firstOrderChildren ((_visitsIcomments) :: [String]) con_ ->-                                   {-# LINE 887 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 887 "src-ag/GenerateCode.ag" #-}                                    ("alternative " ++ getName con_ ++ ":")                                    : map ind (  map (\(x,y,_) -> makeLocalComment 14 "child" x (Just y)) _firstOrderChildren                                              ++ _visitsIcomments                                              )                                    {-# LINE 1666 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule199 #-}-   {-# LINE 1030 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1030 "src-ag/GenerateCode.ag" #-}    rule199 = \ ((_lhsInt) :: NontermIdent) ((_lhsIparamMap) :: ParamMap) ->-                                {-# LINE 1030 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 1030 "src-ag/GenerateCode.ag" #-}                                 map getName $ Map.findWithDefault [] _lhsInt _lhsIparamMap                                 {-# LINE 1672 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule200 #-}-   {-# LINE 1031 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1031 "src-ag/GenerateCode.ag" #-}    rule200 = \ _firstOrderChildren ((_lhsInt) :: NontermIdent) ((_lhsIo_rename) :: Bool) ((_lhsIoptions) :: Options) _params con_ ->-                                {-# LINE 1031 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 1031 "src-ag/GenerateCode.ag" #-}                                 let conNm = conname _lhsIo_rename _lhsInt con_                                     mkFields :: (NontermIdent -> ConstructorIdent -> Identifier -> Code.Type -> a) -> [a]                                     mkFields f = map (\(nm,t,_) -> f _lhsInt con_ nm (typeToCodeType (Just _lhsInt) _params     $ removeDeforested t)) _firstOrderChildren@@ -1681,9 +1681,9 @@                                    else DataAlt conNm $ mkFields $ \_ _ _ t -> t                                 {-# LINE 1683 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule201 #-}-   {-# LINE 1161 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1161 "src-ag/GenerateCode.ag" #-}    rule201 = \ _firstOrderChildren ((_lhsInt) :: NontermIdent) ((_lhsIo_rename) :: Bool) ((_lhsIoptions) :: Options) ((_lhsIprefix) :: String) con_ ->-                                {-# LINE 1161 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 1161 "src-ag/GenerateCode.ag" #-}                                 let lhs = Fun (cataname _lhsIprefix _lhsInt) [lhs_pat]                                     lhs_pat = App (conname _lhsIo_rename _lhsInt con_)                                                    (map (\(n,_,_) -> SimpleExpr $ locname _lhsIoptions $ n) _firstOrderChildren    )@@ -1806,8 +1806,8 @@ wrap_CProductions (T_CProductions act) (Inh_CProductions _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIinh _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CProductions_vIn16 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIinh _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers-        (T_CProductions_vOut16 _lhsOcataAlts _lhsOcomments _lhsOdataAlts _lhsOdecls _lhsOsemNames) <- return (inv_CProductions_s17 sem arg)+        let arg16 = T_CProductions_vIn16 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIcontextMap _lhsIinh _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers+        (T_CProductions_vOut16 _lhsOcataAlts _lhsOcomments _lhsOdataAlts _lhsOdecls _lhsOsemNames) <- return (inv_CProductions_s17 sem arg16)         return (Syn_CProductions _lhsOcataAlts _lhsOcomments _lhsOdataAlts _lhsOdecls _lhsOsemNames)    ) @@ -1914,15 +1914,15 @@          in __result_ )      in C_CProductions_s17 v16    {-# INLINE rule236 #-}-   {-# LINE 1026 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1026 "src-ag/GenerateCode.ag" #-}    rule236 = \ ((_hdIdataAlt) :: DataAlt) ((_tlIdataAlts) :: DataAlts) ->-                                  {-# LINE 1026 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 1026 "src-ag/GenerateCode.ag" #-}                                   _hdIdataAlt : _tlIdataAlts                                   {-# LINE 1922 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule237 #-}-   {-# LINE 1157 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1157 "src-ag/GenerateCode.ag" #-}    rule237 = \ ((_hdIcataAlt) :: Decl) ((_tlIcataAlts) :: Decls) ->-                          {-# LINE 1157 "./src-ag/GenerateCode.ag" #-}+                          {-# LINE 1157 "src-ag/GenerateCode.ag" #-}                           _hdIcataAlt : _tlIcataAlts                           {-# LINE 1928 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule238 #-}@@ -2141,15 +2141,15 @@          in __result_ )      in C_CProductions_s17 v16    {-# INLINE rule303 #-}-   {-# LINE 1027 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1027 "src-ag/GenerateCode.ag" #-}    rule303 = \  (_ :: ()) ->-                                  {-# LINE 1027 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 1027 "src-ag/GenerateCode.ag" #-}                                   []                                   {-# LINE 2149 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule304 #-}-   {-# LINE 1158 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1158 "src-ag/GenerateCode.ag" #-}    rule304 = \  (_ :: ()) ->-                          {-# LINE 1158 "./src-ag/GenerateCode.ag" #-}+                          {-# LINE 1158 "src-ag/GenerateCode.ag" #-}                           []                           {-# LINE 2155 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule305 #-}@@ -2171,8 +2171,8 @@ wrap_CRule (T_CRule act) (Inh_CRule _lhsIallNts _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIinh _lhsIinstVisitNrs _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwhat) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CRule_vIn19 _lhsIallNts _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIinh _lhsIinstVisitNrs _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwhat-        (T_CRule_vOut19 _lhsOallTpsFound _lhsObldBlocksFun _lhsOcomments _lhsOdecls _lhsOdeclsAbove _lhsOdefinedInsts _lhsOexprs _lhsOtSigs _lhsOtps _lhsOusedVars _lhsOvisitedSet) <- return (inv_CRule_s20 sem arg)+        let arg19 = T_CRule_vIn19 _lhsIallNts _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIinh _lhsIinstVisitNrs _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwhat+        (T_CRule_vOut19 _lhsOallTpsFound _lhsObldBlocksFun _lhsOcomments _lhsOdecls _lhsOdeclsAbove _lhsOdefinedInsts _lhsOexprs _lhsOtSigs _lhsOtps _lhsOusedVars _lhsOvisitedSet) <- return (inv_CRule_s20 sem arg19)         return (Syn_CRule _lhsOallTpsFound _lhsObldBlocksFun _lhsOcomments _lhsOdecls _lhsOdeclsAbove _lhsOdefinedInsts _lhsOexprs _lhsOtSigs _lhsOtps _lhsOusedVars _lhsOvisitedSet)    ) @@ -2242,23 +2242,23 @@          in __result_ )      in C_CRule_s20 v19    {-# INLINE rule308 #-}-   {-# LINE 158 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 158 "src-ag/GenerateCode.ag" #-}    rule308 = \ ((_lhsIchildren) :: [(Identifier,Type,ChildKind)]) ->-                             {-# LINE 158 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 158 "src-ag/GenerateCode.ag" #-}                              [ (n, (t, mb, for)) | (n, NT t _ for, mb) <- _lhsIchildren ]                              {-# LINE 2250 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule309 #-}-   {-# LINE 159 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 159 "src-ag/GenerateCode.ag" #-}    rule309 = \ ((_lhsIo_pretty) :: Bool) origin_ ->-                                 {-# LINE 159 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 159 "src-ag/GenerateCode.ag" #-}                                  if  _lhsIo_pretty                                      then (Comment origin_:)                                      else id                                  {-# LINE 2258 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule310 #-}-   {-# LINE 162 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 162 "src-ag/GenerateCode.ag" #-}    rule310 = \ _definedInsts _instTypes ((_lhsIo_monadic) :: Bool) ((_lhsIo_newtypes) :: Bool) ((_lhsIoptions) :: Options) ((_lhsIprefix) :: String) ->-                             {-# LINE 162 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 162 "src-ag/GenerateCode.ag" #-}                              [ mkDecl _lhsIo_monadic (Pattern3 (Alias _INST' inst (Underscore (getPos inst))))                                     ( let (nm,mb,defor) = fromJust $ inst `lookup` _instTypes                                       in unwrapSem _lhsIo_newtypes nm@@ -2278,45 +2278,45 @@                              ]                              {-# LINE 2280 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule311 #-}-   {-# LINE 179 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 179 "src-ag/GenerateCode.ag" #-}    rule311 = \ ((_patternIpatternAttributes) :: [(Identifier, Identifier)]) isIn_ ->-                            {-# LINE 179 "./src-ag/GenerateCode.ag" #-}+                            {-# LINE 179 "src-ag/GenerateCode.ag" #-}                             if isIn_                             then "_"                             else concat $ intersperse "," (map (\(f,a) -> show f ++ "." ++ show a) _patternIpatternAttributes)                             {-# LINE 2288 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule312 #-}-   {-# LINE 182 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 182 "src-ag/GenerateCode.ag" #-}    rule312 = \ _patDescr con_ mbNamed_ nt_ ->-                              {-# LINE 182 "./src-ag/GenerateCode.ag" #-}+                              {-# LINE 182 "src-ag/GenerateCode.ag" #-}                               (maybe "" (\nm -> show nm ++ ":") mbNamed_) ++ show nt_ ++ " :: " ++ show con_ ++ " :: " ++ _patDescr                               {-# LINE 2294 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule313 #-}-   {-# LINE 184 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 184 "src-ag/GenerateCode.ag" #-}    rule313 = \ ((_lhsIo_traces) :: Bool) _traceDescr ->-                            {-# LINE 184 "./src-ag/GenerateCode.ag" #-}+                            {-# LINE 184 "src-ag/GenerateCode.ag" #-}                             \v -> if _lhsIo_traces                                   then Trace _traceDescr     v                                   else v                             {-# LINE 2302 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule314 #-}-   {-# LINE 187 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 187 "src-ag/GenerateCode.ag" #-}    rule314 = \ _patDescr con_ nt_ ->-                                   {-# LINE 187 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 187 "src-ag/GenerateCode.ag" #-}                                    show nt_ ++ ":" ++ show con_ ++ ":" ++ _patDescr                                    {-# LINE 2308 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule315 #-}-   {-# LINE 188 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 188 "src-ag/GenerateCode.ag" #-}    rule315 = \ _costCentreDescr ((_lhsIo_costcentre) :: Bool) ->-                                 {-# LINE 188 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 188 "src-ag/GenerateCode.ag" #-}                                  \v -> if _lhsIo_costcentre                                        then PragmaExpr True False ("SCC \"" ++ _costCentreDescr     ++ "\"") v                                        else v                                  {-# LINE 2316 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule316 #-}-   {-# LINE 191 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 191 "src-ag/GenerateCode.ag" #-}    rule316 = \ ((_lhsIo_linePragmas) :: Bool) name_ ->-                                 {-# LINE 191 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 191 "src-ag/GenerateCode.ag" #-}                                  \v -> let p = getPos name_                                            hasPos = line p > 0 && column p >= 0 && not (null (file p))                                        in if _lhsIo_linePragmas && hasPos@@ -2326,9 +2326,9 @@                                           else v                                  {-# LINE 2328 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule317 #-}-   {-# LINE 198 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 198 "src-ag/GenerateCode.ag" #-}    rule317 = \ _addCostCentre _addLinePragma _addTrace _instDecls ((_lhsIo_monadic) :: Bool) ((_lhsIoptions) :: Options) _originComment ((_patternIcopy) :: Pattern) defines_ explicit_ hasCode_ rhs_ uses_ ->-                         {-# LINE 198 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 198 "src-ag/GenerateCode.ag" #-}                          if hasCode_                          then _originComment ( mkDecl (_lhsIo_monadic && explicit_) (Pattern3 _patternIcopy) (_addTrace     $ _addCostCentre     $ _addLinePragma     $ (TextExpr rhs_))                                                     (Set.fromList [attrname _lhsIoptions False fld nm | (fld,nm,_) <- Map.elems defines_])@@ -2337,41 +2337,41 @@                          else _instDecls                          {-# LINE 2339 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule318 #-}-   {-# LINE 268 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 268 "src-ag/GenerateCode.ag" #-}    rule318 = \ ((_patternIdefinedInsts) :: [Identifier]) isIn_ ->-                                {-# LINE 268 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 268 "src-ag/GenerateCode.ag" #-}                                 if isIn_ then [] else _patternIdefinedInsts                                 {-# LINE 2345 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule319 #-}-   {-# LINE 338 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 338 "src-ag/GenerateCode.ag" #-}    rule319 = \ ((_lhsIoptions) :: Options) ((_lhsIterminals) :: [Identifier]) field_ isIn_ name_ ->-                            {-# LINE 338 "./src-ag/GenerateCode.ag" #-}+                            {-# LINE 338 "src-ag/GenerateCode.ag" #-}                             if  field_ == _LOC && name_ `elem` _lhsIterminals                             then funname name_ 0                             else attrname _lhsIoptions isIn_ field_ name_                             {-# LINE 2353 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule320 #-}-   {-# LINE 341 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 341 "src-ag/GenerateCode.ag" #-}    rule320 = \ _rulename ->-                         {-# LINE 341 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 341 "src-ag/GenerateCode.ag" #-}                          [SimpleExpr _rulename    ]                          {-# LINE 2359 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule321 #-}-   {-# LINE 357 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 357 "src-ag/GenerateCode.ag" #-}    rule321 = \ _rulename ->-                       {-# LINE 357 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 357 "src-ag/GenerateCode.ag" #-}                        Set.singleton _rulename                        {-# LINE 2365 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule322 #-}-   {-# LINE 367 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 367 "src-ag/GenerateCode.ag" #-}    rule322 = \ ((_lhsInt) :: NontermIdent) _orgParams ->-                               {-# LINE 367 "./src-ag/GenerateCode.ag" #-}+                               {-# LINE 367 "src-ag/GenerateCode.ag" #-}                                typeToCodeType (Just _lhsInt) _orgParams                                {-# LINE 2371 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule323 #-}-   {-# LINE 368 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 368 "src-ag/GenerateCode.ag" #-}    rule323 = \ _evalTp ((_lhsIchildren) :: [(Identifier,Type,ChildKind)]) ((_lhsIoptions) :: Options) _mkTp defines_ ->-                                {-# LINE 368 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 368 "src-ag/GenerateCode.ag" #-}                                 [ TSig (attrname _lhsIoptions False field attr) tp'                                 |  (field,attr,tp) <- Map.elems defines_, isJust tp                                 , let tp1 = _evalTp     field $ _mkTp (fromJust tp)@@ -2388,15 +2388,15 @@                                 ]                                 {-# LINE 2390 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule324 #-}-   {-# LINE 383 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 383 "src-ag/GenerateCode.ag" #-}    rule324 = \ ((_lhsInt) :: NontermIdent) ((_lhsIparamMap) :: ParamMap) ->-                                    {-# LINE 383 "./src-ag/GenerateCode.ag" #-}+                                    {-# LINE 383 "src-ag/GenerateCode.ag" #-}                                     map getName $ Map.findWithDefault [] _lhsInt _lhsIparamMap                                     {-# LINE 2396 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule325 #-}-   {-# LINE 385 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 385 "src-ag/GenerateCode.ag" #-}    rule325 = \ ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIparamInstMap) :: Map Identifier (NontermIdent, [String])) ((_lhsIparamMap) :: ParamMap) _orgParams ->-                      {-# LINE 385 "./src-ag/GenerateCode.ag" #-}+                      {-# LINE 385 "src-ag/GenerateCode.ag" #-}                       \field tp -> let orgFldParams = map getName $ Map.findWithDefault [] childNt _lhsIparamMap                                        (childNt,instParams) = Map.findWithDefault (_lhsInt,[]) field _lhsIparamInstMap                                        replMap = Map.fromList (zip orgFldParams instParams)@@ -2408,27 +2408,27 @@                                       else evalType _lhsIoptions replace tp                       {-# LINE 2410 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule326 #-}-   {-# LINE 420 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 420 "src-ag/GenerateCode.ag" #-}    rule326 = \ tp_ ->-                                            {-# LINE 420 "./src-ag/GenerateCode.ag" #-}+                                            {-# LINE 420 "src-ag/GenerateCode.ag" #-}                                             maybe ([],False) (\tp -> ([tp],True)) tp_                                             {-# LINE 2416 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule327 #-}-   {-# LINE 621 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 621 "src-ag/GenerateCode.ag" #-}    rule327 = \ _decls ((_lhsIdeclsAbove) :: [Decl]) ->-                         {-# LINE 621 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 621 "src-ag/GenerateCode.ag" #-}                          _lhsIdeclsAbove ++ _decls                          {-# LINE 2422 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule328 #-}-   {-# LINE 634 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 634 "src-ag/GenerateCode.ag" #-}    rule328 = \  (_ :: ()) ->-                           {-# LINE 634 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 634 "src-ag/GenerateCode.ag" #-}                            id                            {-# LINE 2428 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule329 #-}-   {-# LINE 910 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 910 "src-ag/GenerateCode.ag" #-}    rule329 = \ ((_lhsIwhat) :: String) defines_ ->-                                   {-# LINE 910 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 910 "src-ag/GenerateCode.ag" #-}                                    [ makeLocalComment 11 _lhsIwhat name tp | (field,name,tp) <- Map.elems defines_, field == _LOC ]                                    ++ [ makeLocalComment 11 "inst " name tp | (field,name,tp) <- Map.elems defines_, field == _INST ]                                    {-# LINE 2435 "dist/build/GenerateCode.hs"#-}@@ -2488,29 +2488,29 @@          in __result_ )      in C_CRule_s20 v19    {-# INLINE rule333 #-}-   {-# LINE 148 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 148 "src-ag/GenerateCode.ag" #-}    rule333 = \ ((_lhsIvisitedSet) :: Set Identifier) name_ ->-                                            {-# LINE 148 "./src-ag/GenerateCode.ag" #-}+                                            {-# LINE 148 "src-ag/GenerateCode.ag" #-}                                             Set.insert name_ _lhsIvisitedSet                                             {-# LINE 2496 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule334 #-}-   {-# LINE 204 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 204 "src-ag/GenerateCode.ag" #-}    rule334 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) name_ nr_ nt_ ->-                                         {-# LINE 204 "./src-ag/GenerateCode.ag" #-}+                                         {-# LINE 204 "src-ag/GenerateCode.ag" #-}                                          show _lhsInt ++ ":" ++ show _lhsIcon ++ ":" ++ show name_ ++ ":" ++ show nt_ ++ ":" ++ show nr_                                          {-# LINE 2502 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule335 #-}-   {-# LINE 205 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 205 "src-ag/GenerateCode.ag" #-}    rule335 = \ _costCentreDescr ((_lhsIo_costcentre) :: Bool) ->-                                       {-# LINE 205 "./src-ag/GenerateCode.ag" #-}+                                       {-# LINE 205 "src-ag/GenerateCode.ag" #-}                                        \v -> if _lhsIo_costcentre                                              then PragmaExpr True False ("SCC \"" ++ _costCentreDescr     ++ "\"") v                                              else v                                        {-# LINE 2510 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule336 #-}-   {-# LINE 208 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 208 "src-ag/GenerateCode.ag" #-}    rule336 = \ _addCostCentre ((_lhsIaroundMap) :: Set Identifier) ((_lhsIchildren) :: [(Identifier,Type,ChildKind)]) ((_lhsImergeMap) :: Map Identifier (Identifier, [Identifier])) ((_lhsIo_monadic) :: Bool) ((_lhsIo_newtypes) :: Bool) ((_lhsIo_unbox) :: Bool) ((_lhsIoptions) :: Options) _visitedSet inh_ isLast_ name_ nr_ nt_ syn_ ->-                               {-# LINE 208 "./src-ag/GenerateCode.ag" #-}+                               {-# LINE 208 "src-ag/GenerateCode.ag" #-}                                let  lhsVars =  map (attrname _lhsIoptions True name_) (Map.keys syn_)                                                ++ if isLast_ then [] else [unwrap ++ funname name_ (nr_+1)]                                     rhsVars = map (attrname _lhsIoptions False name_) (Map.keys inh_)@@ -2551,106 +2551,106 @@                                   (outDecls ++ outMerged)                                {-# LINE 2553 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule337 #-}-   {-# LINE 330 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 330 "src-ag/GenerateCode.ag" #-}    rule337 = \ ((_lhsIinstVisitNrs) :: Map Identifier Int) ((_lhsInr) :: Int) name_ ->-            {-# LINE 330 "./src-ag/GenerateCode.ag" #-}+            {-# LINE 330 "src-ag/GenerateCode.ag" #-}             _lhsInr <= Map.findWithDefault (-1) name_ _lhsIinstVisitNrs             {-# LINE 2559 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule338 #-}-   {-# LINE 343 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 343 "src-ag/GenerateCode.ag" #-}    rule338 = \ _isSuperfluousHigherOrderIntra name_ nr_ ->-                     {-# LINE 343 "./src-ag/GenerateCode.ag" #-}+                     {-# LINE 343 "src-ag/GenerateCode.ag" #-}                      if _isSuperfluousHigherOrderIntra                      then []                      else [funname name_ (nr_+1)]                      {-# LINE 2567 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule339 #-}-   {-# LINE 347 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 347 "src-ag/GenerateCode.ag" #-}    rule339 = \ _instParams ((_lhsIo_newtypes) :: Bool) ((_lhsIunfoldSemDom) :: NontermIdent -> Int -> [String] -> Code.Type) _names nr_ nt_ ->-                     {-# LINE 347 "./src-ag/GenerateCode.ag" #-}+                     {-# LINE 347 "src-ag/GenerateCode.ag" #-}                      let wrap = if _lhsIo_newtypes then \x -> App (typeName nt_ (nr_ + 1)) [x] else id                          addType expr | null _instParams     = expr                                       | otherwise            = TypedExpr expr (_lhsIunfoldSemDom nt_ (nr_+1) _instParams    )                      in map (wrap . addType . SimpleExpr) _names                      {-# LINE 2576 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule340 #-}-   {-# LINE 359 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 359 "src-ag/GenerateCode.ag" #-}    rule340 = \ _names ->-                       {-# LINE 359 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 359 "src-ag/GenerateCode.ag" #-}                        Set.fromList _names                        {-# LINE 2582 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule341 #-}-   {-# LINE 395 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 395 "src-ag/GenerateCode.ag" #-}    rule341 = \ _evalTp _orgParams nt_ ->-                               {-# LINE 395 "./src-ag/GenerateCode.ag" #-}+                               {-# LINE 395 "src-ag/GenerateCode.ag" #-}                                _evalTp     . typeToCodeType (Just nt_) _orgParams                                {-# LINE 2588 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule342 #-}-   {-# LINE 396 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 396 "src-ag/GenerateCode.ag" #-}    rule342 = \ ((_lhsIoptions) :: Options) _mkTp name_ syn_ ->-                                     {-# LINE 396 "./src-ag/GenerateCode.ag" #-}+                                     {-# LINE 396 "src-ag/GenerateCode.ag" #-}                                      [ TSig (attrname _lhsIoptions True name_ a) (_mkTp tp) |  (a,tp) <- Map.toList syn_ ]                                      {-# LINE 2594 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule343 #-}-   {-# LINE 397 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 397 "src-ag/GenerateCode.ag" #-}    rule343 = \ nr_ nt_ ->-                                 {-# LINE 397 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 397 "src-ag/GenerateCode.ag" #-}                                  typeName nt_ (nr_+1)                                  {-# LINE 2600 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule344 #-}-   {-# LINE 398 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 398 "src-ag/GenerateCode.ag" #-}    rule344 = \ _definedTps _instParams _nextTp isLast_ name_ nr_ ->-                                {-# LINE 398 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 398 "src-ag/GenerateCode.ag" #-}                                 (if isLast_ then id else (TSig (funname name_ (nr_+1)) (TypeApp (SimpleType _nextTp) (map SimpleType _instParams    )) :)) _definedTps                                 {-# LINE 2606 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule345 #-}-   {-# LINE 400 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 400 "src-ag/GenerateCode.ag" #-}    rule345 = \ ((_lhsIparamMap) :: ParamMap) nt_ ->-                                    {-# LINE 400 "./src-ag/GenerateCode.ag" #-}+                                    {-# LINE 400 "src-ag/GenerateCode.ag" #-}                                     map getName $ Map.findWithDefault [] nt_ _lhsIparamMap                                     {-# LINE 2612 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule346 #-}-   {-# LINE 401 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 401 "src-ag/GenerateCode.ag" #-}    rule346 = \ ((_lhsIparamInstMap) :: Map Identifier (NontermIdent, [String])) name_ nt_ ->-                                     {-# LINE 401 "./src-ag/GenerateCode.ag" #-}+                                     {-# LINE 401 "src-ag/GenerateCode.ag" #-}                                      snd $ Map.findWithDefault (nt_,[]) name_ _lhsIparamInstMap                                      {-# LINE 2618 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule347 #-}-   {-# LINE 402 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 402 "src-ag/GenerateCode.ag" #-}    rule347 = \ _instParams _orgParams ->-                                       {-# LINE 402 "./src-ag/GenerateCode.ag" #-}+                                       {-# LINE 402 "src-ag/GenerateCode.ag" #-}                                        Map.fromList (zip _orgParams     _instParams    )                                        {-# LINE 2624 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule348 #-}-   {-# LINE 403 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 403 "src-ag/GenerateCode.ag" #-}    rule348 = \ _replParamMap ->-                                  {-# LINE 403 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 403 "src-ag/GenerateCode.ag" #-}                                   \k -> Map.findWithDefault k k _replParamMap                                   {-# LINE 2630 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule349 #-}-   {-# LINE 404 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 404 "src-ag/GenerateCode.ag" #-}    rule349 = \ ((_lhsIoptions) :: Options) _orgParams _replace ->-                                 {-# LINE 404 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 404 "src-ag/GenerateCode.ag" #-}                                  if null _orgParams     then id else evalType _lhsIoptions _replace                                  {-# LINE 2636 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule350 #-}-   {-# LINE 421 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 421 "src-ag/GenerateCode.ag" #-}    rule350 = \ _instParams _isSuperfluousHigherOrderIntra nr_ nt_ ->-                              {-# LINE 421 "./src-ag/GenerateCode.ag" #-}+                              {-# LINE 421 "src-ag/GenerateCode.ag" #-}                               if _isSuperfluousHigherOrderIntra                               then []                               else [NT (ntOfVisit nt_ (nr_+1)) _instParams     False]                               {-# LINE 2644 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule351 #-}-   {-# LINE 623 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 623 "src-ag/GenerateCode.ag" #-}    rule351 = \  (_ :: ()) ->-                         {-# LINE 623 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 623 "src-ag/GenerateCode.ag" #-}                          []                          {-# LINE 2650 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule352 #-}-   {-# LINE 636 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 636 "src-ag/GenerateCode.ag" #-}    rule352 = \ _decls ((_lhsIdeclsAbove) :: [Decl]) ->-                           {-# LINE 636 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 636 "src-ag/GenerateCode.ag" #-}                            DeclBlock _lhsIdeclsAbove (head _decls    )                            {-# LINE 2656 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule353 #-}@@ -2678,8 +2678,8 @@ wrap_CSegment (T_CSegment act) (Inh_CSegment _lhsIinh _lhsIisLast _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CSegment_vIn22 _lhsIinh _lhsIisLast _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn-        (T_CSegment_vOut22 _lhsOcomments _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls) <- return (inv_CSegment_s23 sem arg)+        let arg22 = T_CSegment_vIn22 _lhsIinh _lhsIisLast _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn+        (T_CSegment_vOut22 _lhsOcomments _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls) <- return (inv_CSegment_s23 sem arg22)         return (Syn_CSegment _lhsOcomments _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls)    ) @@ -2733,103 +2733,103 @@          in __result_ )      in C_CSegment_s23 v22    {-# INLINE rule358 #-}-   {-# LINE 720 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 720 "src-ag/GenerateCode.ag" #-}    rule358 = \ ((_lhsIoptions) :: Options) ->-                                 {-# LINE 720 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 720 "src-ag/GenerateCode.ag" #-}                                  breadthFirst _lhsIoptions                                  {-# LINE 2741 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule359 #-}-   {-# LINE 721 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 721 "src-ag/GenerateCode.ag" #-}    rule359 = \ _altSemForm _indexExpr _inhTps _synTps ->-                         {-# LINE 721 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 721 "src-ag/GenerateCode.ag" #-}                          if _altSemForm                          then TypeApp (SimpleType "Child") [SimpleType "EvalInfo", _indexExpr     ]                          else foldr Arr _synTps     _inhTps                          {-# LINE 2749 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule360 #-}-   {-# LINE 724 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 724 "src-ag/GenerateCode.ag" #-}    rule360 = \ ((_lhsInt) :: NontermIdent) _params inh_ ->-                             {-# LINE 724 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 724 "src-ag/GenerateCode.ag" #-}                              [typeToCodeType (Just _lhsInt) _params     tp |  tp <- Map.elems inh_]                              {-# LINE 2755 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule361 #-}-   {-# LINE 725 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 725 "src-ag/GenerateCode.ag" #-}    rule361 = \ _inhTps ((_lhsIo_unbox) :: Bool) ->-                             {-# LINE 725 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 725 "src-ag/GenerateCode.ag" #-}                              mkTupleType _lhsIo_unbox (null _inhTps    ) _inhTps                              {-# LINE 2761 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule362 #-}-   {-# LINE 726 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 726 "src-ag/GenerateCode.ag" #-}    rule362 = \ _continuation _inhTps ((_lhsInt) :: NontermIdent) ((_lhsIo_unbox) :: Bool) _params syn_ ->-                             {-# LINE 726 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 726 "src-ag/GenerateCode.ag" #-}                              mkTupleType _lhsIo_unbox (null _inhTps    ) ([typeToCodeType (Just _lhsInt) _params     tp |  tp <- Map.elems syn_] ++ _continuation    )                              {-# LINE 2767 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule363 #-}-   {-# LINE 727 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 727 "src-ag/GenerateCode.ag" #-}    rule363 = \ ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ->-                                   {-# LINE 727 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 727 "src-ag/GenerateCode.ag" #-}                                    typeName _lhsInt _lhsInr                                    {-# LINE 2773 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule364 #-}-   {-# LINE 728 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 728 "src-ag/GenerateCode.ag" #-}    rule364 = \ ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ->-                                   {-# LINE 728 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 728 "src-ag/GenerateCode.ag" #-}                                    typeName _lhsInt (_lhsInr + 1)                                    {-# LINE 2779 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule365 #-}-   {-# LINE 729 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 729 "src-ag/GenerateCode.ag" #-}    rule365 = \ _curTypeName ->-                                   {-# LINE 729 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 729 "src-ag/GenerateCode.ag" #-}                                    "I_" ++ _curTypeName                                    {-# LINE 2785 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule366 #-}-   {-# LINE 730 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 730 "src-ag/GenerateCode.ag" #-}    rule366 = \ _indexName _params ->-                                {-# LINE 730 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 730 "src-ag/GenerateCode.ag" #-}                                 Code.Data _indexName     _params     [DataAlt _indexName     []] False []                                 {-# LINE 2791 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule367 #-}-   {-# LINE 731 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 731 "src-ag/GenerateCode.ag" #-}    rule367 = \ _indexName _params ->-                                {-# LINE 731 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 731 "src-ag/GenerateCode.ag" #-}                                 TypeApp (SimpleType _indexName    ) (map (SimpleType . ('@':)) _params    )                                 {-# LINE 2797 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule368 #-}-   {-# LINE 732 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 732 "src-ag/GenerateCode.ag" #-}    rule368 = \ _indexName _params ->-                                {-# LINE 732 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 732 "src-ag/GenerateCode.ag" #-}                                 "(" ++ _indexName     ++ concatMap (\p -> " " ++ p) _params     ++ ")"                                 {-# LINE 2803 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule369 #-}-   {-# LINE 733 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 733 "src-ag/GenerateCode.ag" #-}    rule369 = \ _indexStr _inhTup ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ->-                                  {-# LINE 733 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 733 "src-ag/GenerateCode.ag" #-}                                   Code.Data "instance Inh" [_indexStr    ] [DataAlt (typeName _lhsInt _lhsInr ++ "_Inh") [_inhTup    ] ] False []                                   {-# LINE 2809 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule370 #-}-   {-# LINE 734 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 734 "src-ag/GenerateCode.ag" #-}    rule370 = \ _indexStr ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) _synTps ->-                                  {-# LINE 734 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 734 "src-ag/GenerateCode.ag" #-}                                   Code.Data "instance Syn" [_indexStr    ] [DataAlt (typeName _lhsInt _lhsInr ++ "_Syn") [_synTps    ] ] False []                                   {-# LINE 2815 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule371 #-}-   {-# LINE 735 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 735 "src-ag/GenerateCode.ag" #-}    rule371 = \ ((_lhsIisLast) :: Bool) _nextTypeName _params ->-                                   {-# LINE 735 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 735 "src-ag/GenerateCode.ag" #-}                                    if  _lhsIisLast                                    then []                                    else [TypeApp (SimpleType _nextTypeName    ) (map (SimpleType . ('@':)) _params    )]                                    {-# LINE 2823 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule372 #-}-   {-# LINE 738 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 738 "src-ag/GenerateCode.ag" #-}    rule372 = \ ((_lhsInt) :: NontermIdent) ((_lhsIparamMap) :: ParamMap) ->-                             {-# LINE 738 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 738 "src-ag/GenerateCode.ag" #-}                              map getName $ Map.findWithDefault [] _lhsInt _lhsIparamMap                              {-# LINE 2829 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule373 #-}-   {-# LINE 739 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 739 "src-ag/GenerateCode.ag" #-}    rule373 = \ _altSemForm _dataIndex _inhInstance ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ((_lhsIo_newtypes) :: Bool) ((_lhsIoptions) :: Options) _params _synInstance _tp ->-                             {-# LINE 739 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 739 "src-ag/GenerateCode.ag" #-}                              let name = typeName _lhsInt _lhsInr                                  evalTp | null _params     = id                                         | otherwise        = idEvalType _lhsIoptions@@ -2841,15 +2841,15 @@                                      else [] )                              {-# LINE 2843 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule374 #-}-   {-# LINE 753 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 753 "src-ag/GenerateCode.ag" #-}    rule374 = \ ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) _params _tp ->-                               {-# LINE 753 "./src-ag/GenerateCode.ag" #-}+                               {-# LINE 753 "src-ag/GenerateCode.ag" #-}                                Map.singleton (_lhsInt, _lhsInr) (_params    , _tp    )                                {-# LINE 2849 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule375 #-}-   {-# LINE 838 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 838 "src-ag/GenerateCode.ag" #-}    rule375 = \ ((_lhsIisLast) :: Bool) ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ((_lhsIo_newtypes) :: Bool) ((_lhsIo_unbox) :: Bool) ((_lhsIoptions) :: Options) inh_ syn_ ->-                                 {-# LINE 838 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 838 "src-ag/GenerateCode.ag" #-}                                  let lhsVars = map (lhsname _lhsIoptions False) (Map.keys syn_)                                                ++ if _lhsIisLast then [] else [unwrap ++ sem (_lhsInr+1)]                                      rhsVars = map (lhsname _lhsIoptions True) (Map.keys inh_)@@ -2862,9 +2862,9 @@                                  in [ EvalDecl ntt (mkTupleLhs _lhsIo_unbox (null $ Map.keys inh_) lhsVars) (InvokeExpr ntt (SimpleExpr $ sem _lhsInr) rhs) ]                                  {-# LINE 2864 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule376 #-}-   {-# LINE 880 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 880 "src-ag/GenerateCode.ag" #-}    rule376 = \ ((_lhsInr) :: Int) inh_ syn_ ->-                                   {-# LINE 880 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 880 "src-ag/GenerateCode.ag" #-}                                    let body = map ind (showsSegment (CSegment inh_ syn_))                                    in if null body                                       then []@@ -2880,8 +2880,8 @@ wrap_CSegments (T_CSegments act) (Inh_CSegments _lhsIinh _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CSegments_vIn25 _lhsIinh _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn-        (T_CSegments_vOut25 _lhsOcomments _lhsOisNil _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls) <- return (inv_CSegments_s26 sem arg)+        let arg25 = T_CSegments_vIn25 _lhsIinh _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamMap _lhsIprefix _lhsIsyn+        (T_CSegments_vOut25 _lhsOcomments _lhsOisNil _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls) <- return (inv_CSegments_s26 sem arg25)         return (Syn_CSegments _lhsOcomments _lhsOisNil _lhsOsemDom _lhsOsemDomUnfoldGath _lhsOwrapDecls)    ) @@ -2973,21 +2973,21 @@          in __result_ )      in C_CSegments_s26 v25    {-# INLINE rule377 #-}-   {-# LINE 288 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 288 "src-ag/GenerateCode.ag" #-}    rule377 = \ ((_lhsInr) :: Int) ->-                    {-# LINE 288 "./src-ag/GenerateCode.ag" #-}+                    {-# LINE 288 "src-ag/GenerateCode.ag" #-}                     _lhsInr + 1                     {-# LINE 2981 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule378 #-}-   {-# LINE 301 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 301 "src-ag/GenerateCode.ag" #-}    rule378 = \  (_ :: ()) ->-                         {-# LINE 301 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 301 "src-ag/GenerateCode.ag" #-}                          False                          {-# LINE 2987 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule379 #-}-   {-# LINE 302 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 302 "src-ag/GenerateCode.ag" #-}    rule379 = \ ((_tlIisNil) :: Bool) ->-                         {-# LINE 302 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 302 "src-ag/GenerateCode.ag" #-}                          _tlIisNil                          {-# LINE 2993 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule380 #-}@@ -3158,9 +3158,9 @@          in __result_ )      in C_CSegments_s26 v25    {-# INLINE rule429 #-}-   {-# LINE 303 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 303 "src-ag/GenerateCode.ag" #-}    rule429 = \  (_ :: ()) ->-                       {-# LINE 303 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 303 "src-ag/GenerateCode.ag" #-}                        True                        {-# LINE 3166 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule430 #-}@@ -3185,8 +3185,8 @@ wrap_CVisit (T_CVisit act) (Inh_CVisit _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIdecls _lhsIinh _lhsIinstVisitNrs _lhsIisLast _lhsImergeMap _lhsInextIntra _lhsInextIntraVars _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwith_sig _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CVisit_vIn28 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIdecls _lhsIinh _lhsIinstVisitNrs _lhsIisLast _lhsImergeMap _lhsInextIntra _lhsInextIntraVars _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwith_sig _lhsIwrappers-        (T_CVisit_vOut28 _lhsOcomments _lhsOdecls _lhsOgatherInstVisitNrs _lhsOintra _lhsOintraVars _lhsOsemNames _lhsOvisitedSet) <- return (inv_CVisit_s29 sem arg)+        let arg28 = T_CVisit_vIn28 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIdecls _lhsIinh _lhsIinstVisitNrs _lhsIisLast _lhsImergeMap _lhsInextIntra _lhsInextIntraVars _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwith_sig _lhsIwrappers+        (T_CVisit_vOut28 _lhsOcomments _lhsOdecls _lhsOgatherInstVisitNrs _lhsOintra _lhsOintraVars _lhsOsemNames _lhsOvisitedSet) <- return (inv_CVisit_s29 sem arg28)         return (Syn_CVisit _lhsOcomments _lhsOdecls _lhsOgatherInstVisitNrs _lhsOintra _lhsOintraVars _lhsOsemNames _lhsOvisitedSet)    ) @@ -3329,45 +3329,45 @@          in __result_ )      in C_CVisit_s29 v28    {-# INLINE rule434 #-}-   {-# LINE 312 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 312 "src-ag/GenerateCode.ag" #-}    rule434 = \ ((_intraIexprs) :: Exprs) ->-                          {-# LINE 312 "./src-ag/GenerateCode.ag" #-}+                          {-# LINE 312 "src-ag/GenerateCode.ag" #-}                           _intraIexprs                           {-# LINE 3337 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule435 #-}-   {-# LINE 313 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 313 "src-ag/GenerateCode.ag" #-}    rule435 = \ ((_intraIusedVars) :: Set String) ->-                              {-# LINE 313 "./src-ag/GenerateCode.ag" #-}+                              {-# LINE 313 "src-ag/GenerateCode.ag" #-}                               _intraIusedVars                               {-# LINE 3343 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule436 #-}-   {-# LINE 443 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 443 "src-ag/GenerateCode.ag" #-}    rule436 = \ ((_lhsIchildren) :: [(Identifier,Type, ChildKind)]) ->-                                                                 {-# LINE 443 "./src-ag/GenerateCode.ag" #-}+                                                                 {-# LINE 443 "src-ag/GenerateCode.ag" #-}                                                                  partition (\(_,_,virt) -> isHigherOrder virt) _lhsIchildren                                                                  {-# LINE 3349 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule437 #-}-   {-# LINE 444 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 444 "src-ag/GenerateCode.ag" #-}    rule437 = \ _firstOrderChildren ->-                                   {-# LINE 444 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 444 "src-ag/GenerateCode.ag" #-}                                    map pickOrigType _firstOrderChildren                                    {-# LINE 3355 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule438 #-}-   {-# LINE 445 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 445 "src-ag/GenerateCode.ag" #-}    rule438 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ((_lhsIprefix) :: String) ->-                             {-# LINE 445 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 445 "src-ag/GenerateCode.ag" #-}                              seqSemname _lhsIprefix _lhsInt _lhsIcon _lhsInr                              {-# LINE 3361 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule439 #-}-   {-# LINE 446 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 446 "src-ag/GenerateCode.ag" #-}    rule439 = \ ((_lhsIisLast) :: Bool) ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ((_lhsIprefix) :: String) ->-                                  {-# LINE 446 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 446 "src-ag/GenerateCode.ag" #-}                                   if _lhsIisLast then [] else [visitname _lhsIprefix _lhsInt (_lhsInr+1)]                                   {-# LINE 3367 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule440 #-}-   {-# LINE 447 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 447 "src-ag/GenerateCode.ag" #-}    rule440 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsIdecls) :: Decls) ((_lhsIisLast) :: Bool) ((_lhsInextIntraVars) :: Set String) ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ((_lhsIprefix) :: String) _nextVisitName ->-                                  {-# LINE 447 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 447 "src-ag/GenerateCode.ag" #-}                                   let  lhs = TupleLhs _nextVisitName                                        rhs = Let _lhsIdecls (SimpleExpr fun)                                        fun = seqSemname _lhsIprefix _lhsInt _lhsIcon (_lhsInr+1)@@ -3376,21 +3376,21 @@                                      else [Decl lhs rhs (Set.fromList _nextVisitName) _lhsInextIntraVars]                                   {-# LINE 3378 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule441 #-}-   {-# LINE 454 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 454 "src-ag/GenerateCode.ag" #-}    rule441 = \ ((_lhsIisLast) :: Bool) ((_lhsInr) :: Int) ->-                                {-# LINE 454 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 454 "src-ag/GenerateCode.ag" #-}                                 _lhsIisLast && _lhsInr == 0                                 {-# LINE 3384 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule442 #-}-   {-# LINE 455 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 455 "src-ag/GenerateCode.ag" #-}    rule442 = \ ((_lhsInt) :: NontermIdent) ((_lhsIwrappers) :: Set NontermIdent) ->-                                {-# LINE 455 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 455 "src-ag/GenerateCode.ag" #-}                                 _lhsInt `Set.member` _lhsIwrappers                                 {-# LINE 3390 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule443 #-}-   {-# LINE 456 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 456 "src-ag/GenerateCode.ag" #-}    rule443 = \ _hasWrappers _isOneVisit ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) syn_ ->-                             {-# LINE 456 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 456 "src-ag/GenerateCode.ag" #-}                              if _isOneVisit     && _hasWrappers     && reference _lhsIoptions                              then let synAttrs = Map.toList syn_                                       synNT = "Syn" ++ "_" ++ getName _lhsInt@@ -3401,61 +3401,61 @@                              else []                              {-# LINE 3403 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule444 #-}-   {-# LINE 464 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 464 "src-ag/GenerateCode.ag" #-}    rule444 = \ ((_lhsIo_clean) :: Bool) _nextVisitDecl _refDecls _typeSigs ((_vssIdecls) :: Decls) ->-                          {-# LINE 464 "./src-ag/GenerateCode.ag" #-}+                          {-# LINE 464 "src-ag/GenerateCode.ag" #-}                           if _lhsIo_clean                             then _vssIdecls ++ _nextVisitDecl ++ _refDecls                             else _typeSigs ++ _vssIdecls ++ _nextVisitDecl ++ _refDecls                           {-# LINE 3411 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule445 #-}-   {-# LINE 467 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 467 "src-ag/GenerateCode.ag" #-}    rule445 = \ ((_lhsIo_unbox) :: Bool) ((_lhsIoptions) :: Options) _nextVisitName inh_ syn_ ->-                             {-# LINE 467 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 467 "src-ag/GenerateCode.ag" #-}                              mkTupleExpr _lhsIo_unbox (null $ Map.keys inh_) $ map (SimpleExpr . lhsname _lhsIoptions False) (Map.keys syn_) ++ map SimpleExpr _nextVisitName                              {-# LINE 3417 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule446 #-}-   {-# LINE 468 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 468 "src-ag/GenerateCode.ag" #-}    rule446 = \  (_ :: ()) ->-                               {-# LINE 468 "./src-ag/GenerateCode.ag" #-}+                               {-# LINE 468 "src-ag/GenerateCode.ag" #-}                                error "lastExpr: not used here"                                {-# LINE 3423 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule447 #-}-   {-# LINE 469 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 469 "src-ag/GenerateCode.ag" #-}    rule447 = \ ((_lhsIoptions) :: Options) _nextVisitName syn_ ->-                                 {-# LINE 469 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 469 "src-ag/GenerateCode.ag" #-}                                  map (lhsname _lhsIoptions False) (Map.keys syn_) ++ _nextVisitName                                  {-# LINE 3429 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule448 #-}-   {-# LINE 470 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 470 "src-ag/GenerateCode.ag" #-}    rule448 = \ _funcname _lastExprVars _nextVisitDecl _o_case ((_vssIblockDecls) :: DeclBlocks) ->-                                                           {-# LINE 470 "./src-ag/GenerateCode.ag" #-}+                                                           {-# LINE 470 "src-ag/GenerateCode.ag" #-}                                                            mkPartitionedFunction _funcname     _o_case     _nextVisitDecl     _lastExprVars     _vssIblockDecls                                                            {-# LINE 3435 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule449 #-}-   {-# LINE 472 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 472 "src-ag/GenerateCode.ag" #-}    rule449 = \ ((_lhsIcon) :: ConstructorIdent) ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ->-                                    {-# LINE 472 "./src-ag/GenerateCode.ag" #-}+                                    {-# LINE 472 "src-ag/GenerateCode.ag" #-}                                     "b" ++ ":" ++ show _lhsInt ++ ":" ++ show _lhsIcon ++ ":" ++ show _lhsInr                                     {-# LINE 3441 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule450 #-}-   {-# LINE 473 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 473 "src-ag/GenerateCode.ag" #-}    rule450 = \ _costCentreDescr ((_lhsIo_costcentre) :: Bool) ->-                                  {-# LINE 473 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 473 "src-ag/GenerateCode.ag" #-}                                   \v -> if _lhsIo_costcentre                                         then PragmaExpr True False ("SCC \"" ++ _costCentreDescr     ++ "\"") v                                         else v                                   {-# LINE 3449 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule451 #-}-   {-# LINE 477 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 477 "src-ag/GenerateCode.ag" #-}    rule451 = \ ((_lhsInt) :: NontermIdent) ((_lhsIparamMap) :: ParamMap) ->-                           {-# LINE 477 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 477 "src-ag/GenerateCode.ag" #-}                            map getName $ Map.findWithDefault [] _lhsInt _lhsIparamMap                            {-# LINE 3455 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule452 #-}-   {-# LINE 478 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 478 "src-ag/GenerateCode.ag" #-}    rule452 = \ _addCostCentre _blockFirstFunCall _decls _declsType _firstOrderOrig _funcname ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ((_lhsIo_newtypes) :: Bool) ((_lhsIo_unbox) :: Bool) ((_lhsIoptions) :: Options) ((_lhsIunfoldSemDom) :: NontermIdent -> Int -> [String] -> Code.Type) _nextVisitName _o_splitsems _params inh_ ordered_ syn_ ->-                           {-# LINE 478 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 478 "src-ag/GenerateCode.ag" #-}                            let  lhs = Fun _funcname lhs_args                                 lhs_args = if _lhsInr == 0 then map field _firstOrderOrig     else []                                 field (name,NT tp tps _,_) = let unwrap | _lhsIo_newtypes = \x -> App (sdtype tp) [x]@@ -3484,15 +3484,15 @@                            in Decl lhs rhs Set.empty Set.empty                            {-# LINE 3486 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule453 #-}-   {-# LINE 509 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 509 "src-ag/GenerateCode.ag" #-}    rule453 = \ _funcname _semType ->-                         {-# LINE 509 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 509 "src-ag/GenerateCode.ag" #-}                          TSig _funcname _semType                          {-# LINE 3492 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule454 #-}-   {-# LINE 510 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 510 "src-ag/GenerateCode.ag" #-}    rule454 = \ _firstOrderOrig ((_lhsIcontextMap) :: ContextMap) ((_lhsInr) :: Int) ((_lhsInt) :: NontermIdent) ((_lhsIoptions) :: Options) ((_lhsIquantMap) :: QuantMap) _params ->-                            {-# LINE 510 "./src-ag/GenerateCode.ag" #-}+                            {-# LINE 510 "src-ag/GenerateCode.ag" #-}                             let argType (NT tp tps _)  r | tp /= _SELF = typeAppStrs (sdtype tp) tps `Arr` r                                                          | tp == _SELF = error "GenerateCode: found an intra-type with type SELF, which should have been prevented by CRule.tps"                                 argType (Haskell tp) r                 = SimpleType tp          `Arr` r@@ -3505,9 +3505,9 @@                                    else foldr argType (typeAppStrs (typeName _lhsInt _lhsInr) _params    ) []                             {-# LINE 3507 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule455 #-}-   {-# LINE 521 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 521 "src-ag/GenerateCode.ag" #-}    rule455 = \ _blockFunDecls ((_lhsIwith_sig) :: Bool) _o_splitsems _semFun _tsig ordered_ ->-                           {-# LINE 521 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 521 "src-ag/GenerateCode.ag" #-}                            ( if  _lhsIwith_sig                              then [_tsig, _semFun]                              else [_semFun]@@ -3518,29 +3518,29 @@                            )                            {-# LINE 3520 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule456 #-}-   {-# LINE 529 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 529 "src-ag/GenerateCode.ag" #-}    rule456 = \ ((_lhsIo_sig) :: Bool) _o_case ((_vssItSigs) :: [Decl]) ->-                              {-# LINE 529 "./src-ag/GenerateCode.ag" #-}+                              {-# LINE 529 "src-ag/GenerateCode.ag" #-}                               if  _lhsIo_sig && not _o_case                                   then  _vssItSigs                                   else  []                               {-# LINE 3528 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule457 #-}-   {-# LINE 532 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 532 "src-ag/GenerateCode.ag" #-}    rule457 = \ ((_lhsIo_monadic) :: Bool) ordered_ ->-                           {-# LINE 532 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 532 "src-ag/GenerateCode.ag" #-}                            ordered_ && _lhsIo_monadic                            {-# LINE 3534 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule458 #-}-   {-# LINE 533 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 533 "src-ag/GenerateCode.ag" #-}    rule458 = \ ((_lhsIallPragmas) :: PragmaMap) ((_lhsIcon) :: ConstructorIdent) ((_lhsInt) :: NontermIdent) ((_lhsIo_case) :: Bool) _o_do ordered_ ->-                           {-# LINE 533 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 533 "src-ag/GenerateCode.ag" #-}                            not _o_do     && _lhsIo_case && ordered_ && not (hasPragma _lhsIallPragmas _lhsInt _lhsIcon _NOCASE)                            {-# LINE 3540 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule459 #-}-   {-# LINE 534 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 534 "src-ag/GenerateCode.ag" #-}    rule459 = \ _o_case _o_do ->-                              {-# LINE 534 "./src-ag/GenerateCode.ag" #-}+                              {-# LINE 534 "src-ag/GenerateCode.ag" #-}                               if _o_do                               then DeclsDo                               else if _o_case@@ -3548,54 +3548,54 @@                                    else DeclsLet                               {-# LINE 3550 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule460 #-}-   {-# LINE 539 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 539 "src-ag/GenerateCode.ag" #-}    rule460 = \ ((_lhsIo_splitsems) :: Bool) ordered_ ->-                                {-# LINE 539 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 539 "src-ag/GenerateCode.ag" #-}                                 ordered_ && _lhsIo_splitsems                                 {-# LINE 3556 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule461 #-}-   {-# LINE 573 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 573 "src-ag/GenerateCode.ag" #-}    rule461 = \ ((_lhsInr) :: Int) ((_vssIdefinedInsts) :: [Identifier]) ->-                                 {-# LINE 573 "./src-ag/GenerateCode.ag" #-}+                                 {-# LINE 573 "src-ag/GenerateCode.ag" #-}                                  Map.fromList [(i,_lhsInr) | i <- _vssIdefinedInsts]                                  {-# LINE 3562 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule462 #-}-   {-# LINE 616 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 616 "src-ag/GenerateCode.ag" #-}    rule462 = \  (_ :: ()) ->-                         {-# LINE 616 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 616 "src-ag/GenerateCode.ag" #-}                          []                          {-# LINE 3568 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule463 #-}-   {-# LINE 617 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 617 "src-ag/GenerateCode.ag" #-}    rule463 = \  (_ :: ()) ->-                           {-# LINE 617 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 617 "src-ag/GenerateCode.ag" #-}                            error "declsAbove: not used here"                            {-# LINE 3574 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule464 #-}-   {-# LINE 901 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 901 "src-ag/GenerateCode.ag" #-}    rule464 = \ ((_intraIcomments) :: [String]) ((_lhsInr) :: Int) ((_vssIcomments) :: [String]) ->-                                   {-# LINE 901 "./src-ag/GenerateCode.ag" #-}+                                   {-# LINE 901 "src-ag/GenerateCode.ag" #-}                                    let body = map ind (_vssIcomments ++ _intraIcomments)                                    in if null body                                       then []                                       else ("visit " ++ show _lhsInr ++ ":") : body                                    {-# LINE 3583 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule465 #-}-   {-# LINE 905 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 905 "src-ag/GenerateCode.ag" #-}    rule465 = \  (_ :: ()) ->-                                  {-# LINE 905 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 905 "src-ag/GenerateCode.ag" #-}                                   "local"                                   {-# LINE 3589 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule466 #-}-   {-# LINE 906 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 906 "src-ag/GenerateCode.ag" #-}    rule466 = \  (_ :: ()) ->-                                  {-# LINE 906 "./src-ag/GenerateCode.ag" #-}+                                  {-# LINE 906 "src-ag/GenerateCode.ag" #-}                                   "intra"                                   {-# LINE 3595 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule467 #-}-   {-# LINE 1186 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 1186 "src-ag/GenerateCode.ag" #-}    rule467 = \ _funcname ->-                       {-# LINE 1186 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 1186 "src-ag/GenerateCode.ag" #-}                        [_funcname    ]                        {-# LINE 3601 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule468 #-}@@ -3809,8 +3809,8 @@ wrap_CVisits (T_CVisits act) (Inh_CVisits _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIinh _lhsIinstVisitNrs _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwith_sig _lhsIwrappers) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CVisits_vIn31 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIinh _lhsIinstVisitNrs _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwith_sig _lhsIwrappers-        (T_CVisits_vOut31 _lhsOcomments _lhsOdecls _lhsOgatherInstVisitNrs _lhsOintra _lhsOintraVars _lhsOisNil _lhsOsemNames _lhsOvisitedSet) <- return (inv_CVisits_s32 sem arg)+        let arg31 = T_CVisits_vIn31 _lhsIallNts _lhsIallPragmas _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIinh _lhsIinstVisitNrs _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIquantMap _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwith_sig _lhsIwrappers+        (T_CVisits_vOut31 _lhsOcomments _lhsOdecls _lhsOgatherInstVisitNrs _lhsOintra _lhsOintraVars _lhsOisNil _lhsOsemNames _lhsOvisitedSet) <- return (inv_CVisits_s32 sem arg31)         return (Syn_CVisits _lhsOcomments _lhsOdecls _lhsOgatherInstVisitNrs _lhsOintra _lhsOintraVars _lhsOisNil _lhsOsemNames _lhsOvisitedSet)    ) @@ -3941,57 +3941,57 @@          in __result_ )      in C_CVisits_s32 v31    {-# INLINE rule535 #-}-   {-# LINE 284 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 284 "src-ag/GenerateCode.ag" #-}    rule535 = \ ((_lhsInr) :: Int) ->-                    {-# LINE 284 "./src-ag/GenerateCode.ag" #-}+                    {-# LINE 284 "src-ag/GenerateCode.ag" #-}                     _lhsInr + 1                     {-# LINE 3949 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule536 #-}-   {-# LINE 297 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 297 "src-ag/GenerateCode.ag" #-}    rule536 = \  (_ :: ()) ->-                         {-# LINE 297 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 297 "src-ag/GenerateCode.ag" #-}                          False                          {-# LINE 3955 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule537 #-}-   {-# LINE 298 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 298 "src-ag/GenerateCode.ag" #-}    rule537 = \ ((_tlIisNil) :: Bool) ->-                         {-# LINE 298 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 298 "src-ag/GenerateCode.ag" #-}                          _tlIisNil                          {-# LINE 3961 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule538 #-}-   {-# LINE 315 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 315 "src-ag/GenerateCode.ag" #-}    rule538 = \ ((_tlIintra) :: Exprs) ->-                            {-# LINE 315 "./src-ag/GenerateCode.ag" #-}+                            {-# LINE 315 "src-ag/GenerateCode.ag" #-}                             _tlIintra                             {-# LINE 3967 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule539 #-}-   {-# LINE 316 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 316 "src-ag/GenerateCode.ag" #-}    rule539 = \ ((_tlIintraVars) :: Set String) ->-                                {-# LINE 316 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 316 "src-ag/GenerateCode.ag" #-}                                 _tlIintraVars                                 {-# LINE 3973 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule540 #-}-   {-# LINE 317 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 317 "src-ag/GenerateCode.ag" #-}    rule540 = \ ((_hdIintra) :: Exprs) ->-                         {-# LINE 317 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 317 "src-ag/GenerateCode.ag" #-}                          _hdIintra                          {-# LINE 3979 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule541 #-}-   {-# LINE 318 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 318 "src-ag/GenerateCode.ag" #-}    rule541 = \ ((_hdIintraVars) :: Set String) ->-                             {-# LINE 318 "./src-ag/GenerateCode.ag" #-}+                             {-# LINE 318 "src-ag/GenerateCode.ag" #-}                              _hdIintraVars                              {-# LINE 3985 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule542 #-}-   {-# LINE 433 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 433 "src-ag/GenerateCode.ag" #-}    rule542 = \ ((_hdIdecls) :: Decls) ->-                        {-# LINE 433 "./src-ag/GenerateCode.ag" #-}+                        {-# LINE 433 "src-ag/GenerateCode.ag" #-}                         _hdIdecls                         {-# LINE 3991 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule543 #-}-   {-# LINE 434 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 434 "src-ag/GenerateCode.ag" #-}    rule543 = \ ((_tlIdecls) :: Decls) ->-                        {-# LINE 434 "./src-ag/GenerateCode.ag" #-}+                        {-# LINE 434 "src-ag/GenerateCode.ag" #-}                         _tlIdecls                         {-# LINE 3997 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule544 #-}@@ -4258,27 +4258,27 @@          in __result_ )      in C_CVisits_s32 v31    {-# INLINE rule623 #-}-   {-# LINE 299 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 299 "src-ag/GenerateCode.ag" #-}    rule623 = \  (_ :: ()) ->-                       {-# LINE 299 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 299 "src-ag/GenerateCode.ag" #-}                        True                        {-# LINE 4266 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule624 #-}-   {-# LINE 319 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 319 "src-ag/GenerateCode.ag" #-}    rule624 = \  (_ :: ()) ->-                       {-# LINE 319 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 319 "src-ag/GenerateCode.ag" #-}                        []                        {-# LINE 4272 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule625 #-}-   {-# LINE 320 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 320 "src-ag/GenerateCode.ag" #-}    rule625 = \  (_ :: ()) ->-                           {-# LINE 320 "./src-ag/GenerateCode.ag" #-}+                           {-# LINE 320 "src-ag/GenerateCode.ag" #-}                            Set.empty                            {-# LINE 4278 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule626 #-}-   {-# LINE 432 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 432 "src-ag/GenerateCode.ag" #-}    rule626 = \  (_ :: ()) ->-                        {-# LINE 432 "./src-ag/GenerateCode.ag" #-}+                        {-# LINE 432 "src-ag/GenerateCode.ag" #-}                         []                         {-# LINE 4284 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule627 #-}@@ -4303,8 +4303,8 @@ wrap_DeclBlocks (T_DeclBlocks act) (Inh_DeclBlocks _lhsIblockNr _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_DeclBlocks_vIn34 _lhsIblockNr _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix-        (T_DeclBlocks_vOut34 _lhsOcallExpr _lhsOdecls _lhsOfreeVars) <- return (inv_DeclBlocks_s35 sem arg)+        let arg34 = T_DeclBlocks_vIn34 _lhsIblockNr _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix+        (T_DeclBlocks_vOut34 _lhsOcallExpr _lhsOdecls _lhsOfreeVars) <- return (inv_DeclBlocks_s35 sem arg34)         return (Syn_DeclBlocks _lhsOcallExpr _lhsOdecls _lhsOfreeVars)    ) @@ -4353,45 +4353,45 @@          in __result_ )      in C_DeclBlocks_s35 v34    {-# INLINE rule631 #-}-   {-# LINE 667 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 667 "src-ag/GenerateCode.ag" #-}    rule631 = \ ((_lhsIblockNr) :: Int) ->-                       {-# LINE 667 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 667 "src-ag/GenerateCode.ag" #-}                        _lhsIblockNr + 1                        {-# LINE 4361 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule632 #-}-   {-# LINE 672 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 672 "src-ag/GenerateCode.ag" #-}    rule632 = \ ((_lhsIblockNr) :: Int) ((_lhsIprefix) :: String) ->-                         {-# LINE 672 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 672 "src-ag/GenerateCode.ag" #-}                          _lhsIprefix ++ "_block" ++ show _lhsIblockNr                          {-# LINE 4367 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule633 #-}-   {-# LINE 673 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 673 "src-ag/GenerateCode.ag" #-}    rule633 = \ _lambdaName ->-                         {-# LINE 673 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 673 "src-ag/GenerateCode.ag" #-}                          PragmaDecl ("NOINLINE " ++ _lambdaName    )                          {-# LINE 4373 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule634 #-}-   {-# LINE 674 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 674 "src-ag/GenerateCode.ag" #-}    rule634 = \ _freeVars _lambdaName ->-                       {-# LINE 674 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 674 "src-ag/GenerateCode.ag" #-}                        App _lambdaName     (map SimpleExpr _freeVars    )                        {-# LINE 4379 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule635 #-}-   {-# LINE 678 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 678 "src-ag/GenerateCode.ag" #-}    rule635 = \ ((_nextIfreeVars) :: [String]) defs_ visit_ ->-                       {-# LINE 678 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 678 "src-ag/GenerateCode.ag" #-}                        freevars _nextIfreeVars (visit_ : defs_)                        {-# LINE 4385 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule636 #-}-   {-# LINE 685 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 685 "src-ag/GenerateCode.ag" #-}    rule636 = \ _freeVars _lambdaName ((_lhsIoptCase) :: Bool) ((_nextIcallExpr) :: Expr) defs_ visit_ ->-                   {-# LINE 685 "./src-ag/GenerateCode.ag" #-}+                   {-# LINE 685 "src-ag/GenerateCode.ag" #-}                    mkBlockLambda _lhsIoptCase _lambdaName     _freeVars     (defs_ ++ [visit_]) _nextIcallExpr                    {-# LINE 4391 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule637 #-}-   {-# LINE 686 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 686 "src-ag/GenerateCode.ag" #-}    rule637 = \ _decl ((_lhsIblockNr) :: Int) ((_nextIdecls) :: [Decl]) _pragmaDecl ->-                    {-# LINE 686 "./src-ag/GenerateCode.ag" #-}+                    {-# LINE 686 "src-ag/GenerateCode.ag" #-}                     (if _lhsIblockNr > 1 then [_pragmaDecl    ] else []) ++ [_decl    ] ++ _nextIdecls                     {-# LINE 4397 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule638 #-}@@ -4429,33 +4429,33 @@          in __result_ )      in C_DeclBlocks_s35 v34    {-# INLINE rule643 #-}-   {-# LINE 672 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 672 "src-ag/GenerateCode.ag" #-}    rule643 = \ ((_lhsIblockNr) :: Int) ((_lhsIprefix) :: String) ->-                         {-# LINE 672 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 672 "src-ag/GenerateCode.ag" #-}                          _lhsIprefix ++ "_block" ++ show _lhsIblockNr                          {-# LINE 4437 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule644 #-}-   {-# LINE 673 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 673 "src-ag/GenerateCode.ag" #-}    rule644 = \ _lambdaName ->-                         {-# LINE 673 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 673 "src-ag/GenerateCode.ag" #-}                          PragmaDecl ("NOINLINE " ++ _lambdaName    )                          {-# LINE 4443 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule645 #-}-   {-# LINE 674 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 674 "src-ag/GenerateCode.ag" #-}    rule645 = \ _freeVars _lambdaName ->-                       {-# LINE 674 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 674 "src-ag/GenerateCode.ag" #-}                        App _lambdaName     (map SimpleExpr _freeVars    )                        {-# LINE 4449 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule646 #-}-   {-# LINE 676 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 676 "src-ag/GenerateCode.ag" #-}    rule646 = \ ((_lhsIlastExprVars) :: [String]) ((_lhsInextVisitDecls) :: [Decl]) defs_ ->-                       {-# LINE 676 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 676 "src-ag/GenerateCode.ag" #-}                        freevars _lhsIlastExprVars (defs_ ++ _lhsInextVisitDecls)                        {-# LINE 4455 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule647 #-}-   {-# LINE 683 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 683 "src-ag/GenerateCode.ag" #-}    rule647 = \ _freeVars _lambdaName ((_lhsInextVisitDecls) :: [Decl]) ((_lhsIoptCase) :: Bool) defs_ result_ ->-                    {-# LINE 683 "./src-ag/GenerateCode.ag" #-}+                    {-# LINE 683 "src-ag/GenerateCode.ag" #-}                     [ mkBlockLambda _lhsIoptCase _lambdaName     _freeVars     (defs_ ++ _lhsInextVisitDecls) result_ ]                     {-# LINE 4461 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule648 #-}@@ -4471,8 +4471,8 @@ wrap_DeclBlocksRoot (T_DeclBlocksRoot act) (Inh_DeclBlocksRoot _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_DeclBlocksRoot_vIn37 _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix-        (T_DeclBlocksRoot_vOut37 _lhsOfirstCall _lhsOlambdas) <- return (inv_DeclBlocksRoot_s38 sem arg)+        let arg37 = T_DeclBlocksRoot_vIn37 _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix+        (T_DeclBlocksRoot_vOut37 _lhsOfirstCall _lhsOlambdas) <- return (inv_DeclBlocksRoot_s38 sem arg37)         return (Syn_DeclBlocksRoot _lhsOfirstCall _lhsOlambdas)    ) @@ -4514,21 +4514,21 @@          in __result_ )      in C_DeclBlocksRoot_s38 v37    {-# INLINE rule649 #-}-   {-# LINE 658 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 658 "src-ag/GenerateCode.ag" #-}    rule649 = \ ((_blocksIdecls) :: [Decl]) ->-                       {-# LINE 658 "./src-ag/GenerateCode.ag" #-}+                       {-# LINE 658 "src-ag/GenerateCode.ag" #-}                        _blocksIdecls                        {-# LINE 4522 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule650 #-}-   {-# LINE 659 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 659 "src-ag/GenerateCode.ag" #-}    rule650 = \ ((_blocksIcallExpr) :: Expr) ->-                        {-# LINE 659 "./src-ag/GenerateCode.ag" #-}+                        {-# LINE 659 "src-ag/GenerateCode.ag" #-}                         _blocksIcallExpr                         {-# LINE 4528 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule651 #-}-   {-# LINE 664 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 664 "src-ag/GenerateCode.ag" #-}    rule651 = \  (_ :: ()) ->-                         {-# LINE 664 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 664 "src-ag/GenerateCode.ag" #-}                          1                          {-# LINE 4534 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule652 #-}@@ -4553,8 +4553,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn40 -        (T_Pattern_vOut40 _lhsOcopy _lhsOdefinedInsts _lhsOpatternAttributes) <- return (inv_Pattern_s41 sem arg)+        let arg40 = T_Pattern_vIn40 +        (T_Pattern_vOut40 _lhsOcopy _lhsOdefinedInsts _lhsOpatternAttributes) <- return (inv_Pattern_s41 sem arg40)         return (Syn_Pattern _lhsOcopy _lhsOdefinedInsts _lhsOpatternAttributes)    ) @@ -4660,15 +4660,15 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule664 #-}-   {-# LINE 265 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 265 "src-ag/GenerateCode.ag" #-}    rule664 = \ ((_patIdefinedInsts) :: [Identifier]) attr_ field_ ->-                               {-# LINE 265 "./src-ag/GenerateCode.ag" #-}+                               {-# LINE 265 "src-ag/GenerateCode.ag" #-}                                (if field_ == _INST then [attr_] else []) ++ _patIdefinedInsts                                {-# LINE 4668 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule665 #-}-   {-# LINE 273 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 273 "src-ag/GenerateCode.ag" #-}    rule665 = \ ((_patIpatternAttributes) :: [(Identifier, Identifier)]) attr_ field_ ->-                                {-# LINE 273 "./src-ag/GenerateCode.ag" #-}+                                {-# LINE 273 "src-ag/GenerateCode.ag" #-}                                 (field_,attr_) : _patIpatternAttributes                                 {-# LINE 4674 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule666 #-}@@ -4747,8 +4747,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn43 -        (T_Patterns_vOut43 _lhsOcopy _lhsOdefinedInsts _lhsOpatternAttributes) <- return (inv_Patterns_s44 sem arg)+        let arg43 = T_Patterns_vIn43 +        (T_Patterns_vOut43 _lhsOcopy _lhsOdefinedInsts _lhsOpatternAttributes) <- return (inv_Patterns_s44 sem arg43)         return (Syn_Patterns _lhsOcopy _lhsOdefinedInsts _lhsOpatternAttributes)    ) @@ -4840,8 +4840,8 @@ wrap_Sequence (T_Sequence act) (Inh_Sequence _lhsIallNts _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIinh _lhsIinstVisitNrs _lhsIlastExpr _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwhat) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Sequence_vIn46 _lhsIallNts _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIinh _lhsIinstVisitNrs _lhsIlastExpr _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwhat-        (T_Sequence_vOut46 _lhsOallTpsFound _lhsOblockDecls _lhsOcomments _lhsOdecls _lhsOdeclsAbove _lhsOdefinedInsts _lhsOexprs _lhsOtSigs _lhsOtps _lhsOusedVars _lhsOvisitedSet) <- return (inv_Sequence_s47 sem arg)+        let arg46 = T_Sequence_vIn46 _lhsIallNts _lhsIaroundMap _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIinh _lhsIinstVisitNrs _lhsIlastExpr _lhsImergeMap _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_clean _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_monadic _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIoptions _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIvisitedSet _lhsIwhat+        (T_Sequence_vOut46 _lhsOallTpsFound _lhsOblockDecls _lhsOcomments _lhsOdecls _lhsOdeclsAbove _lhsOdefinedInsts _lhsOexprs _lhsOtSigs _lhsOtps _lhsOusedVars _lhsOvisitedSet) <- return (inv_Sequence_s47 sem arg46)         return (Syn_Sequence _lhsOallTpsFound _lhsOblockDecls _lhsOcomments _lhsOdecls _lhsOdeclsAbove _lhsOdefinedInsts _lhsOexprs _lhsOtSigs _lhsOtps _lhsOusedVars _lhsOvisitedSet)    ) @@ -4969,9 +4969,9 @@          in __result_ )      in C_Sequence_s47 v46    {-# INLINE rule684 #-}-   {-# LINE 627 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 627 "src-ag/GenerateCode.ag" #-}    rule684 = \ ((_hdIbldBlocksFun) :: DeclBlocks -> DeclBlocks) ((_tlIblockDecls) :: DeclBlocks) ->-                         {-# LINE 627 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 627 "src-ag/GenerateCode.ag" #-}                          _hdIbldBlocksFun _tlIblockDecls                          {-# LINE 4977 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule685 #-}@@ -5250,9 +5250,9 @@          in __result_ )      in C_Sequence_s47 v46    {-# INLINE rule766 #-}-   {-# LINE 629 "./src-ag/GenerateCode.ag" #-}+   {-# LINE 629 "src-ag/GenerateCode.ag" #-}    rule766 = \ ((_lhsIdeclsAbove) :: [Decl]) ((_lhsIlastExpr) :: Expr) ->-                         {-# LINE 629 "./src-ag/GenerateCode.ag" #-}+                         {-# LINE 629 "src-ag/GenerateCode.ag" #-}                          DeclTerminator _lhsIdeclsAbove _lhsIlastExpr                          {-# LINE 5258 "dist/build/GenerateCode.hs"#-}    {-# INLINE rule767 #-}
src-generated/HsToken.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/HsToken.ag)+-- UUAGC 0.9.51 (src-ag/HsToken.ag) module HsToken where-{-# LINE 2 "./src-ag/HsToken.ag" #-}+{-# LINE 2 "src-ag/HsToken.ag" #-}  import CommonTypes import UU.Scanner.Position(Pos)
src-generated/Interfaces.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/Interfaces.ag)+-- UUAGC 0.9.51 (src-ag/Interfaces.ag) module Interfaces where-{-# LINE 2 "./src-ag/Interfaces.ag" #-}+{-# LINE 2 "src-ag/Interfaces.ag" #-}  import CommonTypes import SequentialTypes
src-generated/InterfacesRules.hs view
@@ -3,13 +3,13 @@ {-# LANGUAGE ScopedTypeVariables #-}  module InterfacesRules where-{-# LINE 2 "./src-ag/Interfaces.ag" #-}+{-# LINE 2 "src-ag/Interfaces.ag" #-}  import CommonTypes import SequentialTypes {-# LINE 11 "dist/build/InterfacesRules.hs" #-} -{-# LINE 10 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 10 "src-ag/InterfacesRules.lag" #-}  import Interfaces import CodeSyntax@@ -28,19 +28,19 @@ {-# LINE 29 "dist/build/InterfacesRules.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 53 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 53 "src-ag/InterfacesRules.lag" #-}  type VisitSS = [Vertex] {-# LINE 35 "dist/build/InterfacesRules.hs" #-} -{-# LINE 88 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 88 "src-ag/InterfacesRules.lag" #-}  gather :: Info -> [Vertex] -> [[Vertex]] gather info =  eqClasses comp                where comp a b = isEqualField (ruleTable info ! a) (ruleTable info ! b) {-# LINE 42 "dist/build/InterfacesRules.hs" #-} -{-# LINE 129 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 129 "src-ag/InterfacesRules.lag" #-}  -- Only non-empty syn will ever be forced, because visits with empty syn are never performed -- Right hand side synthesized attributes always have a field@@ -51,13 +51,13 @@                          in (v,d) {-# LINE 53 "dist/build/InterfacesRules.hs" #-} -{-# LINE 152 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 152 "src-ag/InterfacesRules.lag" #-}  ed :: Vertex -> ([Vertex], [Vertex]) -> [(Vertex, Vertex)] ed v (inh,syn) = map (\i -> (i,v)) inh ++ map (\s -> (v,s)) syn {-# LINE 59 "dist/build/InterfacesRules.hs" #-} -{-# LINE 240 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 240 "src-ag/InterfacesRules.lag" #-}  postorder :: Tree a -> [a] postorder (Node a ts) = postorderF ts ++ [a]@@ -69,18 +69,18 @@ topSort' g = postOrd g {-# LINE 71 "dist/build/InterfacesRules.hs" #-} -{-# LINE 323 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 323 "src-ag/InterfacesRules.lag" #-}  type IntraVisit = [Vertex] {-# LINE 76 "dist/build/InterfacesRules.hs" #-} -{-# LINE 345 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 345 "src-ag/InterfacesRules.lag" #-}  swap :: (a,b) -> (b,a) swap (a,b) = (b,a) {-# LINE 82 "dist/build/InterfacesRules.hs" #-} -{-# LINE 420 "./src-ag/InterfacesRules.lag" #-}+{-# LINE 420 "src-ag/InterfacesRules.lag" #-}  ccv :: Identifier -> NontermIdent -> Int -> CInterfaceMap -> CRule ccv name nt n table@@ -99,8 +99,8 @@ wrap_IRoot !(T_IRoot act) !(Inh_IRoot _lhsIdpr _lhsIinfo _lhsItdp) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_IRoot_vIn1 _lhsIdpr _lhsIinfo _lhsItdp-        !(T_IRoot_vOut1 _lhsOedp _lhsOinters _lhsOvisits) <- return (inv_IRoot_s2 sem arg)+        let arg1 = T_IRoot_vIn1 _lhsIdpr _lhsIinfo _lhsItdp+        !(T_IRoot_vOut1 _lhsOedp _lhsOinters _lhsOvisits) <- return (inv_IRoot_s2 sem arg1)         return (Syn_IRoot _lhsOedp _lhsOinters _lhsOvisits)    ) @@ -149,66 +149,66 @@          in __result_ )      in C_IRoot_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 66 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 66 "src-ag/InterfacesRules.lag" #-}    rule0 = \ ((_intersInewedges) :: Seq Edge ) ->-                            {-# LINE 66 "./src-ag/InterfacesRules.lag" #-}+                            {-# LINE 66 "src-ag/InterfacesRules.lag" #-}                             toList _intersInewedges                             {-# LINE 157 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 67 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 67 "src-ag/InterfacesRules.lag" #-}    rule1 = \ ((_intersIv) :: Vertex) ((_lhsItdp) :: Graph) _newedges ->-                                 {-# LINE 67 "./src-ag/InterfacesRules.lag" #-}+                                 {-# LINE 67 "src-ag/InterfacesRules.lag" #-}                                  let graph = buildG (0,_intersIv-1) es                                      es = _newedges ++ edges _lhsItdp                                  in transposeG graph                                  {-# LINE 165 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 80 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 80 "src-ag/InterfacesRules.lag" #-}    rule2 = \ ((_lhsItdp) :: Graph) ->-                        {-# LINE 80 "./src-ag/InterfacesRules.lag" #-}+                        {-# LINE 80 "src-ag/InterfacesRules.lag" #-}                         snd (bounds _lhsItdp) + 1                         {-# LINE 171 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule3 #-}-   {-# LINE 122 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 122 "src-ag/InterfacesRules.lag" #-}    rule3 = \ _descr ->-                                  {-# LINE 122 "./src-ag/InterfacesRules.lag" #-}+                                  {-# LINE 122 "src-ag/InterfacesRules.lag" #-}                                   Map.fromList _descr                                   {-# LINE 177 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule4 #-}-   {-# LINE 142 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 142 "src-ag/InterfacesRules.lag" #-}    rule4 = \ ((_intersIdescr) :: Seq (Vertex,ChildVisit)) ->-                         {-# LINE 142 "./src-ag/InterfacesRules.lag" #-}+                         {-# LINE 142 "src-ag/InterfacesRules.lag" #-}                          toList _intersIdescr                          {-# LINE 183 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule5 #-}-   {-# LINE 214 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 214 "src-ag/InterfacesRules.lag" #-}    rule5 = \ _visitssGraph ->-                               {-# LINE 214 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 214 "src-ag/InterfacesRules.lag" #-}                                _visitssGraph                                {-# LINE 189 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule6 #-}-   {-# LINE 260 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 260 "src-ag/InterfacesRules.lag" #-}    rule6 = \ ((_intersIfirstvisitvertices) :: [Vertex]) ((_lhsIinfo) :: Info) ->-                            {-# LINE 260 "./src-ag/InterfacesRules.lag" #-}+                            {-# LINE 260 "src-ag/InterfacesRules.lag" #-}                             let terminals = [ v | (v,cr) <- assocs (ruleTable _lhsIinfo), not (getHasCode cr), isLocal cr ]                             in _intersIfirstvisitvertices ++ terminals                             {-# LINE 196 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule7 #-}-   {-# LINE 343 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 343 "src-ag/InterfacesRules.lag" #-}    rule7 = \ ((_intersIv) :: Vertex) ((_lhsIdpr) :: [Edge]) _newedges ->-                          {-# LINE 343 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 343 "src-ag/InterfacesRules.lag" #-}                           buildG (0,_intersIv-1) (map swap (_lhsIdpr ++ _newedges))                           {-# LINE 202 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule8 #-}-   {-# LINE 381 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 381 "src-ag/InterfacesRules.lag" #-}    rule8 = \ ((_intersIinters) :: CInterfaceMap) ->-                                 {-# LINE 381 "./src-ag/InterfacesRules.lag" #-}+                                 {-# LINE 381 "src-ag/InterfacesRules.lag" #-}                                  _intersIinters                                  {-# LINE 208 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule9 #-}-   {-# LINE 443 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 443 "src-ag/InterfacesRules.lag" #-}    rule9 = \ ((_intersIedp) :: Seq Edge) ->-                        {-# LINE 443 "./src-ag/InterfacesRules.lag" #-}+                        {-# LINE 443 "src-ag/InterfacesRules.lag" #-}                         toList _intersIedp                         {-# LINE 214 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule10 #-}@@ -230,8 +230,8 @@ wrap_Interface !(T_Interface act) !(Inh_Interface _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Interface_vIn4 _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph-        !(T_Interface_vOut4 _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinter _lhsOnewedges _lhsOnt _lhsOv _lhsOvisits) <- return (inv_Interface_s5 sem arg)+        let arg4 = T_Interface_vIn4 _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph+        !(T_Interface_vOut4 _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinter _lhsOnewedges _lhsOnt _lhsOv _lhsOvisits) <- return (inv_Interface_s5 sem arg4)         return (Syn_Interface _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinter _lhsOnewedges _lhsOnt _lhsOv _lhsOvisits)    ) @@ -297,99 +297,99 @@          in __result_ )      in C_Interface_s5 v4    {-# INLINE rule13 #-}-   {-# LINE 183 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 183 "src-ag/InterfacesRules.lag" #-}    rule13 = \ ((_lhsIv) :: Vertex) ->-                          {-# LINE 183 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 183 "src-ag/InterfacesRules.lag" #-}                           _lhsIv                           {-# LINE 305 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule14 #-}-   {-# LINE 184 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 184 "src-ag/InterfacesRules.lag" #-}    rule14 = \ ((_segInewvertices) :: [Vertex]) ((_segIv) :: Vertex) ->-                          {-# LINE 184 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 184 "src-ag/InterfacesRules.lag" #-}                           _segIv + length _segInewvertices                           {-# LINE 311 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule15 #-}-   {-# LINE 185 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 185 "src-ag/InterfacesRules.lag" #-}    rule15 = \ _v ->-                          {-# LINE 185 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 185 "src-ag/InterfacesRules.lag" #-}                           _v                           {-# LINE 317 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule16 #-}-   {-# LINE 186 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 186 "src-ag/InterfacesRules.lag" #-}    rule16 = \ ((_segIv) :: Vertex) _v ->-                                           {-# LINE 186 "./src-ag/InterfacesRules.lag" #-}+                                           {-# LINE 186 "src-ag/InterfacesRules.lag" #-}                                            [_segIv .. _v-1]                                            {-# LINE 323 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule17 #-}-   {-# LINE 187 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 187 "src-ag/InterfacesRules.lag" #-}    rule17 = \ _firstvisitvertices ((_segInewvertices) :: [Vertex]) ->-                                 {-# LINE 187 "./src-ag/InterfacesRules.lag" #-}+                                 {-# LINE 187 "src-ag/InterfacesRules.lag" #-}                                  zip _firstvisitvertices _segInewvertices                                  {-# LINE 329 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule18 #-}-   {-# LINE 188 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 188 "src-ag/InterfacesRules.lag" #-}    rule18 = \ _newedges ((_segInewedges) :: Seq Edge ) ->-                                 {-# LINE 188 "./src-ag/InterfacesRules.lag" #-}+                                 {-# LINE 188 "src-ag/InterfacesRules.lag" #-}                                  _segInewedges Seq.>< Seq.fromList _newedges                                  {-# LINE 335 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule19 #-}-   {-# LINE 191 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 191 "src-ag/InterfacesRules.lag" #-}    rule19 = \ ((_lhsIinfo) :: Info) ->-                             {-# LINE 191 "./src-ag/InterfacesRules.lag" #-}+                             {-# LINE 191 "src-ag/InterfacesRules.lag" #-}                              \a -> ruleTable _lhsIinfo ! a                              {-# LINE 341 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule20 #-}-   {-# LINE 192 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 192 "src-ag/InterfacesRules.lag" #-}    rule20 = \ _firstvisitvertices ((_look) :: Vertex -> CRule) ((_segIgroups) :: [([Vertex],[Vertex])]) ->-                              {-# LINE 192 "./src-ag/InterfacesRules.lag" #-}+                              {-# LINE 192 "src-ag/InterfacesRules.lag" #-}                               zipWith (cv _look (-1)) _firstvisitvertices _segIgroups                               {-# LINE 347 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule21 #-}-   {-# LINE 193 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 193 "src-ag/InterfacesRules.lag" #-}    rule21 = \ _descr ((_segIdescr) :: Seq (Vertex,ChildVisit)) ->-                              {-# LINE 193 "./src-ag/InterfacesRules.lag" #-}+                              {-# LINE 193 "src-ag/InterfacesRules.lag" #-}                               _segIdescr Seq.>< Seq.fromList _descr                               {-# LINE 353 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule22 #-}-   {-# LINE 201 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 201 "src-ag/InterfacesRules.lag" #-}    rule22 = \  (_ :: ()) ->-                         {-# LINE 201 "./src-ag/InterfacesRules.lag" #-}+                         {-# LINE 201 "src-ag/InterfacesRules.lag" #-}                          0                          {-# LINE 359 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule23 #-}-   {-# LINE 233 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 233 "src-ag/InterfacesRules.lag" #-}    rule23 = \ cons_ ->-                            {-# LINE 233 "./src-ag/InterfacesRules.lag" #-}+                            {-# LINE 233 "src-ag/InterfacesRules.lag" #-}                             cons_                             {-# LINE 365 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule24 #-}-   {-# LINE 314 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 314 "src-ag/InterfacesRules.lag" #-}    rule24 = \  (_ :: ()) ->-                               {-# LINE 314 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 314 "src-ag/InterfacesRules.lag" #-}                                True                                {-# LINE 371 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule25 #-}-   {-# LINE 352 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 352 "src-ag/InterfacesRules.lag" #-}    rule25 = \ ((_lhsIprev) :: [Vertex]) ->-                               {-# LINE 352 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 352 "src-ag/InterfacesRules.lag" #-}                                _lhsIprev                                {-# LINE 377 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule26 #-}-   {-# LINE 392 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 392 "src-ag/InterfacesRules.lag" #-}    rule26 = \ nt_ ->-                          {-# LINE 392 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 392 "src-ag/InterfacesRules.lag" #-}                           nt_                           {-# LINE 383 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule27 #-}-   {-# LINE 396 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 396 "src-ag/InterfacesRules.lag" #-}    rule27 = \ ((_segIsegs) :: CSegments) ->-                              {-# LINE 396 "./src-ag/InterfacesRules.lag" #-}+                              {-# LINE 396 "src-ag/InterfacesRules.lag" #-}                               CInterface _segIsegs                               {-# LINE 389 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule28 #-}-   {-# LINE 397 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 397 "src-ag/InterfacesRules.lag" #-}    rule28 = \ ((_segIcvisits) :: [[CVisit]]) cons_ ->-                               {-# LINE 397 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 397 "src-ag/InterfacesRules.lag" #-}                                Map.fromList (zip cons_ (transpose _segIcvisits))                                {-# LINE 395 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule29 #-}@@ -426,8 +426,8 @@ wrap_Interfaces !(T_Interfaces act) !(Inh_Interfaces _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Interfaces_vIn7 _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph-        !(T_Interfaces_vOut7 _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinters _lhsOnewedges _lhsOv _lhsOvisits) <- return (inv_Interfaces_s8 sem arg)+        let arg7 = T_Interfaces_vIn7 _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph+        !(T_Interfaces_vOut7 _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinters _lhsOnewedges _lhsOv _lhsOvisits) <- return (inv_Interfaces_s8 sem arg7)         return (Syn_Interfaces _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinters _lhsOnewedges _lhsOv _lhsOvisits)    ) @@ -490,15 +490,15 @@          in __result_ )      in C_Interfaces_s8 v7    {-# INLINE rule37 #-}-   {-# LINE 386 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 386 "src-ag/InterfacesRules.lag" #-}    rule37 = \ ((_hdIinter) :: CInterface) ((_hdInt) :: NontermIdent) ((_tlIinters) :: CInterfaceMap) ->-                          {-# LINE 386 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 386 "src-ag/InterfacesRules.lag" #-}                           Map.insert _hdInt _hdIinter _tlIinters                           {-# LINE 498 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule38 #-}-   {-# LINE 387 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 387 "src-ag/InterfacesRules.lag" #-}    rule38 = \ ((_hdInt) :: NontermIdent) ((_hdIvisits) :: Map ConstructorIdent CVisits) ((_tlIvisits) :: CVisitsMap) ->-                          {-# LINE 387 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 387 "src-ag/InterfacesRules.lag" #-}                           Map.insert _hdInt _hdIvisits _tlIvisits                           {-# LINE 504 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule39 #-}@@ -583,15 +583,15 @@          in __result_ )      in C_Interfaces_s8 v7    {-# INLINE rule58 #-}-   {-# LINE 388 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 388 "src-ag/InterfacesRules.lag" #-}    rule58 = \  (_ :: ()) ->-                          {-# LINE 388 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 388 "src-ag/InterfacesRules.lag" #-}                           Map.empty                           {-# LINE 591 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule59 #-}-   {-# LINE 389 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 389 "src-ag/InterfacesRules.lag" #-}    rule59 = \  (_ :: ()) ->-                          {-# LINE 389 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 389 "src-ag/InterfacesRules.lag" #-}                           Map.empty                           {-# LINE 597 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule60 #-}@@ -619,8 +619,8 @@ wrap_Segment !(T_Segment act) !(Inh_Segment _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsInextInh _lhsInextIntravisits _lhsInextNewvertices _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Segment_vIn10 _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsInextInh _lhsInextIntravisits _lhsInextNewvertices _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph-        !(T_Segment_vOut10 _lhsOcvisits _lhsOdescr _lhsOedp _lhsOgroups _lhsOinh _lhsOintravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOseg _lhsOv _lhsOvisitss) <- return (inv_Segment_s11 sem arg)+        let arg10 = T_Segment_vIn10 _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsInextInh _lhsInextIntravisits _lhsInextNewvertices _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph+        !(T_Segment_vOut10 _lhsOcvisits _lhsOdescr _lhsOedp _lhsOgroups _lhsOinh _lhsOintravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOseg _lhsOv _lhsOvisitss) <- return (inv_Segment_s11 sem arg10)         return (Syn_Segment _lhsOcvisits _lhsOdescr _lhsOedp _lhsOgroups _lhsOinh _lhsOintravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOseg _lhsOv _lhsOvisitss)    ) @@ -699,72 +699,72 @@          in __result_ )      in C_Segment_s11 v10    {-# INLINE rule65 #-}-   {-# LINE 101 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 101 "src-ag/InterfacesRules.lag" #-}    rule65 = \ ((_lhsIinfo) :: Info) ->-                           {-# LINE 101 "./src-ag/InterfacesRules.lag" #-}+                           {-# LINE 101 "src-ag/InterfacesRules.lag" #-}                            \a -> ruleTable _lhsIinfo ! a                            {-# LINE 707 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule66 #-}-   {-# LINE 104 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 104 "src-ag/InterfacesRules.lag" #-}    rule66 = \ ((_lhsIinfo) :: Info) ((_look) :: Vertex -> CRule) ->-                              {-# LINE 104 "./src-ag/InterfacesRules.lag" #-}+                              {-# LINE 104 "src-ag/InterfacesRules.lag" #-}                               \p us -> [ a  |  u <- us                                             ,  a <- tdsToTdp _lhsIinfo ! u                                             ,  p (_look a)]                               {-# LINE 715 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule67 #-}-   {-# LINE 108 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 108 "src-ag/InterfacesRules.lag" #-}    rule67 = \ ((_lhsIinfo) :: Info) ((_look) :: Vertex -> CRule) ((_occurAs) :: (CRule -> Bool) -> [Vertex] -> [Vertex]) inh_ syn_ ->-                              {-# LINE 108 "./src-ag/InterfacesRules.lag" #-}+                              {-# LINE 108 "src-ag/InterfacesRules.lag" #-}                               let group as = gather _lhsIinfo (_occurAs isRhs as)                               in map (partition (isInh . _look)) (group (inh_ ++ syn_))                               {-# LINE 722 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule68 #-}-   {-# LINE 111 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 111 "src-ag/InterfacesRules.lag" #-}    rule68 = \ ((_groups) :: [([Vertex],[Vertex])]) ((_lhsIv) :: Vertex) ->-                        {-# LINE 111 "./src-ag/InterfacesRules.lag" #-}+                        {-# LINE 111 "src-ag/InterfacesRules.lag" #-}                         _lhsIv + length _groups                         {-# LINE 728 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule69 #-}-   {-# LINE 112 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 112 "src-ag/InterfacesRules.lag" #-}    rule69 = \ ((_lhsIv) :: Vertex) ((_v) :: Int) ->-                                  {-# LINE 112 "./src-ag/InterfacesRules.lag" #-}+                                  {-# LINE 112 "src-ag/InterfacesRules.lag" #-}                                   [_lhsIv .. _v    -1]                                   {-# LINE 734 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule70 #-}-   {-# LINE 127 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 127 "src-ag/InterfacesRules.lag" #-}    rule70 = \ ((_groups) :: [([Vertex],[Vertex])]) ((_lhsIn) :: Int) ((_look) :: Vertex -> CRule) _newvertices ->-                            {-# LINE 127 "./src-ag/InterfacesRules.lag" #-}+                            {-# LINE 127 "src-ag/InterfacesRules.lag" #-}                             Seq.fromList $ zipWith (cv _look _lhsIn) _newvertices _groups                             {-# LINE 740 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule71 #-}-   {-# LINE 150 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 150 "src-ag/InterfacesRules.lag" #-}    rule71 = \ ((_groups) :: [([Vertex],[Vertex])]) _newvertices ->-                               {-# LINE 150 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 150 "src-ag/InterfacesRules.lag" #-}                                concat (zipWith ed _newvertices _groups)                                {-# LINE 746 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule72 #-}-   {-# LINE 170 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 170 "src-ag/InterfacesRules.lag" #-}    rule72 = \ ((_lhsInextNewvertices) :: [Vertex]) _newvertices ->-                                 {-# LINE 170 "./src-ag/InterfacesRules.lag" #-}+                                 {-# LINE 170 "src-ag/InterfacesRules.lag" #-}                                  zip _newvertices _lhsInextNewvertices                                  {-# LINE 752 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule73 #-}-   {-# LINE 171 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 171 "src-ag/InterfacesRules.lag" #-}    rule73 = \ _attredges _visitedges ->-                               {-# LINE 171 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 171 "src-ag/InterfacesRules.lag" #-}                                Seq.fromList _attredges Seq.>< Seq.fromList _visitedges                                {-# LINE 758 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule74 #-}-   {-# LINE 225 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 225 "src-ag/InterfacesRules.lag" #-}    rule74 = \ ((_lhsIinfo) :: Info) ((_occurAs) :: (CRule -> Bool) -> [Vertex] -> [Vertex]) syn_ ->-                               {-# LINE 225 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 225 "src-ag/InterfacesRules.lag" #-}                                gather _lhsIinfo (_occurAs isLhs syn_)                                {-# LINE 764 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule75 #-}-   {-# LINE 226 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 226 "src-ag/InterfacesRules.lag" #-}    rule75 = \ ((_lhsIcons) :: [ConstructorIdent]) ((_lhsIinfo) :: Info) ((_lhsIvssGraph) :: Graph) _synOccur syn_ ->-                           {-# LINE 226 "./src-ag/InterfacesRules.lag" #-}+                           {-# LINE 226 "src-ag/InterfacesRules.lag" #-}                            let hasCode' v | inRange (bounds (ruleTable _lhsIinfo)) v =  getHasCode (ruleTable _lhsIinfo ! v)                                           | otherwise = True                            in if  null syn_@@ -772,30 +772,30 @@                                   else map (filter hasCode' . topSort' _lhsIvssGraph) _synOccur                            {-# LINE 774 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule76 #-}-   {-# LINE 270 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 270 "src-ag/InterfacesRules.lag" #-}    rule76 = \ ((_lhsIprev) :: [Vertex]) _vss ->-                               {-# LINE 270 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 270 "src-ag/InterfacesRules.lag" #-}                                map (\\ _lhsIprev) _vss                                {-# LINE 780 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule77 #-}-   {-# LINE 271 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 271 "src-ag/InterfacesRules.lag" #-}    rule77 = \ ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ((_visitss) :: [[Vertex]]) ->-                               {-# LINE 271 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 271 "src-ag/InterfacesRules.lag" #-}                                let defines v = case Map.lookup v _lhsIvisitDescr of                                                  Nothing -> [v]                                                  Just (ChildVisit _ _ _ inh _) -> v:inh                                in concatMap (concatMap defines) _visitss                                {-# LINE 789 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule78 #-}-   {-# LINE 275 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 275 "src-ag/InterfacesRules.lag" #-}    rule78 = \ _defined ((_lhsIprev) :: [Vertex]) ->-                           {-# LINE 275 "./src-ag/InterfacesRules.lag" #-}+                           {-# LINE 275 "src-ag/InterfacesRules.lag" #-}                            _lhsIprev ++ _defined                            {-# LINE 795 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule79 #-}-   {-# LINE 284 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 284 "src-ag/InterfacesRules.lag" #-}    rule79 = \ ((_lhsIinfo) :: Info) _visitss' ->-                              {-# LINE 284 "./src-ag/InterfacesRules.lag" #-}+                              {-# LINE 284 "src-ag/InterfacesRules.lag" #-}                               let  rem' :: [(Identifier,Identifier,Maybe Type)] -> [Vertex] -> [Vertex]                                    rem' _ [] = []                                    rem' prev (v:vs)@@ -814,52 +814,52 @@                               in map (rem' []) _visitss'                               {-# LINE 816 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule80 #-}-   {-# LINE 357 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 357 "src-ag/InterfacesRules.lag" #-}    rule80 = \ ((_lhsIfromLhs) :: [Vertex]) ((_occurAs) :: (CRule -> Bool) -> [Vertex] -> [Vertex]) inh_ ->-                              {-# LINE 357 "./src-ag/InterfacesRules.lag" #-}+                              {-# LINE 357 "src-ag/InterfacesRules.lag" #-}                               _occurAs isLhs inh_ ++ _lhsIfromLhs                               {-# LINE 822 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule81 #-}-   {-# LINE 358 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 358 "src-ag/InterfacesRules.lag" #-}    rule81 = \ ((_lhsIinfo) :: Info) ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ((_visitss) :: [[Vertex]]) ->-                                {-# LINE 358 "./src-ag/InterfacesRules.lag" #-}+                                {-# LINE 358 "src-ag/InterfacesRules.lag" #-}                                 let computes v = case Map.lookup v _lhsIvisitDescr of                                                    Nothing -> Map.keys (getDefines (ruleTable _lhsIinfo ! v))                                                    Just (ChildVisit _ _ _ _ syn) -> v:syn                                 in concatMap (concatMap computes) _visitss                                 {-# LINE 831 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule82 #-}-   {-# LINE 362 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 362 "src-ag/InterfacesRules.lag" #-}    rule82 = \ _iv ((_lhsInextIntravisits) :: [IntraVisit]) ((_visitss) :: [[Vertex]]) ->-                                  {-# LINE 362 "./src-ag/InterfacesRules.lag" #-}+                                  {-# LINE 362 "src-ag/InterfacesRules.lag" #-}                                   zipWith _iv _visitss _lhsInextIntravisits                                   {-# LINE 837 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule83 #-}-   {-# LINE 363 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 363 "src-ag/InterfacesRules.lag" #-}    rule83 = \ _computed _fromLhs ((_lhsIddp) :: Graph) ->-                          {-# LINE 363 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 363 "src-ag/InterfacesRules.lag" #-}                           \vs next ->                             let needed = concatMap (_lhsIddp !) vs                             in nub (needed ++ next) \\ (_fromLhs ++ _computed)                           {-# LINE 845 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule84 #-}-   {-# LINE 406 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 406 "src-ag/InterfacesRules.lag" #-}    rule84 = \ ((_inhmap) :: Map Identifier Type) ((_lhsIprev) :: [Vertex]) ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ((_lhsIvssGraph) :: Graph) ((_synmap) :: Map Identifier Type) ->-                          {-# LINE 406 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 406 "src-ag/InterfacesRules.lag" #-}                           if False then undefined _lhsIvssGraph _lhsIvisitDescr _lhsIprev else CSegment _inhmap _synmap                           {-# LINE 851 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule85 #-}-   {-# LINE 410 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 410 "src-ag/InterfacesRules.lag" #-}    rule85 = \ ((_lhsIinfo) :: Info) inh_ syn_ ->-                                      {-# LINE 410 "./src-ag/InterfacesRules.lag" #-}+                                      {-# LINE 410 "src-ag/InterfacesRules.lag" #-}                                       let makemap = Map.fromList . map findType                                           findType v = getNtaNameType (attrTable _lhsIinfo ! v)                                       in (makemap inh_,makemap syn_)                                       {-# LINE 859 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule86 #-}-   {-# LINE 413 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 413 "src-ag/InterfacesRules.lag" #-}    rule86 = \ ((_inhmap) :: Map Identifier Type) _intravisits ((_lhsIallInters) :: CInterfaceMap) ((_lhsIinfo) :: Info) ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ((_synmap) :: Map Identifier Type) ((_visitss) :: [[Vertex]]) ->-                              {-# LINE 413 "./src-ag/InterfacesRules.lag" #-}+                              {-# LINE 413 "src-ag/InterfacesRules.lag" #-}                               let  mkVisit vss intra = CVisit _inhmap _synmap (mkSequence vss) (mkSequence intra) True                                    mkSequence = map mkRule                                    mkRule v = case Map.lookup v _lhsIvisitDescr of@@ -868,16 +868,16 @@                               in zipWith mkVisit _visitss _intravisits                               {-# LINE 870 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule87 #-}-   {-# LINE 440 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 440 "src-ag/InterfacesRules.lag" #-}    rule87 = \ ((_lhsInextInh) :: [Vertex]) inh_ syn_ ->-                          {-# LINE 440 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 440 "src-ag/InterfacesRules.lag" #-}                           Seq.fromList [(i,s) | i <- inh_, s <- syn_]                           Seq.>< Seq.fromList [(s,i) | s <- syn_, i <- _lhsInextInh ]                           {-# LINE 877 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule88 #-}-   {-# LINE 445 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 445 "src-ag/InterfacesRules.lag" #-}    rule88 = \ inh_ ->-                         {-# LINE 445 "./src-ag/InterfacesRules.lag" #-}+                         {-# LINE 445 "src-ag/InterfacesRules.lag" #-}                          inh_                          {-# LINE 883 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule89 #-}@@ -905,8 +905,8 @@ wrap_Segments !(T_Segments act) !(Inh_Segments _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Segments_vIn13 _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph-        !(T_Segments_vOut13 _lhsOcvisits _lhsOdescr _lhsOedp _lhsOfirstInh _lhsOgroups _lhsOhdIntravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOsegs _lhsOv) <- return (inv_Segments_s14 sem arg)+        let arg13 = T_Segments_vIn13 _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph+        !(T_Segments_vOut13 _lhsOcvisits _lhsOdescr _lhsOedp _lhsOfirstInh _lhsOgroups _lhsOhdIntravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOsegs _lhsOv) <- return (inv_Segments_s14 sem arg13)         return (Syn_Segments _lhsOcvisits _lhsOdescr _lhsOedp _lhsOfirstInh _lhsOgroups _lhsOhdIntravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOsegs _lhsOv)    ) @@ -988,75 +988,75 @@          in __result_ )      in C_Segments_s14 v13    {-# INLINE rule94 #-}-   {-# LINE 165 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 165 "src-ag/InterfacesRules.lag" #-}    rule94 = \ ((_tlInewvertices) :: [Vertex]) ->-                                  {-# LINE 165 "./src-ag/InterfacesRules.lag" #-}+                                  {-# LINE 165 "src-ag/InterfacesRules.lag" #-}                                   _tlInewvertices                                   {-# LINE 996 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule95 #-}-   {-# LINE 166 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 166 "src-ag/InterfacesRules.lag" #-}    rule95 = \ ((_hdInewvertices) :: [Vertex]) ->-                               {-# LINE 166 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 166 "src-ag/InterfacesRules.lag" #-}                                _hdInewvertices                                {-# LINE 1002 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule96 #-}-   {-# LINE 180 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 180 "src-ag/InterfacesRules.lag" #-}    rule96 = \ ((_hdIgroups) :: [([Vertex],[Vertex])]) ->-                         {-# LINE 180 "./src-ag/InterfacesRules.lag" #-}+                         {-# LINE 180 "src-ag/InterfacesRules.lag" #-}                          _hdIgroups                          {-# LINE 1008 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule97 #-}-   {-# LINE 203 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 203 "src-ag/InterfacesRules.lag" #-}    rule97 = \ ((_lhsIn) :: Int) ->-                   {-# LINE 203 "./src-ag/InterfacesRules.lag" #-}+                   {-# LINE 203 "src-ag/InterfacesRules.lag" #-}                    _lhsIn + 1                    {-# LINE 1014 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule98 #-}-   {-# LINE 316 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 316 "src-ag/InterfacesRules.lag" #-}    rule98 = \  (_ :: ()) ->-                         {-# LINE 316 "./src-ag/InterfacesRules.lag" #-}+                         {-# LINE 316 "src-ag/InterfacesRules.lag" #-}                          False                          {-# LINE 1020 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule99 #-}-   {-# LINE 329 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 329 "src-ag/InterfacesRules.lag" #-}    rule99 = \ ((_tlIhdIntravisits) :: [IntraVisit]) ->-                                  {-# LINE 329 "./src-ag/InterfacesRules.lag" #-}+                                  {-# LINE 329 "src-ag/InterfacesRules.lag" #-}                                   _tlIhdIntravisits                                   {-# LINE 1026 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule100 #-}-   {-# LINE 330 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 330 "src-ag/InterfacesRules.lag" #-}    rule100 = \ ((_hdIintravisits) :: [IntraVisit]) ->-                                 {-# LINE 330 "./src-ag/InterfacesRules.lag" #-}+                                 {-# LINE 330 "src-ag/InterfacesRules.lag" #-}                                  _hdIintravisits                                  {-# LINE 1032 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule101 #-}-   {-# LINE 354 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 354 "src-ag/InterfacesRules.lag" #-}    rule101 = \ ((_lhsIfromLhs) :: [Vertex]) ->-                          {-# LINE 354 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 354 "src-ag/InterfacesRules.lag" #-}                           _lhsIfromLhs                           {-# LINE 1038 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule102 #-}-   {-# LINE 355 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 355 "src-ag/InterfacesRules.lag" #-}    rule102 = \  (_ :: ()) ->-                          {-# LINE 355 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 355 "src-ag/InterfacesRules.lag" #-}                           []                           {-# LINE 1044 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule103 #-}-   {-# LINE 401 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 401 "src-ag/InterfacesRules.lag" #-}    rule103 = \ ((_hdIseg) :: CSegment) ((_tlIsegs) :: CSegments) ->-                        {-# LINE 401 "./src-ag/InterfacesRules.lag" #-}+                        {-# LINE 401 "src-ag/InterfacesRules.lag" #-}                         _hdIseg : _tlIsegs                         {-# LINE 1050 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule104 #-}-   {-# LINE 447 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 447 "src-ag/InterfacesRules.lag" #-}    rule104 = \ ((_tlIfirstInh) :: [Vertex]) ->-                          {-# LINE 447 "./src-ag/InterfacesRules.lag" #-}+                          {-# LINE 447 "src-ag/InterfacesRules.lag" #-}                           _tlIfirstInh                           {-# LINE 1056 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule105 #-}-   {-# LINE 448 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 448 "src-ag/InterfacesRules.lag" #-}    rule105 = \ ((_hdIinh) :: [Vertex]) ->-                            {-# LINE 448 "./src-ag/InterfacesRules.lag" #-}+                            {-# LINE 448 "src-ag/InterfacesRules.lag" #-}                             _hdIinh                             {-# LINE 1062 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule106 #-}@@ -1164,33 +1164,33 @@          in __result_ )      in C_Segments_s14 v13    {-# INLINE rule130 #-}-   {-# LINE 167 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 167 "src-ag/InterfacesRules.lag" #-}    rule130 = \  (_ :: ()) ->-                               {-# LINE 167 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 167 "src-ag/InterfacesRules.lag" #-}                                []                                {-# LINE 1172 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule131 #-}-   {-# LINE 181 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 181 "src-ag/InterfacesRules.lag" #-}    rule131 = \  (_ :: ()) ->-                         {-# LINE 181 "./src-ag/InterfacesRules.lag" #-}+                         {-# LINE 181 "src-ag/InterfacesRules.lag" #-}                          []                          {-# LINE 1178 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule132 #-}-   {-# LINE 331 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 331 "src-ag/InterfacesRules.lag" #-}    rule132 = \  (_ :: ()) ->-                               {-# LINE 331 "./src-ag/InterfacesRules.lag" #-}+                               {-# LINE 331 "src-ag/InterfacesRules.lag" #-}                                repeat []                                {-# LINE 1184 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule133 #-}-   {-# LINE 402 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 402 "src-ag/InterfacesRules.lag" #-}    rule133 = \  (_ :: ()) ->-                        {-# LINE 402 "./src-ag/InterfacesRules.lag" #-}+                        {-# LINE 402 "src-ag/InterfacesRules.lag" #-}                         []                         {-# LINE 1190 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule134 #-}-   {-# LINE 449 "./src-ag/InterfacesRules.lag" #-}+   {-# LINE 449 "src-ag/InterfacesRules.lag" #-}    rule134 = \  (_ :: ()) ->-                           {-# LINE 449 "./src-ag/InterfacesRules.lag" #-}+                           {-# LINE 449 "src-ag/InterfacesRules.lag" #-}                            []                            {-# LINE 1196 "dist/build/InterfacesRules.hs"#-}    {-# INLINE rule135 #-}
src-generated/KWOrder.hs view
@@ -2,26 +2,26 @@ {-# LANGUAGE ScopedTypeVariables #-}  module KWOrder where-{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 11 "dist/build/KWOrder.hs" #-} -{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken {-# LINE 17 "dist/build/KWOrder.hs" #-} -{-# LINE 2 "./src-ag/HsToken.ag" #-}+{-# LINE 2 "src-ag/HsToken.ag" #-}  import CommonTypes import UU.Scanner.Position(Pos) {-# LINE 23 "dist/build/KWOrder.hs" #-} -{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)@@ -33,7 +33,7 @@ import ErrorMessages {-# LINE 35 "dist/build/KWOrder.hs" #-} -{-# LINE 8 "./src-ag/KWOrder.ag" #-}+{-# LINE 10 "src-ag/KWOrder.ag" #-}  import AbstractSyntax import HsToken@@ -57,7 +57,7 @@ {-# LINE 58 "dist/build/KWOrder.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 275 "./src-ag/KWOrder.ag" #-}+{-# LINE 125 "src-ag/KWOrder.ag" #-}  -- a depends on b, thus a is a successor of b depToEdge :: Dependency -> Edge@@ -84,8 +84,8 @@ wrap_Child (T_Child act) (Inh_Child _lhsIaroundMap _lhsIinhMap _lhsImergeMap _lhsImergedChildren _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Child_vIn1 _lhsIaroundMap _lhsIinhMap _lhsImergeMap _lhsImergedChildren _lhsIoptions _lhsIsynMap-        (T_Child_vOut1 _lhsOechilds _lhsOedges _lhsOnontnames _lhsOrefHoNts _lhsOrefNts _lhsOvertices) <- return (inv_Child_s2 sem arg)+        let arg1 = T_Child_vIn1 _lhsIaroundMap _lhsIinhMap _lhsImergeMap _lhsImergedChildren _lhsIoptions _lhsIsynMap+        (T_Child_vOut1 _lhsOechilds _lhsOedges _lhsOnontnames _lhsOrefHoNts _lhsOrefNts _lhsOvertices) <- return (inv_Child_s2 sem arg1)         return (Syn_Child _lhsOechilds _lhsOedges _lhsOnontnames _lhsOrefHoNts _lhsOrefNts _lhsOvertices)    ) @@ -112,17 +112,17 @@    st2 = let       v1 :: T_Child_v1        v1 = \ (T_Child_vIn1 _lhsIaroundMap _lhsIinhMap _lhsImergeMap _lhsImergedChildren _lhsIoptions _lhsIsynMap) -> ( let-         _chnt = rule0 arg_name_ arg_tp_-         _inh = rule1 _chnt _lhsIinhMap-         _syn = rule2 _chnt _lhsIsynMap-         _refNts = rule3 arg_tp_-         _refHoNts = rule4 _isHigherOrder _refNts-         _isHigherOrder = rule5 arg_kind_-         _hasArounds = rule6 _lhsIaroundMap arg_name_-         _merges = rule7 _lhsImergeMap arg_name_-         _isMerged = rule8 _lhsImergedChildren arg_name_+         _refNts = rule0 arg_tp_+         _refHoNts = rule1 _isHigherOrder _refNts+         _isHigherOrder = rule2 arg_kind_+         _hasArounds = rule3 _lhsIaroundMap arg_name_+         _merges = rule4 _lhsImergeMap arg_name_+         _isMerged = rule5 _lhsImergedChildren arg_name_          _lhsOechilds :: EChild-         _lhsOechilds = rule9 _hasArounds _isMerged _merges arg_kind_ arg_name_ arg_tp_+         _lhsOechilds = rule6 _hasArounds _isMerged _merges arg_kind_ arg_name_ arg_tp_+         _chnt = rule7 arg_name_ arg_tp_+         _inh = rule8 _chnt _lhsIinhMap+         _syn = rule9 _chnt _lhsIsynMap          _vertex = rule10 arg_name_          _synvertices = rule11 _syn arg_name_          _inhvertices = rule12 _inh arg_name_@@ -145,149 +145,149 @@          in __result_ )      in C_Child_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}-   rule0 = \ name_ tp_ ->-                       {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}-                       case tp_ of-                         NT nt _ _ -> nt-                         Self      -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")-                         Haskell t -> identifier ""-                       {-# LINE 156 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule1 #-}-   {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}-   rule1 = \ _chnt ((_lhsIinhMap) :: Map Identifier Attributes) ->-                      {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}-                      Map.findWithDefault Map.empty _chnt     _lhsIinhMap-                      {-# LINE 162 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule2 #-}-   {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}-   rule2 = \ _chnt ((_lhsIsynMap) :: Map Identifier Attributes) ->-                      {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}-                      Map.findWithDefault Map.empty _chnt     _lhsIsynMap-                      {-# LINE 168 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule3 #-}-   {-# LINE 74 "./src-ag/KWOrder.ag" #-}-   rule3 = \ tp_ ->-                 {-# LINE 74 "./src-ag/KWOrder.ag" #-}+   {-# LINE 31 "src-ag/ExecutionPlanCommon.ag" #-}+   rule0 = \ tp_ ->+                 {-# LINE 31 "src-ag/ExecutionPlanCommon.ag" #-}                  case tp_ of                    NT nt _ _ -> Set.singleton nt                    _         -> mempty-                 {-# LINE 176 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule4 #-}-   {-# LINE 77 "./src-ag/KWOrder.ag" #-}-   rule4 = \ _isHigherOrder _refNts ->-                   {-# LINE 77 "./src-ag/KWOrder.ag" #-}+                 {-# LINE 155 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule1 #-}+   {-# LINE 34 "src-ag/ExecutionPlanCommon.ag" #-}+   rule1 = \ _isHigherOrder _refNts ->+                   {-# LINE 34 "src-ag/ExecutionPlanCommon.ag" #-}                    if _isHigherOrder     then _refNts     else mempty-                   {-# LINE 182 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule5 #-}-   {-# LINE 78 "./src-ag/KWOrder.ag" #-}-   rule5 = \ kind_ ->-                        {-# LINE 78 "./src-ag/KWOrder.ag" #-}+                   {-# LINE 161 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule2 #-}+   {-# LINE 35 "src-ag/ExecutionPlanCommon.ag" #-}+   rule2 = \ kind_ ->+                        {-# LINE 35 "src-ag/ExecutionPlanCommon.ag" #-}                         case kind_ of                           ChildSyntax -> False                           _           -> True-                        {-# LINE 190 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule6 #-}-   {-# LINE 108 "./src-ag/KWOrder.ag" #-}-   rule6 = \ ((_lhsIaroundMap) :: Map Identifier [Expression]) name_ ->-                     {-# LINE 108 "./src-ag/KWOrder.ag" #-}+                        {-# LINE 169 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule3 #-}+   {-# LINE 95 "src-ag/ExecutionPlanCommon.ag" #-}+   rule3 = \ ((_lhsIaroundMap) :: Map Identifier [Expression]) name_ ->+                     {-# LINE 95 "src-ag/ExecutionPlanCommon.ag" #-}                      case Map.lookup name_ _lhsIaroundMap of                        Nothing -> False                        Just as -> not (null as)-                     {-# LINE 198 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule7 #-}-   {-# LINE 136 "./src-ag/KWOrder.ag" #-}-   rule7 = \ ((_lhsImergeMap) :: Map Identifier (Identifier, [Identifier], Expression)) name_ ->-                   {-# LINE 136 "./src-ag/KWOrder.ag" #-}+                     {-# LINE 177 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule4 #-}+   {-# LINE 123 "src-ag/ExecutionPlanCommon.ag" #-}+   rule4 = \ ((_lhsImergeMap) :: Map Identifier (Identifier, [Identifier], Expression)) name_ ->+                   {-# LINE 123 "src-ag/ExecutionPlanCommon.ag" #-}                    maybe Nothing (\(_,ms,_) -> Just ms) $ Map.lookup name_ _lhsImergeMap-                   {-# LINE 204 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule8 #-}-   {-# LINE 137 "./src-ag/KWOrder.ag" #-}-   rule8 = \ ((_lhsImergedChildren) :: Set Identifier) name_ ->-                   {-# LINE 137 "./src-ag/KWOrder.ag" #-}+                   {-# LINE 183 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule5 #-}+   {-# LINE 124 "src-ag/ExecutionPlanCommon.ag" #-}+   rule5 = \ ((_lhsImergedChildren) :: Set Identifier) name_ ->+                   {-# LINE 124 "src-ag/ExecutionPlanCommon.ag" #-}                    name_ `Set.member` _lhsImergedChildren-                   {-# LINE 210 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule9 #-}-   {-# LINE 178 "./src-ag/KWOrder.ag" #-}-   rule9 = \ _hasArounds _isMerged _merges kind_ name_ tp_ ->-                          {-# LINE 178 "./src-ag/KWOrder.ag" #-}+                   {-# LINE 189 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule6 #-}+   {-# LINE 135 "src-ag/ExecutionPlanCommon.ag" #-}+   rule6 = \ _hasArounds _isMerged _merges kind_ name_ tp_ ->+                          {-# LINE 135 "src-ag/ExecutionPlanCommon.ag" #-}                           case tp_ of                             NT _ _ _ -> EChild name_ tp_ kind_ _hasArounds     _merges     _isMerged                             _        -> ETerm name_ tp_-                          {-# LINE 218 "dist/build/KWOrder.hs"#-}+                          {-# LINE 197 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule7 #-}+   {-# LINE 19 "src-ag/DistChildAttr.ag" #-}+   rule7 = \ name_ tp_ ->+                       {-# LINE 19 "src-ag/DistChildAttr.ag" #-}+                       case tp_ of+                         NT nt _ _ -> nt+                         Self      -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")+                         Haskell t -> identifier ""+                       {-# LINE 206 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule8 #-}+   {-# LINE 23 "src-ag/DistChildAttr.ag" #-}+   rule8 = \ _chnt ((_lhsIinhMap) :: Map Identifier Attributes) ->+                      {-# LINE 23 "src-ag/DistChildAttr.ag" #-}+                      Map.findWithDefault Map.empty _chnt     _lhsIinhMap+                      {-# LINE 212 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule9 #-}+   {-# LINE 24 "src-ag/DistChildAttr.ag" #-}+   rule9 = \ _chnt ((_lhsIsynMap) :: Map Identifier Attributes) ->+                      {-# LINE 24 "src-ag/DistChildAttr.ag" #-}+                      Map.findWithDefault Map.empty _chnt     _lhsIsynMap+                      {-# LINE 218 "dist/build/KWOrder.hs"#-}    {-# INLINE rule10 #-}-   {-# LINE 215 "./src-ag/KWOrder.ag" #-}+   {-# LINE 65 "src-ag/KWOrder.ag" #-}    rule10 = \ name_ ->-                               {-# LINE 215 "./src-ag/KWOrder.ag" #-}+                               {-# LINE 65 "src-ag/KWOrder.ag" #-}                                VChild name_                                {-# LINE 224 "dist/build/KWOrder.hs"#-}    {-# INLINE rule11 #-}-   {-# LINE 216 "./src-ag/KWOrder.ag" #-}+   {-# LINE 66 "src-ag/KWOrder.ag" #-}    rule11 = \ _syn name_ ->-                               {-# LINE 216 "./src-ag/KWOrder.ag" #-}+                               {-# LINE 66 "src-ag/KWOrder.ag" #-}                                map (VAttr Syn name_) . Map.keys $ _syn                                {-# LINE 230 "dist/build/KWOrder.hs"#-}    {-# INLINE rule12 #-}-   {-# LINE 217 "./src-ag/KWOrder.ag" #-}+   {-# LINE 67 "src-ag/KWOrder.ag" #-}    rule12 = \ _inh name_ ->-                               {-# LINE 217 "./src-ag/KWOrder.ag" #-}+                               {-# LINE 67 "src-ag/KWOrder.ag" #-}                                map (VAttr Inh name_) . Map.keys $ _inh                                {-# LINE 236 "dist/build/KWOrder.hs"#-}    {-# INLINE rule13 #-}-   {-# LINE 218 "./src-ag/KWOrder.ag" #-}+   {-# LINE 68 "src-ag/KWOrder.ag" #-}    rule13 = \ _inhvertices _synvertices _vertex tp_ ->-                               {-# LINE 218 "./src-ag/KWOrder.ag" #-}+                               {-# LINE 68 "src-ag/KWOrder.ag" #-}                                case tp_ of                                   NT _ _ _ -> Set.insert _vertex     $ Set.fromList (_synvertices     ++ _inhvertices    )                                   _        -> Set.empty                                {-# LINE 244 "dist/build/KWOrder.hs"#-}    {-# INLINE rule14 #-}-   {-# LINE 248 "./src-ag/KWOrder.ag" #-}+   {-# LINE 98 "src-ag/KWOrder.ag" #-}    rule14 = \ tp_ ->-                            {-# LINE 248 "./src-ag/KWOrder.ag" #-}+                            {-# LINE 98 "src-ag/KWOrder.ag" #-}                             case tp_ of                               NT _ _ defor -> defor                               _            -> False                             {-# LINE 252 "dist/build/KWOrder.hs"#-}    {-# INLINE rule15 #-}-   {-# LINE 251 "./src-ag/KWOrder.ag" #-}+   {-# LINE 101 "src-ag/KWOrder.ag" #-}    rule15 = \ _childIsDeforested ((_lhsIoptions) :: Options) _vertex kind_ ->-                           {-# LINE 251 "./src-ag/KWOrder.ag" #-}+                           {-# LINE 101 "src-ag/KWOrder.ag" #-}                            case kind_ of                              ChildAttr | lateHigherOrderBinding _lhsIoptions && not _childIsDeforested                                           -> [(_vertex    , VAttr Inh _LHS idLateBindingAttr)]                              _            -> []                            {-# LINE 261 "dist/build/KWOrder.hs"#-}    {-# INLINE rule16 #-}-   {-# LINE 255 "./src-ag/KWOrder.ag" #-}+   {-# LINE 105 "src-ag/KWOrder.ag" #-}    rule16 = \ _hasArounds _vertex name_ ->-                           {-# LINE 255 "./src-ag/KWOrder.ag" #-}+                           {-# LINE 105 "src-ag/KWOrder.ag" #-}                            if _hasArounds                            then [(_vertex    , VAttr Syn _LOC (Ident (getName name_ ++ "_around") (getPos name_)))]                            else []                            {-# LINE 269 "dist/build/KWOrder.hs"#-}    {-# INLINE rule17 #-}-   {-# LINE 261 "./src-ag/KWOrder.ag" #-}+   {-# LINE 111 "src-ag/KWOrder.ag" #-}    rule17 = \ _higherOrderEdges ->-                            {-# LINE 261 "./src-ag/KWOrder.ag" #-}+                            {-# LINE 111 "src-ag/KWOrder.ag" #-}                             _higherOrderEdges                             {-# LINE 275 "dist/build/KWOrder.hs"#-}    {-# INLINE rule18 #-}-   {-# LINE 262 "./src-ag/KWOrder.ag" #-}+   {-# LINE 112 "src-ag/KWOrder.ag" #-}    rule18 = \ _synvertices _vertex ->-                            {-# LINE 262 "./src-ag/KWOrder.ag" #-}+                            {-# LINE 112 "src-ag/KWOrder.ag" #-}                             map (flip (,) _vertex    ) _synvertices                             {-# LINE 281 "dist/build/KWOrder.hs"#-}    {-# INLINE rule19 #-}-   {-# LINE 263 "./src-ag/KWOrder.ag" #-}+   {-# LINE 113 "src-ag/KWOrder.ag" #-}    rule19 = \ _edgesin _edgesout ->-                            {-# LINE 263 "./src-ag/KWOrder.ag" #-}+                            {-# LINE 113 "src-ag/KWOrder.ag" #-}                             Set.fromList (_edgesout     ++ _edgesin    )                             {-# LINE 287 "dist/build/KWOrder.hs"#-}    {-# INLINE rule20 #-}-   {-# LINE 301 "./src-ag/KWOrder.ag" #-}+   {-# LINE 151 "src-ag/KWOrder.ag" #-}    rule20 = \ name_ tp_ ->-                             {-# LINE 301 "./src-ag/KWOrder.ag" #-}+                             {-# LINE 151 "src-ag/KWOrder.ag" #-}                              case tp_ of                                NT nont _ _ -> [(name_, nont)]                                _           -> []@@ -308,8 +308,8 @@ wrap_Children (T_Children act) (Inh_Children _lhsIaroundMap _lhsIinhMap _lhsImergeMap _lhsImergedChildren _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Children_vIn4 _lhsIaroundMap _lhsIinhMap _lhsImergeMap _lhsImergedChildren _lhsIoptions _lhsIsynMap-        (T_Children_vOut4 _lhsOechilds _lhsOedges _lhsOnontnames _lhsOrefHoNts _lhsOrefNts _lhsOvertices) <- return (inv_Children_s5 sem arg)+        let arg4 = T_Children_vIn4 _lhsIaroundMap _lhsIinhMap _lhsImergeMap _lhsImergedChildren _lhsIoptions _lhsIsynMap+        (T_Children_vOut4 _lhsOechilds _lhsOedges _lhsOnontnames _lhsOrefHoNts _lhsOrefNts _lhsOvertices) <- return (inv_Children_s5 sem arg4)         return (Syn_Children _lhsOechilds _lhsOedges _lhsOnontnames _lhsOrefHoNts _lhsOrefNts _lhsOvertices)    ) @@ -471,8 +471,8 @@ wrap_Expression (T_Expression act) (Inh_Expression ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Expression_vIn7 -        (T_Expression_vOut7 _lhsOcopy _lhsOvertices) <- return (inv_Expression_s8 sem arg)+        let arg7 = T_Expression_vIn7 +        (T_Expression_vOut7 _lhsOcopy _lhsOvertices) <- return (inv_Expression_s8 sem arg7)         return (Syn_Expression _lhsOcopy _lhsOvertices)    ) @@ -508,9 +508,9 @@          in __result_ )      in C_Expression_s8 v7    {-# INLINE rule47 #-}-   {-# LINE 200 "./src-ag/KWOrder.ag" #-}+   {-# LINE 50 "src-ag/KWOrder.ag" #-}    rule47 = \ tks_ ->-                                 {-# LINE 200 "./src-ag/KWOrder.ag" #-}+                                 {-# LINE 50 "src-ag/KWOrder.ag" #-}                                  Set.unions $ map (\tok -> vertices_Syn_HsToken                                               (wrap_HsToken (sem_HsToken tok) Inh_HsToken)) tks_                                  {-# LINE 517 "dist/build/KWOrder.hs"#-}@@ -530,8 +530,8 @@ wrap_Grammar (T_Grammar act) (Inh_Grammar _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Grammar_vIn10 _lhsIoptions-        (T_Grammar_vOut10 _lhsOdepgraphs _lhsOerrors _lhsOinhmap _lhsOlocalSigMap _lhsOoutput _lhsOsynmap _lhsOvisitgraph) <- return (inv_Grammar_s11 sem arg)+        let arg10 = T_Grammar_vIn10 _lhsIoptions+        (T_Grammar_vOut10 _lhsOdepgraphs _lhsOerrors _lhsOinhmap _lhsOlocalSigMap _lhsOoutput _lhsOsynmap _lhsOvisitgraph) <- return (inv_Grammar_s11 sem arg10)         return (Syn_Grammar _lhsOdepgraphs _lhsOerrors _lhsOinhmap _lhsOlocalSigMap _lhsOoutput _lhsOsynmap _lhsOvisitgraph)    ) @@ -560,15 +560,15 @@       v10 = \ (T_Grammar_vIn10 _lhsIoptions) -> ( let          _nontsX26 = Control.Monad.Identity.runIdentity (attach_T_Nonterminals (arg_nonts_))          (T_Nonterminals_vOut25 _nontsIdepinfo _nontsIinhMap' _nontsIinhmap _nontsIlocalSigMap _nontsIntDeps _nontsIntHoDeps _nontsIrulenumber _nontsIsynMap' _nontsIsynmap) = inv_Nonterminals_s26 _nontsX26 (T_Nonterminals_vIn25 _nontsOaroundMap _nontsOclassContexts _nontsOclosedHoNtDeps _nontsOclosedHoNtRevDeps _nontsOclosedNtDeps _nontsOinhMap _nontsOmanualDeps _nontsOmergeMap _nontsOoptions _nontsOrulenumber _nontsOsynMap)-         _nontsOinhMap = rule50 _nontsIinhMap'-         _nontsOsynMap = rule51 _nontsIsynMap'-         _nontsOrulenumber = rule52  ()-         _closedNtDeps = rule53 _nontsIntDeps-         _closedHoNtDeps = rule54 _nontsIntHoDeps-         _closedHoNtRevDeps = rule55 _closedHoNtDeps-         _nontsOaroundMap = rule56 arg_aroundsMap_-         _nontsOmergeMap = rule57 arg_mergeMap_-         _nontsOclassContexts = rule58 arg_contextMap_+         _closedNtDeps = rule50 _nontsIntDeps+         _closedHoNtDeps = rule51 _nontsIntHoDeps+         _closedHoNtRevDeps = rule52 _closedHoNtDeps+         _nontsOclassContexts = rule53 arg_contextMap_+         _nontsOaroundMap = rule54 arg_aroundsMap_+         _nontsOmergeMap = rule55 arg_mergeMap_+         _nontsOrulenumber = rule56  ()+         _nontsOinhMap = rule57 _nontsIinhMap'+         _nontsOsynMap = rule58 _nontsIsynMap'          _nontsOmanualDeps = rule59 arg_manualAttrOrderMap_          _lhsOoutput :: ExecutionPlan          _lhsOdepgraphs :: PP_Doc@@ -589,69 +589,69 @@          in __result_ )      in C_Grammar_s11 v10    {-# INLINE rule50 #-}-   {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}-   rule50 = \ ((_nontsIinhMap') :: Map Identifier Attributes) ->-                             {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}-                             _nontsIinhMap'-                             {-# LINE 597 "dist/build/KWOrder.hs"#-}+   {-# LINE 40 "src-ag/ExecutionPlanCommon.ag" #-}+   rule50 = \ ((_nontsIntDeps) :: Map NontermIdent (Set NontermIdent)) ->+                            {-# LINE 40 "src-ag/ExecutionPlanCommon.ag" #-}+                            closeMap _nontsIntDeps+                            {-# LINE 597 "dist/build/KWOrder.hs"#-}    {-# INLINE rule51 #-}-   {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}-   rule51 = \ ((_nontsIsynMap') :: Map Identifier Attributes) ->-                             {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}-                             _nontsIsynMap'-                             {-# LINE 603 "dist/build/KWOrder.hs"#-}+   {-# LINE 41 "src-ag/ExecutionPlanCommon.ag" #-}+   rule51 = \ ((_nontsIntHoDeps) :: Map NontermIdent (Set NontermIdent)) ->+                            {-# LINE 41 "src-ag/ExecutionPlanCommon.ag" #-}+                            closeMap _nontsIntHoDeps+                            {-# LINE 603 "dist/build/KWOrder.hs"#-}    {-# INLINE rule52 #-}-   {-# LINE 44 "./src-ag/KWOrder.ag" #-}-   rule52 = \  (_ :: ()) ->-                                  {-# LINE 44 "./src-ag/KWOrder.ag" #-}-                                  0-                                  {-# LINE 609 "dist/build/KWOrder.hs"#-}+   {-# LINE 42 "src-ag/ExecutionPlanCommon.ag" #-}+   rule52 = \ _closedHoNtDeps ->+                            {-# LINE 42 "src-ag/ExecutionPlanCommon.ag" #-}+                            revDeps _closedHoNtDeps+                            {-# LINE 609 "dist/build/KWOrder.hs"#-}    {-# INLINE rule53 #-}-   {-# LINE 83 "./src-ag/KWOrder.ag" #-}-   rule53 = \ ((_nontsIntDeps) :: Map NontermIdent (Set NontermIdent)) ->-                            {-# LINE 83 "./src-ag/KWOrder.ag" #-}-                            closeMap _nontsIntDeps-                            {-# LINE 615 "dist/build/KWOrder.hs"#-}+   {-# LINE 51 "src-ag/ExecutionPlanCommon.ag" #-}+   rule53 = \ contextMap_ ->+                          {-# LINE 51 "src-ag/ExecutionPlanCommon.ag" #-}+                          contextMap_+                          {-# LINE 615 "dist/build/KWOrder.hs"#-}    {-# INLINE rule54 #-}-   {-# LINE 84 "./src-ag/KWOrder.ag" #-}-   rule54 = \ ((_nontsIntHoDeps) :: Map NontermIdent (Set NontermIdent)) ->-                            {-# LINE 84 "./src-ag/KWOrder.ag" #-}-                            closeMap _nontsIntHoDeps-                            {-# LINE 621 "dist/build/KWOrder.hs"#-}+   {-# LINE 92 "src-ag/ExecutionPlanCommon.ag" #-}+   rule54 = \ aroundsMap_ ->+                      {-# LINE 92 "src-ag/ExecutionPlanCommon.ag" #-}+                      aroundsMap_+                      {-# LINE 621 "dist/build/KWOrder.hs"#-}    {-# INLINE rule55 #-}-   {-# LINE 85 "./src-ag/KWOrder.ag" #-}-   rule55 = \ _closedHoNtDeps ->-                            {-# LINE 85 "./src-ag/KWOrder.ag" #-}-                            revDeps _closedHoNtDeps-                            {-# LINE 627 "dist/build/KWOrder.hs"#-}+   {-# LINE 117 "src-ag/ExecutionPlanCommon.ag" #-}+   rule55 = \ mergeMap_ ->+                     {-# LINE 117 "src-ag/ExecutionPlanCommon.ag" #-}+                     mergeMap_+                     {-# LINE 627 "dist/build/KWOrder.hs"#-}    {-# INLINE rule56 #-}-   {-# LINE 105 "./src-ag/KWOrder.ag" #-}-   rule56 = \ aroundsMap_ ->-                      {-# LINE 105 "./src-ag/KWOrder.ag" #-}-                      aroundsMap_-                      {-# LINE 633 "dist/build/KWOrder.hs"#-}+   {-# LINE 9 "src-ag/ExecutionPlanPre.ag" #-}+   rule56 = \  (_ :: ()) ->+                                  {-# LINE 9 "src-ag/ExecutionPlanPre.ag" #-}+                                  0+                                  {-# LINE 633 "dist/build/KWOrder.hs"#-}    {-# INLINE rule57 #-}-   {-# LINE 130 "./src-ag/KWOrder.ag" #-}-   rule57 = \ mergeMap_ ->-                     {-# LINE 130 "./src-ag/KWOrder.ag" #-}-                     mergeMap_-                     {-# LINE 639 "dist/build/KWOrder.hs"#-}+   {-# LINE 15 "src-ag/DistChildAttr.ag" #-}+   rule57 = \ ((_nontsIinhMap') :: Map Identifier Attributes) ->+                             {-# LINE 15 "src-ag/DistChildAttr.ag" #-}+                             _nontsIinhMap'+                             {-# LINE 639 "dist/build/KWOrder.hs"#-}    {-# INLINE rule58 #-}-   {-# LINE 146 "./src-ag/KWOrder.ag" #-}-   rule58 = \ contextMap_ ->-                          {-# LINE 146 "./src-ag/KWOrder.ag" #-}-                          contextMap_-                          {-# LINE 645 "dist/build/KWOrder.hs"#-}+   {-# LINE 16 "src-ag/DistChildAttr.ag" #-}+   rule58 = \ ((_nontsIsynMap') :: Map Identifier Attributes) ->+                             {-# LINE 16 "src-ag/DistChildAttr.ag" #-}+                             _nontsIsynMap'+                             {-# LINE 645 "dist/build/KWOrder.hs"#-}    {-# INLINE rule59 #-}-   {-# LINE 269 "./src-ag/KWOrder.ag" #-}+   {-# LINE 119 "src-ag/KWOrder.ag" #-}    rule59 = \ manualAttrOrderMap_ ->-                                                   {-# LINE 269 "./src-ag/KWOrder.ag" #-}+                                                   {-# LINE 119 "src-ag/KWOrder.ag" #-}                                                    manualAttrOrderMap_                                                    {-# LINE 651 "dist/build/KWOrder.hs"#-}    {-# INLINE rule60 #-}-   {-# LINE 360 "./src-ag/KWOrder.ag" #-}+   {-# LINE 210 "src-ag/KWOrder.ag" #-}    rule60 = \ ((_lhsIoptions) :: Options) ((_nontsIdepinfo) :: [NontDependencyInformation]) derivings_ typeSyns_ wrappers_ ->-                    {-# LINE 360 "./src-ag/KWOrder.ag" #-}+                    {-# LINE 210 "src-ag/KWOrder.ag" #-}                     let lazyPlan = kennedyWarrenLazy _lhsIoptions wrappers_ _nontsIdepinfo typeSyns_ derivings_                     in if visit _lhsIoptions && withCycle _lhsIoptions                        then case kennedyWarrenOrder _lhsIoptions wrappers_ _nontsIdepinfo typeSyns_ derivings_ of@@ -690,8 +690,8 @@ wrap_HsToken (T_HsToken act) (Inh_HsToken ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsToken_vIn13 -        (T_HsToken_vOut13 _lhsOvertices) <- return (inv_HsToken_s14 sem arg)+        let arg13 = T_HsToken_vIn13 +        (T_HsToken_vOut13 _lhsOvertices) <- return (inv_HsToken_s14 sem arg13)         return (Syn_HsToken _lhsOvertices)    ) @@ -729,9 +729,9 @@          in __result_ )      in C_HsToken_s14 v13    {-# INLINE rule68 #-}-   {-# LINE 193 "./src-ag/KWOrder.ag" #-}+   {-# LINE 43 "src-ag/KWOrder.ag" #-}    rule68 = \ var_ ->-                              {-# LINE 193 "./src-ag/KWOrder.ag" #-}+                              {-# LINE 43 "src-ag/KWOrder.ag" #-}                               Set.singleton $ VChild var_                               {-# LINE 737 "dist/build/KWOrder.hs"#-} {-# NOINLINE sem_HsToken_AGField #-}@@ -747,9 +747,9 @@          in __result_ )      in C_HsToken_s14 v13    {-# INLINE rule69 #-}-   {-# LINE 194 "./src-ag/KWOrder.ag" #-}+   {-# LINE 44 "src-ag/KWOrder.ag" #-}    rule69 = \ attr_ field_ ->-                              {-# LINE 194 "./src-ag/KWOrder.ag" #-}+                              {-# LINE 44 "src-ag/KWOrder.ag" #-}                               Set.singleton $ VAttr (if      field_ == _LHS then Inh                                                      else if field_ == _LOC then Loc                                                      else                        Syn) field_ attr_@@ -824,8 +824,8 @@ wrap_HsTokens (T_HsTokens act) (Inh_HsTokens ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsTokens_vIn16 -        (T_HsTokens_vOut16 ) <- return (inv_HsTokens_s17 sem arg)+        let arg16 = T_HsTokens_vIn16 +        (T_HsTokens_vOut16 ) <- return (inv_HsTokens_s17 sem arg16)         return (Syn_HsTokens )    ) @@ -879,8 +879,8 @@ wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsTokensRoot_vIn19 -        (T_HsTokensRoot_vOut19 ) <- return (inv_HsTokensRoot_s20 sem arg)+        let arg19 = T_HsTokensRoot_vIn19 +        (T_HsTokensRoot_vOut19 ) <- return (inv_HsTokensRoot_s20 sem arg19)         return (Syn_HsTokensRoot )    ) @@ -922,8 +922,8 @@ wrap_Nonterminal (T_Nonterminal act) (Inh_Nonterminal _lhsIaroundMap _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminal_vIn22 _lhsIaroundMap _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap-        (T_Nonterminal_vOut22 _lhsOdepinfo _lhsOinhMap' _lhsOinhmap _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOrulenumber _lhsOsynMap' _lhsOsynmap) <- return (inv_Nonterminal_s23 sem arg)+        let arg22 = T_Nonterminal_vIn22 _lhsIaroundMap _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap+        (T_Nonterminal_vOut22 _lhsOdepinfo _lhsOinhMap' _lhsOinhmap _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOrulenumber _lhsOsynMap' _lhsOsynmap) <- return (inv_Nonterminal_s23 sem arg22)         return (Syn_Nonterminal _lhsOdepinfo _lhsOinhMap' _lhsOinhmap _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOrulenumber _lhsOsynMap' _lhsOsynmap)    ) @@ -952,36 +952,36 @@       v22 = \ (T_Nonterminal_vIn22 _lhsIaroundMap _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap) -> ( let          _prodsX38 = Control.Monad.Identity.runIdentity (attach_T_Productions (arg_prods_))          (T_Productions_vOut37 _prodsIdepgraph _prodsIlocalSigMap _prodsIrefHoNts _prodsIrefNts _prodsIrulenumber) = inv_Productions_s38 _prodsX38 (T_Productions_vIn37 _prodsOaroundMap _prodsOinhMap _prodsOmanualDeps _prodsOmergeMap _prodsOoptions _prodsOrulenumber _prodsOsynMap)-         _lhsOinhMap' :: Map Identifier Attributes-         _lhsOinhMap' = rule74 arg_inh_ arg_nt_-         _lhsOsynMap' :: Map Identifier Attributes-         _lhsOsynMap' = rule75 arg_nt_ arg_syn_          _lhsOntDeps :: Map NontermIdent (Set NontermIdent)-         _lhsOntDeps = rule76 _prodsIrefNts arg_nt_+         _lhsOntDeps = rule74 _prodsIrefNts arg_nt_          _lhsOntHoDeps :: Map NontermIdent (Set NontermIdent)-         _lhsOntHoDeps = rule77 _prodsIrefHoNts arg_nt_-         _closedNtDeps = rule78 _lhsIclosedNtDeps arg_nt_-         _closedHoNtDeps = rule79 _lhsIclosedHoNtDeps arg_nt_-         _closedHoNtRevDeps = rule80 _lhsIclosedHoNtRevDeps arg_nt_-         _recursive = rule81 _closedNtDeps arg_nt_-         _nontrivAcyc = rule82 _closedHoNtDeps arg_nt_-         _hoInfo = rule83 _closedHoNtDeps _closedHoNtRevDeps _nontrivAcyc-         _aroundMap = rule84 _lhsIaroundMap arg_nt_-         _mergeMap = rule85 _lhsImergeMap arg_nt_-         _classContexts = rule86 _lhsIclassContexts arg_nt_-         _prodsOmanualDeps = rule87 _lhsImanualDeps arg_nt_-         _synvertices = rule88 arg_nt_ arg_syn_-         _inhvertices = rule89 arg_inh_ arg_nt_-         _vertices = rule90 _inhvertices _synvertices-         _nontgraph = rule91 _vertices-         _lhsOdepinfo :: NontDependencyInformation-         _lhsOdepinfo = rule92 _classContexts _hoInfo _nontgraph _prodsIdepgraph _recursive arg_inh_ arg_nt_ arg_params_ arg_syn_+         _lhsOntHoDeps = rule75 _prodsIrefHoNts arg_nt_+         _closedNtDeps = rule76 _lhsIclosedNtDeps arg_nt_+         _closedHoNtDeps = rule77 _lhsIclosedHoNtDeps arg_nt_+         _closedHoNtRevDeps = rule78 _lhsIclosedHoNtRevDeps arg_nt_+         _recursive = rule79 _closedNtDeps arg_nt_+         _nontrivAcyc = rule80 _closedHoNtDeps arg_nt_+         _hoInfo = rule81 _closedHoNtDeps _closedHoNtRevDeps _nontrivAcyc+         _classContexts = rule82 _lhsIclassContexts arg_nt_+         _aroundMap = rule83 _lhsIaroundMap arg_nt_+         _mergeMap = rule84 _lhsImergeMap arg_nt_          _lhsOinhmap :: Map.Map NontermIdent Attributes-         _lhsOinhmap = rule93 arg_inh_ arg_nt_+         _lhsOinhmap = rule85 arg_inh_ arg_nt_          _lhsOsynmap :: Map.Map NontermIdent Attributes-         _lhsOsynmap = rule94 arg_nt_ arg_syn_+         _lhsOsynmap = rule86 arg_nt_ arg_syn_          _lhsOlocalSigMap :: Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))-         _lhsOlocalSigMap = rule95 _prodsIlocalSigMap arg_nt_+         _lhsOlocalSigMap = rule87 _prodsIlocalSigMap arg_nt_+         _lhsOinhMap' :: Map Identifier Attributes+         _lhsOinhMap' = rule88 arg_inh_ arg_nt_+         _lhsOsynMap' :: Map Identifier Attributes+         _lhsOsynMap' = rule89 arg_nt_ arg_syn_+         _prodsOmanualDeps = rule90 _lhsImanualDeps arg_nt_+         _synvertices = rule91 arg_nt_ arg_syn_+         _inhvertices = rule92 arg_inh_ arg_nt_+         _vertices = rule93 _inhvertices _synvertices+         _nontgraph = rule94 _vertices+         _lhsOdepinfo :: NontDependencyInformation+         _lhsOdepinfo = rule95 _classContexts _hoInfo _nontgraph _prodsIdepgraph _recursive arg_inh_ arg_nt_ arg_params_ arg_syn_          _lhsOrulenumber :: Int          _lhsOrulenumber = rule96 _prodsIrulenumber          _prodsOaroundMap = rule97 _aroundMap@@ -994,121 +994,139 @@          in __result_ )      in C_Nonterminal_s23 v22    {-# INLINE rule74 #-}-   {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}-   rule74 = \ inh_ nt_ ->-                                 {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}-                                 Map.singleton nt_ inh_-                                 {-# LINE 1002 "dist/build/KWOrder.hs"#-}+   {-# LINE 16 "src-ag/ExecutionPlanCommon.ag" #-}+   rule74 = \ ((_prodsIrefNts) :: Set NontermIdent) nt_ ->+                            {-# LINE 16 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.singleton nt_ _prodsIrefNts+                            {-# LINE 1002 "dist/build/KWOrder.hs"#-}    {-# INLINE rule75 #-}-   {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}-   rule75 = \ nt_ syn_ ->-                                 {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}-                                 Map.singleton nt_ syn_-                                 {-# LINE 1008 "dist/build/KWOrder.hs"#-}+   {-# LINE 17 "src-ag/ExecutionPlanCommon.ag" #-}+   rule75 = \ ((_prodsIrefHoNts) :: Set NontermIdent) nt_ ->+                            {-# LINE 17 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.singleton nt_ _prodsIrefHoNts+                            {-# LINE 1008 "dist/build/KWOrder.hs"#-}    {-# INLINE rule76 #-}-   {-# LINE 59 "./src-ag/KWOrder.ag" #-}-   rule76 = \ ((_prodsIrefNts) :: Set NontermIdent) nt_ ->-                            {-# LINE 59 "./src-ag/KWOrder.ag" #-}-                            Map.singleton nt_ _prodsIrefNts+   {-# LINE 19 "src-ag/ExecutionPlanCommon.ag" #-}+   rule76 = \ ((_lhsIclosedNtDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->+                            {-# LINE 19 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.findWithDefault Set.empty nt_ _lhsIclosedNtDeps                             {-# LINE 1014 "dist/build/KWOrder.hs"#-}    {-# INLINE rule77 #-}-   {-# LINE 60 "./src-ag/KWOrder.ag" #-}-   rule77 = \ ((_prodsIrefHoNts) :: Set NontermIdent) nt_ ->-                            {-# LINE 60 "./src-ag/KWOrder.ag" #-}-                            Map.singleton nt_ _prodsIrefHoNts+   {-# LINE 20 "src-ag/ExecutionPlanCommon.ag" #-}+   rule77 = \ ((_lhsIclosedHoNtDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->+                            {-# LINE 20 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.findWithDefault Set.empty nt_ _lhsIclosedHoNtDeps                             {-# LINE 1020 "dist/build/KWOrder.hs"#-}    {-# INLINE rule78 #-}-   {-# LINE 62 "./src-ag/KWOrder.ag" #-}-   rule78 = \ ((_lhsIclosedNtDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->-                            {-# LINE 62 "./src-ag/KWOrder.ag" #-}-                            Map.findWithDefault Set.empty nt_ _lhsIclosedNtDeps+   {-# LINE 21 "src-ag/ExecutionPlanCommon.ag" #-}+   rule78 = \ ((_lhsIclosedHoNtRevDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->+                            {-# LINE 21 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.findWithDefault Set.empty nt_ _lhsIclosedHoNtRevDeps                             {-# LINE 1026 "dist/build/KWOrder.hs"#-}    {-# INLINE rule79 #-}-   {-# LINE 63 "./src-ag/KWOrder.ag" #-}-   rule79 = \ ((_lhsIclosedHoNtDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->-                            {-# LINE 63 "./src-ag/KWOrder.ag" #-}-                            Map.findWithDefault Set.empty nt_ _lhsIclosedHoNtDeps+   {-# LINE 23 "src-ag/ExecutionPlanCommon.ag" #-}+   rule79 = \ _closedNtDeps nt_ ->+                            {-# LINE 23 "src-ag/ExecutionPlanCommon.ag" #-}+                            nt_ `Set.member` _closedNtDeps                             {-# LINE 1032 "dist/build/KWOrder.hs"#-}    {-# INLINE rule80 #-}-   {-# LINE 64 "./src-ag/KWOrder.ag" #-}-   rule80 = \ ((_lhsIclosedHoNtRevDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->-                            {-# LINE 64 "./src-ag/KWOrder.ag" #-}-                            Map.findWithDefault Set.empty nt_ _lhsIclosedHoNtRevDeps+   {-# LINE 24 "src-ag/ExecutionPlanCommon.ag" #-}+   rule80 = \ _closedHoNtDeps nt_ ->+                            {-# LINE 24 "src-ag/ExecutionPlanCommon.ag" #-}+                            nt_ `Set.member` _closedHoNtDeps                             {-# LINE 1038 "dist/build/KWOrder.hs"#-}    {-# INLINE rule81 #-}-   {-# LINE 66 "./src-ag/KWOrder.ag" #-}-   rule81 = \ _closedNtDeps nt_ ->-                            {-# LINE 66 "./src-ag/KWOrder.ag" #-}-                            nt_ `Set.member` _closedNtDeps-                            {-# LINE 1044 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule82 #-}-   {-# LINE 67 "./src-ag/KWOrder.ag" #-}-   rule82 = \ _closedHoNtDeps nt_ ->-                            {-# LINE 67 "./src-ag/KWOrder.ag" #-}-                            nt_ `Set.member` _closedHoNtDeps-                            {-# LINE 1050 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule83 #-}-   {-# LINE 68 "./src-ag/KWOrder.ag" #-}-   rule83 = \ _closedHoNtDeps _closedHoNtRevDeps _nontrivAcyc ->-                            {-# LINE 68 "./src-ag/KWOrder.ag" #-}+   {-# LINE 25 "src-ag/ExecutionPlanCommon.ag" #-}+   rule81 = \ _closedHoNtDeps _closedHoNtRevDeps _nontrivAcyc ->+                            {-# LINE 25 "src-ag/ExecutionPlanCommon.ag" #-}                             HigherOrderInfo { hoNtDeps            = _closedHoNtDeps                                             , hoNtRevDeps         = _closedHoNtRevDeps                                             , hoAcyclic           = _nontrivAcyc                                             }-                            {-# LINE 1059 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule84 #-}-   {-# LINE 101 "./src-ag/KWOrder.ag" #-}-   rule84 = \ ((_lhsIaroundMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) nt_ ->-                                                 {-# LINE 101 "./src-ag/KWOrder.ag" #-}+                            {-# LINE 1047 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule82 #-}+   {-# LINE 54 "src-ag/ExecutionPlanCommon.ag" #-}+   rule82 = \ ((_lhsIclassContexts) :: ContextMap) nt_ ->+                        {-# LINE 54 "src-ag/ExecutionPlanCommon.ag" #-}+                        Map.findWithDefault [] nt_ _lhsIclassContexts+                        {-# LINE 1053 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule83 #-}+   {-# LINE 88 "src-ag/ExecutionPlanCommon.ag" #-}+   rule83 = \ ((_lhsIaroundMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) nt_ ->+                                                 {-# LINE 88 "src-ag/ExecutionPlanCommon.ag" #-}                                                  Map.findWithDefault Map.empty nt_ _lhsIaroundMap-                                                 {-# LINE 1065 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule85 #-}-   {-# LINE 126 "./src-ag/KWOrder.ag" #-}-   rule85 = \ ((_lhsImergeMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) nt_ ->-                                                {-# LINE 126 "./src-ag/KWOrder.ag" #-}+                                                 {-# LINE 1059 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule84 #-}+   {-# LINE 113 "src-ag/ExecutionPlanCommon.ag" #-}+   rule84 = \ ((_lhsImergeMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) nt_ ->+                                                {-# LINE 113 "src-ag/ExecutionPlanCommon.ag" #-}                                                 Map.findWithDefault Map.empty nt_ _lhsImergeMap-                                                {-# LINE 1071 "dist/build/KWOrder.hs"#-}+                                                {-# LINE 1065 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule85 #-}+   {-# LINE 149 "src-ag/ExecutionPlanCommon.ag" #-}+   rule85 = \ inh_ nt_ ->+                               {-# LINE 149 "src-ag/ExecutionPlanCommon.ag" #-}+                               Map.singleton nt_ inh_+                               {-# LINE 1071 "dist/build/KWOrder.hs"#-}    {-# INLINE rule86 #-}-   {-# LINE 149 "./src-ag/KWOrder.ag" #-}-   rule86 = \ ((_lhsIclassContexts) :: ContextMap) nt_ ->-                        {-# LINE 149 "./src-ag/KWOrder.ag" #-}-                        Map.findWithDefault [] nt_ _lhsIclassContexts-                        {-# LINE 1077 "dist/build/KWOrder.hs"#-}+   {-# LINE 150 "src-ag/ExecutionPlanCommon.ag" #-}+   rule86 = \ nt_ syn_ ->+                               {-# LINE 150 "src-ag/ExecutionPlanCommon.ag" #-}+                               Map.singleton nt_ syn_+                               {-# LINE 1077 "dist/build/KWOrder.hs"#-}    {-# INLINE rule87 #-}-   {-# LINE 270 "./src-ag/KWOrder.ag" #-}-   rule87 = \ ((_lhsImanualDeps) :: AttrOrderMap) nt_ ->-                                                   {-# LINE 270 "./src-ag/KWOrder.ag" #-}-                                                   Map.findWithDefault Map.empty nt_ _lhsImanualDeps+   {-# LINE 159 "src-ag/ExecutionPlanCommon.ag" #-}+   rule87 = \ ((_prodsIlocalSigMap) :: Map.Map ConstructorIdent (Map.Map Identifier Type)) nt_ ->+                                                   {-# LINE 159 "src-ag/ExecutionPlanCommon.ag" #-}+                                                   Map.singleton nt_ _prodsIlocalSigMap                                                    {-# LINE 1083 "dist/build/KWOrder.hs"#-}    {-# INLINE rule88 #-}-   {-# LINE 325 "./src-ag/KWOrder.ag" #-}-   rule88 = \ nt_ syn_ ->-                                     {-# LINE 325 "./src-ag/KWOrder.ag" #-}-                                     map (VAttr Syn nt_) . Map.keys $ syn_-                                     {-# LINE 1089 "dist/build/KWOrder.hs"#-}+   {-# LINE 7 "src-ag/DistChildAttr.ag" #-}+   rule88 = \ inh_ nt_ ->+                                 {-# LINE 7 "src-ag/DistChildAttr.ag" #-}+                                 Map.singleton nt_ inh_+                                 {-# LINE 1089 "dist/build/KWOrder.hs"#-}    {-# INLINE rule89 #-}-   {-# LINE 326 "./src-ag/KWOrder.ag" #-}-   rule89 = \ inh_ nt_ ->-                                     {-# LINE 326 "./src-ag/KWOrder.ag" #-}-                                     map (VAttr Inh nt_) . Map.keys $ inh_-                                     {-# LINE 1095 "dist/build/KWOrder.hs"#-}+   {-# LINE 8 "src-ag/DistChildAttr.ag" #-}+   rule89 = \ nt_ syn_ ->+                                 {-# LINE 8 "src-ag/DistChildAttr.ag" #-}+                                 Map.singleton nt_ syn_+                                 {-# LINE 1095 "dist/build/KWOrder.hs"#-}    {-# INLINE rule90 #-}-   {-# LINE 327 "./src-ag/KWOrder.ag" #-}-   rule90 = \ _inhvertices _synvertices ->-                                     {-# LINE 327 "./src-ag/KWOrder.ag" #-}-                                     _synvertices     ++ _inhvertices-                                     {-# LINE 1101 "dist/build/KWOrder.hs"#-}+   {-# LINE 120 "src-ag/KWOrder.ag" #-}+   rule90 = \ ((_lhsImanualDeps) :: AttrOrderMap) nt_ ->+                                                   {-# LINE 120 "src-ag/KWOrder.ag" #-}+                                                   Map.findWithDefault Map.empty nt_ _lhsImanualDeps+                                                   {-# LINE 1101 "dist/build/KWOrder.hs"#-}    {-# INLINE rule91 #-}-   {-# LINE 331 "./src-ag/KWOrder.ag" #-}-   rule91 = \ _vertices ->-                                   {-# LINE 331 "./src-ag/KWOrder.ag" #-}+   {-# LINE 175 "src-ag/KWOrder.ag" #-}+   rule91 = \ nt_ syn_ ->+                                     {-# LINE 175 "src-ag/KWOrder.ag" #-}+                                     map (VAttr Syn nt_) . Map.keys $ syn_+                                     {-# LINE 1107 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule92 #-}+   {-# LINE 176 "src-ag/KWOrder.ag" #-}+   rule92 = \ inh_ nt_ ->+                                     {-# LINE 176 "src-ag/KWOrder.ag" #-}+                                     map (VAttr Inh nt_) . Map.keys $ inh_+                                     {-# LINE 1113 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule93 #-}+   {-# LINE 177 "src-ag/KWOrder.ag" #-}+   rule93 = \ _inhvertices _synvertices ->+                                     {-# LINE 177 "src-ag/KWOrder.ag" #-}+                                     _synvertices     ++ _inhvertices+                                     {-# LINE 1119 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule94 #-}+   {-# LINE 181 "src-ag/KWOrder.ag" #-}+   rule94 = \ _vertices ->+                                   {-# LINE 181 "src-ag/KWOrder.ag" #-}                                    NontDependencyGraph { ndgVertices = _vertices                                                        , ndgEdges    = [] }-                                   {-# LINE 1108 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule92 #-}-   {-# LINE 339 "./src-ag/KWOrder.ag" #-}-   rule92 = \ _classContexts _hoInfo _nontgraph ((_prodsIdepgraph) :: [ProdDependencyGraph]) _recursive inh_ nt_ params_ syn_ ->-                                 {-# LINE 339 "./src-ag/KWOrder.ag" #-}+                                   {-# LINE 1126 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule95 #-}+   {-# LINE 189 "src-ag/KWOrder.ag" #-}+   rule95 = \ _classContexts _hoInfo _nontgraph ((_prodsIdepgraph) :: [ProdDependencyGraph]) _recursive inh_ nt_ params_ syn_ ->+                                 {-# LINE 189 "src-ag/KWOrder.ag" #-}                                  NontDependencyInformation { ndiNonterminal = nt_                                                            , ndiParams      = params_                                                            , ndiInh         = Map.keys inh_@@ -1119,25 +1137,7 @@                                                            , ndiHoInfo      = _hoInfo                                                            , ndiClassCtxs   = _classContexts                                                            }-                                 {-# LINE 1123 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule93 #-}-   {-# LINE 377 "./src-ag/KWOrder.ag" #-}-   rule93 = \ inh_ nt_ ->-                               {-# LINE 377 "./src-ag/KWOrder.ag" #-}-                               Map.singleton nt_ inh_-                               {-# LINE 1129 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule94 #-}-   {-# LINE 378 "./src-ag/KWOrder.ag" #-}-   rule94 = \ nt_ syn_ ->-                               {-# LINE 378 "./src-ag/KWOrder.ag" #-}-                               Map.singleton nt_ syn_-                               {-# LINE 1135 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule95 #-}-   {-# LINE 387 "./src-ag/KWOrder.ag" #-}-   rule95 = \ ((_prodsIlocalSigMap) :: Map.Map ConstructorIdent (Map.Map Identifier Type)) nt_ ->-                                                   {-# LINE 387 "./src-ag/KWOrder.ag" #-}-                                                   Map.singleton nt_ _prodsIlocalSigMap-                                                   {-# LINE 1141 "dist/build/KWOrder.hs"#-}+                                 {-# LINE 1141 "dist/build/KWOrder.hs"#-}    {-# INLINE rule96 #-}    rule96 = \ ((_prodsIrulenumber) :: Int) ->      _prodsIrulenumber@@ -1169,8 +1169,8 @@ wrap_Nonterminals (T_Nonterminals act) (Inh_Nonterminals _lhsIaroundMap _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminals_vIn25 _lhsIaroundMap _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap-        (T_Nonterminals_vOut25 _lhsOdepinfo _lhsOinhMap' _lhsOinhmap _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOrulenumber _lhsOsynMap' _lhsOsynmap) <- return (inv_Nonterminals_s26 sem arg)+        let arg25 = T_Nonterminals_vIn25 _lhsIaroundMap _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap+        (T_Nonterminals_vOut25 _lhsOdepinfo _lhsOinhMap' _lhsOinhmap _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOrulenumber _lhsOsynMap' _lhsOsynmap) <- return (inv_Nonterminals_s26 sem arg25)         return (Syn_Nonterminals _lhsOdepinfo _lhsOinhMap' _lhsOinhmap _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOrulenumber _lhsOsynMap' _lhsOsynmap)    ) @@ -1402,8 +1402,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn28 -        (T_Pattern_vOut28 _lhsOcopy _lhsOvertices) <- return (inv_Pattern_s29 sem arg)+        let arg28 = T_Pattern_vIn28 +        (T_Pattern_vOut28 _lhsOcopy _lhsOvertices) <- return (inv_Pattern_s29 sem arg28)         return (Syn_Pattern _lhsOcopy _lhsOvertices)    ) @@ -1498,18 +1498,18 @@          in __result_ )      in C_Pattern_s29 v28    {-# INLINE rule149 #-}-   {-# LINE 205 "./src-ag/KWOrder.ag" #-}+   {-# LINE 55 "src-ag/KWOrder.ag" #-}    rule149 = \ attr_ field_ ->-                            {-# LINE 205 "./src-ag/KWOrder.ag" #-}+                            {-# LINE 55 "src-ag/KWOrder.ag" #-}                             if                  field_ == _INST then VChild attr_                             else VAttr (if      field_ == _LHS  then Syn                                         else if field_ == _LOC  then Loc                                         else                         Inh) field_ attr_                             {-# LINE 1509 "dist/build/KWOrder.hs"#-}    {-# INLINE rule150 #-}-   {-# LINE 209 "./src-ag/KWOrder.ag" #-}+   {-# LINE 59 "src-ag/KWOrder.ag" #-}    rule150 = \ ((_patIvertices) :: Set.Set Vertex) _vertex ->-                            {-# LINE 209 "./src-ag/KWOrder.ag" #-}+                            {-# LINE 59 "src-ag/KWOrder.ag" #-}                             Set.insert _vertex     _patIvertices                             {-# LINE 1515 "dist/build/KWOrder.hs"#-}    {-# INLINE rule151 #-}@@ -1578,8 +1578,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn31 -        (T_Patterns_vOut31 _lhsOcopy _lhsOvertices) <- return (inv_Patterns_s32 sem arg)+        let arg31 = T_Patterns_vIn31 +        (T_Patterns_vOut31 _lhsOcopy _lhsOvertices) <- return (inv_Patterns_s32 sem arg31)         return (Syn_Patterns _lhsOcopy _lhsOvertices)    ) @@ -1661,8 +1661,8 @@ wrap_Production (T_Production act) (Inh_Production _lhsIaroundMap _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Production_vIn34 _lhsIaroundMap _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap-        (T_Production_vOut34 _lhsOdepgraph _lhsOlocalSigMap _lhsOrefHoNts _lhsOrefNts _lhsOrulenumber) <- return (inv_Production_s35 sem arg)+        let arg34 = T_Production_vIn34 _lhsIaroundMap _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap+        (T_Production_vOut34 _lhsOdepgraph _lhsOlocalSigMap _lhsOrefHoNts _lhsOrefNts _lhsOrulenumber) <- return (inv_Production_s35 sem arg34)         return (Syn_Production _lhsOdepgraph _lhsOlocalSigMap _lhsOrefHoNts _lhsOrefNts _lhsOrulenumber)    ) @@ -1698,14 +1698,14 @@          _aroundMap = rule165 _lhsIaroundMap arg_con_          _mergeMap = rule166 _lhsImergeMap arg_con_          _mergedChildren = rule167 _mergeMap-         _vertices = rule168 _childrenIvertices _rulesIvertices-         _manualDeps = rule169 _lhsImanualDeps arg_con_-         _manualEdges = rule170 _manualDeps-         _edges = rule171 _childrenIedges _rulesIedges-         _lhsOdepgraph :: ProdDependencyGraph-         _lhsOdepgraph = rule172 _childrenIechilds _childrenInontnames _edges _rulesIerules _vertices arg_con_ arg_constraints_ arg_params_          _lhsOlocalSigMap :: Map.Map ConstructorIdent (Map.Map Identifier Type)-         _lhsOlocalSigMap = rule173 _typeSigsIlocalSigMap arg_con_+         _lhsOlocalSigMap = rule168 _typeSigsIlocalSigMap arg_con_+         _vertices = rule169 _childrenIvertices _rulesIvertices+         _manualDeps = rule170 _lhsImanualDeps arg_con_+         _manualEdges = rule171 _manualDeps+         _edges = rule172 _childrenIedges _rulesIedges+         _lhsOdepgraph :: ProdDependencyGraph+         _lhsOdepgraph = rule173 _childrenIechilds _childrenInontnames _edges _rulesIerules _vertices arg_con_ arg_constraints_ arg_params_          _lhsOrefHoNts :: Set NontermIdent          _lhsOrefHoNts = rule174 _childrenIrefHoNts          _lhsOrefNts :: Set NontermIdent@@ -1723,51 +1723,57 @@          in __result_ )      in C_Production_s35 v34    {-# INLINE rule165 #-}-   {-# LINE 102 "./src-ag/KWOrder.ag" #-}+   {-# LINE 89 "src-ag/ExecutionPlanCommon.ag" #-}    rule165 = \ ((_lhsIaroundMap) :: Map ConstructorIdent (Map Identifier [Expression])) con_ ->-                                                 {-# LINE 102 "./src-ag/KWOrder.ag" #-}+                                                 {-# LINE 89 "src-ag/ExecutionPlanCommon.ag" #-}                                                  Map.findWithDefault Map.empty con_ _lhsIaroundMap                                                  {-# LINE 1731 "dist/build/KWOrder.hs"#-}    {-# INLINE rule166 #-}-   {-# LINE 127 "./src-ag/KWOrder.ag" #-}+   {-# LINE 114 "src-ag/ExecutionPlanCommon.ag" #-}    rule166 = \ ((_lhsImergeMap) :: Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))) con_ ->-                                                {-# LINE 127 "./src-ag/KWOrder.ag" #-}+                                                {-# LINE 114 "src-ag/ExecutionPlanCommon.ag" #-}                                                 Map.findWithDefault Map.empty con_ _lhsImergeMap                                                 {-# LINE 1737 "dist/build/KWOrder.hs"#-}    {-# INLINE rule167 #-}-   {-# LINE 133 "./src-ag/KWOrder.ag" #-}+   {-# LINE 120 "src-ag/ExecutionPlanCommon.ag" #-}    rule167 = \ _mergeMap ->-                         {-# LINE 133 "./src-ag/KWOrder.ag" #-}+                         {-# LINE 120 "src-ag/ExecutionPlanCommon.ag" #-}                          Set.unions [ Set.fromList ms | (_,ms,_) <- Map.elems _mergeMap     ]                          {-# LINE 1743 "dist/build/KWOrder.hs"#-}    {-# INLINE rule168 #-}-   {-# LINE 229 "./src-ag/KWOrder.ag" #-}-   rule168 = \ ((_childrenIvertices) :: Set.Set Vertex) ((_rulesIvertices) :: Set.Set Vertex) ->-                                 {-# LINE 229 "./src-ag/KWOrder.ag" #-}-                                 _rulesIvertices `Set.union` _childrenIvertices-                                 {-# LINE 1749 "dist/build/KWOrder.hs"#-}+   {-# LINE 160 "src-ag/ExecutionPlanCommon.ag" #-}+   rule168 = \ ((_typeSigsIlocalSigMap) :: Map Identifier Type) con_ ->+                                                   {-# LINE 160 "src-ag/ExecutionPlanCommon.ag" #-}+                                                   Map.singleton con_ _typeSigsIlocalSigMap+                                                   {-# LINE 1749 "dist/build/KWOrder.hs"#-}    {-# INLINE rule169 #-}-   {-# LINE 272 "./src-ag/KWOrder.ag" #-}-   rule169 = \ ((_lhsImanualDeps) :: Map ConstructorIdent (Set Dependency)) con_ ->-                       {-# LINE 272 "./src-ag/KWOrder.ag" #-}-                       Map.findWithDefault Set.empty con_ _lhsImanualDeps-                       {-# LINE 1755 "dist/build/KWOrder.hs"#-}+   {-# LINE 79 "src-ag/KWOrder.ag" #-}+   rule169 = \ ((_childrenIvertices) :: Set.Set Vertex) ((_rulesIvertices) :: Set.Set Vertex) ->+                                 {-# LINE 79 "src-ag/KWOrder.ag" #-}+                                 _rulesIvertices `Set.union` _childrenIvertices+                                 {-# LINE 1755 "dist/build/KWOrder.hs"#-}    {-# INLINE rule170 #-}-   {-# LINE 273 "./src-ag/KWOrder.ag" #-}-   rule170 = \ _manualDeps ->-                       {-# LINE 273 "./src-ag/KWOrder.ag" #-}-                       Set.map depToEdge _manualDeps+   {-# LINE 122 "src-ag/KWOrder.ag" #-}+   rule170 = \ ((_lhsImanualDeps) :: Map ConstructorIdent (Set Dependency)) con_ ->+                       {-# LINE 122 "src-ag/KWOrder.ag" #-}+                       Map.findWithDefault Set.empty con_ _lhsImanualDeps                        {-# LINE 1761 "dist/build/KWOrder.hs"#-}    {-# INLINE rule171 #-}-   {-# LINE 295 "./src-ag/KWOrder.ag" #-}-   rule171 = \ ((_childrenIedges) :: Set.Set Edge) ((_rulesIedges) :: Set.Set Edge) ->-                              {-# LINE 295 "./src-ag/KWOrder.ag" #-}-                              _rulesIedges `Set.union` _childrenIedges-                              {-# LINE 1767 "dist/build/KWOrder.hs"#-}+   {-# LINE 123 "src-ag/KWOrder.ag" #-}+   rule171 = \ _manualDeps ->+                       {-# LINE 123 "src-ag/KWOrder.ag" #-}+                       Set.map depToEdge _manualDeps+                       {-# LINE 1767 "dist/build/KWOrder.hs"#-}    {-# INLINE rule172 #-}-   {-# LINE 310 "./src-ag/KWOrder.ag" #-}-   rule172 = \ ((_childrenIechilds) :: EChildren) ((_childrenInontnames) :: [(Identifier, Identifier)]) _edges ((_rulesIerules) :: ERules) _vertices con_ constraints_ params_ ->-                                  {-# LINE 310 "./src-ag/KWOrder.ag" #-}+   {-# LINE 145 "src-ag/KWOrder.ag" #-}+   rule172 = \ ((_childrenIedges) :: Set.Set Edge) ((_rulesIedges) :: Set.Set Edge) ->+                              {-# LINE 145 "src-ag/KWOrder.ag" #-}+                              _rulesIedges `Set.union` _childrenIedges+                              {-# LINE 1773 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule173 #-}+   {-# LINE 160 "src-ag/KWOrder.ag" #-}+   rule173 = \ ((_childrenIechilds) :: EChildren) ((_childrenInontnames) :: [(Identifier, Identifier)]) _edges ((_rulesIerules) :: ERules) _vertices con_ constraints_ params_ ->+                                  {-# LINE 160 "src-ag/KWOrder.ag" #-}                                   ProdDependencyGraph { pdgVertices    = Set.toList _vertices                                                       , pdgEdges       = Set.toList _edges                                                       , pdgRules       = _rulesIerules@@ -1776,13 +1782,7 @@                                                       , pdgChildMap    = _childrenInontnames                                                       , pdgConstraints = constraints_                                                       , pdgParams      = params_ }-                                  {-# LINE 1780 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule173 #-}-   {-# LINE 388 "./src-ag/KWOrder.ag" #-}-   rule173 = \ ((_typeSigsIlocalSigMap) :: Map Identifier Type) con_ ->-                                                   {-# LINE 388 "./src-ag/KWOrder.ag" #-}-                                                   Map.singleton con_ _typeSigsIlocalSigMap-                                                   {-# LINE 1786 "dist/build/KWOrder.hs"#-}+                                  {-# LINE 1786 "dist/build/KWOrder.hs"#-}    {-# INLINE rule174 #-}    rule174 = \ ((_childrenIrefHoNts) :: Set NontermIdent) ->      _childrenIrefHoNts@@ -1823,8 +1823,8 @@ wrap_Productions (T_Productions act) (Inh_Productions _lhsIaroundMap _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Productions_vIn37 _lhsIaroundMap _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap-        (T_Productions_vOut37 _lhsOdepgraph _lhsOlocalSigMap _lhsOrefHoNts _lhsOrefNts _lhsOrulenumber) <- return (inv_Productions_s38 sem arg)+        let arg37 = T_Productions_vIn37 _lhsIaroundMap _lhsIinhMap _lhsImanualDeps _lhsImergeMap _lhsIoptions _lhsIrulenumber _lhsIsynMap+        (T_Productions_vOut37 _lhsOdepgraph _lhsOlocalSigMap _lhsOrefHoNts _lhsOrefNts _lhsOrulenumber) <- return (inv_Productions_s38 sem arg37)         return (Syn_Productions _lhsOdepgraph _lhsOlocalSigMap _lhsOrefHoNts _lhsOrefNts _lhsOrulenumber)    ) @@ -1984,8 +1984,8 @@ wrap_Rule (T_Rule act) (Inh_Rule _lhsIrulenumber) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rule_vIn40 _lhsIrulenumber-        (T_Rule_vOut40 _lhsOedges _lhsOerules _lhsOrulenumber _lhsOvertices) <- return (inv_Rule_s41 sem arg)+        let arg40 = T_Rule_vIn40 _lhsIrulenumber+        (T_Rule_vOut40 _lhsOedges _lhsOerules _lhsOrulenumber _lhsOvertices) <- return (inv_Rule_s41 sem arg40)         return (Syn_Rule _lhsOedges _lhsOerules _lhsOrulenumber _lhsOvertices)    ) @@ -2016,11 +2016,11 @@          _rhsX8 = Control.Monad.Identity.runIdentity (attach_T_Expression (arg_rhs_))          (T_Pattern_vOut28 _patternIcopy _patternIvertices) = inv_Pattern_s29 _patternX29 (T_Pattern_vIn28 )          (T_Expression_vOut7 _rhsIcopy _rhsIvertices) = inv_Expression_s8 _rhsX8 (T_Expression_vIn7 )-         _lhsOrulenumber :: Int-         _lhsOrulenumber = rule208 _lhsIrulenumber-         _rulename = rule209 _lhsIrulenumber arg_mbName_          _lhsOerules :: ERule-         _lhsOerules = rule210 _patternIcopy _rhsIcopy _rulename arg_explicit_ arg_mbError_ arg_origin_ arg_owrt_ arg_pure_+         _lhsOerules = rule208 _patternIcopy _rhsIcopy _rulename arg_explicit_ arg_mbError_ arg_origin_ arg_owrt_ arg_pure_+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule209 _lhsIrulenumber+         _rulename = rule210 _lhsIrulenumber arg_mbName_          _vertex = rule211 _rulename          _lhsOvertices :: Set.Set Vertex          _lhsOvertices = rule212 _patternIvertices _rhsIvertices _vertex@@ -2032,21 +2032,9 @@          in __result_ )      in C_Rule_s41 v40    {-# INLINE rule208 #-}-   {-# LINE 47 "./src-ag/KWOrder.ag" #-}-   rule208 = \ ((_lhsIrulenumber) :: Int) ->-                             {-# LINE 47 "./src-ag/KWOrder.ag" #-}-                             _lhsIrulenumber + 1-                             {-# LINE 2040 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule209 #-}-   {-# LINE 48 "./src-ag/KWOrder.ag" #-}-   rule209 = \ ((_lhsIrulenumber) :: Int) mbName_ ->-                             {-# LINE 48 "./src-ag/KWOrder.ag" #-}-                             maybe (identifier $ "rule" ++ show _lhsIrulenumber) id mbName_-                             {-# LINE 2046 "dist/build/KWOrder.hs"#-}-   {-# INLINE rule210 #-}-   {-# LINE 160 "./src-ag/KWOrder.ag" #-}-   rule210 = \ ((_patternIcopy) :: Pattern) ((_rhsIcopy) :: Expression) _rulename explicit_ mbError_ origin_ owrt_ pure_ ->-                        {-# LINE 160 "./src-ag/KWOrder.ag" #-}+   {-# LINE 65 "src-ag/ExecutionPlanCommon.ag" #-}+   rule208 = \ ((_patternIcopy) :: Pattern) ((_rhsIcopy) :: Expression) _rulename explicit_ mbError_ origin_ owrt_ pure_ ->+                        {-# LINE 65 "src-ag/ExecutionPlanCommon.ag" #-}                         ERule _rulename                               _patternIcopy                               _rhsIcopy@@ -2055,35 +2043,47 @@                               explicit_                               pure_                               mbError_-                        {-# LINE 2059 "dist/build/KWOrder.hs"#-}+                        {-# LINE 2047 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule209 #-}+   {-# LINE 12 "src-ag/ExecutionPlanPre.ag" #-}+   rule209 = \ ((_lhsIrulenumber) :: Int) ->+                             {-# LINE 12 "src-ag/ExecutionPlanPre.ag" #-}+                             _lhsIrulenumber + 1+                             {-# LINE 2053 "dist/build/KWOrder.hs"#-}+   {-# INLINE rule210 #-}+   {-# LINE 13 "src-ag/ExecutionPlanPre.ag" #-}+   rule210 = \ ((_lhsIrulenumber) :: Int) mbName_ ->+                             {-# LINE 13 "src-ag/ExecutionPlanPre.ag" #-}+                             maybe (identifier $ "rule" ++ show _lhsIrulenumber) id mbName_+                             {-# LINE 2059 "dist/build/KWOrder.hs"#-}    {-# INLINE rule211 #-}-   {-# LINE 224 "./src-ag/KWOrder.ag" #-}+   {-# LINE 74 "src-ag/KWOrder.ag" #-}    rule211 = \ _rulename ->-                           {-# LINE 224 "./src-ag/KWOrder.ag" #-}+                           {-# LINE 74 "src-ag/KWOrder.ag" #-}                            VRule _rulename                            {-# LINE 2065 "dist/build/KWOrder.hs"#-}    {-# INLINE rule212 #-}-   {-# LINE 225 "./src-ag/KWOrder.ag" #-}+   {-# LINE 75 "src-ag/KWOrder.ag" #-}    rule212 = \ ((_patternIvertices) :: Set.Set Vertex) ((_rhsIvertices) :: Set.Set Vertex) _vertex ->-                           {-# LINE 225 "./src-ag/KWOrder.ag" #-}+                           {-# LINE 75 "src-ag/KWOrder.ag" #-}                            Set.insert _vertex     $ _patternIvertices `Set.union` _rhsIvertices                            {-# LINE 2071 "dist/build/KWOrder.hs"#-}    {-# INLINE rule213 #-}-   {-# LINE 237 "./src-ag/KWOrder.ag" #-}+   {-# LINE 87 "src-ag/KWOrder.ag" #-}    rule213 = \ ((_rhsIvertices) :: Set.Set Vertex) _vertex ->-                           {-# LINE 237 "./src-ag/KWOrder.ag" #-}+                           {-# LINE 87 "src-ag/KWOrder.ag" #-}                            map ((,) _vertex    ) (Set.toList _rhsIvertices)                            {-# LINE 2077 "dist/build/KWOrder.hs"#-}    {-# INLINE rule214 #-}-   {-# LINE 238 "./src-ag/KWOrder.ag" #-}+   {-# LINE 88 "src-ag/KWOrder.ag" #-}    rule214 = \ ((_patternIvertices) :: Set.Set Vertex) _vertex ->-                           {-# LINE 238 "./src-ag/KWOrder.ag" #-}+                           {-# LINE 88 "src-ag/KWOrder.ag" #-}                            map (flip (,) _vertex    ) (Set.toList _patternIvertices)                            {-# LINE 2083 "dist/build/KWOrder.hs"#-}    {-# INLINE rule215 #-}-   {-# LINE 239 "./src-ag/KWOrder.ag" #-}+   {-# LINE 89 "src-ag/KWOrder.ag" #-}    rule215 = \ _edgesin _edgesout ->-                           {-# LINE 239 "./src-ag/KWOrder.ag" #-}+                           {-# LINE 89 "src-ag/KWOrder.ag" #-}                            Set.fromList $ _edgesout     ++ _edgesin                            {-# LINE 2089 "dist/build/KWOrder.hs"#-} @@ -2096,8 +2096,8 @@ wrap_Rules (T_Rules act) (Inh_Rules _lhsIrulenumber) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rules_vIn43 _lhsIrulenumber-        (T_Rules_vOut43 _lhsOedges _lhsOerules _lhsOrulenumber _lhsOvertices) <- return (inv_Rules_s44 sem arg)+        let arg43 = T_Rules_vIn43 _lhsIrulenumber+        (T_Rules_vOut43 _lhsOedges _lhsOerules _lhsOrulenumber _lhsOvertices) <- return (inv_Rules_s44 sem arg43)         return (Syn_Rules _lhsOedges _lhsOerules _lhsOrulenumber _lhsOvertices)    ) @@ -2199,8 +2199,8 @@ wrap_TypeSig (T_TypeSig act) (Inh_TypeSig ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSig_vIn46 -        (T_TypeSig_vOut46 _lhsOlocalSigMap) <- return (inv_TypeSig_s47 sem arg)+        let arg46 = T_TypeSig_vIn46 +        (T_TypeSig_vOut46 _lhsOlocalSigMap) <- return (inv_TypeSig_s47 sem arg46)         return (Syn_TypeSig _lhsOlocalSigMap)    ) @@ -2233,9 +2233,9 @@          in __result_ )      in C_TypeSig_s47 v46    {-# INLINE rule226 #-}-   {-# LINE 389 "./src-ag/KWOrder.ag" #-}+   {-# LINE 161 "src-ag/ExecutionPlanCommon.ag" #-}    rule226 = \ name_ tp_ ->-                                                   {-# LINE 389 "./src-ag/KWOrder.ag" #-}+                                                   {-# LINE 161 "src-ag/ExecutionPlanCommon.ag" #-}                                                    Map.singleton name_ tp_                                                    {-# LINE 2241 "dist/build/KWOrder.hs"#-} @@ -2248,8 +2248,8 @@ wrap_TypeSigs (T_TypeSigs act) (Inh_TypeSigs ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSigs_vIn49 -        (T_TypeSigs_vOut49 _lhsOlocalSigMap) <- return (inv_TypeSigs_s50 sem arg)+        let arg49 = T_TypeSigs_vIn49 +        (T_TypeSigs_vOut49 _lhsOlocalSigMap) <- return (inv_TypeSigs_s50 sem arg49)         return (Syn_TypeSigs _lhsOlocalSigMap)    ) 
+ src-generated/LOAG/Order.hs view
@@ -0,0 +1,6238 @@+{-# LANGUAGE Rank2Types, GADTs #-}+{-# LANGUAGE ScopedTypeVariables #-}++module LOAG.Order where++{-# LINE 10 "src-ag/LOAG/Rep.ag" #-}++import Data.List (intercalate, foldl', nub)+import Data.Tuple (swap)+import Control.Arrow+{-# LINE 12 "dist/build/LOAG/Order.hs" #-}++{-# LINE 2 "src-ag/HsToken.ag" #-}++import CommonTypes+import UU.Scanner.Position(Pos)+{-# LINE 18 "dist/build/LOAG/Order.hs" #-}++{-# LINE 2 "src-ag/Expression.ag" #-}++import UU.Scanner.Position(Pos)+import HsToken+{-# LINE 24 "dist/build/LOAG/Order.hs" #-}++{-# LINE 2 "src-ag/CodeSyntax.ag" #-}++import Patterns+import CommonTypes+import Data.Map(Map)+import Data.Set(Set)+{-# LINE 32 "dist/build/LOAG/Order.hs" #-}++{-# LINE 2 "src-ag/Patterns.ag" #-}++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)+{-# LINE 39 "dist/build/LOAG/Order.hs" #-}++{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}++-- AbstractSyntax.ag imports+import Data.Set(Set)+import Data.Map(Map)+import Patterns    (Pattern(..),Patterns)+import Expression  (Expression(..))+import Macro --marcos+import CommonTypes+import ErrorMessages+{-# LINE 51 "dist/build/LOAG/Order.hs" #-}++{-# LINE 13 "src-ag/LOAG/Order.ag" #-}++import qualified Data.Array as A+import qualified Data.Map as Map+import qualified Data.IntMap as IMap+import qualified Data.Set as Set+import qualified Data.IntSet as IS+import qualified Data.Sequence as Seq+import qualified CommonTypes as CT+import Control.Monad (forM,when)+import Control.Monad.ST+import Data.Maybe(catMaybes)+import Data.Monoid(mappend,mempty)+import Data.STRef+import AbstractSyntax+import qualified LOAG.AOAG as   AOAG+import LOAG.Common+import LOAG.Chordal+import LOAG.Rep+import LOAG.Graphs+import CodeSyntax+import Data.Maybe (isJust, fromJust)+import ExecutionPlan+import GrammarInfo+import HsToken (HsToken(..))+import Pretty+import qualified System.IO as IO+import           System.IO.Unsafe+{-# LINE 81 "dist/build/LOAG/Order.hs" #-}+import Control.Monad.Identity (Identity)+import qualified Control.Monad.Identity+{-# LINE 13 "src-ag/LOAG/Prepare.ag" #-}++-- | Translating UUAGC types to MyTypes+drhs f | f == _LHS               = Inh+       | f == _LOC               = AnyDir+       | f == _INST              = AnyDir+       | otherwise               = Syn+dlhs f | f == _LHS               = Syn+       | f == _LOC               = AnyDir+       | f == _INST              = AnyDir+       | otherwise               = Inh ++depToEdge :: PMP_R -> PLabel -> Dependency -> Edge+depToEdge pmpr p e = +    (findWithErr pmpr "depToEdge" $ MyOccurrence (p,getName f1) (getName i1, drhs f1),+     findWithErr pmpr "depToEdge" $ MyOccurrence (p,getName f2) (getName i2, dlhs f2))+    where Dependency (OccAttr f1 i1) (OccAttr f2 i2) = e++vertexToAttr :: NMP -> Vertex -> Attributes+vertexToAttr nmp v = Map.singleton (identifier a) (fromMyTy ty)+    where (MyAttribute ty (a,_)) = findWithErr nmp "vertexToAttr" v++{-# LINE 106 "dist/build/LOAG/Order.hs" #-}++{-# LINE 292 "src-ag/LOAG/Prepare.ag" #-}++-- | Replace the references to local attributes, by his attrs dependencies+repLocRefs :: SF_P -> SF_P -> SF_P+repLocRefs lfp sfp =+    Map.map (setConcatMap rep) sfp+    where rep :: MyOccurrence -> Set.Set MyOccurrence +          rep occ | isLoc occ   = setConcatMap rep $ +                                    findWithErr lfp "repping locals" occ+                  | otherwise   = Set.singleton occ+{-# LINE 118 "dist/build/LOAG/Order.hs" #-}++{-# LINE 42 "src-ag/LOAG/Order.ag" #-}++fst' (a,_,_) = a+snd' (_,b,_) = b+trd' (_,_,c) = c+{-# LINE 125 "dist/build/LOAG/Order.hs" #-}++{-# LINE 95 "src-ag/LOAG/Order.ag" #-}++data AltAttr = AltAttr Identifier Identifier Bool+               deriving (Eq, Ord, Show)++edgeToDep :: PMP -> Edge -> Dependency+edgeToDep pmp (f,t) = +    Dependency (OccAttr (identifier f1) (identifier i1)) +               (OccAttr (identifier f2) (identifier i2))+    where (MyOccurrence (_,f1) (i1,_),MyOccurrence (_,f2) (i2,_))+            = (findWithErr pmp "edgeToDep" f, +               findWithErr pmp "edgeToDep" t) ++ppAds :: Options -> PMP -> [Edge] -> PP_Doc+ppAds opts pmp = foldr ((>-<) . ppEdge opts pmp) empty++ppEdge :: Options -> PMP -> Edge -> PP_Doc+ppEdge opts pmp (f,t) = +    text sem    >#< text (show ty) >|< " | " >|< text p >|< "   "+                >|< ppOcc pmp f >|< text " < " >|< ppOcc pmp t+ where (MyOccurrence ((ty,p),_) _) = pmp Map.! f+       sem | lcKeywords opts = "sem"+           | otherwise       = "SEM"+   +ppOcc :: PMP -> Vertex -> PP_Doc+ppOcc pmp v = text f >|< text "." >|< fst a+ where (MyOccurrence ((t,p),f) a) = findWithErr pmp "ppOcc" v++{-# LINE 155 "dist/build/LOAG/Order.hs" #-}++{-# LINE 239 "src-ag/LOAG/Order.ag" #-}++getVss (done,intros,rules,vnrs) ps tdp synsO lfp nmpr pmp pmpr fty visMap ruleMap hoMap = do+    ref   <- newSTRef done+    introed   <- newSTRef intros+    ruleref   <- newSTRef rules +    vnrsref   <- newSTRef vnrs+    lists <- forM synsO (visit ref introed ruleref vnrsref . (pmp Map.!))+    done  <- readSTRef ref+    intros  <- readSTRef introed+    rules  <- readSTRef ruleref+    vnrs  <- readSTRef vnrsref +    return (concat lists, (done, intros, rules, vnrs))+ where +    hochildren = maybe Set.empty id $ Map.lookup ps hoMap+    visit ref introed ruleref vnrsref o@(MyOccurrence (_,f) (_,d)) = do+        visited <- readSTRef ref+        if (o `Set.member` visited) +         then return [] -- already visited+         else do        -- prevent doubles+          modifySTRef ref (Set.insert o)+          if inOutput+           then do -- has to be calculated in this sequence+                rest' <- rest+                locs' <- locs+                sem'  <- sem o+                return $ (rest' ++ locs' ++ sem')+           else if "lhs" == (snd $ argsOf o)+                 then return [] -- inherited of parent, nothing todo+                 else do   -- other input occurrence, perform visit+                    locs' <- locs+                    rest' <- rest+                    visit'<- toVisit o+                    return (rest' ++ locs' ++ visit')+     where preds  = maybe [] (IS.toList . (tdp A.!)) $ Map.lookup o pmpr+           rest   = forM preds (visit ref introed ruleref vnrsref. (pmp Map.!)) +                        >>= (return . concat)+           free   = maybe [] (Set.toList) $ Map.lookup o lfp+           locs   = forM free (visit ref introed ruleref vnrsref)+                        >>= (return . concat)+           sem o  = do  rules <- readSTRef ruleref +                        if r `Set.member` rules+                          then return []+                          else do   writeSTRef ruleref (r `Set.insert` rules) +                                    return [Sem r]+            where r = maybe (error "ruleMap") id $ Map.lookup o ruleMap+           inOutput = f == "lhs" && d == Syn || f /= "lhs" && d == Inh+           toVisit o = do+             vnrs <- readSTRef vnrsref +             if (child,visnr) `Set.member` vnrs+              then return []+              else writeSTRef vnrsref ((child,visnr) `Set.insert` vnrs) >>+                   if child `Set.member` hochildren +                   then do intros <- readSTRef introed+                           case child `Set.member` intros of+                            True    -> return [cvisit]+                            False   -> do+                                writeSTRef introed (Set.insert child intros)+                                let occ = (ps,"inst") >.< (child, AnyDir)+                                    preds = Set.toList $ setConcatMap rep $ +                                                        findWithErr lfp "woot4" occ+                                    rep :: MyOccurrence -> Set.Set MyOccurrence +                                    rep occ | isLoc occ   = Set.insert occ $ +                                                setConcatMap rep $ findWithErr lfp "woot3" occ+                                            | otherwise   = Set.singleton occ+                                rest <- forM preds +                                            (visit ref introed ruleref vnrsref)+                                sem' <- sem occ+                                return $ (concat rest) +++                                         sem' +++                                         [ChildIntro (identifier child)] +++                                         [cvisit]+                   else return [cvisit]+             where  cvisit= ChildVisit (identifier child) ntid visnr+                    child = snd $ argsOf o+                    ntid  = ((\(NT name _ _ )-> name) . fromMyTy) nt +                    visnr = (\x-> findWithErr' visMap (show (inOutput,o,x)) x) (findWithErr nmpr "woot3" (nt <.> attr o))+                    nt    = findWithErr fty "woot" (ps,child)+{-# LINE 235 "dist/build/LOAG/Order.hs" #-}++{-# LINE 356 "src-ag/LOAG/Order.ag" #-}++repToAg :: LOAGRep -> Grammar -> Ag+repToAg sem (Grammar _ _ _ _ dats _ _ _ _ _ _ _ _ _) = +    Ag bounds_s bounds_p de (map toNt dats)+ where+    pmp  = (pmp_LOAGRep_LOAGRep  sem)+    pmpr = (pmpr_LOAGRep_LOAGRep sem)+    nmp  = (nmp_LOAGRep_LOAGRep  sem)+    nmpr = (nmpr_LOAGRep_LOAGRep sem)+    genA = gen_LOAGRep_LOAGRep sem+    fieldM  = fieldMap_LOAGRep_LOAGRep sem+    genEdge (f,t) = (gen f, gen t)+    fsInP  = map2F (fsInP_LOAGRep_LOAGRep sem)+    siblings (f, t) = ofld A.! f == ofld A.! t+    ofld = (ofld_LOAGRep_LOAGRep sem)+    sfp  = map2F' (sfp_LOAGRep_LOAGRep sem)+    afp  = filter inOutput . ap+    ap   = map (findWithErr pmpr "building ap") . map2F (ap_LOAGRep_LOAGRep  sem)+    inss = inss_LOAGRep_LOAGRep sem +    gen v = genA A.! v+    ain  = map (findWithErr nmpr "building an") . map2F (ain_LOAGRep_LOAGRep sem)+    asn  = map (findWithErr nmpr "building an") . map2F (asn_LOAGRep_LOAGRep sem)+    inOutput = not . inContext +    inContext f = (f1 == "lhs" && d1 == Inh || f1 /= "lhs" && d1 == Syn) +        where (MyOccurrence (_,f1) (_,d1)) = pmp Map.! f+    de    = [ e      | p <- ps,   e <- dpe p ]+    dpe p = [ (findWithErr pmpr "building dpe" a, b) +            | b <- ap p, a <- Set.toList $ sfp (findWithErr pmp "fetching sfp" b) ]+    ps   = ps_LOAGRep_LOAGRep   sem+    bounds_p = if Map.null pmp then (0,-1) +                else (fst $ Map.findMin pmp, fst $ Map.findMax pmp)+    bounds_s = if Map.null nmp then (0,-1) +                else (fst $ Map.findMin nmp, fst $ Map.findMax nmp)+ +++    toNt :: Nonterminal -> Nt+    toNt (Nonterminal ntid _ _ _ prods) = Nt nt dpf dpt +            (addD Inh $ ain ty) (addD Syn $ asn ty) (map (toPr ty) prods)+     where nt  = getName ntid+           ty  = TyData nt+           dpt =  [ (as, ai) | ai <- ain ty+                   , as <- nub$ [ gen s |+                                  i <- inss A.! ai+                                , s <- map (pmpr Map.!) $ +                                    Set.toList (sfp $ pmp Map.! i)+                                , siblings (s,i)]]+           dpf =  [ (ai, as) | as <- asn ty+                   , ai <- nub$ [ gen i |+                                  s <- inss A.! as+                                , i <- map (pmpr Map.!) $+                                    Set.toList (sfp $ pmp Map.! s)+                                , siblings (i,s)]]+           addD d = map (\i -> (i,inss A.! i,d))+    toPr :: MyType -> Production -> Pr+    toPr ty (Production con _ _ _ _ _ _) = +                Pr p dpp fc_occs (map toFd $ fsInP p)+     where p = (ty, getName con)+           dpp = [ (f',t)+                    | t <- afp p, f <- (Set.toList $ sfp (pmp Map.! t))+                    , let f' = pmpr Map.! f+                    , not (siblings (f',t))]+           fc_occs = foldl' match [] fss+            where fss = fsInP p+           match s fs = [ ready (inp, out) lhs | inp <- Set.toList inhs+                                           , out <- Set.toList syns] ++ s+            where ((inhs, syns), lhs)+                               | (snd fs) /= "lhs" = +                                    (swap (fieldM Map.! fs),False)+                               | otherwise = (fieldM Map.! fs, True)+                  ready e@(f,t) b = (e', genEdge e', b)+                   where e' = (pmpr Map.! f, pmpr Map.! t)+    toFd :: (PLabel, FLabel) -> Fd+    toFd fs@((TyData ty, pr), fd) = Fd fd ty inhs syns+     where (is,ss) = fieldM Map.! fs+           inhs = map (((genA A.!) &&& id).(pmpr Map.!))$ Set.toList is+           syns = map (((genA A.!) &&& id).(pmpr Map.!))$ Set.toList ss+++{-# LINE 317 "dist/build/LOAG/Order.hs" #-}+-- CGrammar ----------------------------------------------------+-- wrapper+data Inh_CGrammar  = Inh_CGrammar {  }+data Syn_CGrammar  = Syn_CGrammar { self_Syn_CGrammar :: (CGrammar) }+{-# INLINABLE wrap_CGrammar #-}+wrap_CGrammar :: T_CGrammar  -> Inh_CGrammar  -> (Syn_CGrammar )+wrap_CGrammar (T_CGrammar act) (Inh_CGrammar ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg1 = T_CGrammar_vIn1 +        (T_CGrammar_vOut1 _lhsOself) <- return (inv_CGrammar_s2 sem arg1)+        return (Syn_CGrammar _lhsOself)+   )++-- cata+{-# INLINE sem_CGrammar #-}+sem_CGrammar :: CGrammar  -> T_CGrammar +sem_CGrammar ( CGrammar typeSyns_ derivings_ wrappers_ nonts_ pragmas_ paramMap_ contextMap_ quantMap_ aroundsMap_ mergeMap_ multivisit_ ) = sem_CGrammar_CGrammar typeSyns_ derivings_ wrappers_ ( sem_CNonterminals nonts_ ) pragmas_ paramMap_ contextMap_ quantMap_ aroundsMap_ mergeMap_ multivisit_++-- semantic domain+newtype T_CGrammar  = T_CGrammar {+                                 attach_T_CGrammar :: Identity (T_CGrammar_s2 )+                                 }+newtype T_CGrammar_s2  = C_CGrammar_s2 {+                                       inv_CGrammar_s2 :: (T_CGrammar_v1 )+                                       }+data T_CGrammar_s3  = C_CGrammar_s3+type T_CGrammar_v1  = (T_CGrammar_vIn1 ) -> (T_CGrammar_vOut1 )+data T_CGrammar_vIn1  = T_CGrammar_vIn1 +data T_CGrammar_vOut1  = T_CGrammar_vOut1 (CGrammar)+{-# NOINLINE sem_CGrammar_CGrammar #-}+sem_CGrammar_CGrammar :: (TypeSyns) -> (Derivings) -> (Set NontermIdent) -> T_CNonterminals  -> (PragmaMap) -> (ParamMap) -> (ContextMap) -> (QuantMap) -> (Map NontermIdent (Map ConstructorIdent (Set Identifier))) -> (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier])))) -> (Bool) -> T_CGrammar +sem_CGrammar_CGrammar arg_typeSyns_ arg_derivings_ arg_wrappers_ arg_nonts_ arg_pragmas_ arg_paramMap_ arg_contextMap_ arg_quantMap_ arg_aroundsMap_ arg_mergeMap_ arg_multivisit_ = T_CGrammar (return st2) where+   {-# NOINLINE st2 #-}+   st2 = let+      v1 :: T_CGrammar_v1 +      v1 = \ (T_CGrammar_vIn1 ) -> ( let+         _nontsX11 = Control.Monad.Identity.runIdentity (attach_T_CNonterminals (arg_nonts_))+         (T_CNonterminals_vOut10 _nontsIself) = inv_CNonterminals_s11 _nontsX11 (T_CNonterminals_vIn10 )+         _self = rule0 _nontsIself arg_aroundsMap_ arg_contextMap_ arg_derivings_ arg_mergeMap_ arg_multivisit_ arg_paramMap_ arg_pragmas_ arg_quantMap_ arg_typeSyns_ arg_wrappers_+         _lhsOself :: CGrammar+         _lhsOself = rule1 _self+         __result_ = T_CGrammar_vOut1 _lhsOself+         in __result_ )+     in C_CGrammar_s2 v1+   {-# INLINE rule0 #-}+   rule0 = \ ((_nontsIself) :: CNonterminals) aroundsMap_ contextMap_ derivings_ mergeMap_ multivisit_ paramMap_ pragmas_ quantMap_ typeSyns_ wrappers_ ->+     CGrammar typeSyns_ derivings_ wrappers_ _nontsIself pragmas_ paramMap_ contextMap_ quantMap_ aroundsMap_ mergeMap_ multivisit_+   {-# INLINE rule1 #-}+   rule1 = \ _self ->+     _self++-- CInterface --------------------------------------------------+-- wrapper+data Inh_CInterface  = Inh_CInterface {  }+data Syn_CInterface  = Syn_CInterface { self_Syn_CInterface :: (CInterface) }+{-# INLINABLE wrap_CInterface #-}+wrap_CInterface :: T_CInterface  -> Inh_CInterface  -> (Syn_CInterface )+wrap_CInterface (T_CInterface act) (Inh_CInterface ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg4 = T_CInterface_vIn4 +        (T_CInterface_vOut4 _lhsOself) <- return (inv_CInterface_s5 sem arg4)+        return (Syn_CInterface _lhsOself)+   )++-- cata+{-# INLINE sem_CInterface #-}+sem_CInterface :: CInterface  -> T_CInterface +sem_CInterface ( CInterface seg_ ) = sem_CInterface_CInterface ( sem_CSegments seg_ )++-- semantic domain+newtype T_CInterface  = T_CInterface {+                                     attach_T_CInterface :: Identity (T_CInterface_s5 )+                                     }+newtype T_CInterface_s5  = C_CInterface_s5 {+                                           inv_CInterface_s5 :: (T_CInterface_v4 )+                                           }+data T_CInterface_s6  = C_CInterface_s6+type T_CInterface_v4  = (T_CInterface_vIn4 ) -> (T_CInterface_vOut4 )+data T_CInterface_vIn4  = T_CInterface_vIn4 +data T_CInterface_vOut4  = T_CInterface_vOut4 (CInterface)+{-# NOINLINE sem_CInterface_CInterface #-}+sem_CInterface_CInterface :: T_CSegments  -> T_CInterface +sem_CInterface_CInterface arg_seg_ = T_CInterface (return st5) where+   {-# NOINLINE st5 #-}+   st5 = let+      v4 :: T_CInterface_v4 +      v4 = \ (T_CInterface_vIn4 ) -> ( let+         _segX26 = Control.Monad.Identity.runIdentity (attach_T_CSegments (arg_seg_))+         (T_CSegments_vOut25 _segIself) = inv_CSegments_s26 _segX26 (T_CSegments_vIn25 )+         _self = rule2 _segIself+         _lhsOself :: CInterface+         _lhsOself = rule3 _self+         __result_ = T_CInterface_vOut4 _lhsOself+         in __result_ )+     in C_CInterface_s5 v4+   {-# INLINE rule2 #-}+   rule2 = \ ((_segIself) :: CSegments) ->+     CInterface _segIself+   {-# INLINE rule3 #-}+   rule3 = \ _self ->+     _self++-- CNonterminal ------------------------------------------------+-- wrapper+data Inh_CNonterminal  = Inh_CNonterminal {  }+data Syn_CNonterminal  = Syn_CNonterminal { self_Syn_CNonterminal :: (CNonterminal) }+{-# INLINABLE wrap_CNonterminal #-}+wrap_CNonterminal :: T_CNonterminal  -> Inh_CNonterminal  -> (Syn_CNonterminal )+wrap_CNonterminal (T_CNonterminal act) (Inh_CNonterminal ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg7 = T_CNonterminal_vIn7 +        (T_CNonterminal_vOut7 _lhsOself) <- return (inv_CNonterminal_s8 sem arg7)+        return (Syn_CNonterminal _lhsOself)+   )++-- cata+{-# INLINE sem_CNonterminal #-}+sem_CNonterminal :: CNonterminal  -> T_CNonterminal +sem_CNonterminal ( CNonterminal nt_ params_ inh_ syn_ prods_ inter_ ) = sem_CNonterminal_CNonterminal nt_ params_ inh_ syn_ ( sem_CProductions prods_ ) ( sem_CInterface inter_ )++-- semantic domain+newtype T_CNonterminal  = T_CNonterminal {+                                         attach_T_CNonterminal :: Identity (T_CNonterminal_s8 )+                                         }+newtype T_CNonterminal_s8  = C_CNonterminal_s8 {+                                               inv_CNonterminal_s8 :: (T_CNonterminal_v7 )+                                               }+data T_CNonterminal_s9  = C_CNonterminal_s9+type T_CNonterminal_v7  = (T_CNonterminal_vIn7 ) -> (T_CNonterminal_vOut7 )+data T_CNonterminal_vIn7  = T_CNonterminal_vIn7 +data T_CNonterminal_vOut7  = T_CNonterminal_vOut7 (CNonterminal)+{-# NOINLINE sem_CNonterminal_CNonterminal #-}+sem_CNonterminal_CNonterminal :: (NontermIdent) -> ([Identifier]) -> (Attributes) -> (Attributes) -> T_CProductions  -> T_CInterface  -> T_CNonterminal +sem_CNonterminal_CNonterminal arg_nt_ arg_params_ arg_inh_ arg_syn_ arg_prods_ arg_inter_ = T_CNonterminal (return st8) where+   {-# NOINLINE st8 #-}+   st8 = let+      v7 :: T_CNonterminal_v7 +      v7 = \ (T_CNonterminal_vIn7 ) -> ( let+         _prodsX17 = Control.Monad.Identity.runIdentity (attach_T_CProductions (arg_prods_))+         _interX5 = Control.Monad.Identity.runIdentity (attach_T_CInterface (arg_inter_))+         (T_CProductions_vOut16 _prodsIself) = inv_CProductions_s17 _prodsX17 (T_CProductions_vIn16 )+         (T_CInterface_vOut4 _interIself) = inv_CInterface_s5 _interX5 (T_CInterface_vIn4 )+         _self = rule4 _interIself _prodsIself arg_inh_ arg_nt_ arg_params_ arg_syn_+         _lhsOself :: CNonterminal+         _lhsOself = rule5 _self+         __result_ = T_CNonterminal_vOut7 _lhsOself+         in __result_ )+     in C_CNonterminal_s8 v7+   {-# INLINE rule4 #-}+   rule4 = \ ((_interIself) :: CInterface) ((_prodsIself) :: CProductions) inh_ nt_ params_ syn_ ->+     CNonterminal nt_ params_ inh_ syn_ _prodsIself _interIself+   {-# INLINE rule5 #-}+   rule5 = \ _self ->+     _self++-- CNonterminals -----------------------------------------------+-- wrapper+data Inh_CNonterminals  = Inh_CNonterminals {  }+data Syn_CNonterminals  = Syn_CNonterminals { self_Syn_CNonterminals :: (CNonterminals) }+{-# INLINABLE wrap_CNonterminals #-}+wrap_CNonterminals :: T_CNonterminals  -> Inh_CNonterminals  -> (Syn_CNonterminals )+wrap_CNonterminals (T_CNonterminals act) (Inh_CNonterminals ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg10 = T_CNonterminals_vIn10 +        (T_CNonterminals_vOut10 _lhsOself) <- return (inv_CNonterminals_s11 sem arg10)+        return (Syn_CNonterminals _lhsOself)+   )++-- cata+{-# NOINLINE sem_CNonterminals #-}+sem_CNonterminals :: CNonterminals  -> T_CNonterminals +sem_CNonterminals list = Prelude.foldr sem_CNonterminals_Cons sem_CNonterminals_Nil (Prelude.map sem_CNonterminal list)++-- semantic domain+newtype T_CNonterminals  = T_CNonterminals {+                                           attach_T_CNonterminals :: Identity (T_CNonterminals_s11 )+                                           }+newtype T_CNonterminals_s11  = C_CNonterminals_s11 {+                                                   inv_CNonterminals_s11 :: (T_CNonterminals_v10 )+                                                   }+data T_CNonterminals_s12  = C_CNonterminals_s12+type T_CNonterminals_v10  = (T_CNonterminals_vIn10 ) -> (T_CNonterminals_vOut10 )+data T_CNonterminals_vIn10  = T_CNonterminals_vIn10 +data T_CNonterminals_vOut10  = T_CNonterminals_vOut10 (CNonterminals)+{-# NOINLINE sem_CNonterminals_Cons #-}+sem_CNonterminals_Cons :: T_CNonterminal  -> T_CNonterminals  -> T_CNonterminals +sem_CNonterminals_Cons arg_hd_ arg_tl_ = T_CNonterminals (return st11) where+   {-# NOINLINE st11 #-}+   st11 = let+      v10 :: T_CNonterminals_v10 +      v10 = \ (T_CNonterminals_vIn10 ) -> ( let+         _hdX8 = Control.Monad.Identity.runIdentity (attach_T_CNonterminal (arg_hd_))+         _tlX11 = Control.Monad.Identity.runIdentity (attach_T_CNonterminals (arg_tl_))+         (T_CNonterminal_vOut7 _hdIself) = inv_CNonterminal_s8 _hdX8 (T_CNonterminal_vIn7 )+         (T_CNonterminals_vOut10 _tlIself) = inv_CNonterminals_s11 _tlX11 (T_CNonterminals_vIn10 )+         _self = rule6 _hdIself _tlIself+         _lhsOself :: CNonterminals+         _lhsOself = rule7 _self+         __result_ = T_CNonterminals_vOut10 _lhsOself+         in __result_ )+     in C_CNonterminals_s11 v10+   {-# INLINE rule6 #-}+   rule6 = \ ((_hdIself) :: CNonterminal) ((_tlIself) :: CNonterminals) ->+     (:) _hdIself _tlIself+   {-# INLINE rule7 #-}+   rule7 = \ _self ->+     _self+{-# NOINLINE sem_CNonterminals_Nil #-}+sem_CNonterminals_Nil ::  T_CNonterminals +sem_CNonterminals_Nil  = T_CNonterminals (return st11) where+   {-# NOINLINE st11 #-}+   st11 = let+      v10 :: T_CNonterminals_v10 +      v10 = \ (T_CNonterminals_vIn10 ) -> ( let+         _self = rule8  ()+         _lhsOself :: CNonterminals+         _lhsOself = rule9 _self+         __result_ = T_CNonterminals_vOut10 _lhsOself+         in __result_ )+     in C_CNonterminals_s11 v10+   {-# INLINE rule8 #-}+   rule8 = \  (_ :: ()) ->+     []+   {-# INLINE rule9 #-}+   rule9 = \ _self ->+     _self++-- CProduction -------------------------------------------------+-- wrapper+data Inh_CProduction  = Inh_CProduction {  }+data Syn_CProduction  = Syn_CProduction { self_Syn_CProduction :: (CProduction) }+{-# INLINABLE wrap_CProduction #-}+wrap_CProduction :: T_CProduction  -> Inh_CProduction  -> (Syn_CProduction )+wrap_CProduction (T_CProduction act) (Inh_CProduction ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg13 = T_CProduction_vIn13 +        (T_CProduction_vOut13 _lhsOself) <- return (inv_CProduction_s14 sem arg13)+        return (Syn_CProduction _lhsOself)+   )++-- cata+{-# INLINE sem_CProduction #-}+sem_CProduction :: CProduction  -> T_CProduction +sem_CProduction ( CProduction con_ visits_ children_ terminals_ ) = sem_CProduction_CProduction con_ ( sem_CVisits visits_ ) children_ terminals_++-- semantic domain+newtype T_CProduction  = T_CProduction {+                                       attach_T_CProduction :: Identity (T_CProduction_s14 )+                                       }+newtype T_CProduction_s14  = C_CProduction_s14 {+                                               inv_CProduction_s14 :: (T_CProduction_v13 )+                                               }+data T_CProduction_s15  = C_CProduction_s15+type T_CProduction_v13  = (T_CProduction_vIn13 ) -> (T_CProduction_vOut13 )+data T_CProduction_vIn13  = T_CProduction_vIn13 +data T_CProduction_vOut13  = T_CProduction_vOut13 (CProduction)+{-# NOINLINE sem_CProduction_CProduction #-}+sem_CProduction_CProduction :: (ConstructorIdent) -> T_CVisits  -> ([(Identifier,Type,ChildKind)]) -> ([Identifier]) -> T_CProduction +sem_CProduction_CProduction arg_con_ arg_visits_ arg_children_ arg_terminals_ = T_CProduction (return st14) where+   {-# NOINLINE st14 #-}+   st14 = let+      v13 :: T_CProduction_v13 +      v13 = \ (T_CProduction_vIn13 ) -> ( let+         _visitsX32 = Control.Monad.Identity.runIdentity (attach_T_CVisits (arg_visits_))+         (T_CVisits_vOut31 _visitsIself) = inv_CVisits_s32 _visitsX32 (T_CVisits_vIn31 )+         _self = rule10 _visitsIself arg_children_ arg_con_ arg_terminals_+         _lhsOself :: CProduction+         _lhsOself = rule11 _self+         __result_ = T_CProduction_vOut13 _lhsOself+         in __result_ )+     in C_CProduction_s14 v13+   {-# INLINE rule10 #-}+   rule10 = \ ((_visitsIself) :: CVisits) children_ con_ terminals_ ->+     CProduction con_ _visitsIself children_ terminals_+   {-# INLINE rule11 #-}+   rule11 = \ _self ->+     _self++-- CProductions ------------------------------------------------+-- wrapper+data Inh_CProductions  = Inh_CProductions {  }+data Syn_CProductions  = Syn_CProductions { self_Syn_CProductions :: (CProductions) }+{-# INLINABLE wrap_CProductions #-}+wrap_CProductions :: T_CProductions  -> Inh_CProductions  -> (Syn_CProductions )+wrap_CProductions (T_CProductions act) (Inh_CProductions ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg16 = T_CProductions_vIn16 +        (T_CProductions_vOut16 _lhsOself) <- return (inv_CProductions_s17 sem arg16)+        return (Syn_CProductions _lhsOself)+   )++-- cata+{-# NOINLINE sem_CProductions #-}+sem_CProductions :: CProductions  -> T_CProductions +sem_CProductions list = Prelude.foldr sem_CProductions_Cons sem_CProductions_Nil (Prelude.map sem_CProduction list)++-- semantic domain+newtype T_CProductions  = T_CProductions {+                                         attach_T_CProductions :: Identity (T_CProductions_s17 )+                                         }+newtype T_CProductions_s17  = C_CProductions_s17 {+                                                 inv_CProductions_s17 :: (T_CProductions_v16 )+                                                 }+data T_CProductions_s18  = C_CProductions_s18+type T_CProductions_v16  = (T_CProductions_vIn16 ) -> (T_CProductions_vOut16 )+data T_CProductions_vIn16  = T_CProductions_vIn16 +data T_CProductions_vOut16  = T_CProductions_vOut16 (CProductions)+{-# NOINLINE sem_CProductions_Cons #-}+sem_CProductions_Cons :: T_CProduction  -> T_CProductions  -> T_CProductions +sem_CProductions_Cons arg_hd_ arg_tl_ = T_CProductions (return st17) where+   {-# NOINLINE st17 #-}+   st17 = let+      v16 :: T_CProductions_v16 +      v16 = \ (T_CProductions_vIn16 ) -> ( let+         _hdX14 = Control.Monad.Identity.runIdentity (attach_T_CProduction (arg_hd_))+         _tlX17 = Control.Monad.Identity.runIdentity (attach_T_CProductions (arg_tl_))+         (T_CProduction_vOut13 _hdIself) = inv_CProduction_s14 _hdX14 (T_CProduction_vIn13 )+         (T_CProductions_vOut16 _tlIself) = inv_CProductions_s17 _tlX17 (T_CProductions_vIn16 )+         _self = rule12 _hdIself _tlIself+         _lhsOself :: CProductions+         _lhsOself = rule13 _self+         __result_ = T_CProductions_vOut16 _lhsOself+         in __result_ )+     in C_CProductions_s17 v16+   {-# INLINE rule12 #-}+   rule12 = \ ((_hdIself) :: CProduction) ((_tlIself) :: CProductions) ->+     (:) _hdIself _tlIself+   {-# INLINE rule13 #-}+   rule13 = \ _self ->+     _self+{-# NOINLINE sem_CProductions_Nil #-}+sem_CProductions_Nil ::  T_CProductions +sem_CProductions_Nil  = T_CProductions (return st17) where+   {-# NOINLINE st17 #-}+   st17 = let+      v16 :: T_CProductions_v16 +      v16 = \ (T_CProductions_vIn16 ) -> ( let+         _self = rule14  ()+         _lhsOself :: CProductions+         _lhsOself = rule15 _self+         __result_ = T_CProductions_vOut16 _lhsOself+         in __result_ )+     in C_CProductions_s17 v16+   {-# INLINE rule14 #-}+   rule14 = \  (_ :: ()) ->+     []+   {-# INLINE rule15 #-}+   rule15 = \ _self ->+     _self++-- CRule -------------------------------------------------------+-- wrapper+data Inh_CRule  = Inh_CRule {  }+data Syn_CRule  = Syn_CRule { self_Syn_CRule :: (CRule) }+{-# INLINABLE wrap_CRule #-}+wrap_CRule :: T_CRule  -> Inh_CRule  -> (Syn_CRule )+wrap_CRule (T_CRule act) (Inh_CRule ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg19 = T_CRule_vIn19 +        (T_CRule_vOut19 _lhsOself) <- return (inv_CRule_s20 sem arg19)+        return (Syn_CRule _lhsOself)+   )++-- cata+{-# NOINLINE sem_CRule #-}+sem_CRule :: CRule  -> T_CRule +sem_CRule ( CRule name_ isIn_ hasCode_ nt_ con_ field_ childnt_ tp_ pattern_ rhs_ defines_ owrt_ origin_ uses_ explicit_ mbNamed_ ) = sem_CRule_CRule name_ isIn_ hasCode_ nt_ con_ field_ childnt_ tp_ ( sem_Pattern pattern_ ) rhs_ defines_ owrt_ origin_ uses_ explicit_ mbNamed_+sem_CRule ( CChildVisit name_ nt_ nr_ inh_ syn_ isLast_ ) = sem_CRule_CChildVisit name_ nt_ nr_ inh_ syn_ isLast_++-- semantic domain+newtype T_CRule  = T_CRule {+                           attach_T_CRule :: Identity (T_CRule_s20 )+                           }+newtype T_CRule_s20  = C_CRule_s20 {+                                   inv_CRule_s20 :: (T_CRule_v19 )+                                   }+data T_CRule_s21  = C_CRule_s21+type T_CRule_v19  = (T_CRule_vIn19 ) -> (T_CRule_vOut19 )+data T_CRule_vIn19  = T_CRule_vIn19 +data T_CRule_vOut19  = T_CRule_vOut19 (CRule)+{-# NOINLINE sem_CRule_CRule #-}+sem_CRule_CRule :: (Identifier) -> (Bool) -> (Bool) -> (NontermIdent) -> (ConstructorIdent) -> (Identifier) -> (Maybe NontermIdent) -> (Maybe Type) -> T_Pattern  -> ([String]) -> (Map Int (Identifier,Identifier,Maybe Type)) -> (Bool) -> (String) -> (Set (Identifier, Identifier)) -> (Bool) -> (Maybe Identifier) -> T_CRule +sem_CRule_CRule arg_name_ arg_isIn_ arg_hasCode_ arg_nt_ arg_con_ arg_field_ arg_childnt_ arg_tp_ arg_pattern_ arg_rhs_ arg_defines_ arg_owrt_ arg_origin_ arg_uses_ arg_explicit_ arg_mbNamed_ = T_CRule (return st20) where+   {-# NOINLINE st20 #-}+   st20 = let+      v19 :: T_CRule_v19 +      v19 = \ (T_CRule_vIn19 ) -> ( let+         _patternX77 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pattern_))+         (T_Pattern_vOut76 _patternIafs _patternIcopy _patternIself) = inv_Pattern_s77 _patternX77 (T_Pattern_vIn76 )+         _self = rule16 _patternIself arg_childnt_ arg_con_ arg_defines_ arg_explicit_ arg_field_ arg_hasCode_ arg_isIn_ arg_mbNamed_ arg_name_ arg_nt_ arg_origin_ arg_owrt_ arg_rhs_ arg_tp_ arg_uses_+         _lhsOself :: CRule+         _lhsOself = rule17 _self+         __result_ = T_CRule_vOut19 _lhsOself+         in __result_ )+     in C_CRule_s20 v19+   {-# INLINE rule16 #-}+   rule16 = \ ((_patternIself) :: Pattern) childnt_ con_ defines_ explicit_ field_ hasCode_ isIn_ mbNamed_ name_ nt_ origin_ owrt_ rhs_ tp_ uses_ ->+     CRule name_ isIn_ hasCode_ nt_ con_ field_ childnt_ tp_ _patternIself rhs_ defines_ owrt_ origin_ uses_ explicit_ mbNamed_+   {-# INLINE rule17 #-}+   rule17 = \ _self ->+     _self+{-# NOINLINE sem_CRule_CChildVisit #-}+sem_CRule_CChildVisit :: (Identifier) -> (NontermIdent) -> (Int) -> (Attributes) -> (Attributes) -> (Bool) -> T_CRule +sem_CRule_CChildVisit arg_name_ arg_nt_ arg_nr_ arg_inh_ arg_syn_ arg_isLast_ = T_CRule (return st20) where+   {-# NOINLINE st20 #-}+   st20 = let+      v19 :: T_CRule_v19 +      v19 = \ (T_CRule_vIn19 ) -> ( let+         _self = rule18 arg_inh_ arg_isLast_ arg_name_ arg_nr_ arg_nt_ arg_syn_+         _lhsOself :: CRule+         _lhsOself = rule19 _self+         __result_ = T_CRule_vOut19 _lhsOself+         in __result_ )+     in C_CRule_s20 v19+   {-# INLINE rule18 #-}+   rule18 = \ inh_ isLast_ name_ nr_ nt_ syn_ ->+     CChildVisit name_ nt_ nr_ inh_ syn_ isLast_+   {-# INLINE rule19 #-}+   rule19 = \ _self ->+     _self++-- CSegment ----------------------------------------------------+-- wrapper+data Inh_CSegment  = Inh_CSegment {  }+data Syn_CSegment  = Syn_CSegment { self_Syn_CSegment :: (CSegment) }+{-# INLINABLE wrap_CSegment #-}+wrap_CSegment :: T_CSegment  -> Inh_CSegment  -> (Syn_CSegment )+wrap_CSegment (T_CSegment act) (Inh_CSegment ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg22 = T_CSegment_vIn22 +        (T_CSegment_vOut22 _lhsOself) <- return (inv_CSegment_s23 sem arg22)+        return (Syn_CSegment _lhsOself)+   )++-- cata+{-# INLINE sem_CSegment #-}+sem_CSegment :: CSegment  -> T_CSegment +sem_CSegment ( CSegment inh_ syn_ ) = sem_CSegment_CSegment inh_ syn_++-- semantic domain+newtype T_CSegment  = T_CSegment {+                                 attach_T_CSegment :: Identity (T_CSegment_s23 )+                                 }+newtype T_CSegment_s23  = C_CSegment_s23 {+                                         inv_CSegment_s23 :: (T_CSegment_v22 )+                                         }+data T_CSegment_s24  = C_CSegment_s24+type T_CSegment_v22  = (T_CSegment_vIn22 ) -> (T_CSegment_vOut22 )+data T_CSegment_vIn22  = T_CSegment_vIn22 +data T_CSegment_vOut22  = T_CSegment_vOut22 (CSegment)+{-# NOINLINE sem_CSegment_CSegment #-}+sem_CSegment_CSegment :: (Attributes) -> (Attributes) -> T_CSegment +sem_CSegment_CSegment arg_inh_ arg_syn_ = T_CSegment (return st23) where+   {-# NOINLINE st23 #-}+   st23 = let+      v22 :: T_CSegment_v22 +      v22 = \ (T_CSegment_vIn22 ) -> ( let+         _self = rule20 arg_inh_ arg_syn_+         _lhsOself :: CSegment+         _lhsOself = rule21 _self+         __result_ = T_CSegment_vOut22 _lhsOself+         in __result_ )+     in C_CSegment_s23 v22+   {-# INLINE rule20 #-}+   rule20 = \ inh_ syn_ ->+     CSegment inh_ syn_+   {-# INLINE rule21 #-}+   rule21 = \ _self ->+     _self++-- CSegments ---------------------------------------------------+-- wrapper+data Inh_CSegments  = Inh_CSegments {  }+data Syn_CSegments  = Syn_CSegments { self_Syn_CSegments :: (CSegments) }+{-# INLINABLE wrap_CSegments #-}+wrap_CSegments :: T_CSegments  -> Inh_CSegments  -> (Syn_CSegments )+wrap_CSegments (T_CSegments act) (Inh_CSegments ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg25 = T_CSegments_vIn25 +        (T_CSegments_vOut25 _lhsOself) <- return (inv_CSegments_s26 sem arg25)+        return (Syn_CSegments _lhsOself)+   )++-- cata+{-# NOINLINE sem_CSegments #-}+sem_CSegments :: CSegments  -> T_CSegments +sem_CSegments list = Prelude.foldr sem_CSegments_Cons sem_CSegments_Nil (Prelude.map sem_CSegment list)++-- semantic domain+newtype T_CSegments  = T_CSegments {+                                   attach_T_CSegments :: Identity (T_CSegments_s26 )+                                   }+newtype T_CSegments_s26  = C_CSegments_s26 {+                                           inv_CSegments_s26 :: (T_CSegments_v25 )+                                           }+data T_CSegments_s27  = C_CSegments_s27+type T_CSegments_v25  = (T_CSegments_vIn25 ) -> (T_CSegments_vOut25 )+data T_CSegments_vIn25  = T_CSegments_vIn25 +data T_CSegments_vOut25  = T_CSegments_vOut25 (CSegments)+{-# NOINLINE sem_CSegments_Cons #-}+sem_CSegments_Cons :: T_CSegment  -> T_CSegments  -> T_CSegments +sem_CSegments_Cons arg_hd_ arg_tl_ = T_CSegments (return st26) where+   {-# NOINLINE st26 #-}+   st26 = let+      v25 :: T_CSegments_v25 +      v25 = \ (T_CSegments_vIn25 ) -> ( let+         _hdX23 = Control.Monad.Identity.runIdentity (attach_T_CSegment (arg_hd_))+         _tlX26 = Control.Monad.Identity.runIdentity (attach_T_CSegments (arg_tl_))+         (T_CSegment_vOut22 _hdIself) = inv_CSegment_s23 _hdX23 (T_CSegment_vIn22 )+         (T_CSegments_vOut25 _tlIself) = inv_CSegments_s26 _tlX26 (T_CSegments_vIn25 )+         _self = rule22 _hdIself _tlIself+         _lhsOself :: CSegments+         _lhsOself = rule23 _self+         __result_ = T_CSegments_vOut25 _lhsOself+         in __result_ )+     in C_CSegments_s26 v25+   {-# INLINE rule22 #-}+   rule22 = \ ((_hdIself) :: CSegment) ((_tlIself) :: CSegments) ->+     (:) _hdIself _tlIself+   {-# INLINE rule23 #-}+   rule23 = \ _self ->+     _self+{-# NOINLINE sem_CSegments_Nil #-}+sem_CSegments_Nil ::  T_CSegments +sem_CSegments_Nil  = T_CSegments (return st26) where+   {-# NOINLINE st26 #-}+   st26 = let+      v25 :: T_CSegments_v25 +      v25 = \ (T_CSegments_vIn25 ) -> ( let+         _self = rule24  ()+         _lhsOself :: CSegments+         _lhsOself = rule25 _self+         __result_ = T_CSegments_vOut25 _lhsOself+         in __result_ )+     in C_CSegments_s26 v25+   {-# INLINE rule24 #-}+   rule24 = \  (_ :: ()) ->+     []+   {-# INLINE rule25 #-}+   rule25 = \ _self ->+     _self++-- CVisit ------------------------------------------------------+-- wrapper+data Inh_CVisit  = Inh_CVisit {  }+data Syn_CVisit  = Syn_CVisit { self_Syn_CVisit :: (CVisit) }+{-# INLINABLE wrap_CVisit #-}+wrap_CVisit :: T_CVisit  -> Inh_CVisit  -> (Syn_CVisit )+wrap_CVisit (T_CVisit act) (Inh_CVisit ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg28 = T_CVisit_vIn28 +        (T_CVisit_vOut28 _lhsOself) <- return (inv_CVisit_s29 sem arg28)+        return (Syn_CVisit _lhsOself)+   )++-- cata+{-# INLINE sem_CVisit #-}+sem_CVisit :: CVisit  -> T_CVisit +sem_CVisit ( CVisit inh_ syn_ vss_ intra_ ordered_ ) = sem_CVisit_CVisit inh_ syn_ ( sem_Sequence vss_ ) ( sem_Sequence intra_ ) ordered_++-- semantic domain+newtype T_CVisit  = T_CVisit {+                             attach_T_CVisit :: Identity (T_CVisit_s29 )+                             }+newtype T_CVisit_s29  = C_CVisit_s29 {+                                     inv_CVisit_s29 :: (T_CVisit_v28 )+                                     }+data T_CVisit_s30  = C_CVisit_s30+type T_CVisit_v28  = (T_CVisit_vIn28 ) -> (T_CVisit_vOut28 )+data T_CVisit_vIn28  = T_CVisit_vIn28 +data T_CVisit_vOut28  = T_CVisit_vOut28 (CVisit)+{-# NOINLINE sem_CVisit_CVisit #-}+sem_CVisit_CVisit :: (Attributes) -> (Attributes) -> T_Sequence  -> T_Sequence  -> (Bool) -> T_CVisit +sem_CVisit_CVisit arg_inh_ arg_syn_ arg_vss_ arg_intra_ arg_ordered_ = T_CVisit (return st29) where+   {-# NOINLINE st29 #-}+   st29 = let+      v28 :: T_CVisit_v28 +      v28 = \ (T_CVisit_vIn28 ) -> ( let+         _vssX95 = Control.Monad.Identity.runIdentity (attach_T_Sequence (arg_vss_))+         _intraX95 = Control.Monad.Identity.runIdentity (attach_T_Sequence (arg_intra_))+         (T_Sequence_vOut94 _vssIself) = inv_Sequence_s95 _vssX95 (T_Sequence_vIn94 )+         (T_Sequence_vOut94 _intraIself) = inv_Sequence_s95 _intraX95 (T_Sequence_vIn94 )+         _self = rule26 _intraIself _vssIself arg_inh_ arg_ordered_ arg_syn_+         _lhsOself :: CVisit+         _lhsOself = rule27 _self+         __result_ = T_CVisit_vOut28 _lhsOself+         in __result_ )+     in C_CVisit_s29 v28+   {-# INLINE rule26 #-}+   rule26 = \ ((_intraIself) :: Sequence) ((_vssIself) :: Sequence) inh_ ordered_ syn_ ->+     CVisit inh_ syn_ _vssIself _intraIself ordered_+   {-# INLINE rule27 #-}+   rule27 = \ _self ->+     _self++-- CVisits -----------------------------------------------------+-- wrapper+data Inh_CVisits  = Inh_CVisits {  }+data Syn_CVisits  = Syn_CVisits { self_Syn_CVisits :: (CVisits) }+{-# INLINABLE wrap_CVisits #-}+wrap_CVisits :: T_CVisits  -> Inh_CVisits  -> (Syn_CVisits )+wrap_CVisits (T_CVisits act) (Inh_CVisits ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg31 = T_CVisits_vIn31 +        (T_CVisits_vOut31 _lhsOself) <- return (inv_CVisits_s32 sem arg31)+        return (Syn_CVisits _lhsOself)+   )++-- cata+{-# NOINLINE sem_CVisits #-}+sem_CVisits :: CVisits  -> T_CVisits +sem_CVisits list = Prelude.foldr sem_CVisits_Cons sem_CVisits_Nil (Prelude.map sem_CVisit list)++-- semantic domain+newtype T_CVisits  = T_CVisits {+                               attach_T_CVisits :: Identity (T_CVisits_s32 )+                               }+newtype T_CVisits_s32  = C_CVisits_s32 {+                                       inv_CVisits_s32 :: (T_CVisits_v31 )+                                       }+data T_CVisits_s33  = C_CVisits_s33+type T_CVisits_v31  = (T_CVisits_vIn31 ) -> (T_CVisits_vOut31 )+data T_CVisits_vIn31  = T_CVisits_vIn31 +data T_CVisits_vOut31  = T_CVisits_vOut31 (CVisits)+{-# NOINLINE sem_CVisits_Cons #-}+sem_CVisits_Cons :: T_CVisit  -> T_CVisits  -> T_CVisits +sem_CVisits_Cons arg_hd_ arg_tl_ = T_CVisits (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_CVisits_v31 +      v31 = \ (T_CVisits_vIn31 ) -> ( let+         _hdX29 = Control.Monad.Identity.runIdentity (attach_T_CVisit (arg_hd_))+         _tlX32 = Control.Monad.Identity.runIdentity (attach_T_CVisits (arg_tl_))+         (T_CVisit_vOut28 _hdIself) = inv_CVisit_s29 _hdX29 (T_CVisit_vIn28 )+         (T_CVisits_vOut31 _tlIself) = inv_CVisits_s32 _tlX32 (T_CVisits_vIn31 )+         _self = rule28 _hdIself _tlIself+         _lhsOself :: CVisits+         _lhsOself = rule29 _self+         __result_ = T_CVisits_vOut31 _lhsOself+         in __result_ )+     in C_CVisits_s32 v31+   {-# INLINE rule28 #-}+   rule28 = \ ((_hdIself) :: CVisit) ((_tlIself) :: CVisits) ->+     (:) _hdIself _tlIself+   {-# INLINE rule29 #-}+   rule29 = \ _self ->+     _self+{-# NOINLINE sem_CVisits_Nil #-}+sem_CVisits_Nil ::  T_CVisits +sem_CVisits_Nil  = T_CVisits (return st32) where+   {-# NOINLINE st32 #-}+   st32 = let+      v31 :: T_CVisits_v31 +      v31 = \ (T_CVisits_vIn31 ) -> ( let+         _self = rule30  ()+         _lhsOself :: CVisits+         _lhsOself = rule31 _self+         __result_ = T_CVisits_vOut31 _lhsOself+         in __result_ )+     in C_CVisits_s32 v31+   {-# INLINE rule30 #-}+   rule30 = \  (_ :: ()) ->+     []+   {-# INLINE rule31 #-}+   rule31 = \ _self ->+     _self++-- Child -------------------------------------------------------+-- wrapper+data Inh_Child  = Inh_Child { ain_Inh_Child :: (MyType -> MyAttributes), an_Inh_Child :: (MyType -> MyAttributes), aroundMap_Inh_Child :: (Map Identifier [Expression]), asn_Inh_Child :: (MyType -> MyAttributes), flab_Inh_Child :: (Int), fty_Inh_Child :: (FTY), hoMapf_Inh_Child :: (HOMap), lfpf_Inh_Child :: (SF_P), mergeMap_Inh_Child :: (Map Identifier (Identifier, [Identifier], Expression)), mergedChildren_Inh_Child :: (Set Identifier), nmp_Inh_Child :: (NMP), nmprf_Inh_Child :: (NMP_R), olab_Inh_Child :: (Int), options_Inh_Child :: (Options), pll_Inh_Child :: (PLabel), pmpf_Inh_Child :: (PMP), pmprf_Inh_Child :: (PMP_R) }+data Syn_Child  = Syn_Child { ap_Syn_Child :: (A_P), echilds_Syn_Child :: (EChild), fieldMap_Syn_Child :: (FMap), flab_Syn_Child :: (Int), fty_Syn_Child :: (FTY), gen_Syn_Child :: (Map Int Int), hoMap_Syn_Child :: (HOMap), inss_Syn_Child :: (Map Int [Int]), ofld_Syn_Child :: ([(Int, Int)]), olab_Syn_Child :: (Int), pmp_Syn_Child :: (PMP), pmpr_Syn_Child :: (PMP_R), pts_Syn_Child :: (Set.Set FLabel), refHoNts_Syn_Child :: (Set NontermIdent), refNts_Syn_Child :: (Set NontermIdent), self_Syn_Child :: (Child) }+{-# INLINABLE wrap_Child #-}+wrap_Child :: T_Child  -> Inh_Child  -> (Syn_Child )+wrap_Child (T_Child act) (Inh_Child _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIflab _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImergedChildren _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpll _lhsIpmpf _lhsIpmprf) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg34 = T_Child_vIn34 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIflab _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImergedChildren _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpll _lhsIpmpf _lhsIpmprf+        (T_Child_vOut34 _lhsOap _lhsOechilds _lhsOfieldMap _lhsOflab _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOpts _lhsOrefHoNts _lhsOrefNts _lhsOself) <- return (inv_Child_s35 sem arg34)+        return (Syn_Child _lhsOap _lhsOechilds _lhsOfieldMap _lhsOflab _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOpts _lhsOrefHoNts _lhsOrefNts _lhsOself)+   )++-- cata+{-# INLINE sem_Child #-}+sem_Child :: Child  -> T_Child +sem_Child ( Child name_ tp_ kind_  ) = sem_Child_Child name_ tp_ kind_ ++-- semantic domain+newtype T_Child  = T_Child {+                           attach_T_Child :: Identity (T_Child_s35 )+                           }+newtype T_Child_s35  = C_Child_s35 {+                                   inv_Child_s35 :: (T_Child_v34 )+                                   }+data T_Child_s36  = C_Child_s36+type T_Child_v34  = (T_Child_vIn34 ) -> (T_Child_vOut34 )+data T_Child_vIn34  = T_Child_vIn34 (MyType -> MyAttributes) (MyType -> MyAttributes) (Map Identifier [Expression]) (MyType -> MyAttributes) (Int) (FTY) (HOMap) (SF_P) (Map Identifier (Identifier, [Identifier], Expression)) (Set Identifier) (NMP) (NMP_R) (Int) (Options) (PLabel) (PMP) (PMP_R)+data T_Child_vOut34  = T_Child_vOut34 (A_P) (EChild) (FMap) (Int) (FTY) (Map Int Int) (HOMap) (Map Int [Int]) ([(Int, Int)]) (Int) (PMP) (PMP_R) (Set.Set FLabel) (Set NontermIdent) (Set NontermIdent) (Child)+{-# NOINLINE sem_Child_Child #-}+sem_Child_Child :: (Identifier) -> (Type) -> (ChildKind) ->  T_Child +sem_Child_Child arg_name_ arg_tp_ arg_kind_  = T_Child (return st35) where+   {-# NOINLINE st35 #-}+   st35 = let+      v34 :: T_Child_v34 +      v34 = \ (T_Child_vIn34 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIflab _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImergedChildren _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpll _lhsIpmpf _lhsIpmprf) -> ( let+         _fattsX47 = Control.Monad.Identity.runIdentity (attach_T_FieldAtts ((sem_FieldAtts fatts_val_)))+         (T_FieldAtts_vOut46 _fattsIap _fattsIflab _fattsIfty _fattsIgen _fattsIinss _fattsIofld _fattsIolab _fattsIpmp _fattsIpmpr _fattsIself) = inv_FieldAtts_s47 _fattsX47 (T_FieldAtts_vIn46 _fattsOan _fattsOflab _fattsOnmprf _fattsOolab)+         _refNts = rule32 arg_tp_+         _refHoNts = rule33 _isHigherOrder _refNts+         _isHigherOrder = rule34 arg_kind_+         _hasArounds = rule35 _lhsIaroundMap arg_name_+         _merges = rule36 _lhsImergeMap arg_name_+         _isMerged = rule37 _lhsImergedChildren arg_name_+         _lhsOechilds :: EChild+         _lhsOechilds = rule38 _hasArounds _isMerged _merges arg_kind_ arg_name_ arg_tp_+         _flab = rule39 _lhsIflab+         _atp = rule40 arg_tp_+         fatts_val_ = rule41 _atp _lhsIan _lhsIpll arg_name_+         _fattsOflab = rule42 _flab+         _ident = rule43 arg_name_+         _label = rule44 _ident _lhsIpll+         _foccsI = rule45 _atp _label _lhsIain+         _foccsS = rule46 _atp _label _lhsIasn+         _fieldMap = rule47 _foccsI _foccsS _label+         _hoMap = rule48 _ident _lhsIpll arg_kind_+         _lhsOfty :: FTY+         _lhsOfty = rule49 _atp _lhsIpll arg_name_+         _lhsOpts :: Set.Set FLabel+         _lhsOpts = rule50 arg_name_+         _lhsOap :: A_P+         _lhsOap = rule51 _fattsIap+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule52 _fieldMap+         _lhsOgen :: Map Int Int+         _lhsOgen = rule53 _fattsIgen+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule54 _hoMap+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule55 _fattsIinss+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule56 _fattsIofld+         _lhsOpmp :: PMP+         _lhsOpmp = rule57 _fattsIpmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule58 _fattsIpmpr+         _lhsOrefHoNts :: Set NontermIdent+         _lhsOrefHoNts = rule59 _refHoNts+         _lhsOrefNts :: Set NontermIdent+         _lhsOrefNts = rule60 _refNts+         _self = rule61 arg_kind_ arg_name_ arg_tp_+         _lhsOself :: Child+         _lhsOself = rule62 _self+         _lhsOflab :: Int+         _lhsOflab = rule63 _flab+         _lhsOolab :: Int+         _lhsOolab = rule64 _fattsIolab+         _fattsOan = rule65 _lhsIan+         _fattsOnmprf = rule66 _lhsInmprf+         _fattsOolab = rule67 _lhsIolab+         __result_ = T_Child_vOut34 _lhsOap _lhsOechilds _lhsOfieldMap _lhsOflab _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOpts _lhsOrefHoNts _lhsOrefNts _lhsOself+         in __result_ )+     in C_Child_s35 v34+   {-# INLINE rule32 #-}+   {-# LINE 31 "src-ag/ExecutionPlanCommon.ag" #-}+   rule32 = \ tp_ ->+                 {-# LINE 31 "src-ag/ExecutionPlanCommon.ag" #-}+                 case tp_ of+                   NT nt _ _ -> Set.singleton nt+                   _         -> mempty+                 {-# LINE 1097 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule33 #-}+   {-# LINE 34 "src-ag/ExecutionPlanCommon.ag" #-}+   rule33 = \ _isHigherOrder _refNts ->+                   {-# LINE 34 "src-ag/ExecutionPlanCommon.ag" #-}+                   if _isHigherOrder     then _refNts     else mempty+                   {-# LINE 1103 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule34 #-}+   {-# LINE 35 "src-ag/ExecutionPlanCommon.ag" #-}+   rule34 = \ kind_ ->+                        {-# LINE 35 "src-ag/ExecutionPlanCommon.ag" #-}+                        case kind_ of+                          ChildSyntax -> False+                          _           -> True+                        {-# LINE 1111 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule35 #-}+   {-# LINE 95 "src-ag/ExecutionPlanCommon.ag" #-}+   rule35 = \ ((_lhsIaroundMap) :: Map Identifier [Expression]) name_ ->+                     {-# LINE 95 "src-ag/ExecutionPlanCommon.ag" #-}+                     case Map.lookup name_ _lhsIaroundMap of+                       Nothing -> False+                       Just as -> not (null as)+                     {-# LINE 1119 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule36 #-}+   {-# LINE 123 "src-ag/ExecutionPlanCommon.ag" #-}+   rule36 = \ ((_lhsImergeMap) :: Map Identifier (Identifier, [Identifier], Expression)) name_ ->+                   {-# LINE 123 "src-ag/ExecutionPlanCommon.ag" #-}+                   maybe Nothing (\(_,ms,_) -> Just ms) $ Map.lookup name_ _lhsImergeMap+                   {-# LINE 1125 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule37 #-}+   {-# LINE 124 "src-ag/ExecutionPlanCommon.ag" #-}+   rule37 = \ ((_lhsImergedChildren) :: Set Identifier) name_ ->+                   {-# LINE 124 "src-ag/ExecutionPlanCommon.ag" #-}+                   name_ `Set.member` _lhsImergedChildren+                   {-# LINE 1131 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule38 #-}+   {-# LINE 135 "src-ag/ExecutionPlanCommon.ag" #-}+   rule38 = \ _hasArounds _isMerged _merges kind_ name_ tp_ ->+                          {-# LINE 135 "src-ag/ExecutionPlanCommon.ag" #-}+                          case tp_ of+                            NT _ _ _ -> EChild name_ tp_ kind_ _hasArounds     _merges     _isMerged+                            _        -> ETerm name_ tp_+                          {-# LINE 1139 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule39 #-}+   {-# LINE 174 "src-ag/LOAG/Prepare.ag" #-}+   rule39 = \ ((_lhsIflab) :: Int) ->+                    {-# LINE 174 "src-ag/LOAG/Prepare.ag" #-}+                    _lhsIflab + 1+                    {-# LINE 1145 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule40 #-}+   {-# LINE 175 "src-ag/LOAG/Prepare.ag" #-}+   rule40 = \ tp_ ->+                    {-# LINE 175 "src-ag/LOAG/Prepare.ag" #-}+                    toMyTy tp_+                    {-# LINE 1151 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule41 #-}+   {-# LINE 177 "src-ag/LOAG/Prepare.ag" #-}+   rule41 = \ _atp ((_lhsIan) :: MyType -> MyAttributes) ((_lhsIpll) :: PLabel) name_ ->+                    {-# LINE 177 "src-ag/LOAG/Prepare.ag" #-}+                    map ((FieldAtt _atp     _lhsIpll (getName name_)) . alab)+                          $ _lhsIan _atp+                    {-# LINE 1158 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule42 #-}+   {-# LINE 179 "src-ag/LOAG/Prepare.ag" #-}+   rule42 = \ _flab ->+                    {-# LINE 179 "src-ag/LOAG/Prepare.ag" #-}+                    _flab+                    {-# LINE 1164 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule43 #-}+   {-# LINE 180 "src-ag/LOAG/Prepare.ag" #-}+   rule43 = \ name_ ->+                    {-# LINE 180 "src-ag/LOAG/Prepare.ag" #-}+                    getName name_+                    {-# LINE 1170 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule44 #-}+   {-# LINE 181 "src-ag/LOAG/Prepare.ag" #-}+   rule44 = \ _ident ((_lhsIpll) :: PLabel) ->+                    {-# LINE 181 "src-ag/LOAG/Prepare.ag" #-}+                    (_lhsIpll, _ident    )+                    {-# LINE 1176 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule45 #-}+   {-# LINE 182 "src-ag/LOAG/Prepare.ag" #-}+   rule45 = \ _atp _label ((_lhsIain) :: MyType -> MyAttributes) ->+                    {-# LINE 182 "src-ag/LOAG/Prepare.ag" #-}+                    Set.fromList $ handAllOut _label     $ _lhsIain _atp+                    {-# LINE 1182 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule46 #-}+   {-# LINE 183 "src-ag/LOAG/Prepare.ag" #-}+   rule46 = \ _atp _label ((_lhsIasn) :: MyType -> MyAttributes) ->+                    {-# LINE 183 "src-ag/LOAG/Prepare.ag" #-}+                    Set.fromList $ handAllOut _label     $ _lhsIasn _atp+                    {-# LINE 1188 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule47 #-}+   {-# LINE 184 "src-ag/LOAG/Prepare.ag" #-}+   rule47 = \ _foccsI _foccsS _label ->+                    {-# LINE 184 "src-ag/LOAG/Prepare.ag" #-}+                    if Set.null _foccsI     && Set.null _foccsS+                          then Map.empty+                          else Map.singleton _label     (_foccsS    ,_foccsI    )+                    {-# LINE 1196 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule48 #-}+   {-# LINE 187 "src-ag/LOAG/Prepare.ag" #-}+   rule48 = \ _ident ((_lhsIpll) :: PLabel) kind_ ->+                    {-# LINE 187 "src-ag/LOAG/Prepare.ag" #-}+                    case kind_ of+                      ChildAttr -> Map.singleton _lhsIpll (Set.singleton _ident    )+                      _         -> Map.empty+                    {-# LINE 1204 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule49 #-}+   {-# LINE 190 "src-ag/LOAG/Prepare.ag" #-}+   rule49 = \ _atp ((_lhsIpll) :: PLabel) name_ ->+                    {-# LINE 190 "src-ag/LOAG/Prepare.ag" #-}+                    Map.singleton (_lhsIpll, getName name_) _atp+                    {-# LINE 1210 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule50 #-}+   {-# LINE 223 "src-ag/LOAG/Prepare.ag" #-}+   rule50 = \ name_ ->+                {-# LINE 223 "src-ag/LOAG/Prepare.ag" #-}+                Set.singleton $ getName name_+                {-# LINE 1216 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule51 #-}+   rule51 = \ ((_fattsIap) :: A_P) ->+     _fattsIap+   {-# INLINE rule52 #-}+   rule52 = \ _fieldMap ->+     _fieldMap+   {-# INLINE rule53 #-}+   rule53 = \ ((_fattsIgen) :: Map Int Int) ->+     _fattsIgen+   {-# INLINE rule54 #-}+   rule54 = \ _hoMap ->+     _hoMap+   {-# INLINE rule55 #-}+   rule55 = \ ((_fattsIinss) :: Map Int [Int]) ->+     _fattsIinss+   {-# INLINE rule56 #-}+   rule56 = \ ((_fattsIofld) :: [(Int, Int)]) ->+     _fattsIofld+   {-# INLINE rule57 #-}+   rule57 = \ ((_fattsIpmp) :: PMP) ->+     _fattsIpmp+   {-# INLINE rule58 #-}+   rule58 = \ ((_fattsIpmpr) :: PMP_R) ->+     _fattsIpmpr+   {-# INLINE rule59 #-}+   rule59 = \ _refHoNts ->+     _refHoNts+   {-# INLINE rule60 #-}+   rule60 = \ _refNts ->+     _refNts+   {-# INLINE rule61 #-}+   rule61 = \ kind_ name_ tp_ ->+     Child name_ tp_ kind_+   {-# INLINE rule62 #-}+   rule62 = \ _self ->+     _self+   {-# INLINE rule63 #-}+   rule63 = \ _flab ->+     _flab+   {-# INLINE rule64 #-}+   rule64 = \ ((_fattsIolab) :: Int) ->+     _fattsIolab+   {-# INLINE rule65 #-}+   rule65 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule66 #-}+   rule66 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule67 #-}+   rule67 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab++-- Children ----------------------------------------------------+-- wrapper+data Inh_Children  = Inh_Children { ain_Inh_Children :: (MyType -> MyAttributes), an_Inh_Children :: (MyType -> MyAttributes), aroundMap_Inh_Children :: (Map Identifier [Expression]), asn_Inh_Children :: (MyType -> MyAttributes), dty_Inh_Children :: (MyType), flab_Inh_Children :: (Int), fty_Inh_Children :: (FTY), hoMapf_Inh_Children :: (HOMap), lfpf_Inh_Children :: (SF_P), mergeMap_Inh_Children :: (Map Identifier (Identifier, [Identifier], Expression)), mergedChildren_Inh_Children :: (Set Identifier), nmp_Inh_Children :: (NMP), nmprf_Inh_Children :: (NMP_R), olab_Inh_Children :: (Int), options_Inh_Children :: (Options), pll_Inh_Children :: (PLabel), pmpf_Inh_Children :: (PMP), pmprf_Inh_Children :: (PMP_R) }+data Syn_Children  = Syn_Children { ap_Syn_Children :: (A_P), echilds_Syn_Children :: (EChildren), fieldMap_Syn_Children :: (FMap), flab_Syn_Children :: (Int), fty_Syn_Children :: (FTY), gen_Syn_Children :: (Map Int Int), hoMap_Syn_Children :: (HOMap), inss_Syn_Children :: (Map Int [Int]), ofld_Syn_Children :: ([(Int, Int)]), olab_Syn_Children :: (Int), pmp_Syn_Children :: (PMP), pmpr_Syn_Children :: (PMP_R), pts_Syn_Children :: (Set.Set FLabel), refHoNts_Syn_Children :: (Set NontermIdent), refNts_Syn_Children :: (Set NontermIdent), self_Syn_Children :: (Children) }+{-# INLINABLE wrap_Children #-}+wrap_Children :: T_Children  -> Inh_Children  -> (Syn_Children )+wrap_Children (T_Children act) (Inh_Children _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIdty _lhsIflab _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImergedChildren _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpll _lhsIpmpf _lhsIpmprf) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg37 = T_Children_vIn37 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIdty _lhsIflab _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImergedChildren _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpll _lhsIpmpf _lhsIpmprf+        (T_Children_vOut37 _lhsOap _lhsOechilds _lhsOfieldMap _lhsOflab _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOpts _lhsOrefHoNts _lhsOrefNts _lhsOself) <- return (inv_Children_s38 sem arg37)+        return (Syn_Children _lhsOap _lhsOechilds _lhsOfieldMap _lhsOflab _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOpts _lhsOrefHoNts _lhsOrefNts _lhsOself)+   )++-- cata+{-# NOINLINE sem_Children #-}+sem_Children :: Children  -> T_Children +sem_Children list = Prelude.foldr sem_Children_Cons sem_Children_Nil (Prelude.map sem_Child list)++-- semantic domain+newtype T_Children  = T_Children {+                                 attach_T_Children :: Identity (T_Children_s38 )+                                 }+newtype T_Children_s38  = C_Children_s38 {+                                         inv_Children_s38 :: (T_Children_v37 )+                                         }+data T_Children_s39  = C_Children_s39+type T_Children_v37  = (T_Children_vIn37 ) -> (T_Children_vOut37 )+data T_Children_vIn37  = T_Children_vIn37 (MyType -> MyAttributes) (MyType -> MyAttributes) (Map Identifier [Expression]) (MyType -> MyAttributes) (MyType) (Int) (FTY) (HOMap) (SF_P) (Map Identifier (Identifier, [Identifier], Expression)) (Set Identifier) (NMP) (NMP_R) (Int) (Options) (PLabel) (PMP) (PMP_R)+data T_Children_vOut37  = T_Children_vOut37 (A_P) (EChildren) (FMap) (Int) (FTY) (Map Int Int) (HOMap) (Map Int [Int]) ([(Int, Int)]) (Int) (PMP) (PMP_R) (Set.Set FLabel) (Set NontermIdent) (Set NontermIdent) (Children)+{-# NOINLINE sem_Children_Cons #-}+sem_Children_Cons :: T_Child  -> T_Children  -> T_Children +sem_Children_Cons arg_hd_ arg_tl_ = T_Children (return st38) where+   {-# NOINLINE st38 #-}+   st38 = let+      v37 :: T_Children_v37 +      v37 = \ (T_Children_vIn37 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIdty _lhsIflab _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImergedChildren _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpll _lhsIpmpf _lhsIpmprf) -> ( let+         _hdX35 = Control.Monad.Identity.runIdentity (attach_T_Child (arg_hd_))+         _tlX38 = Control.Monad.Identity.runIdentity (attach_T_Children (arg_tl_))+         (T_Child_vOut34 _hdIap _hdIechilds _hdIfieldMap _hdIflab _hdIfty _hdIgen _hdIhoMap _hdIinss _hdIofld _hdIolab _hdIpmp _hdIpmpr _hdIpts _hdIrefHoNts _hdIrefNts _hdIself) = inv_Child_s35 _hdX35 (T_Child_vIn34 _hdOain _hdOan _hdOaroundMap _hdOasn _hdOflab _hdOfty _hdOhoMapf _hdOlfpf _hdOmergeMap _hdOmergedChildren _hdOnmp _hdOnmprf _hdOolab _hdOoptions _hdOpll _hdOpmpf _hdOpmprf)+         (T_Children_vOut37 _tlIap _tlIechilds _tlIfieldMap _tlIflab _tlIfty _tlIgen _tlIhoMap _tlIinss _tlIofld _tlIolab _tlIpmp _tlIpmpr _tlIpts _tlIrefHoNts _tlIrefNts _tlIself) = inv_Children_s38 _tlX38 (T_Children_vIn37 _tlOain _tlOan _tlOaroundMap _tlOasn _tlOdty _tlOflab _tlOfty _tlOhoMapf _tlOlfpf _tlOmergeMap _tlOmergedChildren _tlOnmp _tlOnmprf _tlOolab _tlOoptions _tlOpll _tlOpmpf _tlOpmprf)+         _lhsOap :: A_P+         _lhsOap = rule68 _hdIap _tlIap+         _lhsOechilds :: EChildren+         _lhsOechilds = rule69 _hdIechilds _tlIechilds+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule70 _hdIfieldMap _tlIfieldMap+         _lhsOfty :: FTY+         _lhsOfty = rule71 _hdIfty _tlIfty+         _lhsOgen :: Map Int Int+         _lhsOgen = rule72 _hdIgen _tlIgen+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule73 _hdIhoMap _tlIhoMap+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule74 _hdIinss _tlIinss+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule75 _hdIofld _tlIofld+         _lhsOpmp :: PMP+         _lhsOpmp = rule76 _hdIpmp _tlIpmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule77 _hdIpmpr _tlIpmpr+         _lhsOpts :: Set.Set FLabel+         _lhsOpts = rule78 _hdIpts _tlIpts+         _lhsOrefHoNts :: Set NontermIdent+         _lhsOrefHoNts = rule79 _hdIrefHoNts _tlIrefHoNts+         _lhsOrefNts :: Set NontermIdent+         _lhsOrefNts = rule80 _hdIrefNts _tlIrefNts+         _self = rule81 _hdIself _tlIself+         _lhsOself :: Children+         _lhsOself = rule82 _self+         _lhsOflab :: Int+         _lhsOflab = rule83 _tlIflab+         _lhsOolab :: Int+         _lhsOolab = rule84 _tlIolab+         _hdOain = rule85 _lhsIain+         _hdOan = rule86 _lhsIan+         _hdOaroundMap = rule87 _lhsIaroundMap+         _hdOasn = rule88 _lhsIasn+         _hdOflab = rule89 _lhsIflab+         _hdOfty = rule90 _lhsIfty+         _hdOhoMapf = rule91 _lhsIhoMapf+         _hdOlfpf = rule92 _lhsIlfpf+         _hdOmergeMap = rule93 _lhsImergeMap+         _hdOmergedChildren = rule94 _lhsImergedChildren+         _hdOnmp = rule95 _lhsInmp+         _hdOnmprf = rule96 _lhsInmprf+         _hdOolab = rule97 _lhsIolab+         _hdOoptions = rule98 _lhsIoptions+         _hdOpll = rule99 _lhsIpll+         _hdOpmpf = rule100 _lhsIpmpf+         _hdOpmprf = rule101 _lhsIpmprf+         _tlOain = rule102 _lhsIain+         _tlOan = rule103 _lhsIan+         _tlOaroundMap = rule104 _lhsIaroundMap+         _tlOasn = rule105 _lhsIasn+         _tlOdty = rule106 _lhsIdty+         _tlOflab = rule107 _hdIflab+         _tlOfty = rule108 _hdIfty+         _tlOhoMapf = rule109 _lhsIhoMapf+         _tlOlfpf = rule110 _lhsIlfpf+         _tlOmergeMap = rule111 _lhsImergeMap+         _tlOmergedChildren = rule112 _lhsImergedChildren+         _tlOnmp = rule113 _lhsInmp+         _tlOnmprf = rule114 _lhsInmprf+         _tlOolab = rule115 _hdIolab+         _tlOoptions = rule116 _lhsIoptions+         _tlOpll = rule117 _lhsIpll+         _tlOpmpf = rule118 _lhsIpmpf+         _tlOpmprf = rule119 _lhsIpmprf+         __result_ = T_Children_vOut37 _lhsOap _lhsOechilds _lhsOfieldMap _lhsOflab _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOpts _lhsOrefHoNts _lhsOrefNts _lhsOself+         in __result_ )+     in C_Children_s38 v37+   {-# INLINE rule68 #-}+   rule68 = \ ((_hdIap) :: A_P) ((_tlIap) :: A_P) ->+     (Map.unionWith (++) _hdIap _tlIap)+   {-# INLINE rule69 #-}+   rule69 = \ ((_hdIechilds) :: EChild) ((_tlIechilds) :: EChildren) ->+     _hdIechilds : _tlIechilds+   {-# INLINE rule70 #-}+   rule70 = \ ((_hdIfieldMap) :: FMap) ((_tlIfieldMap) :: FMap) ->+     (Map.union _hdIfieldMap _tlIfieldMap)+   {-# INLINE rule71 #-}+   rule71 = \ ((_hdIfty) :: FTY) ((_tlIfty) :: FTY) ->+     (Map.union _hdIfty _tlIfty)+   {-# INLINE rule72 #-}+   rule72 = \ ((_hdIgen) :: Map Int Int) ((_tlIgen) :: Map Int Int) ->+     (Map.union _hdIgen _tlIgen)+   {-# INLINE rule73 #-}+   rule73 = \ ((_hdIhoMap) :: HOMap) ((_tlIhoMap) :: HOMap) ->+     (Map.unionWith (Set.union) _hdIhoMap _tlIhoMap)+   {-# INLINE rule74 #-}+   rule74 = \ ((_hdIinss) :: Map Int [Int]) ((_tlIinss) :: Map Int [Int]) ->+     (Map.unionWith (++) _hdIinss _tlIinss)+   {-# INLINE rule75 #-}+   rule75 = \ ((_hdIofld) :: [(Int, Int)]) ((_tlIofld) :: [(Int, Int)]) ->+     ((++) _hdIofld _tlIofld)+   {-# INLINE rule76 #-}+   rule76 = \ ((_hdIpmp) :: PMP) ((_tlIpmp) :: PMP) ->+     (Map.union _hdIpmp _tlIpmp)+   {-# INLINE rule77 #-}+   rule77 = \ ((_hdIpmpr) :: PMP_R) ((_tlIpmpr) :: PMP_R) ->+     (Map.union _hdIpmpr _tlIpmpr)+   {-# INLINE rule78 #-}+   rule78 = \ ((_hdIpts) :: Set.Set FLabel) ((_tlIpts) :: Set.Set FLabel) ->+     (Set.union _hdIpts _tlIpts)+   {-# INLINE rule79 #-}+   rule79 = \ ((_hdIrefHoNts) :: Set NontermIdent) ((_tlIrefHoNts) :: Set NontermIdent) ->+     _hdIrefHoNts `mappend` _tlIrefHoNts+   {-# INLINE rule80 #-}+   rule80 = \ ((_hdIrefNts) :: Set NontermIdent) ((_tlIrefNts) :: Set NontermIdent) ->+     _hdIrefNts `mappend` _tlIrefNts+   {-# INLINE rule81 #-}+   rule81 = \ ((_hdIself) :: Child) ((_tlIself) :: Children) ->+     (:) _hdIself _tlIself+   {-# INLINE rule82 #-}+   rule82 = \ _self ->+     _self+   {-# INLINE rule83 #-}+   rule83 = \ ((_tlIflab) :: Int) ->+     _tlIflab+   {-# INLINE rule84 #-}+   rule84 = \ ((_tlIolab) :: Int) ->+     _tlIolab+   {-# INLINE rule85 #-}+   rule85 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule86 #-}+   rule86 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule87 #-}+   rule87 = \ ((_lhsIaroundMap) :: Map Identifier [Expression]) ->+     _lhsIaroundMap+   {-# INLINE rule88 #-}+   rule88 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule89 #-}+   rule89 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule90 #-}+   rule90 = \ ((_lhsIfty) :: FTY) ->+     _lhsIfty+   {-# INLINE rule91 #-}+   rule91 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule92 #-}+   rule92 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule93 #-}+   rule93 = \ ((_lhsImergeMap) :: Map Identifier (Identifier, [Identifier], Expression)) ->+     _lhsImergeMap+   {-# INLINE rule94 #-}+   rule94 = \ ((_lhsImergedChildren) :: Set Identifier) ->+     _lhsImergedChildren+   {-# INLINE rule95 #-}+   rule95 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule96 #-}+   rule96 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule97 #-}+   rule97 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab+   {-# INLINE rule98 #-}+   rule98 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule99 #-}+   rule99 = \ ((_lhsIpll) :: PLabel) ->+     _lhsIpll+   {-# INLINE rule100 #-}+   rule100 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule101 #-}+   rule101 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule102 #-}+   rule102 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule103 #-}+   rule103 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule104 #-}+   rule104 = \ ((_lhsIaroundMap) :: Map Identifier [Expression]) ->+     _lhsIaroundMap+   {-# INLINE rule105 #-}+   rule105 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule106 #-}+   rule106 = \ ((_lhsIdty) :: MyType) ->+     _lhsIdty+   {-# INLINE rule107 #-}+   rule107 = \ ((_hdIflab) :: Int) ->+     _hdIflab+   {-# INLINE rule108 #-}+   rule108 = \ ((_hdIfty) :: FTY) ->+     _hdIfty+   {-# INLINE rule109 #-}+   rule109 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule110 #-}+   rule110 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule111 #-}+   rule111 = \ ((_lhsImergeMap) :: Map Identifier (Identifier, [Identifier], Expression)) ->+     _lhsImergeMap+   {-# INLINE rule112 #-}+   rule112 = \ ((_lhsImergedChildren) :: Set Identifier) ->+     _lhsImergedChildren+   {-# INLINE rule113 #-}+   rule113 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule114 #-}+   rule114 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule115 #-}+   rule115 = \ ((_hdIolab) :: Int) ->+     _hdIolab+   {-# INLINE rule116 #-}+   rule116 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule117 #-}+   rule117 = \ ((_lhsIpll) :: PLabel) ->+     _lhsIpll+   {-# INLINE rule118 #-}+   rule118 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule119 #-}+   rule119 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+{-# NOINLINE sem_Children_Nil #-}+sem_Children_Nil ::  T_Children +sem_Children_Nil  = T_Children (return st38) where+   {-# NOINLINE st38 #-}+   st38 = let+      v37 :: T_Children_v37 +      v37 = \ (T_Children_vIn37 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIdty _lhsIflab _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImergedChildren _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpll _lhsIpmpf _lhsIpmprf) -> ( let+         _fattsX47 = Control.Monad.Identity.runIdentity (attach_T_FieldAtts ((sem_FieldAtts fatts_val_)))+         (T_FieldAtts_vOut46 _fattsIap _fattsIflab _fattsIfty _fattsIgen _fattsIinss _fattsIofld _fattsIolab _fattsIpmp _fattsIpmpr _fattsIself) = inv_FieldAtts_s47 _fattsX47 (T_FieldAtts_vIn46 _fattsOan _fattsOflab _fattsOnmprf _fattsOolab)+         _flab = rule120 _lhsIflab+         _atp = rule121 _lhsIpll+         fatts_val_ = rule122 _atp _lhsIan _lhsIpll+         _fattsOflab = rule123 _flab+         _label = rule124 _lhsIpll+         _foccsI = rule125 _atp _label _lhsIain+         _foccsS = rule126 _atp _label _lhsIasn+         _fieldMap = rule127 _foccsI _foccsS _label+         _lhsOfty :: FTY+         _lhsOfty = rule128 _label _lhsIdty+         _lhsOap :: A_P+         _lhsOap = rule129 _fattsIap+         _lhsOechilds :: EChildren+         _lhsOechilds = rule130  ()+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule131 _fieldMap+         _lhsOgen :: Map Int Int+         _lhsOgen = rule132 _fattsIgen+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule133  ()+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule134 _fattsIinss+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule135 _fattsIofld+         _lhsOpmp :: PMP+         _lhsOpmp = rule136 _fattsIpmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule137 _fattsIpmpr+         _lhsOpts :: Set.Set FLabel+         _lhsOpts = rule138  ()+         _lhsOrefHoNts :: Set NontermIdent+         _lhsOrefHoNts = rule139  ()+         _lhsOrefNts :: Set NontermIdent+         _lhsOrefNts = rule140  ()+         _self = rule141  ()+         _lhsOself :: Children+         _lhsOself = rule142 _self+         _lhsOflab :: Int+         _lhsOflab = rule143 _flab+         _lhsOolab :: Int+         _lhsOolab = rule144 _fattsIolab+         _fattsOan = rule145 _lhsIan+         _fattsOnmprf = rule146 _lhsInmprf+         _fattsOolab = rule147 _lhsIolab+         __result_ = T_Children_vOut37 _lhsOap _lhsOechilds _lhsOfieldMap _lhsOflab _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOpts _lhsOrefHoNts _lhsOrefNts _lhsOself+         in __result_ )+     in C_Children_s38 v37+   {-# INLINE rule120 #-}+   {-# LINE 161 "src-ag/LOAG/Prepare.ag" #-}+   rule120 = \ ((_lhsIflab) :: Int) ->+                    {-# LINE 161 "src-ag/LOAG/Prepare.ag" #-}+                    _lhsIflab + 1+                    {-# LINE 1598 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule121 #-}+   {-# LINE 162 "src-ag/LOAG/Prepare.ag" #-}+   rule121 = \ ((_lhsIpll) :: PLabel) ->+                    {-# LINE 162 "src-ag/LOAG/Prepare.ag" #-}+                    fst _lhsIpll+                    {-# LINE 1604 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule122 #-}+   {-# LINE 164 "src-ag/LOAG/Prepare.ag" #-}+   rule122 = \ _atp ((_lhsIan) :: MyType -> MyAttributes) ((_lhsIpll) :: PLabel) ->+                    {-# LINE 164 "src-ag/LOAG/Prepare.ag" #-}+                    map ((FieldAtt _atp     _lhsIpll "lhs") . alab) $+                          _lhsIan _atp+                    {-# LINE 1611 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule123 #-}+   {-# LINE 166 "src-ag/LOAG/Prepare.ag" #-}+   rule123 = \ _flab ->+                    {-# LINE 166 "src-ag/LOAG/Prepare.ag" #-}+                    _flab+                    {-# LINE 1617 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule124 #-}+   {-# LINE 167 "src-ag/LOAG/Prepare.ag" #-}+   rule124 = \ ((_lhsIpll) :: PLabel) ->+                    {-# LINE 167 "src-ag/LOAG/Prepare.ag" #-}+                    (_lhsIpll, "lhs")+                    {-# LINE 1623 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule125 #-}+   {-# LINE 168 "src-ag/LOAG/Prepare.ag" #-}+   rule125 = \ _atp _label ((_lhsIain) :: MyType -> MyAttributes) ->+                    {-# LINE 168 "src-ag/LOAG/Prepare.ag" #-}+                    Set.fromList $ handAllOut _label     $ _lhsIain _atp+                    {-# LINE 1629 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule126 #-}+   {-# LINE 169 "src-ag/LOAG/Prepare.ag" #-}+   rule126 = \ _atp _label ((_lhsIasn) :: MyType -> MyAttributes) ->+                    {-# LINE 169 "src-ag/LOAG/Prepare.ag" #-}+                    Set.fromList $ handAllOut _label     $ _lhsIasn _atp+                    {-# LINE 1635 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule127 #-}+   {-# LINE 170 "src-ag/LOAG/Prepare.ag" #-}+   rule127 = \ _foccsI _foccsS _label ->+                    {-# LINE 170 "src-ag/LOAG/Prepare.ag" #-}+                    Map.singleton _label     (_foccsI    , _foccsS    )+                    {-# LINE 1641 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule128 #-}+   {-# LINE 171 "src-ag/LOAG/Prepare.ag" #-}+   rule128 = \ _label ((_lhsIdty) :: MyType) ->+                    {-# LINE 171 "src-ag/LOAG/Prepare.ag" #-}+                    Map.singleton _label     _lhsIdty+                    {-# LINE 1647 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule129 #-}+   rule129 = \ ((_fattsIap) :: A_P) ->+     _fattsIap+   {-# INLINE rule130 #-}+   rule130 = \  (_ :: ()) ->+     []+   {-# INLINE rule131 #-}+   rule131 = \ _fieldMap ->+     _fieldMap+   {-# INLINE rule132 #-}+   rule132 = \ ((_fattsIgen) :: Map Int Int) ->+     _fattsIgen+   {-# INLINE rule133 #-}+   rule133 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule134 #-}+   rule134 = \ ((_fattsIinss) :: Map Int [Int]) ->+     _fattsIinss+   {-# INLINE rule135 #-}+   rule135 = \ ((_fattsIofld) :: [(Int, Int)]) ->+     _fattsIofld+   {-# INLINE rule136 #-}+   rule136 = \ ((_fattsIpmp) :: PMP) ->+     _fattsIpmp+   {-# INLINE rule137 #-}+   rule137 = \ ((_fattsIpmpr) :: PMP_R) ->+     _fattsIpmpr+   {-# INLINE rule138 #-}+   rule138 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule139 #-}+   rule139 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule140 #-}+   rule140 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule141 #-}+   rule141 = \  (_ :: ()) ->+     []+   {-# INLINE rule142 #-}+   rule142 = \ _self ->+     _self+   {-# INLINE rule143 #-}+   rule143 = \ _flab ->+     _flab+   {-# INLINE rule144 #-}+   rule144 = \ ((_fattsIolab) :: Int) ->+     _fattsIolab+   {-# INLINE rule145 #-}+   rule145 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule146 #-}+   rule146 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule147 #-}+   rule147 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab++-- Expression --------------------------------------------------+-- wrapper+data Inh_Expression  = Inh_Expression { pll_Inh_Expression :: (PLabel), pts_Inh_Expression :: (Set.Set (FLabel)) }+data Syn_Expression  = Syn_Expression { copy_Syn_Expression :: (Expression), self_Syn_Expression :: (Expression), used_Syn_Expression :: (Set.Set MyOccurrence) }+{-# INLINABLE wrap_Expression #-}+wrap_Expression :: T_Expression  -> Inh_Expression  -> (Syn_Expression )+wrap_Expression (T_Expression act) (Inh_Expression _lhsIpll _lhsIpts) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg40 = T_Expression_vIn40 _lhsIpll _lhsIpts+        (T_Expression_vOut40 _lhsOcopy _lhsOself _lhsOused) <- return (inv_Expression_s41 sem arg40)+        return (Syn_Expression _lhsOcopy _lhsOself _lhsOused)+   )++-- cata+{-# INLINE sem_Expression #-}+sem_Expression :: Expression  -> T_Expression +sem_Expression ( Expression pos_ tks_  ) = sem_Expression_Expression pos_ tks_ ++-- semantic domain+newtype T_Expression  = T_Expression {+                                     attach_T_Expression :: Identity (T_Expression_s41 )+                                     }+newtype T_Expression_s41  = C_Expression_s41 {+                                             inv_Expression_s41 :: (T_Expression_v40 )+                                             }+data T_Expression_s42  = C_Expression_s42+type T_Expression_v40  = (T_Expression_vIn40 ) -> (T_Expression_vOut40 )+data T_Expression_vIn40  = T_Expression_vIn40 (PLabel) (Set.Set (FLabel))+data T_Expression_vOut40  = T_Expression_vOut40 (Expression) (Expression) (Set.Set MyOccurrence)+{-# NOINLINE sem_Expression_Expression #-}+sem_Expression_Expression :: (Pos) -> ([HsToken]) ->  T_Expression +sem_Expression_Expression arg_pos_ arg_tks_  = T_Expression (return st41) where+   {-# NOINLINE st41 #-}+   st41 = let+      v40 :: T_Expression_v40 +      v40 = \ (T_Expression_vIn40 _lhsIpll _lhsIpts) -> ( let+         _tokensX59 = Control.Monad.Identity.runIdentity (attach_T_HsTokensRoot ((sem_HsTokensRoot tokens_val_)))+         (T_HsTokensRoot_vOut58 _tokensIself _tokensIused) = inv_HsTokensRoot_s59 _tokensX59 (T_HsTokensRoot_vIn58 _tokensOpll _tokensOpts)+         tokens_val_ = rule148 arg_tks_+         _tokensOpll = rule149 _lhsIpll+         _tokensOpts = rule150 _lhsIpts+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule151 _tokensIused+         _copy = rule152 arg_pos_ arg_tks_+         _self = rule153 arg_pos_ arg_tks_+         _lhsOcopy :: Expression+         _lhsOcopy = rule154 _copy+         _lhsOself :: Expression+         _lhsOself = rule155 _self+         __result_ = T_Expression_vOut40 _lhsOcopy _lhsOself _lhsOused+         in __result_ )+     in C_Expression_s41 v40+   {-# INLINE rule148 #-}+   {-# LINE 273 "src-ag/LOAG/Prepare.ag" #-}+   rule148 = \ tks_ ->+                    {-# LINE 273 "src-ag/LOAG/Prepare.ag" #-}+                    HsTokensRoot tks_+                    {-# LINE 1764 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule149 #-}+   {-# LINE 274 "src-ag/LOAG/Prepare.ag" #-}+   rule149 = \ ((_lhsIpll) :: PLabel) ->+                    {-# LINE 274 "src-ag/LOAG/Prepare.ag" #-}+                    _lhsIpll+                    {-# LINE 1770 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule150 #-}+   {-# LINE 275 "src-ag/LOAG/Prepare.ag" #-}+   rule150 = \ ((_lhsIpts) :: Set.Set (FLabel)) ->+                    {-# LINE 275 "src-ag/LOAG/Prepare.ag" #-}+                    _lhsIpts+                    {-# LINE 1776 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule151 #-}+   {-# LINE 276 "src-ag/LOAG/Prepare.ag" #-}+   rule151 = \ ((_tokensIused) :: Set.Set MyOccurrence) ->+                    {-# LINE 276 "src-ag/LOAG/Prepare.ag" #-}+                    _tokensIused+                    {-# LINE 1782 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule152 #-}+   rule152 = \ pos_ tks_ ->+     Expression pos_ tks_+   {-# INLINE rule153 #-}+   rule153 = \ pos_ tks_ ->+     Expression pos_ tks_+   {-# INLINE rule154 #-}+   rule154 = \ _copy ->+     _copy+   {-# INLINE rule155 #-}+   rule155 = \ _self ->+     _self++-- FieldAtt ----------------------------------------------------+-- wrapper+data Inh_FieldAtt  = Inh_FieldAtt { an_Inh_FieldAtt :: (MyType -> MyAttributes), flab_Inh_FieldAtt :: (Int), nmprf_Inh_FieldAtt :: (NMP_R), olab_Inh_FieldAtt :: (Int) }+data Syn_FieldAtt  = Syn_FieldAtt { ap_Syn_FieldAtt :: (A_P), flab_Syn_FieldAtt :: (Int), fty_Syn_FieldAtt :: (FTY), gen_Syn_FieldAtt :: (Map Int Int), inss_Syn_FieldAtt :: (Map Int [Int]), ofld_Syn_FieldAtt :: ([(Int, Int)]), olab_Syn_FieldAtt :: (Int), pmp_Syn_FieldAtt :: (PMP), pmpr_Syn_FieldAtt :: (PMP_R), self_Syn_FieldAtt :: (FieldAtt) }+{-# INLINABLE wrap_FieldAtt #-}+wrap_FieldAtt :: T_FieldAtt  -> Inh_FieldAtt  -> (Syn_FieldAtt )+wrap_FieldAtt (T_FieldAtt act) (Inh_FieldAtt _lhsIan _lhsIflab _lhsInmprf _lhsIolab) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg43 = T_FieldAtt_vIn43 _lhsIan _lhsIflab _lhsInmprf _lhsIolab+        (T_FieldAtt_vOut43 _lhsOap _lhsOflab _lhsOfty _lhsOgen _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOself) <- return (inv_FieldAtt_s44 sem arg43)+        return (Syn_FieldAtt _lhsOap _lhsOflab _lhsOfty _lhsOgen _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOself)+   )++-- cata+{-# INLINE sem_FieldAtt #-}+sem_FieldAtt :: FieldAtt  -> T_FieldAtt +sem_FieldAtt ( FieldAtt t_ p_ f_ a_ ) = sem_FieldAtt_FieldAtt t_ p_ f_ a_++-- semantic domain+newtype T_FieldAtt  = T_FieldAtt {+                                 attach_T_FieldAtt :: Identity (T_FieldAtt_s44 )+                                 }+newtype T_FieldAtt_s44  = C_FieldAtt_s44 {+                                         inv_FieldAtt_s44 :: (T_FieldAtt_v43 )+                                         }+data T_FieldAtt_s45  = C_FieldAtt_s45+type T_FieldAtt_v43  = (T_FieldAtt_vIn43 ) -> (T_FieldAtt_vOut43 )+data T_FieldAtt_vIn43  = T_FieldAtt_vIn43 (MyType -> MyAttributes) (Int) (NMP_R) (Int)+data T_FieldAtt_vOut43  = T_FieldAtt_vOut43 (A_P) (Int) (FTY) (Map Int Int) (Map Int [Int]) ([(Int, Int)]) (Int) (PMP) (PMP_R) (FieldAtt)+{-# NOINLINE sem_FieldAtt_FieldAtt #-}+sem_FieldAtt_FieldAtt :: (MyType) -> (PLabel) -> (FLabel) -> (ALabel) -> T_FieldAtt +sem_FieldAtt_FieldAtt arg_t_ arg_p_ arg_f_ arg_a_ = T_FieldAtt (return st44) where+   {-# NOINLINE st44 #-}+   st44 = let+      v43 :: T_FieldAtt_v43 +      v43 = \ (T_FieldAtt_vIn43 _lhsIan _lhsIflab _lhsInmprf _lhsIolab) -> ( let+         _olab = rule156 _lhsIolab+         _alab = rule157 _att _lhsInmprf+         _att = rule158 arg_a_ arg_t_+         _occ = rule159 arg_a_ arg_f_ arg_p_+         _pmp = rule160 _occ _olab+         _pmpr = rule161 _occ _olab+         _inss = rule162 _alab _olab+         _gen = rule163 _alab _olab+         _lhsOap :: A_P+         _lhsOap = rule164 _occ arg_p_+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule165 _lhsIflab _olab+         _lhsOfty :: FTY+         _lhsOfty = rule166  ()+         _lhsOgen :: Map Int Int+         _lhsOgen = rule167 _gen+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule168 _inss+         _lhsOpmp :: PMP+         _lhsOpmp = rule169 _pmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule170 _pmpr+         _self = rule171 arg_a_ arg_f_ arg_p_ arg_t_+         _lhsOself :: FieldAtt+         _lhsOself = rule172 _self+         _lhsOflab :: Int+         _lhsOflab = rule173 _lhsIflab+         _lhsOolab :: Int+         _lhsOolab = rule174 _olab+         __result_ = T_FieldAtt_vOut43 _lhsOap _lhsOflab _lhsOfty _lhsOgen _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOself+         in __result_ )+     in C_FieldAtt_s44 v43+   {-# INLINE rule156 #-}+   {-# LINE 193 "src-ag/LOAG/Prepare.ag" #-}+   rule156 = \ ((_lhsIolab) :: Int) ->+                    {-# LINE 193 "src-ag/LOAG/Prepare.ag" #-}+                    _lhsIolab + 1+                    {-# LINE 1870 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule157 #-}+   {-# LINE 194 "src-ag/LOAG/Prepare.ag" #-}+   rule157 = \ _att ((_lhsInmprf) :: NMP_R) ->+                    {-# LINE 194 "src-ag/LOAG/Prepare.ag" #-}+                    findWithErr _lhsInmprf "getting attr label" _att+                    {-# LINE 1876 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule158 #-}+   {-# LINE 195 "src-ag/LOAG/Prepare.ag" #-}+   rule158 = \ a_ t_ ->+                    {-# LINE 195 "src-ag/LOAG/Prepare.ag" #-}+                    t_ <.> a_+                    {-# LINE 1882 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule159 #-}+   {-# LINE 196 "src-ag/LOAG/Prepare.ag" #-}+   rule159 = \ a_ f_ p_ ->+                    {-# LINE 196 "src-ag/LOAG/Prepare.ag" #-}+                    (p_, f_) >.< a_+                    {-# LINE 1888 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule160 #-}+   {-# LINE 197 "src-ag/LOAG/Prepare.ag" #-}+   rule160 = \ _occ _olab ->+                    {-# LINE 197 "src-ag/LOAG/Prepare.ag" #-}+                    Map.singleton _olab     _occ+                    {-# LINE 1894 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule161 #-}+   {-# LINE 198 "src-ag/LOAG/Prepare.ag" #-}+   rule161 = \ _occ _olab ->+                    {-# LINE 198 "src-ag/LOAG/Prepare.ag" #-}+                    Map.singleton _occ      _olab+                    {-# LINE 1900 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule162 #-}+   {-# LINE 199 "src-ag/LOAG/Prepare.ag" #-}+   rule162 = \ _alab _olab ->+                    {-# LINE 199 "src-ag/LOAG/Prepare.ag" #-}+                    Map.singleton _alab     [_olab    ]+                    {-# LINE 1906 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule163 #-}+   {-# LINE 200 "src-ag/LOAG/Prepare.ag" #-}+   rule163 = \ _alab _olab ->+                    {-# LINE 200 "src-ag/LOAG/Prepare.ag" #-}+                    Map.singleton _olab     _alab+                    {-# LINE 1912 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule164 #-}+   {-# LINE 201 "src-ag/LOAG/Prepare.ag" #-}+   rule164 = \ _occ p_ ->+                    {-# LINE 201 "src-ag/LOAG/Prepare.ag" #-}+                    Map.singleton p_ [_occ    ]+                    {-# LINE 1918 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule165 #-}+   {-# LINE 202 "src-ag/LOAG/Prepare.ag" #-}+   rule165 = \ ((_lhsIflab) :: Int) _olab ->+                    {-# LINE 202 "src-ag/LOAG/Prepare.ag" #-}+                    [(_olab    , _lhsIflab)]+                    {-# LINE 1924 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule166 #-}+   rule166 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule167 #-}+   rule167 = \ _gen ->+     _gen+   {-# INLINE rule168 #-}+   rule168 = \ _inss ->+     _inss+   {-# INLINE rule169 #-}+   rule169 = \ _pmp ->+     _pmp+   {-# INLINE rule170 #-}+   rule170 = \ _pmpr ->+     _pmpr+   {-# INLINE rule171 #-}+   rule171 = \ a_ f_ p_ t_ ->+     FieldAtt t_ p_ f_ a_+   {-# INLINE rule172 #-}+   rule172 = \ _self ->+     _self+   {-# INLINE rule173 #-}+   rule173 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule174 #-}+   rule174 = \ _olab ->+     _olab++-- FieldAtts ---------------------------------------------------+-- wrapper+data Inh_FieldAtts  = Inh_FieldAtts { an_Inh_FieldAtts :: (MyType -> MyAttributes), flab_Inh_FieldAtts :: (Int), nmprf_Inh_FieldAtts :: (NMP_R), olab_Inh_FieldAtts :: (Int) }+data Syn_FieldAtts  = Syn_FieldAtts { ap_Syn_FieldAtts :: (A_P), flab_Syn_FieldAtts :: (Int), fty_Syn_FieldAtts :: (FTY), gen_Syn_FieldAtts :: (Map Int Int), inss_Syn_FieldAtts :: (Map Int [Int]), ofld_Syn_FieldAtts :: ([(Int, Int)]), olab_Syn_FieldAtts :: (Int), pmp_Syn_FieldAtts :: (PMP), pmpr_Syn_FieldAtts :: (PMP_R), self_Syn_FieldAtts :: (FieldAtts) }+{-# INLINABLE wrap_FieldAtts #-}+wrap_FieldAtts :: T_FieldAtts  -> Inh_FieldAtts  -> (Syn_FieldAtts )+wrap_FieldAtts (T_FieldAtts act) (Inh_FieldAtts _lhsIan _lhsIflab _lhsInmprf _lhsIolab) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg46 = T_FieldAtts_vIn46 _lhsIan _lhsIflab _lhsInmprf _lhsIolab+        (T_FieldAtts_vOut46 _lhsOap _lhsOflab _lhsOfty _lhsOgen _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOself) <- return (inv_FieldAtts_s47 sem arg46)+        return (Syn_FieldAtts _lhsOap _lhsOflab _lhsOfty _lhsOgen _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOself)+   )++-- cata+{-# NOINLINE sem_FieldAtts #-}+sem_FieldAtts :: FieldAtts  -> T_FieldAtts +sem_FieldAtts list = Prelude.foldr sem_FieldAtts_Cons sem_FieldAtts_Nil (Prelude.map sem_FieldAtt list)++-- semantic domain+newtype T_FieldAtts  = T_FieldAtts {+                                   attach_T_FieldAtts :: Identity (T_FieldAtts_s47 )+                                   }+newtype T_FieldAtts_s47  = C_FieldAtts_s47 {+                                           inv_FieldAtts_s47 :: (T_FieldAtts_v46 )+                                           }+data T_FieldAtts_s48  = C_FieldAtts_s48+type T_FieldAtts_v46  = (T_FieldAtts_vIn46 ) -> (T_FieldAtts_vOut46 )+data T_FieldAtts_vIn46  = T_FieldAtts_vIn46 (MyType -> MyAttributes) (Int) (NMP_R) (Int)+data T_FieldAtts_vOut46  = T_FieldAtts_vOut46 (A_P) (Int) (FTY) (Map Int Int) (Map Int [Int]) ([(Int, Int)]) (Int) (PMP) (PMP_R) (FieldAtts)+{-# NOINLINE sem_FieldAtts_Cons #-}+sem_FieldAtts_Cons :: T_FieldAtt  -> T_FieldAtts  -> T_FieldAtts +sem_FieldAtts_Cons arg_hd_ arg_tl_ = T_FieldAtts (return st47) where+   {-# NOINLINE st47 #-}+   st47 = let+      v46 :: T_FieldAtts_v46 +      v46 = \ (T_FieldAtts_vIn46 _lhsIan _lhsIflab _lhsInmprf _lhsIolab) -> ( let+         _hdX44 = Control.Monad.Identity.runIdentity (attach_T_FieldAtt (arg_hd_))+         _tlX47 = Control.Monad.Identity.runIdentity (attach_T_FieldAtts (arg_tl_))+         (T_FieldAtt_vOut43 _hdIap _hdIflab _hdIfty _hdIgen _hdIinss _hdIofld _hdIolab _hdIpmp _hdIpmpr _hdIself) = inv_FieldAtt_s44 _hdX44 (T_FieldAtt_vIn43 _hdOan _hdOflab _hdOnmprf _hdOolab)+         (T_FieldAtts_vOut46 _tlIap _tlIflab _tlIfty _tlIgen _tlIinss _tlIofld _tlIolab _tlIpmp _tlIpmpr _tlIself) = inv_FieldAtts_s47 _tlX47 (T_FieldAtts_vIn46 _tlOan _tlOflab _tlOnmprf _tlOolab)+         _lhsOap :: A_P+         _lhsOap = rule175 _hdIap _tlIap+         _lhsOfty :: FTY+         _lhsOfty = rule176 _hdIfty _tlIfty+         _lhsOgen :: Map Int Int+         _lhsOgen = rule177 _hdIgen _tlIgen+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule178 _hdIinss _tlIinss+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule179 _hdIofld _tlIofld+         _lhsOpmp :: PMP+         _lhsOpmp = rule180 _hdIpmp _tlIpmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule181 _hdIpmpr _tlIpmpr+         _self = rule182 _hdIself _tlIself+         _lhsOself :: FieldAtts+         _lhsOself = rule183 _self+         _lhsOflab :: Int+         _lhsOflab = rule184 _tlIflab+         _lhsOolab :: Int+         _lhsOolab = rule185 _tlIolab+         _hdOan = rule186 _lhsIan+         _hdOflab = rule187 _lhsIflab+         _hdOnmprf = rule188 _lhsInmprf+         _hdOolab = rule189 _lhsIolab+         _tlOan = rule190 _lhsIan+         _tlOflab = rule191 _hdIflab+         _tlOnmprf = rule192 _lhsInmprf+         _tlOolab = rule193 _hdIolab+         __result_ = T_FieldAtts_vOut46 _lhsOap _lhsOflab _lhsOfty _lhsOgen _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOself+         in __result_ )+     in C_FieldAtts_s47 v46+   {-# INLINE rule175 #-}+   rule175 = \ ((_hdIap) :: A_P) ((_tlIap) :: A_P) ->+     (Map.unionWith (++) _hdIap _tlIap)+   {-# INLINE rule176 #-}+   rule176 = \ ((_hdIfty) :: FTY) ((_tlIfty) :: FTY) ->+     (Map.union _hdIfty _tlIfty)+   {-# INLINE rule177 #-}+   rule177 = \ ((_hdIgen) :: Map Int Int) ((_tlIgen) :: Map Int Int) ->+     (Map.union _hdIgen _tlIgen)+   {-# INLINE rule178 #-}+   rule178 = \ ((_hdIinss) :: Map Int [Int]) ((_tlIinss) :: Map Int [Int]) ->+     (Map.unionWith (++) _hdIinss _tlIinss)+   {-# INLINE rule179 #-}+   rule179 = \ ((_hdIofld) :: [(Int, Int)]) ((_tlIofld) :: [(Int, Int)]) ->+     ((++) _hdIofld _tlIofld)+   {-# INLINE rule180 #-}+   rule180 = \ ((_hdIpmp) :: PMP) ((_tlIpmp) :: PMP) ->+     (Map.union _hdIpmp _tlIpmp)+   {-# INLINE rule181 #-}+   rule181 = \ ((_hdIpmpr) :: PMP_R) ((_tlIpmpr) :: PMP_R) ->+     (Map.union _hdIpmpr _tlIpmpr)+   {-# INLINE rule182 #-}+   rule182 = \ ((_hdIself) :: FieldAtt) ((_tlIself) :: FieldAtts) ->+     (:) _hdIself _tlIself+   {-# INLINE rule183 #-}+   rule183 = \ _self ->+     _self+   {-# INLINE rule184 #-}+   rule184 = \ ((_tlIflab) :: Int) ->+     _tlIflab+   {-# INLINE rule185 #-}+   rule185 = \ ((_tlIolab) :: Int) ->+     _tlIolab+   {-# INLINE rule186 #-}+   rule186 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule187 #-}+   rule187 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule188 #-}+   rule188 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule189 #-}+   rule189 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab+   {-# INLINE rule190 #-}+   rule190 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule191 #-}+   rule191 = \ ((_hdIflab) :: Int) ->+     _hdIflab+   {-# INLINE rule192 #-}+   rule192 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule193 #-}+   rule193 = \ ((_hdIolab) :: Int) ->+     _hdIolab+{-# NOINLINE sem_FieldAtts_Nil #-}+sem_FieldAtts_Nil ::  T_FieldAtts +sem_FieldAtts_Nil  = T_FieldAtts (return st47) where+   {-# NOINLINE st47 #-}+   st47 = let+      v46 :: T_FieldAtts_v46 +      v46 = \ (T_FieldAtts_vIn46 _lhsIan _lhsIflab _lhsInmprf _lhsIolab) -> ( let+         _lhsOap :: A_P+         _lhsOap = rule194  ()+         _lhsOfty :: FTY+         _lhsOfty = rule195  ()+         _lhsOgen :: Map Int Int+         _lhsOgen = rule196  ()+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule197  ()+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule198  ()+         _lhsOpmp :: PMP+         _lhsOpmp = rule199  ()+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule200  ()+         _self = rule201  ()+         _lhsOself :: FieldAtts+         _lhsOself = rule202 _self+         _lhsOflab :: Int+         _lhsOflab = rule203 _lhsIflab+         _lhsOolab :: Int+         _lhsOolab = rule204 _lhsIolab+         __result_ = T_FieldAtts_vOut46 _lhsOap _lhsOflab _lhsOfty _lhsOgen _lhsOinss _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOself+         in __result_ )+     in C_FieldAtts_s47 v46+   {-# INLINE rule194 #-}+   rule194 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule195 #-}+   rule195 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule196 #-}+   rule196 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule197 #-}+   rule197 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule198 #-}+   rule198 = \  (_ :: ()) ->+     []+   {-# INLINE rule199 #-}+   rule199 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule200 #-}+   rule200 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule201 #-}+   rule201 = \  (_ :: ()) ->+     []+   {-# INLINE rule202 #-}+   rule202 = \ _self ->+     _self+   {-# INLINE rule203 #-}+   rule203 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule204 #-}+   rule204 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab++-- Grammar -----------------------------------------------------+-- wrapper+data Inh_Grammar  = Inh_Grammar { options_Inh_Grammar :: (Options) }+data Syn_Grammar  = Syn_Grammar { ads_Syn_Grammar :: (Maybe PP_Doc), errors_Syn_Grammar :: (Seq.Seq Error), inhmap_Syn_Grammar :: (Map.Map NontermIdent Attributes), localSigMap_Syn_Grammar :: (Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))), output_Syn_Grammar :: (ExecutionPlan), self_Syn_Grammar :: (Grammar), synmap_Syn_Grammar :: (Map.Map NontermIdent Attributes) }+{-# INLINABLE wrap_Grammar #-}+wrap_Grammar :: T_Grammar  -> Inh_Grammar  -> (Syn_Grammar )+wrap_Grammar (T_Grammar act) (Inh_Grammar _lhsIoptions) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg49 = T_Grammar_vIn49 _lhsIoptions+        (T_Grammar_vOut49 _lhsOads _lhsOerrors _lhsOinhmap _lhsOlocalSigMap _lhsOoutput _lhsOself _lhsOsynmap) <- return (inv_Grammar_s50 sem arg49)+        return (Syn_Grammar _lhsOads _lhsOerrors _lhsOinhmap _lhsOlocalSigMap _lhsOoutput _lhsOself _lhsOsynmap)+   )++-- cata+{-# INLINE sem_Grammar #-}+sem_Grammar :: Grammar  -> T_Grammar +sem_Grammar ( Grammar typeSyns_ useMap_ derivings_ wrappers_ nonts_ pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ quantMap_ uniqueMap_ augmentsMap_ aroundsMap_ mergeMap_  ) = sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ ( sem_Nonterminals nonts_ ) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ quantMap_ uniqueMap_ augmentsMap_ aroundsMap_ mergeMap_ ++-- semantic domain+newtype T_Grammar  = T_Grammar {+                               attach_T_Grammar :: Identity (T_Grammar_s50 )+                               }+newtype T_Grammar_s50  = C_Grammar_s50 {+                                       inv_Grammar_s50 :: (T_Grammar_v49 )+                                       }+data T_Grammar_s51  = C_Grammar_s51+type T_Grammar_v49  = (T_Grammar_vIn49 ) -> (T_Grammar_vOut49 )+data T_Grammar_vIn49  = T_Grammar_vIn49 (Options)+data T_Grammar_vOut49  = T_Grammar_vOut49 (Maybe PP_Doc) (Seq.Seq Error) (Map.Map NontermIdent Attributes) (Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))) (ExecutionPlan) (Grammar) (Map.Map NontermIdent Attributes)+{-# NOINLINE sem_Grammar_Grammar #-}+sem_Grammar_Grammar :: (TypeSyns) -> (UseMap) -> (Derivings) -> (Set NontermIdent) -> T_Nonterminals  -> (PragmaMap) -> (AttrOrderMap) -> (ParamMap) -> (ContextMap) -> (QuantMap) -> (UniqueMap) -> (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) -> (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) -> (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) ->  T_Grammar +sem_Grammar_Grammar arg_typeSyns_ arg_useMap_ arg_derivings_ arg_wrappers_ arg_nonts_ arg_pragmas_ arg_manualAttrOrderMap_ arg_paramMap_ arg_contextMap_ arg_quantMap_ arg_uniqueMap_ arg_augmentsMap_ arg_aroundsMap_ arg_mergeMap_  = T_Grammar (return st50) where+   {-# NOINLINE st50 #-}+   st50 = let+      v49 :: T_Grammar_v49 +      v49 = \ (T_Grammar_vIn49 _lhsIoptions) -> ( let+         _nontsX74 = Control.Monad.Identity.runIdentity (attach_T_Nonterminals (arg_nonts_))+         _smfX62 = Control.Monad.Identity.runIdentity (attach_T_LOAGRep ((sem_LOAGRep smf_val_)))+         (T_Nonterminals_vOut73 _nontsIads _nontsIap _nontsIenonts _nontsIfdps _nontsIfieldMap _nontsIflab _nontsIfsInP _nontsIfty _nontsIgen _nontsIhoMap _nontsIinhmap _nontsIinhs _nontsIinss _nontsIlfp _nontsIlfpr _nontsIlocalSigMap _nontsIntDeps _nontsIntHoDeps _nontsIofld _nontsIolab _nontsIpmp _nontsIpmpr _nontsIps _nontsIruleMap _nontsIrulenumber _nontsIself _nontsIsfp _nontsIsynmap _nontsIsyns _nontsIvisMap _nontsIvisitnum) = inv_Nonterminals_s74 _nontsX74 (T_Nonterminals_vIn73 _nontsOain _nontsOan _nontsOaroundMap _nontsOasn _nontsOaugM _nontsOclassContexts _nontsOclosedHoNtDeps _nontsOclosedHoNtRevDeps _nontsOclosedNtDeps _nontsOflab _nontsOfty _nontsOftyf _nontsOhoMapf _nontsOlfpf _nontsOmergeMap _nontsOnmp _nontsOnmprf _nontsOolab _nontsOoptions _nontsOpmpf _nontsOpmprf _nontsOres_ads _nontsOrulenumber _nontsOsched _nontsOtdp _nontsOvisMapf _nontsOvisitnum)+         (T_LOAGRep_vOut61 _smfIself) = inv_LOAGRep_s62 _smfX62 (T_LOAGRep_vIn61 )+         _closedNtDeps = rule205 _nontsIntDeps+         _closedHoNtDeps = rule206 _nontsIntHoDeps+         _closedHoNtRevDeps = rule207 _closedHoNtDeps+         _nontsOclassContexts = rule208 arg_contextMap_+         _nontsOaroundMap = rule209 arg_aroundsMap_+         _nontsOmergeMap = rule210 arg_mergeMap_+         _nontsOrulenumber = rule211  ()+         _initO = rule212 _nontsIpmp+         smf_val_ = rule213 _ain _an _asn _initO _nmp _nmpr _nontsIap _nontsIfieldMap _nontsIfsInP _nontsIfty _nontsIgen _nontsIinss _nontsIofld _nontsIpmp _nontsIpmpr _nontsIps _sfp+         _nmp = rule214 _atts+         _nmpr = rule215 _atts+         _an = rule216 _ain _asn+         _ain = rule217 _nontsIinhs+         _asn = rule218 _nontsIsyns+         _atts = rule219 _an+         _occs = rule220 _nontsIap+         _nontsOaugM = rule221 arg_manualAttrOrderMap_+         _nontsOain = rule222 _ain+         _nontsOasn = rule223 _asn+         _nontsOpmpf = rule224 _nontsIpmp+         _nontsOpmprf = rule225 _nontsIpmpr+         _nontsOlfpf = rule226 _nontsIlfp+         _nontsOhoMapf = rule227 _nontsIhoMap+         _nontsOftyf = rule228 _nontsIfty+         _nontsOfty = rule229 _nontsIfty+         _ps = rule230 _nontsIps+         _nontsOan = rule231 _an+         _nontsOnmprf = rule232 _nmpr+         _nontsOolab = rule233 _nmp+         _nontsOflab = rule234  ()+         _sfp = rule235 _nontsIlfp _nontsIsfp+         _lhsOerrors :: Seq.Seq Error+         _lhsOerrors = rule236 _schedRes+         _lhsOads :: Maybe PP_Doc+         _lhsOads = rule237 _lhsIoptions _nontsIpmp _schedRes+         _lhsOoutput :: ExecutionPlan+         _lhsOoutput = rule238 _nontsIenonts arg_derivings_ arg_typeSyns_ arg_wrappers_+         _nontsOsched = rule239 _schedRes+         _nontsOtdp = rule240 _schedRes+         _schedRes = rule241 _ag _lhsIoptions _loagRes _nontsIads _self _smfIself+         _loagRes = rule242 _ag _lhsIoptions+         _ag = rule243 _self _smfIself+         _nontsOres_ads = rule244 _schedRes+         _nontsOvisMapf = rule245 _nontsIvisMap+         _nontsOvisitnum = rule246  ()+         _lhsOinhmap :: Map.Map NontermIdent Attributes+         _lhsOinhmap = rule247 _nontsIinhmap+         _lhsOlocalSigMap :: Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))+         _lhsOlocalSigMap = rule248 _nontsIlocalSigMap+         _lhsOsynmap :: Map.Map NontermIdent Attributes+         _lhsOsynmap = rule249 _nontsIsynmap+         _self = rule250 _nontsIself arg_aroundsMap_ arg_augmentsMap_ arg_contextMap_ arg_derivings_ arg_manualAttrOrderMap_ arg_mergeMap_ arg_paramMap_ arg_pragmas_ arg_quantMap_ arg_typeSyns_ arg_uniqueMap_ arg_useMap_ arg_wrappers_+         _lhsOself :: Grammar+         _lhsOself = rule251 _self+         _nontsOclosedHoNtDeps = rule252 _closedHoNtDeps+         _nontsOclosedHoNtRevDeps = rule253 _closedHoNtRevDeps+         _nontsOclosedNtDeps = rule254 _closedNtDeps+         _nontsOnmp = rule255 _nmp+         _nontsOoptions = rule256 _lhsIoptions+         __result_ = T_Grammar_vOut49 _lhsOads _lhsOerrors _lhsOinhmap _lhsOlocalSigMap _lhsOoutput _lhsOself _lhsOsynmap+         in __result_ )+     in C_Grammar_s50 v49+   {-# INLINE rule205 #-}+   {-# LINE 40 "src-ag/ExecutionPlanCommon.ag" #-}+   rule205 = \ ((_nontsIntDeps) :: Map NontermIdent (Set NontermIdent)) ->+                            {-# LINE 40 "src-ag/ExecutionPlanCommon.ag" #-}+                            closeMap _nontsIntDeps+                            {-# LINE 2256 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule206 #-}+   {-# LINE 41 "src-ag/ExecutionPlanCommon.ag" #-}+   rule206 = \ ((_nontsIntHoDeps) :: Map NontermIdent (Set NontermIdent)) ->+                            {-# LINE 41 "src-ag/ExecutionPlanCommon.ag" #-}+                            closeMap _nontsIntHoDeps+                            {-# LINE 2262 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule207 #-}+   {-# LINE 42 "src-ag/ExecutionPlanCommon.ag" #-}+   rule207 = \ _closedHoNtDeps ->+                            {-# LINE 42 "src-ag/ExecutionPlanCommon.ag" #-}+                            revDeps _closedHoNtDeps+                            {-# LINE 2268 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule208 #-}+   {-# LINE 51 "src-ag/ExecutionPlanCommon.ag" #-}+   rule208 = \ contextMap_ ->+                          {-# LINE 51 "src-ag/ExecutionPlanCommon.ag" #-}+                          contextMap_+                          {-# LINE 2274 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule209 #-}+   {-# LINE 92 "src-ag/ExecutionPlanCommon.ag" #-}+   rule209 = \ aroundsMap_ ->+                      {-# LINE 92 "src-ag/ExecutionPlanCommon.ag" #-}+                      aroundsMap_+                      {-# LINE 2280 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule210 #-}+   {-# LINE 117 "src-ag/ExecutionPlanCommon.ag" #-}+   rule210 = \ mergeMap_ ->+                     {-# LINE 117 "src-ag/ExecutionPlanCommon.ag" #-}+                     mergeMap_+                     {-# LINE 2286 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule211 #-}+   {-# LINE 9 "src-ag/ExecutionPlanPre.ag" #-}+   rule211 = \  (_ :: ()) ->+                                  {-# LINE 9 "src-ag/ExecutionPlanPre.ag" #-}+                                  0+                                  {-# LINE 2292 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule212 #-}+   {-# LINE 38 "src-ag/LOAG/Prepare.ag" #-}+   rule212 = \ ((_nontsIpmp) :: PMP) ->+                 {-# LINE 38 "src-ag/LOAG/Prepare.ag" #-}+                 if Map.null _nontsIpmp then 1 else fst $ Map.findMin _nontsIpmp+                 {-# LINE 2298 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule213 #-}+   {-# LINE 40 "src-ag/LOAG/Prepare.ag" #-}+   rule213 = \ _ain _an _asn _initO _nmp _nmpr ((_nontsIap) :: A_P) ((_nontsIfieldMap) :: FMap) ((_nontsIfsInP) :: FsInP) ((_nontsIfty) :: FTY) ((_nontsIgen) :: Map Int Int) ((_nontsIinss) :: Map Int [Int]) ((_nontsIofld) :: [(Int, Int)]) ((_nontsIpmp) :: PMP) ((_nontsIpmpr) :: PMP_R) ((_nontsIps) :: [PLabel]) _sfp ->+          {-# LINE 40 "src-ag/LOAG/Prepare.ag" #-}+          LOAGRep _nontsIps _nontsIap _an+             _ain     _asn     _sfp+             _nontsIpmp _nontsIpmpr _nmp     _nmpr+             (A.array (_initO    , _initO     + Map.size _nontsIgen)  $+                  Map.toList $ _nontsIgen)+             (A.array (1,Map.size _nontsIinss) $+                  Map.toList $ _nontsIinss)+             (A.array (_initO    , _initO     + length _nontsIofld) $+                  _nontsIofld) _nontsIfty _nontsIfieldMap _nontsIfsInP+          {-# LINE 2312 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule214 #-}+   {-# LINE 49 "src-ag/LOAG/Prepare.ag" #-}+   rule214 = \ _atts ->+                 {-# LINE 49 "src-ag/LOAG/Prepare.ag" #-}+                 Map.fromList $ zip [1..] _atts+                 {-# LINE 2318 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule215 #-}+   {-# LINE 50 "src-ag/LOAG/Prepare.ag" #-}+   rule215 = \ _atts ->+                 {-# LINE 50 "src-ag/LOAG/Prepare.ag" #-}+                 Map.fromList $ zip _atts     [1..]+                 {-# LINE 2324 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule216 #-}+   {-# LINE 51 "src-ag/LOAG/Prepare.ag" #-}+   rule216 = \ _ain _asn ->+                 {-# LINE 51 "src-ag/LOAG/Prepare.ag" #-}+                 Map.unionWith (++) _ain     _asn+                 {-# LINE 2330 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule217 #-}+   {-# LINE 52 "src-ag/LOAG/Prepare.ag" #-}+   rule217 = \ ((_nontsIinhs) :: AI_N) ->+                 {-# LINE 52 "src-ag/LOAG/Prepare.ag" #-}+                 _nontsIinhs+                 {-# LINE 2336 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule218 #-}+   {-# LINE 53 "src-ag/LOAG/Prepare.ag" #-}+   rule218 = \ ((_nontsIsyns) :: AS_N) ->+                 {-# LINE 53 "src-ag/LOAG/Prepare.ag" #-}+                 _nontsIsyns+                 {-# LINE 2342 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule219 #-}+   {-# LINE 54 "src-ag/LOAG/Prepare.ag" #-}+   rule219 = \ _an ->+                 {-# LINE 54 "src-ag/LOAG/Prepare.ag" #-}+                 concat $ Map.elems _an+                 {-# LINE 2348 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule220 #-}+   {-# LINE 55 "src-ag/LOAG/Prepare.ag" #-}+   rule220 = \ ((_nontsIap) :: A_P) ->+                 {-# LINE 55 "src-ag/LOAG/Prepare.ag" #-}+                 concat $ Map.elems _nontsIap+                 {-# LINE 2354 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule221 #-}+   {-# LINE 56 "src-ag/LOAG/Prepare.ag" #-}+   rule221 = \ manualAttrOrderMap_ ->+                   {-# LINE 56 "src-ag/LOAG/Prepare.ag" #-}+                   manualAttrOrderMap_+                   {-# LINE 2360 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule222 #-}+   {-# LINE 87 "src-ag/LOAG/Prepare.ag" #-}+   rule222 = \ _ain ->+                   {-# LINE 87 "src-ag/LOAG/Prepare.ag" #-}+                   map2F _ain+                   {-# LINE 2366 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule223 #-}+   {-# LINE 88 "src-ag/LOAG/Prepare.ag" #-}+   rule223 = \ _asn ->+                   {-# LINE 88 "src-ag/LOAG/Prepare.ag" #-}+                   map2F _asn+                   {-# LINE 2372 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule224 #-}+   {-# LINE 89 "src-ag/LOAG/Prepare.ag" #-}+   rule224 = \ ((_nontsIpmp) :: PMP) ->+                    {-# LINE 89 "src-ag/LOAG/Prepare.ag" #-}+                    _nontsIpmp+                    {-# LINE 2378 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule225 #-}+   {-# LINE 90 "src-ag/LOAG/Prepare.ag" #-}+   rule225 = \ ((_nontsIpmpr) :: PMP_R) ->+                    {-# LINE 90 "src-ag/LOAG/Prepare.ag" #-}+                    _nontsIpmpr+                    {-# LINE 2384 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule226 #-}+   {-# LINE 91 "src-ag/LOAG/Prepare.ag" #-}+   rule226 = \ ((_nontsIlfp) :: SF_P) ->+                    {-# LINE 91 "src-ag/LOAG/Prepare.ag" #-}+                    _nontsIlfp+                    {-# LINE 2390 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule227 #-}+   {-# LINE 92 "src-ag/LOAG/Prepare.ag" #-}+   rule227 = \ ((_nontsIhoMap) :: HOMap) ->+                    {-# LINE 92 "src-ag/LOAG/Prepare.ag" #-}+                    _nontsIhoMap+                    {-# LINE 2396 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule228 #-}+   {-# LINE 93 "src-ag/LOAG/Prepare.ag" #-}+   rule228 = \ ((_nontsIfty) :: FTY) ->+                    {-# LINE 93 "src-ag/LOAG/Prepare.ag" #-}+                    _nontsIfty+                    {-# LINE 2402 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule229 #-}+   {-# LINE 94 "src-ag/LOAG/Prepare.ag" #-}+   rule229 = \ ((_nontsIfty) :: FTY) ->+                    {-# LINE 94 "src-ag/LOAG/Prepare.ag" #-}+                    _nontsIfty+                    {-# LINE 2408 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule230 #-}+   {-# LINE 103 "src-ag/LOAG/Prepare.ag" #-}+   rule230 = \ ((_nontsIps) :: [PLabel]) ->+                {-# LINE 103 "src-ag/LOAG/Prepare.ag" #-}+                _nontsIps+                {-# LINE 2414 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule231 #-}+   {-# LINE 150 "src-ag/LOAG/Prepare.ag" #-}+   rule231 = \ _an ->+                 {-# LINE 150 "src-ag/LOAG/Prepare.ag" #-}+                 map2F _an+                 {-# LINE 2420 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule232 #-}+   {-# LINE 151 "src-ag/LOAG/Prepare.ag" #-}+   rule232 = \ _nmpr ->+                   {-# LINE 151 "src-ag/LOAG/Prepare.ag" #-}+                   _nmpr+                   {-# LINE 2426 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule233 #-}+   {-# LINE 152 "src-ag/LOAG/Prepare.ag" #-}+   rule233 = \ _nmp ->+                   {-# LINE 152 "src-ag/LOAG/Prepare.ag" #-}+                   if Map.null _nmp     then 0 else (fst $ Map.findMax _nmp    )+                   {-# LINE 2432 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule234 #-}+   {-# LINE 153 "src-ag/LOAG/Prepare.ag" #-}+   rule234 = \  (_ :: ()) ->+                   {-# LINE 153 "src-ag/LOAG/Prepare.ag" #-}+                   0+                   {-# LINE 2438 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule235 #-}+   {-# LINE 207 "src-ag/LOAG/Prepare.ag" #-}+   rule235 = \ ((_nontsIlfp) :: SF_P) ((_nontsIsfp) :: SF_P) ->+                 {-# LINE 207 "src-ag/LOAG/Prepare.ag" #-}+                 repLocRefs _nontsIlfp _nontsIsfp+                 {-# LINE 2444 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule236 #-}+   {-# LINE 54 "src-ag/LOAG/Order.ag" #-}+   rule236 = \ _schedRes ->+                   {-# LINE 54 "src-ag/LOAG/Order.ag" #-}+                   either Seq.singleton (const Seq.empty) _schedRes+                   {-# LINE 2450 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule237 #-}+   {-# LINE 55 "src-ag/LOAG/Order.ag" #-}+   rule237 = \ ((_lhsIoptions) :: Options) ((_nontsIpmp) :: PMP) _schedRes ->+                   {-# LINE 55 "src-ag/LOAG/Order.ag" #-}+                   case either (const []) trd' _schedRes     of+                      []  -> Nothing+                      ads -> Just $ ppAds _lhsIoptions _nontsIpmp ads+                   {-# LINE 2458 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule238 #-}+   {-# LINE 58 "src-ag/LOAG/Order.ag" #-}+   rule238 = \ ((_nontsIenonts) :: ENonterminals) derivings_ typeSyns_ wrappers_ ->+                   {-# LINE 58 "src-ag/LOAG/Order.ag" #-}+                   ExecutionPlan _nontsIenonts typeSyns_ wrappers_ derivings_+                   {-# LINE 2464 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule239 #-}+   {-# LINE 60 "src-ag/LOAG/Order.ag" #-}+   rule239 = \ _schedRes ->+                      {-# LINE 60 "src-ag/LOAG/Order.ag" #-}+                      either (const Map.empty) snd' _schedRes+                      {-# LINE 2470 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule240 #-}+   {-# LINE 61 "src-ag/LOAG/Order.ag" #-}+   rule240 = \ _schedRes ->+                      {-# LINE 61 "src-ag/LOAG/Order.ag" #-}+                      either (error "no tdp") (fromJust.fst') _schedRes+                      {-# LINE 2476 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule241 #-}+   {-# LINE 63 "src-ag/LOAG/Order.ag" #-}+   rule241 = \ _ag ((_lhsIoptions) :: Options) _loagRes ((_nontsIads) :: [Edge]) _self ((_smfIself) :: LOAGRep) ->+                       {-# LINE 63 "src-ag/LOAG/Order.ag" #-}+                       if CT.loag _lhsIoptions+                          then if CT.aoag _lhsIoptions+                                  then AOAG.schedule _smfIself _self _ag     _nontsIads+                                  else _loagRes+                          else Right (Nothing,Map.empty,[])+                       {-# LINE 2486 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule242 #-}+   {-# LINE 68 "src-ag/LOAG/Order.ag" #-}+   rule242 = \ _ag ((_lhsIoptions) :: Options) ->+                    {-# LINE 68 "src-ag/LOAG/Order.ag" #-}+                    let putStrLn s = when (verbose _lhsIoptions) (IO.putStrLn s)+                    in  Right $ unsafePerformIO $ scheduleLOAG _ag     putStrLn _lhsIoptions+                    {-# LINE 2493 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule243 #-}+   {-# LINE 70 "src-ag/LOAG/Order.ag" #-}+   rule243 = \ _self ((_smfIself) :: LOAGRep) ->+               {-# LINE 70 "src-ag/LOAG/Order.ag" #-}+               repToAg _smfIself _self+               {-# LINE 2499 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule244 #-}+   {-# LINE 72 "src-ag/LOAG/Order.ag" #-}+   rule244 = \ _schedRes ->+                      {-# LINE 72 "src-ag/LOAG/Order.ag" #-}+                      either (const []) trd' _schedRes+                      {-# LINE 2505 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule245 #-}+   {-# LINE 133 "src-ag/LOAG/Order.ag" #-}+   rule245 = \ ((_nontsIvisMap) :: IMap.IntMap Int) ->+                              {-# LINE 133 "src-ag/LOAG/Order.ag" #-}+                              _nontsIvisMap+                              {-# LINE 2511 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule246 #-}+   {-# LINE 134 "src-ag/LOAG/Order.ag" #-}+   rule246 = \  (_ :: ()) ->+                               {-# LINE 134 "src-ag/LOAG/Order.ag" #-}+                               0+                               {-# LINE 2517 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule247 #-}+   rule247 = \ ((_nontsIinhmap) :: Map.Map NontermIdent Attributes) ->+     _nontsIinhmap+   {-# INLINE rule248 #-}+   rule248 = \ ((_nontsIlocalSigMap) :: Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))) ->+     _nontsIlocalSigMap+   {-# INLINE rule249 #-}+   rule249 = \ ((_nontsIsynmap) :: Map.Map NontermIdent Attributes) ->+     _nontsIsynmap+   {-# INLINE rule250 #-}+   rule250 = \ ((_nontsIself) :: Nonterminals) aroundsMap_ augmentsMap_ contextMap_ derivings_ manualAttrOrderMap_ mergeMap_ paramMap_ pragmas_ quantMap_ typeSyns_ uniqueMap_ useMap_ wrappers_ ->+     Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIself pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ quantMap_ uniqueMap_ augmentsMap_ aroundsMap_ mergeMap_+   {-# INLINE rule251 #-}+   rule251 = \ _self ->+     _self+   {-# INLINE rule252 #-}+   rule252 = \ _closedHoNtDeps ->+     _closedHoNtDeps+   {-# INLINE rule253 #-}+   rule253 = \ _closedHoNtRevDeps ->+     _closedHoNtRevDeps+   {-# INLINE rule254 #-}+   rule254 = \ _closedNtDeps ->+     _closedNtDeps+   {-# INLINE rule255 #-}+   rule255 = \ _nmp ->+     _nmp+   {-# INLINE rule256 #-}+   rule256 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions++-- HsToken -----------------------------------------------------+-- wrapper+data Inh_HsToken  = Inh_HsToken { pll_Inh_HsToken :: (PLabel), pts_Inh_HsToken :: (Set.Set (FLabel)) }+data Syn_HsToken  = Syn_HsToken { self_Syn_HsToken :: (HsToken), used_Syn_HsToken :: (Set.Set MyOccurrence) }+{-# INLINABLE wrap_HsToken #-}+wrap_HsToken :: T_HsToken  -> Inh_HsToken  -> (Syn_HsToken )+wrap_HsToken (T_HsToken act) (Inh_HsToken _lhsIpll _lhsIpts) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg52 = T_HsToken_vIn52 _lhsIpll _lhsIpts+        (T_HsToken_vOut52 _lhsOself _lhsOused) <- return (inv_HsToken_s53 sem arg52)+        return (Syn_HsToken _lhsOself _lhsOused)+   )++-- cata+{-# NOINLINE sem_HsToken #-}+sem_HsToken :: HsToken  -> T_HsToken +sem_HsToken ( AGLocal var_ pos_ rdesc_ ) = sem_HsToken_AGLocal var_ pos_ rdesc_+sem_HsToken ( AGField field_ attr_ pos_ rdesc_ ) = sem_HsToken_AGField field_ attr_ pos_ rdesc_+sem_HsToken ( HsToken value_ pos_ ) = sem_HsToken_HsToken value_ pos_+sem_HsToken ( CharToken value_ pos_ ) = sem_HsToken_CharToken value_ pos_+sem_HsToken ( StrToken value_ pos_ ) = sem_HsToken_StrToken value_ pos_+sem_HsToken ( Err mesg_ pos_ ) = sem_HsToken_Err mesg_ pos_++-- semantic domain+newtype T_HsToken  = T_HsToken {+                               attach_T_HsToken :: Identity (T_HsToken_s53 )+                               }+newtype T_HsToken_s53  = C_HsToken_s53 {+                                       inv_HsToken_s53 :: (T_HsToken_v52 )+                                       }+data T_HsToken_s54  = C_HsToken_s54+type T_HsToken_v52  = (T_HsToken_vIn52 ) -> (T_HsToken_vOut52 )+data T_HsToken_vIn52  = T_HsToken_vIn52 (PLabel) (Set.Set (FLabel))+data T_HsToken_vOut52  = T_HsToken_vOut52 (HsToken) (Set.Set MyOccurrence)+{-# NOINLINE sem_HsToken_AGLocal #-}+sem_HsToken_AGLocal :: (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken +sem_HsToken_AGLocal arg_var_ arg_pos_ arg_rdesc_ = T_HsToken (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_HsToken_v52 +      v52 = \ (T_HsToken_vIn52 _lhsIpll _lhsIpts) -> ( let+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule257 _lhsIpll _lhsIpts arg_var_+         _self = rule258 arg_pos_ arg_rdesc_ arg_var_+         _lhsOself :: HsToken+         _lhsOself = rule259 _self+         __result_ = T_HsToken_vOut52 _lhsOself _lhsOused+         in __result_ )+     in C_HsToken_s53 v52+   {-# INLINE rule257 #-}+   {-# LINE 281 "src-ag/LOAG/Prepare.ag" #-}+   rule257 = \ ((_lhsIpll) :: PLabel) ((_lhsIpts) :: Set.Set (FLabel)) var_ ->+          {-# LINE 281 "src-ag/LOAG/Prepare.ag" #-}+          case getName var_ `Set.member` _lhsIpts of+            True  -> Set.empty+            False -> Set.singleton $ (_lhsIpll, getName _LOC) >.<+                          (getName var_, drhs _LOC)+          {-# LINE 2607 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule258 #-}+   rule258 = \ pos_ rdesc_ var_ ->+     AGLocal var_ pos_ rdesc_+   {-# INLINE rule259 #-}+   rule259 = \ _self ->+     _self+{-# NOINLINE sem_HsToken_AGField #-}+sem_HsToken_AGField :: (Identifier) -> (Identifier) -> (Pos) -> (Maybe String) -> T_HsToken +sem_HsToken_AGField arg_field_ arg_attr_ arg_pos_ arg_rdesc_ = T_HsToken (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_HsToken_v52 +      v52 = \ (T_HsToken_vIn52 _lhsIpll _lhsIpts) -> ( let+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule260 _lhsIpll arg_attr_ arg_field_+         _self = rule261 arg_attr_ arg_field_ arg_pos_ arg_rdesc_+         _lhsOself :: HsToken+         _lhsOself = rule262 _self+         __result_ = T_HsToken_vOut52 _lhsOself _lhsOused+         in __result_ )+     in C_HsToken_s53 v52+   {-# INLINE rule260 #-}+   {-# LINE 289 "src-ag/LOAG/Prepare.ag" #-}+   rule260 = \ ((_lhsIpll) :: PLabel) attr_ field_ ->+                 {-# LINE 289 "src-ag/LOAG/Prepare.ag" #-}+                 Set.singleton $ (_lhsIpll, getName field_) >.<+                                  (getName attr_, drhs field_)+                 {-# LINE 2635 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule261 #-}+   rule261 = \ attr_ field_ pos_ rdesc_ ->+     AGField field_ attr_ pos_ rdesc_+   {-# INLINE rule262 #-}+   rule262 = \ _self ->+     _self+{-# NOINLINE sem_HsToken_HsToken #-}+sem_HsToken_HsToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_HsToken arg_value_ arg_pos_ = T_HsToken (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_HsToken_v52 +      v52 = \ (T_HsToken_vIn52 _lhsIpll _lhsIpts) -> ( let+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule263  ()+         _self = rule264 arg_pos_ arg_value_+         _lhsOself :: HsToken+         _lhsOself = rule265 _self+         __result_ = T_HsToken_vOut52 _lhsOself _lhsOused+         in __result_ )+     in C_HsToken_s53 v52+   {-# INLINE rule263 #-}+   rule263 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule264 #-}+   rule264 = \ pos_ value_ ->+     HsToken value_ pos_+   {-# INLINE rule265 #-}+   rule265 = \ _self ->+     _self+{-# NOINLINE sem_HsToken_CharToken #-}+sem_HsToken_CharToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_CharToken arg_value_ arg_pos_ = T_HsToken (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_HsToken_v52 +      v52 = \ (T_HsToken_vIn52 _lhsIpll _lhsIpts) -> ( let+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule266  ()+         _self = rule267 arg_pos_ arg_value_+         _lhsOself :: HsToken+         _lhsOself = rule268 _self+         __result_ = T_HsToken_vOut52 _lhsOself _lhsOused+         in __result_ )+     in C_HsToken_s53 v52+   {-# INLINE rule266 #-}+   rule266 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule267 #-}+   rule267 = \ pos_ value_ ->+     CharToken value_ pos_+   {-# INLINE rule268 #-}+   rule268 = \ _self ->+     _self+{-# NOINLINE sem_HsToken_StrToken #-}+sem_HsToken_StrToken :: (String) -> (Pos) -> T_HsToken +sem_HsToken_StrToken arg_value_ arg_pos_ = T_HsToken (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_HsToken_v52 +      v52 = \ (T_HsToken_vIn52 _lhsIpll _lhsIpts) -> ( let+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule269  ()+         _self = rule270 arg_pos_ arg_value_+         _lhsOself :: HsToken+         _lhsOself = rule271 _self+         __result_ = T_HsToken_vOut52 _lhsOself _lhsOused+         in __result_ )+     in C_HsToken_s53 v52+   {-# INLINE rule269 #-}+   rule269 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule270 #-}+   rule270 = \ pos_ value_ ->+     StrToken value_ pos_+   {-# INLINE rule271 #-}+   rule271 = \ _self ->+     _self+{-# NOINLINE sem_HsToken_Err #-}+sem_HsToken_Err :: (String) -> (Pos) -> T_HsToken +sem_HsToken_Err arg_mesg_ arg_pos_ = T_HsToken (return st53) where+   {-# NOINLINE st53 #-}+   st53 = let+      v52 :: T_HsToken_v52 +      v52 = \ (T_HsToken_vIn52 _lhsIpll _lhsIpts) -> ( let+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule272  ()+         _self = rule273 arg_mesg_ arg_pos_+         _lhsOself :: HsToken+         _lhsOself = rule274 _self+         __result_ = T_HsToken_vOut52 _lhsOself _lhsOused+         in __result_ )+     in C_HsToken_s53 v52+   {-# INLINE rule272 #-}+   rule272 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule273 #-}+   rule273 = \ mesg_ pos_ ->+     Err mesg_ pos_+   {-# INLINE rule274 #-}+   rule274 = \ _self ->+     _self++-- HsTokens ----------------------------------------------------+-- wrapper+data Inh_HsTokens  = Inh_HsTokens { pll_Inh_HsTokens :: (PLabel), pts_Inh_HsTokens :: (Set.Set (FLabel)) }+data Syn_HsTokens  = Syn_HsTokens { self_Syn_HsTokens :: (HsTokens), used_Syn_HsTokens :: (Set.Set MyOccurrence) }+{-# INLINABLE wrap_HsTokens #-}+wrap_HsTokens :: T_HsTokens  -> Inh_HsTokens  -> (Syn_HsTokens )+wrap_HsTokens (T_HsTokens act) (Inh_HsTokens _lhsIpll _lhsIpts) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg55 = T_HsTokens_vIn55 _lhsIpll _lhsIpts+        (T_HsTokens_vOut55 _lhsOself _lhsOused) <- return (inv_HsTokens_s56 sem arg55)+        return (Syn_HsTokens _lhsOself _lhsOused)+   )++-- cata+{-# NOINLINE sem_HsTokens #-}+sem_HsTokens :: HsTokens  -> T_HsTokens +sem_HsTokens list = Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list)++-- semantic domain+newtype T_HsTokens  = T_HsTokens {+                                 attach_T_HsTokens :: Identity (T_HsTokens_s56 )+                                 }+newtype T_HsTokens_s56  = C_HsTokens_s56 {+                                         inv_HsTokens_s56 :: (T_HsTokens_v55 )+                                         }+data T_HsTokens_s57  = C_HsTokens_s57+type T_HsTokens_v55  = (T_HsTokens_vIn55 ) -> (T_HsTokens_vOut55 )+data T_HsTokens_vIn55  = T_HsTokens_vIn55 (PLabel) (Set.Set (FLabel))+data T_HsTokens_vOut55  = T_HsTokens_vOut55 (HsTokens) (Set.Set MyOccurrence)+{-# NOINLINE sem_HsTokens_Cons #-}+sem_HsTokens_Cons :: T_HsToken  -> T_HsTokens  -> T_HsTokens +sem_HsTokens_Cons arg_hd_ arg_tl_ = T_HsTokens (return st56) where+   {-# NOINLINE st56 #-}+   st56 = let+      v55 :: T_HsTokens_v55 +      v55 = \ (T_HsTokens_vIn55 _lhsIpll _lhsIpts) -> ( let+         _hdX53 = Control.Monad.Identity.runIdentity (attach_T_HsToken (arg_hd_))+         _tlX56 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tl_))+         (T_HsToken_vOut52 _hdIself _hdIused) = inv_HsToken_s53 _hdX53 (T_HsToken_vIn52 _hdOpll _hdOpts)+         (T_HsTokens_vOut55 _tlIself _tlIused) = inv_HsTokens_s56 _tlX56 (T_HsTokens_vIn55 _tlOpll _tlOpts)+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule275 _hdIused _tlIused+         _self = rule276 _hdIself _tlIself+         _lhsOself :: HsTokens+         _lhsOself = rule277 _self+         _hdOpll = rule278 _lhsIpll+         _hdOpts = rule279 _lhsIpts+         _tlOpll = rule280 _lhsIpll+         _tlOpts = rule281 _lhsIpts+         __result_ = T_HsTokens_vOut55 _lhsOself _lhsOused+         in __result_ )+     in C_HsTokens_s56 v55+   {-# INLINE rule275 #-}+   rule275 = \ ((_hdIused) :: Set.Set MyOccurrence) ((_tlIused) :: Set.Set MyOccurrence) ->+     (Set.union _hdIused _tlIused)+   {-# INLINE rule276 #-}+   rule276 = \ ((_hdIself) :: HsToken) ((_tlIself) :: HsTokens) ->+     (:) _hdIself _tlIself+   {-# INLINE rule277 #-}+   rule277 = \ _self ->+     _self+   {-# INLINE rule278 #-}+   rule278 = \ ((_lhsIpll) :: PLabel) ->+     _lhsIpll+   {-# INLINE rule279 #-}+   rule279 = \ ((_lhsIpts) :: Set.Set (FLabel)) ->+     _lhsIpts+   {-# INLINE rule280 #-}+   rule280 = \ ((_lhsIpll) :: PLabel) ->+     _lhsIpll+   {-# INLINE rule281 #-}+   rule281 = \ ((_lhsIpts) :: Set.Set (FLabel)) ->+     _lhsIpts+{-# NOINLINE sem_HsTokens_Nil #-}+sem_HsTokens_Nil ::  T_HsTokens +sem_HsTokens_Nil  = T_HsTokens (return st56) where+   {-# NOINLINE st56 #-}+   st56 = let+      v55 :: T_HsTokens_v55 +      v55 = \ (T_HsTokens_vIn55 _lhsIpll _lhsIpts) -> ( let+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule282  ()+         _self = rule283  ()+         _lhsOself :: HsTokens+         _lhsOself = rule284 _self+         __result_ = T_HsTokens_vOut55 _lhsOself _lhsOused+         in __result_ )+     in C_HsTokens_s56 v55+   {-# INLINE rule282 #-}+   rule282 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule283 #-}+   rule283 = \  (_ :: ()) ->+     []+   {-# INLINE rule284 #-}+   rule284 = \ _self ->+     _self++-- HsTokensRoot ------------------------------------------------+-- wrapper+data Inh_HsTokensRoot  = Inh_HsTokensRoot { pll_Inh_HsTokensRoot :: (PLabel), pts_Inh_HsTokensRoot :: (Set.Set (FLabel)) }+data Syn_HsTokensRoot  = Syn_HsTokensRoot { self_Syn_HsTokensRoot :: (HsTokensRoot), used_Syn_HsTokensRoot :: (Set.Set MyOccurrence) }+{-# INLINABLE wrap_HsTokensRoot #-}+wrap_HsTokensRoot :: T_HsTokensRoot  -> Inh_HsTokensRoot  -> (Syn_HsTokensRoot )+wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot _lhsIpll _lhsIpts) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg58 = T_HsTokensRoot_vIn58 _lhsIpll _lhsIpts+        (T_HsTokensRoot_vOut58 _lhsOself _lhsOused) <- return (inv_HsTokensRoot_s59 sem arg58)+        return (Syn_HsTokensRoot _lhsOself _lhsOused)+   )++-- cata+{-# INLINE sem_HsTokensRoot #-}+sem_HsTokensRoot :: HsTokensRoot  -> T_HsTokensRoot +sem_HsTokensRoot ( HsTokensRoot tokens_ ) = sem_HsTokensRoot_HsTokensRoot ( sem_HsTokens tokens_ )++-- semantic domain+newtype T_HsTokensRoot  = T_HsTokensRoot {+                                         attach_T_HsTokensRoot :: Identity (T_HsTokensRoot_s59 )+                                         }+newtype T_HsTokensRoot_s59  = C_HsTokensRoot_s59 {+                                                 inv_HsTokensRoot_s59 :: (T_HsTokensRoot_v58 )+                                                 }+data T_HsTokensRoot_s60  = C_HsTokensRoot_s60+type T_HsTokensRoot_v58  = (T_HsTokensRoot_vIn58 ) -> (T_HsTokensRoot_vOut58 )+data T_HsTokensRoot_vIn58  = T_HsTokensRoot_vIn58 (PLabel) (Set.Set (FLabel))+data T_HsTokensRoot_vOut58  = T_HsTokensRoot_vOut58 (HsTokensRoot) (Set.Set MyOccurrence)+{-# NOINLINE sem_HsTokensRoot_HsTokensRoot #-}+sem_HsTokensRoot_HsTokensRoot :: T_HsTokens  -> T_HsTokensRoot +sem_HsTokensRoot_HsTokensRoot arg_tokens_ = T_HsTokensRoot (return st59) where+   {-# NOINLINE st59 #-}+   st59 = let+      v58 :: T_HsTokensRoot_v58 +      v58 = \ (T_HsTokensRoot_vIn58 _lhsIpll _lhsIpts) -> ( let+         _tokensX56 = Control.Monad.Identity.runIdentity (attach_T_HsTokens (arg_tokens_))+         (T_HsTokens_vOut55 _tokensIself _tokensIused) = inv_HsTokens_s56 _tokensX56 (T_HsTokens_vIn55 _tokensOpll _tokensOpts)+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule285 _tokensIused+         _self = rule286 _tokensIself+         _lhsOself :: HsTokensRoot+         _lhsOself = rule287 _self+         _tokensOpll = rule288 _lhsIpll+         _tokensOpts = rule289 _lhsIpts+         __result_ = T_HsTokensRoot_vOut58 _lhsOself _lhsOused+         in __result_ )+     in C_HsTokensRoot_s59 v58+   {-# INLINE rule285 #-}+   rule285 = \ ((_tokensIused) :: Set.Set MyOccurrence) ->+     _tokensIused+   {-# INLINE rule286 #-}+   rule286 = \ ((_tokensIself) :: HsTokens) ->+     HsTokensRoot _tokensIself+   {-# INLINE rule287 #-}+   rule287 = \ _self ->+     _self+   {-# INLINE rule288 #-}+   rule288 = \ ((_lhsIpll) :: PLabel) ->+     _lhsIpll+   {-# INLINE rule289 #-}+   rule289 = \ ((_lhsIpts) :: Set.Set (FLabel)) ->+     _lhsIpts++-- LOAGRep -----------------------------------------------------+-- wrapper+data Inh_LOAGRep  = Inh_LOAGRep {  }+data Syn_LOAGRep  = Syn_LOAGRep { self_Syn_LOAGRep :: (LOAGRep) }+{-# INLINABLE wrap_LOAGRep #-}+wrap_LOAGRep :: T_LOAGRep  -> Inh_LOAGRep  -> (Syn_LOAGRep )+wrap_LOAGRep (T_LOAGRep act) (Inh_LOAGRep ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg61 = T_LOAGRep_vIn61 +        (T_LOAGRep_vOut61 _lhsOself) <- return (inv_LOAGRep_s62 sem arg61)+        return (Syn_LOAGRep _lhsOself)+   )++-- cata+{-# INLINE sem_LOAGRep #-}+sem_LOAGRep :: LOAGRep  -> T_LOAGRep +sem_LOAGRep ( LOAGRep ps_ ap_ an_ ain_ asn_ sfp_ pmp_ pmpr_ nmp_ nmpr_ gen_ inss_ ofld_ fty_ fieldMap_ fsInP_ ) = sem_LOAGRep_LOAGRep ps_ ap_ an_ ain_ asn_ sfp_ pmp_ pmpr_ nmp_ nmpr_ gen_ inss_ ofld_ fty_ fieldMap_ fsInP_++-- semantic domain+newtype T_LOAGRep  = T_LOAGRep {+                               attach_T_LOAGRep :: Identity (T_LOAGRep_s62 )+                               }+newtype T_LOAGRep_s62  = C_LOAGRep_s62 {+                                       inv_LOAGRep_s62 :: (T_LOAGRep_v61 )+                                       }+data T_LOAGRep_s63  = C_LOAGRep_s63+type T_LOAGRep_v61  = (T_LOAGRep_vIn61 ) -> (T_LOAGRep_vOut61 )+data T_LOAGRep_vIn61  = T_LOAGRep_vIn61 +data T_LOAGRep_vOut61  = T_LOAGRep_vOut61 (LOAGRep)+{-# NOINLINE sem_LOAGRep_LOAGRep #-}+sem_LOAGRep_LOAGRep :: ([PLabel]) -> (A_P) -> (A_N) -> (AI_N) -> (AS_N) -> (SF_P) -> (PMP) -> (PMP_R) -> (NMP) -> (NMP_R) -> (A.Array Int Int) -> (A.Array Int [Int]) -> (A.Array Int Int) -> (FTY) -> (FMap) -> (Map.Map PLabel [(PLabel,FLabel)]) -> T_LOAGRep +sem_LOAGRep_LOAGRep arg_ps_ arg_ap_ arg_an_ arg_ain_ arg_asn_ arg_sfp_ arg_pmp_ arg_pmpr_ arg_nmp_ arg_nmpr_ arg_gen_ arg_inss_ arg_ofld_ arg_fty_ arg_fieldMap_ arg_fsInP_ = T_LOAGRep (return st62) where+   {-# NOINLINE st62 #-}+   st62 = let+      v61 :: T_LOAGRep_v61 +      v61 = \ (T_LOAGRep_vIn61 ) -> ( let+         _self = rule290 arg_ain_ arg_an_ arg_ap_ arg_asn_ arg_fieldMap_ arg_fsInP_ arg_fty_ arg_gen_ arg_inss_ arg_nmp_ arg_nmpr_ arg_ofld_ arg_pmp_ arg_pmpr_ arg_ps_ arg_sfp_+         _lhsOself :: LOAGRep+         _lhsOself = rule291 _self+         __result_ = T_LOAGRep_vOut61 _lhsOself+         in __result_ )+     in C_LOAGRep_s62 v61+   {-# INLINE rule290 #-}+   rule290 = \ ain_ an_ ap_ asn_ fieldMap_ fsInP_ fty_ gen_ inss_ nmp_ nmpr_ ofld_ pmp_ pmpr_ ps_ sfp_ ->+     LOAGRep ps_ ap_ an_ ain_ asn_ sfp_ pmp_ pmpr_ nmp_ nmpr_ gen_ inss_ ofld_ fty_ fieldMap_ fsInP_+   {-# INLINE rule291 #-}+   rule291 = \ _self ->+     _self++-- MySegment ---------------------------------------------------+-- wrapper+data Inh_MySegment  = Inh_MySegment { ain_Inh_MySegment :: (MyType -> MyAttributes), asn_Inh_MySegment :: (MyType -> MyAttributes), done_Inh_MySegment :: ( (Set.Set MyOccurrence, Set.Set FLabel+                                                                                                                                                                           , Set.Set Identifier, Set.Set (FLabel,Int))), fty_Inh_MySegment :: (FTY), hoMapf_Inh_MySegment :: (HOMap), lfpf_Inh_MySegment :: (SF_P), nmp_Inh_MySegment :: (NMP), nmprf_Inh_MySegment :: (NMP_R), options_Inh_MySegment :: (Options), pmpf_Inh_MySegment :: (PMP), pmprf_Inh_MySegment :: (PMP_R), ps_Inh_MySegment :: (PLabel), ruleMap_Inh_MySegment :: (Map.Map MyOccurrence Identifier), tdp_Inh_MySegment :: (TDPRes), visMapf_Inh_MySegment :: (IMap.IntMap Int), visitnum_Inh_MySegment :: (Int) }+data Syn_MySegment  = Syn_MySegment { done_Syn_MySegment :: ( (Set.Set MyOccurrence, Set.Set FLabel+                                                                             ,Set.Set Identifier, Set.Set (FLabel,Int))), evisits_Syn_MySegment :: (Visit), self_Syn_MySegment :: (MySegment), synsO_Syn_MySegment :: ([Int]), visitnum_Syn_MySegment :: (Int), visnr_Syn_MySegment :: (Int) }+{-# INLINABLE wrap_MySegment #-}+wrap_MySegment :: T_MySegment  -> Inh_MySegment  -> (Syn_MySegment )+wrap_MySegment (T_MySegment act) (Inh_MySegment _lhsIain _lhsIasn _lhsIdone _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsInmp _lhsInmprf _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIps _lhsIruleMap _lhsItdp _lhsIvisMapf _lhsIvisitnum) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg64 = T_MySegment_vIn64 _lhsIain _lhsIasn _lhsIdone _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsInmp _lhsInmprf _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIps _lhsIruleMap _lhsItdp _lhsIvisMapf _lhsIvisitnum+        (T_MySegment_vOut64 _lhsOdone _lhsOevisits _lhsOself _lhsOsynsO _lhsOvisitnum _lhsOvisnr) <- return (inv_MySegment_s65 sem arg64)+        return (Syn_MySegment _lhsOdone _lhsOevisits _lhsOself _lhsOsynsO _lhsOvisitnum _lhsOvisnr)+   )++-- cata+{-# INLINE sem_MySegment #-}+sem_MySegment :: MySegment  -> T_MySegment +sem_MySegment ( MySegment visnr_ inhAttr_ synAttr_ inhOccs_ synOccs_ ) = sem_MySegment_MySegment visnr_ inhAttr_ synAttr_ inhOccs_ synOccs_++-- semantic domain+newtype T_MySegment  = T_MySegment {+                                   attach_T_MySegment :: Identity (T_MySegment_s65 )+                                   }+newtype T_MySegment_s65  = C_MySegment_s65 {+                                           inv_MySegment_s65 :: (T_MySegment_v64 )+                                           }+data T_MySegment_s66  = C_MySegment_s66+type T_MySegment_v64  = (T_MySegment_vIn64 ) -> (T_MySegment_vOut64 )+data T_MySegment_vIn64  = T_MySegment_vIn64 (MyType -> MyAttributes) (MyType -> MyAttributes) ( (Set.Set MyOccurrence, Set.Set FLabel+                                                                                                               , Set.Set Identifier, Set.Set (FLabel,Int))) (FTY) (HOMap) (SF_P) (NMP) (NMP_R) (Options) (PMP) (PMP_R) (PLabel) (Map.Map MyOccurrence Identifier) (TDPRes) (IMap.IntMap Int) (Int)+data T_MySegment_vOut64  = T_MySegment_vOut64 ( (Set.Set MyOccurrence, Set.Set FLabel+                                                               ,Set.Set Identifier, Set.Set (FLabel,Int))) (Visit) (MySegment) ([Int]) (Int) (Int)+{-# NOINLINE sem_MySegment_MySegment #-}+sem_MySegment_MySegment :: (Int) -> ([Int]) -> ([Int]) -> (Maybe [Int]) -> (Maybe [Int]) -> T_MySegment +sem_MySegment_MySegment arg_visnr_ arg_inhAttr_ arg_synAttr_ arg_inhOccs_ arg_synOccs_ = T_MySegment (return st65) where+   {-# NOINLINE st65 #-}+   st65 = let+      v64 :: T_MySegment_v64 +      v64 = \ (T_MySegment_vIn64 _lhsIain _lhsIasn _lhsIdone _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsInmp _lhsInmprf _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIps _lhsIruleMap _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule292 _visitnum_augmented_f1 _visitnum_augmented_syn+         _visitnum_augmented_f1 = rule293  ()+         _inhs = rule294 _lhsInmp arg_inhAttr_+         _syns = rule295 _lhsInmp arg_synAttr_+         _inhsO = rule296 arg_inhOccs_+         _synsO = rule297 arg_synOccs_+         _lhsOvisnr :: Int+         _lhsOvisnr = rule298 arg_visnr_+         _kind = rule299 _lhsIoptions+         _lhsOevisits :: Visit+         _lhsOevisits = rule300 _inhs _kind _lhsIvisitnum _steps _syns+         _steps = rule301 _lhsIoptions _vss+         _lhsOdone ::  (Set.Set MyOccurrence, Set.Set FLabel+                                      ,Set.Set Identifier, Set.Set (FLabel,Int))+         (_vss,_lhsOdone) = rule302 _lhsIdone _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsInmprf _lhsIpmpf _lhsIpmprf _lhsIps _lhsIruleMap _lhsItdp _lhsIvisMapf _synsO+         _self = rule303 arg_inhAttr_ arg_inhOccs_ arg_synAttr_ arg_synOccs_ arg_visnr_+         _lhsOself :: MySegment+         _lhsOself = rule304 _self+         _lhsOsynsO :: [Int]+         _lhsOsynsO = rule305 _synsO+         _visitnum_augmented_syn = rule306 _lhsIvisitnum+         __result_ = T_MySegment_vOut64 _lhsOdone _lhsOevisits _lhsOself _lhsOsynsO _lhsOvisitnum _lhsOvisnr+         in __result_ )+     in C_MySegment_s65 v64+   {-# INLINE rule292 #-}+   rule292 = \ _visitnum_augmented_f1 _visitnum_augmented_syn ->+     foldr ($) _visitnum_augmented_syn [_visitnum_augmented_f1]+   {-# INLINE rule293 #-}+   rule293 = \  (_ :: ()) ->+                                        (+1)+   {-# INLINE rule294 #-}+   {-# LINE 225 "src-ag/LOAG/Order.ag" #-}+   rule294 = \ ((_lhsInmp) :: NMP) inhAttr_ ->+                   {-# LINE 225 "src-ag/LOAG/Order.ag" #-}+                   Map.keysSet$ Map.unions $ map (vertexToAttr _lhsInmp) inhAttr_+                   {-# LINE 3030 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule295 #-}+   {-# LINE 226 "src-ag/LOAG/Order.ag" #-}+   rule295 = \ ((_lhsInmp) :: NMP) synAttr_ ->+                   {-# LINE 226 "src-ag/LOAG/Order.ag" #-}+                   Map.keysSet$ Map.unions $ map (vertexToAttr _lhsInmp) synAttr_+                   {-# LINE 3036 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule296 #-}+   {-# LINE 227 "src-ag/LOAG/Order.ag" #-}+   rule296 = \ inhOccs_ ->+                   {-# LINE 227 "src-ag/LOAG/Order.ag" #-}+                   maybe (error "segment not instantiated") id inhOccs_+                   {-# LINE 3042 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule297 #-}+   {-# LINE 228 "src-ag/LOAG/Order.ag" #-}+   rule297 = \ synOccs_ ->+                   {-# LINE 228 "src-ag/LOAG/Order.ag" #-}+                   maybe (error "segment not instantiated") id synOccs_+                   {-# LINE 3048 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule298 #-}+   {-# LINE 229 "src-ag/LOAG/Order.ag" #-}+   rule298 = \ visnr_ ->+                   {-# LINE 229 "src-ag/LOAG/Order.ag" #-}+                   visnr_+                   {-# LINE 3054 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule299 #-}+   {-# LINE 230 "src-ag/LOAG/Order.ag" #-}+   rule299 = \ ((_lhsIoptions) :: Options) ->+                   {-# LINE 230 "src-ag/LOAG/Order.ag" #-}+                   if monadic _lhsIoptions then VisitMonadic else VisitPure True+                   {-# LINE 3060 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule300 #-}+   {-# LINE 231 "src-ag/LOAG/Order.ag" #-}+   rule300 = \ _inhs _kind ((_lhsIvisitnum) :: Int) _steps _syns ->+                      {-# LINE 231 "src-ag/LOAG/Order.ag" #-}+                      Visit _lhsIvisitnum _lhsIvisitnum (_lhsIvisitnum+1)+                            _inhs     _syns     _steps     _kind+                      {-# LINE 3067 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule301 #-}+   {-# LINE 233 "src-ag/LOAG/Order.ag" #-}+   rule301 = \ ((_lhsIoptions) :: Options) _vss ->+                      {-# LINE 233 "src-ag/LOAG/Order.ag" #-}+                      if monadic _lhsIoptions+                          then [Sim _vss    ] else [PureGroup _vss     True]+                      {-# LINE 3074 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule302 #-}+   {-# LINE 235 "src-ag/LOAG/Order.ag" #-}+   rule302 = \ ((_lhsIdone) ::  (Set.Set MyOccurrence, Set.Set FLabel+                                               , Set.Set Identifier, Set.Set (FLabel,Int))) ((_lhsIfty) :: FTY) ((_lhsIhoMapf) :: HOMap) ((_lhsIlfpf) :: SF_P) ((_lhsInmprf) :: NMP_R) ((_lhsIpmpf) :: PMP) ((_lhsIpmprf) :: PMP_R) ((_lhsIps) :: PLabel) ((_lhsIruleMap) :: Map.Map MyOccurrence Identifier) ((_lhsItdp) :: TDPRes) ((_lhsIvisMapf) :: IMap.IntMap Int) _synsO ->+                             {-# LINE 235 "src-ag/LOAG/Order.ag" #-}+                             (runST $ getVss _lhsIdone _lhsIps _lhsItdp _synsO+                              _lhsIlfpf _lhsInmprf _lhsIpmpf _lhsIpmprf _lhsIfty+                              _lhsIvisMapf _lhsIruleMap _lhsIhoMapf)+                             {-# LINE 3083 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule303 #-}+   rule303 = \ inhAttr_ inhOccs_ synAttr_ synOccs_ visnr_ ->+     MySegment visnr_ inhAttr_ synAttr_ inhOccs_ synOccs_+   {-# INLINE rule304 #-}+   rule304 = \ _self ->+     _self+   {-# INLINE rule305 #-}+   rule305 = \ _synsO ->+     _synsO+   {-# INLINE rule306 #-}+   rule306 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum++-- MySegments --------------------------------------------------+-- wrapper+data Inh_MySegments  = Inh_MySegments { ain_Inh_MySegments :: (MyType -> MyAttributes), asn_Inh_MySegments :: (MyType -> MyAttributes), done_Inh_MySegments :: ( (Set.Set MyOccurrence, Set.Set FLabel+                                                                                                                                                                                , Set.Set Identifier, Set.Set (FLabel,Int))), fty_Inh_MySegments :: (FTY), hoMapf_Inh_MySegments :: (HOMap), lfpf_Inh_MySegments :: (SF_P), nmp_Inh_MySegments :: (NMP), nmprf_Inh_MySegments :: (NMP_R), options_Inh_MySegments :: (Options), pmpf_Inh_MySegments :: (PMP), pmprf_Inh_MySegments :: (PMP_R), ps_Inh_MySegments :: (PLabel), ruleMap_Inh_MySegments :: (Map.Map MyOccurrence Identifier), tdp_Inh_MySegments :: (TDPRes), visMapf_Inh_MySegments :: (IMap.IntMap Int), visitnum_Inh_MySegments :: (Int) }+data Syn_MySegments  = Syn_MySegments { evisits_Syn_MySegments :: (Visits), self_Syn_MySegments :: (MySegments), visitnum_Syn_MySegments :: (Int) }+{-# INLINABLE wrap_MySegments #-}+wrap_MySegments :: T_MySegments  -> Inh_MySegments  -> (Syn_MySegments )+wrap_MySegments (T_MySegments act) (Inh_MySegments _lhsIain _lhsIasn _lhsIdone _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsInmp _lhsInmprf _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIps _lhsIruleMap _lhsItdp _lhsIvisMapf _lhsIvisitnum) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg67 = T_MySegments_vIn67 _lhsIain _lhsIasn _lhsIdone _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsInmp _lhsInmprf _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIps _lhsIruleMap _lhsItdp _lhsIvisMapf _lhsIvisitnum+        (T_MySegments_vOut67 _lhsOevisits _lhsOself _lhsOvisitnum) <- return (inv_MySegments_s68 sem arg67)+        return (Syn_MySegments _lhsOevisits _lhsOself _lhsOvisitnum)+   )++-- cata+{-# NOINLINE sem_MySegments #-}+sem_MySegments :: MySegments  -> T_MySegments +sem_MySegments list = Prelude.foldr sem_MySegments_Cons sem_MySegments_Nil (Prelude.map sem_MySegment list)++-- semantic domain+newtype T_MySegments  = T_MySegments {+                                     attach_T_MySegments :: Identity (T_MySegments_s68 )+                                     }+newtype T_MySegments_s68  = C_MySegments_s68 {+                                             inv_MySegments_s68 :: (T_MySegments_v67 )+                                             }+data T_MySegments_s69  = C_MySegments_s69+type T_MySegments_v67  = (T_MySegments_vIn67 ) -> (T_MySegments_vOut67 )+data T_MySegments_vIn67  = T_MySegments_vIn67 (MyType -> MyAttributes) (MyType -> MyAttributes) ( (Set.Set MyOccurrence, Set.Set FLabel+                                                                                                                 , Set.Set Identifier, Set.Set (FLabel,Int))) (FTY) (HOMap) (SF_P) (NMP) (NMP_R) (Options) (PMP) (PMP_R) (PLabel) (Map.Map MyOccurrence Identifier) (TDPRes) (IMap.IntMap Int) (Int)+data T_MySegments_vOut67  = T_MySegments_vOut67 (Visits) (MySegments) (Int)+{-# NOINLINE sem_MySegments_Cons #-}+sem_MySegments_Cons :: T_MySegment  -> T_MySegments  -> T_MySegments +sem_MySegments_Cons arg_hd_ arg_tl_ = T_MySegments (return st68) where+   {-# NOINLINE st68 #-}+   st68 = let+      v67 :: T_MySegments_v67 +      v67 = \ (T_MySegments_vIn67 _lhsIain _lhsIasn _lhsIdone _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsInmp _lhsInmprf _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIps _lhsIruleMap _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _hdX65 = Control.Monad.Identity.runIdentity (attach_T_MySegment (arg_hd_))+         _tlX68 = Control.Monad.Identity.runIdentity (attach_T_MySegments (arg_tl_))+         (T_MySegment_vOut64 _hdIdone _hdIevisits _hdIself _hdIsynsO _hdIvisitnum _hdIvisnr) = inv_MySegment_s65 _hdX65 (T_MySegment_vIn64 _hdOain _hdOasn _hdOdone _hdOfty _hdOhoMapf _hdOlfpf _hdOnmp _hdOnmprf _hdOoptions _hdOpmpf _hdOpmprf _hdOps _hdOruleMap _hdOtdp _hdOvisMapf _hdOvisitnum)+         (T_MySegments_vOut67 _tlIevisits _tlIself _tlIvisitnum) = inv_MySegments_s68 _tlX68 (T_MySegments_vIn67 _tlOain _tlOasn _tlOdone _tlOfty _tlOhoMapf _tlOlfpf _tlOnmp _tlOnmprf _tlOoptions _tlOpmpf _tlOpmprf _tlOps _tlOruleMap _tlOtdp _tlOvisMapf _tlOvisitnum)+         _hdOdone = rule307 _lhsIdone+         _tlOdone = rule308 _hdIdone+         _lhsOevisits :: Visits+         _lhsOevisits = rule309 _hdIevisits _tlIevisits+         _self = rule310 _hdIself _tlIself+         _lhsOself :: MySegments+         _lhsOself = rule311 _self+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule312 _tlIvisitnum+         _hdOain = rule313 _lhsIain+         _hdOasn = rule314 _lhsIasn+         _hdOfty = rule315 _lhsIfty+         _hdOhoMapf = rule316 _lhsIhoMapf+         _hdOlfpf = rule317 _lhsIlfpf+         _hdOnmp = rule318 _lhsInmp+         _hdOnmprf = rule319 _lhsInmprf+         _hdOoptions = rule320 _lhsIoptions+         _hdOpmpf = rule321 _lhsIpmpf+         _hdOpmprf = rule322 _lhsIpmprf+         _hdOps = rule323 _lhsIps+         _hdOruleMap = rule324 _lhsIruleMap+         _hdOtdp = rule325 _lhsItdp+         _hdOvisMapf = rule326 _lhsIvisMapf+         _hdOvisitnum = rule327 _lhsIvisitnum+         _tlOain = rule328 _lhsIain+         _tlOasn = rule329 _lhsIasn+         _tlOfty = rule330 _lhsIfty+         _tlOhoMapf = rule331 _lhsIhoMapf+         _tlOlfpf = rule332 _lhsIlfpf+         _tlOnmp = rule333 _lhsInmp+         _tlOnmprf = rule334 _lhsInmprf+         _tlOoptions = rule335 _lhsIoptions+         _tlOpmpf = rule336 _lhsIpmpf+         _tlOpmprf = rule337 _lhsIpmprf+         _tlOps = rule338 _lhsIps+         _tlOruleMap = rule339 _lhsIruleMap+         _tlOtdp = rule340 _lhsItdp+         _tlOvisMapf = rule341 _lhsIvisMapf+         _tlOvisitnum = rule342 _hdIvisitnum+         __result_ = T_MySegments_vOut67 _lhsOevisits _lhsOself _lhsOvisitnum+         in __result_ )+     in C_MySegments_s68 v67+   {-# INLINE rule307 #-}+   {-# LINE 220 "src-ag/LOAG/Order.ag" #-}+   rule307 = \ ((_lhsIdone) ::  (Set.Set MyOccurrence, Set.Set FLabel+                                               , Set.Set Identifier, Set.Set (FLabel,Int))) ->+                        {-# LINE 220 "src-ag/LOAG/Order.ag" #-}+                        _lhsIdone+                        {-# LINE 3188 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule308 #-}+   {-# LINE 221 "src-ag/LOAG/Order.ag" #-}+   rule308 = \ ((_hdIdone) ::  (Set.Set MyOccurrence, Set.Set FLabel+                                              ,Set.Set Identifier, Set.Set (FLabel,Int))) ->+                        {-# LINE 221 "src-ag/LOAG/Order.ag" #-}+                        _hdIdone+                        {-# LINE 3195 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule309 #-}+   rule309 = \ ((_hdIevisits) :: Visit) ((_tlIevisits) :: Visits) ->+     _hdIevisits : _tlIevisits+   {-# INLINE rule310 #-}+   rule310 = \ ((_hdIself) :: MySegment) ((_tlIself) :: MySegments) ->+     (:) _hdIself _tlIself+   {-# INLINE rule311 #-}+   rule311 = \ _self ->+     _self+   {-# INLINE rule312 #-}+   rule312 = \ ((_tlIvisitnum) :: Int) ->+     _tlIvisitnum+   {-# INLINE rule313 #-}+   rule313 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule314 #-}+   rule314 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule315 #-}+   rule315 = \ ((_lhsIfty) :: FTY) ->+     _lhsIfty+   {-# INLINE rule316 #-}+   rule316 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule317 #-}+   rule317 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule318 #-}+   rule318 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule319 #-}+   rule319 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule320 #-}+   rule320 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule321 #-}+   rule321 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule322 #-}+   rule322 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule323 #-}+   rule323 = \ ((_lhsIps) :: PLabel) ->+     _lhsIps+   {-# INLINE rule324 #-}+   rule324 = \ ((_lhsIruleMap) :: Map.Map MyOccurrence Identifier) ->+     _lhsIruleMap+   {-# INLINE rule325 #-}+   rule325 = \ ((_lhsItdp) :: TDPRes) ->+     _lhsItdp+   {-# INLINE rule326 #-}+   rule326 = \ ((_lhsIvisMapf) :: IMap.IntMap Int) ->+     _lhsIvisMapf+   {-# INLINE rule327 #-}+   rule327 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum+   {-# INLINE rule328 #-}+   rule328 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule329 #-}+   rule329 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule330 #-}+   rule330 = \ ((_lhsIfty) :: FTY) ->+     _lhsIfty+   {-# INLINE rule331 #-}+   rule331 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule332 #-}+   rule332 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule333 #-}+   rule333 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule334 #-}+   rule334 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule335 #-}+   rule335 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule336 #-}+   rule336 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule337 #-}+   rule337 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule338 #-}+   rule338 = \ ((_lhsIps) :: PLabel) ->+     _lhsIps+   {-# INLINE rule339 #-}+   rule339 = \ ((_lhsIruleMap) :: Map.Map MyOccurrence Identifier) ->+     _lhsIruleMap+   {-# INLINE rule340 #-}+   rule340 = \ ((_lhsItdp) :: TDPRes) ->+     _lhsItdp+   {-# INLINE rule341 #-}+   rule341 = \ ((_lhsIvisMapf) :: IMap.IntMap Int) ->+     _lhsIvisMapf+   {-# INLINE rule342 #-}+   rule342 = \ ((_hdIvisitnum) :: Int) ->+     _hdIvisitnum+{-# NOINLINE sem_MySegments_Nil #-}+sem_MySegments_Nil ::  T_MySegments +sem_MySegments_Nil  = T_MySegments (return st68) where+   {-# NOINLINE st68 #-}+   st68 = let+      v67 :: T_MySegments_v67 +      v67 = \ (T_MySegments_vIn67 _lhsIain _lhsIasn _lhsIdone _lhsIfty _lhsIhoMapf _lhsIlfpf _lhsInmp _lhsInmprf _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIps _lhsIruleMap _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _lhsOevisits :: Visits+         _lhsOevisits = rule343  ()+         _self = rule344  ()+         _lhsOself :: MySegments+         _lhsOself = rule345 _self+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule346 _lhsIvisitnum+         __result_ = T_MySegments_vOut67 _lhsOevisits _lhsOself _lhsOvisitnum+         in __result_ )+     in C_MySegments_s68 v67+   {-# INLINE rule343 #-}+   rule343 = \  (_ :: ()) ->+     []+   {-# INLINE rule344 #-}+   rule344 = \  (_ :: ()) ->+     []+   {-# INLINE rule345 #-}+   rule345 = \ _self ->+     _self+   {-# INLINE rule346 #-}+   rule346 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum++-- Nonterminal -------------------------------------------------+-- wrapper+data Inh_Nonterminal  = Inh_Nonterminal { ain_Inh_Nonterminal :: (MyType -> MyAttributes), an_Inh_Nonterminal :: (MyType -> MyAttributes), aroundMap_Inh_Nonterminal :: (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))), asn_Inh_Nonterminal :: (MyType -> MyAttributes), augM_Inh_Nonterminal :: (Map.Map Identifier (Map.Map Identifier (Set.Set Dependency))), classContexts_Inh_Nonterminal :: (ContextMap), closedHoNtDeps_Inh_Nonterminal :: (Map NontermIdent (Set NontermIdent)), closedHoNtRevDeps_Inh_Nonterminal :: (Map NontermIdent (Set NontermIdent)), closedNtDeps_Inh_Nonterminal :: (Map NontermIdent (Set NontermIdent)), flab_Inh_Nonterminal :: (Int), fty_Inh_Nonterminal :: (FTY), ftyf_Inh_Nonterminal :: (FTY), hoMapf_Inh_Nonterminal :: (HOMap), lfpf_Inh_Nonterminal :: (SF_P), mergeMap_Inh_Nonterminal :: (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))), nmp_Inh_Nonterminal :: (NMP), nmprf_Inh_Nonterminal :: (NMP_R), olab_Inh_Nonterminal :: (Int), options_Inh_Nonterminal :: (Options), pmpf_Inh_Nonterminal :: (PMP), pmprf_Inh_Nonterminal :: (PMP_R), res_ads_Inh_Nonterminal :: ([Edge]), rulenumber_Inh_Nonterminal :: (Int), sched_Inh_Nonterminal :: (InterfaceRes), tdp_Inh_Nonterminal :: (TDPRes), visMapf_Inh_Nonterminal :: (IMap.IntMap Int), visitnum_Inh_Nonterminal :: (Int) }+data Syn_Nonterminal  = Syn_Nonterminal { ads_Syn_Nonterminal :: ([Edge]), ap_Syn_Nonterminal :: (A_P), enonts_Syn_Nonterminal :: (ENonterminals), fdps_Syn_Nonterminal :: (AttrOrderMap), fieldMap_Syn_Nonterminal :: (FMap), flab_Syn_Nonterminal :: (Int), fsInP_Syn_Nonterminal :: (FsInP), fty_Syn_Nonterminal :: (FTY), gen_Syn_Nonterminal :: (Map Int Int), hoMap_Syn_Nonterminal :: (HOMap), inhmap_Syn_Nonterminal :: (Map.Map NontermIdent Attributes), inhs_Syn_Nonterminal :: (AI_N), inss_Syn_Nonterminal :: (Map Int [Int]), lfp_Syn_Nonterminal :: (SF_P), lfpr_Syn_Nonterminal :: (SF_P), localSigMap_Syn_Nonterminal :: (Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))), ntDeps_Syn_Nonterminal :: (Map NontermIdent (Set NontermIdent)), ntHoDeps_Syn_Nonterminal :: (Map NontermIdent (Set NontermIdent)), ofld_Syn_Nonterminal :: ([(Int, Int)]), olab_Syn_Nonterminal :: (Int), pmp_Syn_Nonterminal :: (PMP), pmpr_Syn_Nonterminal :: (PMP_R), ps_Syn_Nonterminal :: ([PLabel]), ruleMap_Syn_Nonterminal :: (Map.Map MyOccurrence Identifier), rulenumber_Syn_Nonterminal :: (Int), self_Syn_Nonterminal :: (Nonterminal), sfp_Syn_Nonterminal :: (SF_P), synmap_Syn_Nonterminal :: (Map.Map NontermIdent Attributes), syns_Syn_Nonterminal :: (AS_N), visMap_Syn_Nonterminal :: (IMap.IntMap Int), visitnum_Syn_Nonterminal :: (Int) }+{-# INLINABLE wrap_Nonterminal #-}+wrap_Nonterminal :: T_Nonterminal  -> Inh_Nonterminal  -> (Syn_Nonterminal )+wrap_Nonterminal (T_Nonterminal act) (Inh_Nonterminal _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsIsched _lhsItdp _lhsIvisMapf _lhsIvisitnum) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg70 = T_Nonterminal_vIn70 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsIsched _lhsItdp _lhsIvisMapf _lhsIvisitnum+        (T_Nonterminal_vOut70 _lhsOads _lhsOap _lhsOenonts _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinhmap _lhsOinhs _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOsynmap _lhsOsyns _lhsOvisMap _lhsOvisitnum) <- return (inv_Nonterminal_s71 sem arg70)+        return (Syn_Nonterminal _lhsOads _lhsOap _lhsOenonts _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinhmap _lhsOinhs _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOsynmap _lhsOsyns _lhsOvisMap _lhsOvisitnum)+   )++-- cata+{-# INLINE sem_Nonterminal #-}+sem_Nonterminal :: Nonterminal  -> T_Nonterminal +sem_Nonterminal ( Nonterminal nt_ params_ inh_ syn_ prods_ ) = sem_Nonterminal_Nonterminal nt_ params_ inh_ syn_ ( sem_Productions prods_ )++-- semantic domain+newtype T_Nonterminal  = T_Nonterminal {+                                       attach_T_Nonterminal :: Identity (T_Nonterminal_s71 )+                                       }+newtype T_Nonterminal_s71  = C_Nonterminal_s71 {+                                               inv_Nonterminal_s71 :: (T_Nonterminal_v70 )+                                               }+data T_Nonterminal_s72  = C_Nonterminal_s72+type T_Nonterminal_v70  = (T_Nonterminal_vIn70 ) -> (T_Nonterminal_vOut70 )+data T_Nonterminal_vIn70  = T_Nonterminal_vIn70 (MyType -> MyAttributes) (MyType -> MyAttributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) (MyType -> MyAttributes) (Map.Map Identifier (Map.Map Identifier (Set.Set Dependency))) (ContextMap) (Map NontermIdent (Set NontermIdent)) (Map NontermIdent (Set NontermIdent)) (Map NontermIdent (Set NontermIdent)) (Int) (FTY) (FTY) (HOMap) (SF_P) (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) (NMP) (NMP_R) (Int) (Options) (PMP) (PMP_R) ([Edge]) (Int) (InterfaceRes) (TDPRes) (IMap.IntMap Int) (Int)+data T_Nonterminal_vOut70  = T_Nonterminal_vOut70 ([Edge]) (A_P) (ENonterminals) (AttrOrderMap) (FMap) (Int) (FsInP) (FTY) (Map Int Int) (HOMap) (Map.Map NontermIdent Attributes) (AI_N) (Map Int [Int]) (SF_P) (SF_P) (Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))) (Map NontermIdent (Set NontermIdent)) (Map NontermIdent (Set NontermIdent)) ([(Int, Int)]) (Int) (PMP) (PMP_R) ([PLabel]) (Map.Map MyOccurrence Identifier) (Int) (Nonterminal) (SF_P) (Map.Map NontermIdent Attributes) (AS_N) (IMap.IntMap Int) (Int)+{-# NOINLINE sem_Nonterminal_Nonterminal #-}+sem_Nonterminal_Nonterminal :: (NontermIdent) -> ([Identifier]) -> (Attributes) -> (Attributes) -> T_Productions  -> T_Nonterminal +sem_Nonterminal_Nonterminal arg_nt_ arg_params_ arg_inh_ arg_syn_ arg_prods_ = T_Nonterminal (return st71) where+   {-# NOINLINE st71 #-}+   st71 = let+      v70 :: T_Nonterminal_v70 +      v70 = \ (T_Nonterminal_vIn70 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsIsched _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _prodsX86 = Control.Monad.Identity.runIdentity (attach_T_Productions (arg_prods_))+         (T_Productions_vOut85 _prodsIads _prodsIap _prodsIeprods _prodsIfdps _prodsIfieldMap _prodsIflab _prodsIfsInP _prodsIfty _prodsIgen _prodsIhoMap _prodsIinss _prodsIlfp _prodsIlfpr _prodsIlocalSigMap _prodsIofld _prodsIolab _prodsIpmp _prodsIpmpr _prodsIps _prodsIrefHoNts _prodsIrefNts _prodsIruleMap _prodsIrulenumber _prodsIself _prodsIsfp _prodsIvisitnum) = inv_Productions_s86 _prodsX86 (T_Productions_vIn85 _prodsOain _prodsOan _prodsOaroundMap _prodsOasn _prodsOaugM _prodsOdty _prodsOflab _prodsOfty _prodsOftyf _prodsOhoMapf _prodsOlfpf _prodsOmergeMap _prodsOmysegments _prodsOnmp _prodsOnmprf _prodsOolab _prodsOoptions _prodsOpmpf _prodsOpmprf _prodsOres_ads _prodsOrulenumber _prodsOtdp _prodsOvisMapf _prodsOvisitnum)+         _lhsOntDeps :: Map NontermIdent (Set NontermIdent)+         _lhsOntDeps = rule347 _prodsIrefNts arg_nt_+         _lhsOntHoDeps :: Map NontermIdent (Set NontermIdent)+         _lhsOntHoDeps = rule348 _prodsIrefHoNts arg_nt_+         _closedNtDeps = rule349 _lhsIclosedNtDeps arg_nt_+         _closedHoNtDeps = rule350 _lhsIclosedHoNtDeps arg_nt_+         _closedHoNtRevDeps = rule351 _lhsIclosedHoNtRevDeps arg_nt_+         _recursive = rule352 _closedNtDeps arg_nt_+         _nontrivAcyc = rule353 _closedHoNtDeps arg_nt_+         _hoInfo = rule354 _closedHoNtDeps _closedHoNtRevDeps _nontrivAcyc+         _classContexts = rule355 _lhsIclassContexts arg_nt_+         _aroundMap = rule356 _lhsIaroundMap arg_nt_+         _mergeMap = rule357 _lhsImergeMap arg_nt_+         _lhsOinhmap :: Map.Map NontermIdent Attributes+         _lhsOinhmap = rule358 arg_inh_ arg_nt_+         _lhsOsynmap :: Map.Map NontermIdent Attributes+         _lhsOsynmap = rule359 arg_nt_ arg_syn_+         _lhsOlocalSigMap :: Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))+         _lhsOlocalSigMap = rule360 _prodsIlocalSigMap arg_nt_+         _lhsOinhs :: AI_N+         _lhsOinhs = rule361 arg_inh_ arg_nt_+         _lhsOsyns :: AS_N+         _lhsOsyns = rule362 arg_nt_ arg_syn_+         _prodsOaugM = rule363 _lhsIaugM arg_nt_+         _dty = rule364 arg_nt_+         _lhsOfdps :: AttrOrderMap+         _lhsOfdps = rule365 _prodsIfdps arg_nt_+         _initial = rule366 _lhsIvisitnum+         _vnums = rule367 _initial _segments+         _initialVisit = rule368 _vnums+         _nextVis = rule369 _initial _vnums+         _prevVis = rule370 _initial _vnums+         _visMap = rule371 _initial _mysegments+         _lhsOenonts :: ENonterminals+         _lhsOenonts = rule372 _classContexts _hoInfo _initial _initialVisit _nextVis _prevVis _prodsIeprods _recursive arg_nt_ arg_params_+         _assigned = rule373 _lhsIsched arg_nt_+         _mx = rule374 _assigned _lhsIsched+         _mysegments = rule375 _assigned _mx+         _segments = rule376 _lhsInmp _mysegments+         _lhsOads :: [Edge]+         _lhsOads = rule377 _prodsIads+         _lhsOap :: A_P+         _lhsOap = rule378 _prodsIap+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule379 _prodsIfieldMap+         _lhsOfsInP :: FsInP+         _lhsOfsInP = rule380 _prodsIfsInP+         _lhsOfty :: FTY+         _lhsOfty = rule381 _prodsIfty+         _lhsOgen :: Map Int Int+         _lhsOgen = rule382 _prodsIgen+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule383 _prodsIhoMap+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule384 _prodsIinss+         _lhsOlfp :: SF_P+         _lhsOlfp = rule385 _prodsIlfp+         _lhsOlfpr :: SF_P+         _lhsOlfpr = rule386 _prodsIlfpr+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule387 _prodsIofld+         _lhsOpmp :: PMP+         _lhsOpmp = rule388 _prodsIpmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule389 _prodsIpmpr+         _lhsOps :: [PLabel]+         _lhsOps = rule390 _prodsIps+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOruleMap = rule391 _prodsIruleMap+         _lhsOsfp :: SF_P+         _lhsOsfp = rule392 _prodsIsfp+         _lhsOvisMap :: IMap.IntMap Int+         _lhsOvisMap = rule393 _visMap+         _self = rule394 _prodsIself arg_inh_ arg_nt_ arg_params_ arg_syn_+         _lhsOself :: Nonterminal+         _lhsOself = rule395 _self+         _lhsOflab :: Int+         _lhsOflab = rule396 _prodsIflab+         _lhsOolab :: Int+         _lhsOolab = rule397 _prodsIolab+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule398 _prodsIrulenumber+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule399 _prodsIvisitnum+         _prodsOain = rule400 _lhsIain+         _prodsOan = rule401 _lhsIan+         _prodsOaroundMap = rule402 _aroundMap+         _prodsOasn = rule403 _lhsIasn+         _prodsOdty = rule404 _dty+         _prodsOflab = rule405 _lhsIflab+         _prodsOfty = rule406 _lhsIfty+         _prodsOftyf = rule407 _lhsIftyf+         _prodsOhoMapf = rule408 _lhsIhoMapf+         _prodsOlfpf = rule409 _lhsIlfpf+         _prodsOmergeMap = rule410 _mergeMap+         _prodsOmysegments = rule411 _mysegments+         _prodsOnmp = rule412 _lhsInmp+         _prodsOnmprf = rule413 _lhsInmprf+         _prodsOolab = rule414 _lhsIolab+         _prodsOoptions = rule415 _lhsIoptions+         _prodsOpmpf = rule416 _lhsIpmpf+         _prodsOpmprf = rule417 _lhsIpmprf+         _prodsOres_ads = rule418 _lhsIres_ads+         _prodsOrulenumber = rule419 _lhsIrulenumber+         _prodsOtdp = rule420 _lhsItdp+         _prodsOvisMapf = rule421 _lhsIvisMapf+         _prodsOvisitnum = rule422 _lhsIvisitnum+         __result_ = T_Nonterminal_vOut70 _lhsOads _lhsOap _lhsOenonts _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinhmap _lhsOinhs _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOsynmap _lhsOsyns _lhsOvisMap _lhsOvisitnum+         in __result_ )+     in C_Nonterminal_s71 v70+   {-# INLINE rule347 #-}+   {-# LINE 16 "src-ag/ExecutionPlanCommon.ag" #-}+   rule347 = \ ((_prodsIrefNts) :: Set NontermIdent) nt_ ->+                            {-# LINE 16 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.singleton nt_ _prodsIrefNts+                            {-# LINE 3482 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule348 #-}+   {-# LINE 17 "src-ag/ExecutionPlanCommon.ag" #-}+   rule348 = \ ((_prodsIrefHoNts) :: Set NontermIdent) nt_ ->+                            {-# LINE 17 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.singleton nt_ _prodsIrefHoNts+                            {-# LINE 3488 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule349 #-}+   {-# LINE 19 "src-ag/ExecutionPlanCommon.ag" #-}+   rule349 = \ ((_lhsIclosedNtDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->+                            {-# LINE 19 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.findWithDefault Set.empty nt_ _lhsIclosedNtDeps+                            {-# LINE 3494 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule350 #-}+   {-# LINE 20 "src-ag/ExecutionPlanCommon.ag" #-}+   rule350 = \ ((_lhsIclosedHoNtDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->+                            {-# LINE 20 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.findWithDefault Set.empty nt_ _lhsIclosedHoNtDeps+                            {-# LINE 3500 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule351 #-}+   {-# LINE 21 "src-ag/ExecutionPlanCommon.ag" #-}+   rule351 = \ ((_lhsIclosedHoNtRevDeps) :: Map NontermIdent (Set NontermIdent)) nt_ ->+                            {-# LINE 21 "src-ag/ExecutionPlanCommon.ag" #-}+                            Map.findWithDefault Set.empty nt_ _lhsIclosedHoNtRevDeps+                            {-# LINE 3506 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule352 #-}+   {-# LINE 23 "src-ag/ExecutionPlanCommon.ag" #-}+   rule352 = \ _closedNtDeps nt_ ->+                            {-# LINE 23 "src-ag/ExecutionPlanCommon.ag" #-}+                            nt_ `Set.member` _closedNtDeps+                            {-# LINE 3512 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule353 #-}+   {-# LINE 24 "src-ag/ExecutionPlanCommon.ag" #-}+   rule353 = \ _closedHoNtDeps nt_ ->+                            {-# LINE 24 "src-ag/ExecutionPlanCommon.ag" #-}+                            nt_ `Set.member` _closedHoNtDeps+                            {-# LINE 3518 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule354 #-}+   {-# LINE 25 "src-ag/ExecutionPlanCommon.ag" #-}+   rule354 = \ _closedHoNtDeps _closedHoNtRevDeps _nontrivAcyc ->+                            {-# LINE 25 "src-ag/ExecutionPlanCommon.ag" #-}+                            HigherOrderInfo { hoNtDeps            = _closedHoNtDeps+                                            , hoNtRevDeps         = _closedHoNtRevDeps+                                            , hoAcyclic           = _nontrivAcyc+                                            }+                            {-# LINE 3527 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule355 #-}+   {-# LINE 54 "src-ag/ExecutionPlanCommon.ag" #-}+   rule355 = \ ((_lhsIclassContexts) :: ContextMap) nt_ ->+                        {-# LINE 54 "src-ag/ExecutionPlanCommon.ag" #-}+                        Map.findWithDefault [] nt_ _lhsIclassContexts+                        {-# LINE 3533 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule356 #-}+   {-# LINE 88 "src-ag/ExecutionPlanCommon.ag" #-}+   rule356 = \ ((_lhsIaroundMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) nt_ ->+                                                 {-# LINE 88 "src-ag/ExecutionPlanCommon.ag" #-}+                                                 Map.findWithDefault Map.empty nt_ _lhsIaroundMap+                                                 {-# LINE 3539 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule357 #-}+   {-# LINE 113 "src-ag/ExecutionPlanCommon.ag" #-}+   rule357 = \ ((_lhsImergeMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) nt_ ->+                                                {-# LINE 113 "src-ag/ExecutionPlanCommon.ag" #-}+                                                Map.findWithDefault Map.empty nt_ _lhsImergeMap+                                                {-# LINE 3545 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule358 #-}+   {-# LINE 149 "src-ag/ExecutionPlanCommon.ag" #-}+   rule358 = \ inh_ nt_ ->+                               {-# LINE 149 "src-ag/ExecutionPlanCommon.ag" #-}+                               Map.singleton nt_ inh_+                               {-# LINE 3551 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule359 #-}+   {-# LINE 150 "src-ag/ExecutionPlanCommon.ag" #-}+   rule359 = \ nt_ syn_ ->+                               {-# LINE 150 "src-ag/ExecutionPlanCommon.ag" #-}+                               Map.singleton nt_ syn_+                               {-# LINE 3557 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule360 #-}+   {-# LINE 159 "src-ag/ExecutionPlanCommon.ag" #-}+   rule360 = \ ((_prodsIlocalSigMap) :: Map.Map ConstructorIdent (Map.Map Identifier Type)) nt_ ->+                                                   {-# LINE 159 "src-ag/ExecutionPlanCommon.ag" #-}+                                                   Map.singleton nt_ _prodsIlocalSigMap+                                                   {-# LINE 3563 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule361 #-}+   {-# LINE 65 "src-ag/LOAG/Prepare.ag" #-}+   rule361 = \ inh_ nt_ ->+                 {-# LINE 65 "src-ag/LOAG/Prepare.ag" #-}+                 let dty = TyData (getName nt_)+                  in Map.singleton dty (toMyAttr Inh dty inh_)+                 {-# LINE 3570 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule362 #-}+   {-# LINE 67 "src-ag/LOAG/Prepare.ag" #-}+   rule362 = \ nt_ syn_ ->+                 {-# LINE 67 "src-ag/LOAG/Prepare.ag" #-}+                 let dty = TyData (getName nt_)+                  in Map.singleton dty (toMyAttr Syn dty syn_)+                 {-# LINE 3577 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule363 #-}+   {-# LINE 69 "src-ag/LOAG/Prepare.ag" #-}+   rule363 = \ ((_lhsIaugM) :: Map.Map Identifier (Map.Map Identifier (Set.Set Dependency))) nt_ ->+                   {-# LINE 69 "src-ag/LOAG/Prepare.ag" #-}+                   case Map.lookup nt_ _lhsIaugM of+                      Nothing -> Map.empty+                      Just a  -> a+                   {-# LINE 3585 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule364 #-}+   {-# LINE 131 "src-ag/LOAG/Prepare.ag" #-}+   rule364 = \ nt_ ->+                 {-# LINE 131 "src-ag/LOAG/Prepare.ag" #-}+                 TyData (getName nt_)+                 {-# LINE 3591 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule365 #-}+   {-# LINE 82 "src-ag/LOAG/Order.ag" #-}+   rule365 = \ ((_prodsIfdps) :: Map.Map ConstructorIdent (Set Dependency)) nt_ ->+                    {-# LINE 82 "src-ag/LOAG/Order.ag" #-}+                    Map.singleton nt_ _prodsIfdps+                    {-# LINE 3597 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule366 #-}+   {-# LINE 138 "src-ag/LOAG/Order.ag" #-}+   rule366 = \ ((_lhsIvisitnum) :: Int) ->+                        {-# LINE 138 "src-ag/LOAG/Order.ag" #-}+                        _lhsIvisitnum+                        {-# LINE 3603 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule367 #-}+   {-# LINE 139 "src-ag/LOAG/Order.ag" #-}+   rule367 = \ _initial _segments ->+                        {-# LINE 139 "src-ag/LOAG/Order.ag" #-}+                        zipWith const [_initial    ..] _segments+                        {-# LINE 3609 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule368 #-}+   {-# LINE 140 "src-ag/LOAG/Order.ag" #-}+   rule368 = \ _vnums ->+                             {-# LINE 140 "src-ag/LOAG/Order.ag" #-}+                             _vnums+                             {-# LINE 3615 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule369 #-}+   {-# LINE 141 "src-ag/LOAG/Order.ag" #-}+   rule369 = \ _initial _vnums ->+                        {-# LINE 141 "src-ag/LOAG/Order.ag" #-}+                        Map.fromList $ (_initial     + length _vnums, NoneVis)+                                     : [(v, OneVis v) | v <- _vnums ]+                        {-# LINE 3622 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule370 #-}+   {-# LINE 143 "src-ag/LOAG/Order.ag" #-}+   rule370 = \ _initial _vnums ->+                        {-# LINE 143 "src-ag/LOAG/Order.ag" #-}+                        Map.fromList $ (_initial    , NoneVis)+                                     : [(v+1, OneVis v) | v <- _vnums ]+                        {-# LINE 3629 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule371 #-}+   {-# LINE 145 "src-ag/LOAG/Order.ag" #-}+   rule371 = \ _initial _mysegments ->+                        {-# LINE 145 "src-ag/LOAG/Order.ag" #-}+                        let op vnr (MySegment visnr ins syns _ _) =+                              IMap.fromList $ zip syns (repeat vnr)+                         in IMap.unions $ zipWith op [_initial    ..] _mysegments+                        {-# LINE 3637 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule372 #-}+   {-# LINE 148 "src-ag/LOAG/Order.ag" #-}+   rule372 = \ _classContexts _hoInfo _initial _initialVisit _nextVis _prevVis ((_prodsIeprods) :: EProductions) _recursive nt_ params_ ->+                       {-# LINE 148 "src-ag/LOAG/Order.ag" #-}+                       [ENonterminal+                          nt_+                          params_+                          _classContexts+                          _initial+                          _initialVisit+                          _nextVis+                          _prevVis+                          _prodsIeprods+                          _recursive+                          _hoInfo     ]+                       {-# LINE 3653 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule373 #-}+   {-# LINE 322 "src-ag/LOAG/Order.ag" #-}+   rule373 = \ ((_lhsIsched) :: InterfaceRes) nt_ ->+                         {-# LINE 322 "src-ag/LOAG/Order.ag" #-}+                         findWithErr _lhsIsched "could not const. interfaces"+                              (getName nt_)+                         {-# LINE 3660 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule374 #-}+   {-# LINE 324 "src-ag/LOAG/Order.ag" #-}+   rule374 = \ _assigned ((_lhsIsched) :: InterfaceRes) ->+                         {-# LINE 324 "src-ag/LOAG/Order.ag" #-}+                         if Map.null _lhsIsched+                          then 0+                          else let mx = fst $ IMap.findMax _assigned     in+                                if even mx then mx else mx + 1+                         {-# LINE 3669 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule375 #-}+   {-# LINE 329 "src-ag/LOAG/Order.ag" #-}+   rule375 = \ _assigned _mx ->+              {-# LINE 329 "src-ag/LOAG/Order.ag" #-}+              map (\i -> MySegment ((_mx     - i) `div` 2)+                          (maybe [] id $ IMap.lookup i _assigned    )+                          (maybe [] id $ IMap.lookup (i-1) _assigned    )+                              Nothing Nothing)+                   [_mx    ,_mx    -2 .. 2]+              {-# LINE 3679 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule376 #-}+   {-# LINE 335 "src-ag/LOAG/Order.ag" #-}+   rule376 = \ ((_lhsInmp) :: NMP) _mysegments ->+              {-# LINE 335 "src-ag/LOAG/Order.ag" #-}+              map (\(MySegment visnr is ss _ _) ->+                      CSegment (Map.unions $ map (vertexToAttr _lhsInmp) is)+                               (Map.unions $ map (vertexToAttr _lhsInmp) ss))+                  _mysegments+              {-# LINE 3688 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule377 #-}+   rule377 = \ ((_prodsIads) :: [Edge]) ->+     _prodsIads+   {-# INLINE rule378 #-}+   rule378 = \ ((_prodsIap) :: A_P) ->+     _prodsIap+   {-# INLINE rule379 #-}+   rule379 = \ ((_prodsIfieldMap) :: FMap) ->+     _prodsIfieldMap+   {-# INLINE rule380 #-}+   rule380 = \ ((_prodsIfsInP) :: FsInP) ->+     _prodsIfsInP+   {-# INLINE rule381 #-}+   rule381 = \ ((_prodsIfty) :: FTY) ->+     _prodsIfty+   {-# INLINE rule382 #-}+   rule382 = \ ((_prodsIgen) :: Map Int Int) ->+     _prodsIgen+   {-# INLINE rule383 #-}+   rule383 = \ ((_prodsIhoMap) :: HOMap) ->+     _prodsIhoMap+   {-# INLINE rule384 #-}+   rule384 = \ ((_prodsIinss) :: Map Int [Int]) ->+     _prodsIinss+   {-# INLINE rule385 #-}+   rule385 = \ ((_prodsIlfp) :: SF_P) ->+     _prodsIlfp+   {-# INLINE rule386 #-}+   rule386 = \ ((_prodsIlfpr) :: SF_P) ->+     _prodsIlfpr+   {-# INLINE rule387 #-}+   rule387 = \ ((_prodsIofld) :: [(Int, Int)]) ->+     _prodsIofld+   {-# INLINE rule388 #-}+   rule388 = \ ((_prodsIpmp) :: PMP) ->+     _prodsIpmp+   {-# INLINE rule389 #-}+   rule389 = \ ((_prodsIpmpr) :: PMP_R) ->+     _prodsIpmpr+   {-# INLINE rule390 #-}+   rule390 = \ ((_prodsIps) :: [PLabel]) ->+     _prodsIps+   {-# INLINE rule391 #-}+   rule391 = \ ((_prodsIruleMap) :: Map.Map MyOccurrence Identifier) ->+     _prodsIruleMap+   {-# INLINE rule392 #-}+   rule392 = \ ((_prodsIsfp) :: SF_P) ->+     _prodsIsfp+   {-# INLINE rule393 #-}+   rule393 = \ _visMap ->+     _visMap+   {-# INLINE rule394 #-}+   rule394 = \ ((_prodsIself) :: Productions) inh_ nt_ params_ syn_ ->+     Nonterminal nt_ params_ inh_ syn_ _prodsIself+   {-# INLINE rule395 #-}+   rule395 = \ _self ->+     _self+   {-# INLINE rule396 #-}+   rule396 = \ ((_prodsIflab) :: Int) ->+     _prodsIflab+   {-# INLINE rule397 #-}+   rule397 = \ ((_prodsIolab) :: Int) ->+     _prodsIolab+   {-# INLINE rule398 #-}+   rule398 = \ ((_prodsIrulenumber) :: Int) ->+     _prodsIrulenumber+   {-# INLINE rule399 #-}+   rule399 = \ ((_prodsIvisitnum) :: Int) ->+     _prodsIvisitnum+   {-# INLINE rule400 #-}+   rule400 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule401 #-}+   rule401 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule402 #-}+   rule402 = \ _aroundMap ->+     _aroundMap+   {-# INLINE rule403 #-}+   rule403 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule404 #-}+   rule404 = \ _dty ->+     _dty+   {-# INLINE rule405 #-}+   rule405 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule406 #-}+   rule406 = \ ((_lhsIfty) :: FTY) ->+     _lhsIfty+   {-# INLINE rule407 #-}+   rule407 = \ ((_lhsIftyf) :: FTY) ->+     _lhsIftyf+   {-# INLINE rule408 #-}+   rule408 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule409 #-}+   rule409 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule410 #-}+   rule410 = \ _mergeMap ->+     _mergeMap+   {-# INLINE rule411 #-}+   rule411 = \ _mysegments ->+     _mysegments+   {-# INLINE rule412 #-}+   rule412 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule413 #-}+   rule413 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule414 #-}+   rule414 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab+   {-# INLINE rule415 #-}+   rule415 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule416 #-}+   rule416 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule417 #-}+   rule417 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule418 #-}+   rule418 = \ ((_lhsIres_ads) :: [Edge]) ->+     _lhsIres_ads+   {-# INLINE rule419 #-}+   rule419 = \ ((_lhsIrulenumber) :: Int) ->+     _lhsIrulenumber+   {-# INLINE rule420 #-}+   rule420 = \ ((_lhsItdp) :: TDPRes) ->+     _lhsItdp+   {-# INLINE rule421 #-}+   rule421 = \ ((_lhsIvisMapf) :: IMap.IntMap Int) ->+     _lhsIvisMapf+   {-# INLINE rule422 #-}+   rule422 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum++-- Nonterminals ------------------------------------------------+-- wrapper+data Inh_Nonterminals  = Inh_Nonterminals { ain_Inh_Nonterminals :: (MyType -> MyAttributes), an_Inh_Nonterminals :: (MyType -> MyAttributes), aroundMap_Inh_Nonterminals :: (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))), asn_Inh_Nonterminals :: (MyType -> MyAttributes), augM_Inh_Nonterminals :: (Map.Map Identifier (Map.Map Identifier (Set.Set Dependency))), classContexts_Inh_Nonterminals :: (ContextMap), closedHoNtDeps_Inh_Nonterminals :: (Map NontermIdent (Set NontermIdent)), closedHoNtRevDeps_Inh_Nonterminals :: (Map NontermIdent (Set NontermIdent)), closedNtDeps_Inh_Nonterminals :: (Map NontermIdent (Set NontermIdent)), flab_Inh_Nonterminals :: (Int), fty_Inh_Nonterminals :: (FTY), ftyf_Inh_Nonterminals :: (FTY), hoMapf_Inh_Nonterminals :: (HOMap), lfpf_Inh_Nonterminals :: (SF_P), mergeMap_Inh_Nonterminals :: (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))), nmp_Inh_Nonterminals :: (NMP), nmprf_Inh_Nonterminals :: (NMP_R), olab_Inh_Nonterminals :: (Int), options_Inh_Nonterminals :: (Options), pmpf_Inh_Nonterminals :: (PMP), pmprf_Inh_Nonterminals :: (PMP_R), res_ads_Inh_Nonterminals :: ([Edge]), rulenumber_Inh_Nonterminals :: (Int), sched_Inh_Nonterminals :: (InterfaceRes), tdp_Inh_Nonterminals :: (TDPRes), visMapf_Inh_Nonterminals :: (IMap.IntMap Int), visitnum_Inh_Nonterminals :: (Int) }+data Syn_Nonterminals  = Syn_Nonterminals { ads_Syn_Nonterminals :: ([Edge]), ap_Syn_Nonterminals :: (A_P), enonts_Syn_Nonterminals :: (ENonterminals), fdps_Syn_Nonterminals :: (AttrOrderMap), fieldMap_Syn_Nonterminals :: (FMap), flab_Syn_Nonterminals :: (Int), fsInP_Syn_Nonterminals :: (FsInP), fty_Syn_Nonterminals :: (FTY), gen_Syn_Nonterminals :: (Map Int Int), hoMap_Syn_Nonterminals :: (HOMap), inhmap_Syn_Nonterminals :: (Map.Map NontermIdent Attributes), inhs_Syn_Nonterminals :: (AI_N), inss_Syn_Nonterminals :: (Map Int [Int]), lfp_Syn_Nonterminals :: (SF_P), lfpr_Syn_Nonterminals :: (SF_P), localSigMap_Syn_Nonterminals :: (Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))), ntDeps_Syn_Nonterminals :: (Map NontermIdent (Set NontermIdent)), ntHoDeps_Syn_Nonterminals :: (Map NontermIdent (Set NontermIdent)), ofld_Syn_Nonterminals :: ([(Int, Int)]), olab_Syn_Nonterminals :: (Int), pmp_Syn_Nonterminals :: (PMP), pmpr_Syn_Nonterminals :: (PMP_R), ps_Syn_Nonterminals :: ([PLabel]), ruleMap_Syn_Nonterminals :: (Map.Map MyOccurrence Identifier), rulenumber_Syn_Nonterminals :: (Int), self_Syn_Nonterminals :: (Nonterminals), sfp_Syn_Nonterminals :: (SF_P), synmap_Syn_Nonterminals :: (Map.Map NontermIdent Attributes), syns_Syn_Nonterminals :: (AS_N), visMap_Syn_Nonterminals :: (IMap.IntMap Int), visitnum_Syn_Nonterminals :: (Int) }+{-# INLINABLE wrap_Nonterminals #-}+wrap_Nonterminals :: T_Nonterminals  -> Inh_Nonterminals  -> (Syn_Nonterminals )+wrap_Nonterminals (T_Nonterminals act) (Inh_Nonterminals _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsIsched _lhsItdp _lhsIvisMapf _lhsIvisitnum) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg73 = T_Nonterminals_vIn73 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsIsched _lhsItdp _lhsIvisMapf _lhsIvisitnum+        (T_Nonterminals_vOut73 _lhsOads _lhsOap _lhsOenonts _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinhmap _lhsOinhs _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOsynmap _lhsOsyns _lhsOvisMap _lhsOvisitnum) <- return (inv_Nonterminals_s74 sem arg73)+        return (Syn_Nonterminals _lhsOads _lhsOap _lhsOenonts _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinhmap _lhsOinhs _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOsynmap _lhsOsyns _lhsOvisMap _lhsOvisitnum)+   )++-- cata+{-# NOINLINE sem_Nonterminals #-}+sem_Nonterminals :: Nonterminals  -> T_Nonterminals +sem_Nonterminals list = Prelude.foldr sem_Nonterminals_Cons sem_Nonterminals_Nil (Prelude.map sem_Nonterminal list)++-- semantic domain+newtype T_Nonterminals  = T_Nonterminals {+                                         attach_T_Nonterminals :: Identity (T_Nonterminals_s74 )+                                         }+newtype T_Nonterminals_s74  = C_Nonterminals_s74 {+                                                 inv_Nonterminals_s74 :: (T_Nonterminals_v73 )+                                                 }+data T_Nonterminals_s75  = C_Nonterminals_s75+type T_Nonterminals_v73  = (T_Nonterminals_vIn73 ) -> (T_Nonterminals_vOut73 )+data T_Nonterminals_vIn73  = T_Nonterminals_vIn73 (MyType -> MyAttributes) (MyType -> MyAttributes) (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) (MyType -> MyAttributes) (Map.Map Identifier (Map.Map Identifier (Set.Set Dependency))) (ContextMap) (Map NontermIdent (Set NontermIdent)) (Map NontermIdent (Set NontermIdent)) (Map NontermIdent (Set NontermIdent)) (Int) (FTY) (FTY) (HOMap) (SF_P) (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) (NMP) (NMP_R) (Int) (Options) (PMP) (PMP_R) ([Edge]) (Int) (InterfaceRes) (TDPRes) (IMap.IntMap Int) (Int)+data T_Nonterminals_vOut73  = T_Nonterminals_vOut73 ([Edge]) (A_P) (ENonterminals) (AttrOrderMap) (FMap) (Int) (FsInP) (FTY) (Map Int Int) (HOMap) (Map.Map NontermIdent Attributes) (AI_N) (Map Int [Int]) (SF_P) (SF_P) (Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))) (Map NontermIdent (Set NontermIdent)) (Map NontermIdent (Set NontermIdent)) ([(Int, Int)]) (Int) (PMP) (PMP_R) ([PLabel]) (Map.Map MyOccurrence Identifier) (Int) (Nonterminals) (SF_P) (Map.Map NontermIdent Attributes) (AS_N) (IMap.IntMap Int) (Int)+{-# NOINLINE sem_Nonterminals_Cons #-}+sem_Nonterminals_Cons :: T_Nonterminal  -> T_Nonterminals  -> T_Nonterminals +sem_Nonterminals_Cons arg_hd_ arg_tl_ = T_Nonterminals (return st74) where+   {-# NOINLINE st74 #-}+   st74 = let+      v73 :: T_Nonterminals_v73 +      v73 = \ (T_Nonterminals_vIn73 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsIsched _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _hdX71 = Control.Monad.Identity.runIdentity (attach_T_Nonterminal (arg_hd_))+         _tlX74 = Control.Monad.Identity.runIdentity (attach_T_Nonterminals (arg_tl_))+         (T_Nonterminal_vOut70 _hdIads _hdIap _hdIenonts _hdIfdps _hdIfieldMap _hdIflab _hdIfsInP _hdIfty _hdIgen _hdIhoMap _hdIinhmap _hdIinhs _hdIinss _hdIlfp _hdIlfpr _hdIlocalSigMap _hdIntDeps _hdIntHoDeps _hdIofld _hdIolab _hdIpmp _hdIpmpr _hdIps _hdIruleMap _hdIrulenumber _hdIself _hdIsfp _hdIsynmap _hdIsyns _hdIvisMap _hdIvisitnum) = inv_Nonterminal_s71 _hdX71 (T_Nonterminal_vIn70 _hdOain _hdOan _hdOaroundMap _hdOasn _hdOaugM _hdOclassContexts _hdOclosedHoNtDeps _hdOclosedHoNtRevDeps _hdOclosedNtDeps _hdOflab _hdOfty _hdOftyf _hdOhoMapf _hdOlfpf _hdOmergeMap _hdOnmp _hdOnmprf _hdOolab _hdOoptions _hdOpmpf _hdOpmprf _hdOres_ads _hdOrulenumber _hdOsched _hdOtdp _hdOvisMapf _hdOvisitnum)+         (T_Nonterminals_vOut73 _tlIads _tlIap _tlIenonts _tlIfdps _tlIfieldMap _tlIflab _tlIfsInP _tlIfty _tlIgen _tlIhoMap _tlIinhmap _tlIinhs _tlIinss _tlIlfp _tlIlfpr _tlIlocalSigMap _tlIntDeps _tlIntHoDeps _tlIofld _tlIolab _tlIpmp _tlIpmpr _tlIps _tlIruleMap _tlIrulenumber _tlIself _tlIsfp _tlIsynmap _tlIsyns _tlIvisMap _tlIvisitnum) = inv_Nonterminals_s74 _tlX74 (T_Nonterminals_vIn73 _tlOain _tlOan _tlOaroundMap _tlOasn _tlOaugM _tlOclassContexts _tlOclosedHoNtDeps _tlOclosedHoNtRevDeps _tlOclosedNtDeps _tlOflab _tlOfty _tlOftyf _tlOhoMapf _tlOlfpf _tlOmergeMap _tlOnmp _tlOnmprf _tlOolab _tlOoptions _tlOpmpf _tlOpmprf _tlOres_ads _tlOrulenumber _tlOsched _tlOtdp _tlOvisMapf _tlOvisitnum)+         _lhsOads :: [Edge]+         _lhsOads = rule423 _hdIads _tlIads+         _lhsOap :: A_P+         _lhsOap = rule424 _hdIap _tlIap+         _lhsOenonts :: ENonterminals+         _lhsOenonts = rule425 _hdIenonts _tlIenonts+         _lhsOfdps :: AttrOrderMap+         _lhsOfdps = rule426 _hdIfdps _tlIfdps+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule427 _hdIfieldMap _tlIfieldMap+         _lhsOfsInP :: FsInP+         _lhsOfsInP = rule428 _hdIfsInP _tlIfsInP+         _lhsOfty :: FTY+         _lhsOfty = rule429 _hdIfty _tlIfty+         _lhsOgen :: Map Int Int+         _lhsOgen = rule430 _hdIgen _tlIgen+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule431 _hdIhoMap _tlIhoMap+         _lhsOinhmap :: Map.Map NontermIdent Attributes+         _lhsOinhmap = rule432 _hdIinhmap _tlIinhmap+         _lhsOinhs :: AI_N+         _lhsOinhs = rule433 _hdIinhs _tlIinhs+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule434 _hdIinss _tlIinss+         _lhsOlfp :: SF_P+         _lhsOlfp = rule435 _hdIlfp _tlIlfp+         _lhsOlfpr :: SF_P+         _lhsOlfpr = rule436 _hdIlfpr _tlIlfpr+         _lhsOlocalSigMap :: Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))+         _lhsOlocalSigMap = rule437 _hdIlocalSigMap _tlIlocalSigMap+         _lhsOntDeps :: Map NontermIdent (Set NontermIdent)+         _lhsOntDeps = rule438 _hdIntDeps _tlIntDeps+         _lhsOntHoDeps :: Map NontermIdent (Set NontermIdent)+         _lhsOntHoDeps = rule439 _hdIntHoDeps _tlIntHoDeps+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule440 _hdIofld _tlIofld+         _lhsOpmp :: PMP+         _lhsOpmp = rule441 _hdIpmp _tlIpmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule442 _hdIpmpr _tlIpmpr+         _lhsOps :: [PLabel]+         _lhsOps = rule443 _hdIps _tlIps+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOruleMap = rule444 _hdIruleMap _tlIruleMap+         _lhsOsfp :: SF_P+         _lhsOsfp = rule445 _hdIsfp _tlIsfp+         _lhsOsynmap :: Map.Map NontermIdent Attributes+         _lhsOsynmap = rule446 _hdIsynmap _tlIsynmap+         _lhsOsyns :: AS_N+         _lhsOsyns = rule447 _hdIsyns _tlIsyns+         _lhsOvisMap :: IMap.IntMap Int+         _lhsOvisMap = rule448 _hdIvisMap _tlIvisMap+         _self = rule449 _hdIself _tlIself+         _lhsOself :: Nonterminals+         _lhsOself = rule450 _self+         _lhsOflab :: Int+         _lhsOflab = rule451 _tlIflab+         _lhsOolab :: Int+         _lhsOolab = rule452 _tlIolab+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule453 _tlIrulenumber+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule454 _tlIvisitnum+         _hdOain = rule455 _lhsIain+         _hdOan = rule456 _lhsIan+         _hdOaroundMap = rule457 _lhsIaroundMap+         _hdOasn = rule458 _lhsIasn+         _hdOaugM = rule459 _lhsIaugM+         _hdOclassContexts = rule460 _lhsIclassContexts+         _hdOclosedHoNtDeps = rule461 _lhsIclosedHoNtDeps+         _hdOclosedHoNtRevDeps = rule462 _lhsIclosedHoNtRevDeps+         _hdOclosedNtDeps = rule463 _lhsIclosedNtDeps+         _hdOflab = rule464 _lhsIflab+         _hdOfty = rule465 _lhsIfty+         _hdOftyf = rule466 _lhsIftyf+         _hdOhoMapf = rule467 _lhsIhoMapf+         _hdOlfpf = rule468 _lhsIlfpf+         _hdOmergeMap = rule469 _lhsImergeMap+         _hdOnmp = rule470 _lhsInmp+         _hdOnmprf = rule471 _lhsInmprf+         _hdOolab = rule472 _lhsIolab+         _hdOoptions = rule473 _lhsIoptions+         _hdOpmpf = rule474 _lhsIpmpf+         _hdOpmprf = rule475 _lhsIpmprf+         _hdOres_ads = rule476 _lhsIres_ads+         _hdOrulenumber = rule477 _lhsIrulenumber+         _hdOsched = rule478 _lhsIsched+         _hdOtdp = rule479 _lhsItdp+         _hdOvisMapf = rule480 _lhsIvisMapf+         _hdOvisitnum = rule481 _lhsIvisitnum+         _tlOain = rule482 _lhsIain+         _tlOan = rule483 _lhsIan+         _tlOaroundMap = rule484 _lhsIaroundMap+         _tlOasn = rule485 _lhsIasn+         _tlOaugM = rule486 _lhsIaugM+         _tlOclassContexts = rule487 _lhsIclassContexts+         _tlOclosedHoNtDeps = rule488 _lhsIclosedHoNtDeps+         _tlOclosedHoNtRevDeps = rule489 _lhsIclosedHoNtRevDeps+         _tlOclosedNtDeps = rule490 _lhsIclosedNtDeps+         _tlOflab = rule491 _hdIflab+         _tlOfty = rule492 _hdIfty+         _tlOftyf = rule493 _lhsIftyf+         _tlOhoMapf = rule494 _lhsIhoMapf+         _tlOlfpf = rule495 _lhsIlfpf+         _tlOmergeMap = rule496 _lhsImergeMap+         _tlOnmp = rule497 _lhsInmp+         _tlOnmprf = rule498 _lhsInmprf+         _tlOolab = rule499 _hdIolab+         _tlOoptions = rule500 _lhsIoptions+         _tlOpmpf = rule501 _lhsIpmpf+         _tlOpmprf = rule502 _lhsIpmprf+         _tlOres_ads = rule503 _lhsIres_ads+         _tlOrulenumber = rule504 _hdIrulenumber+         _tlOsched = rule505 _lhsIsched+         _tlOtdp = rule506 _lhsItdp+         _tlOvisMapf = rule507 _lhsIvisMapf+         _tlOvisitnum = rule508 _hdIvisitnum+         __result_ = T_Nonterminals_vOut73 _lhsOads _lhsOap _lhsOenonts _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinhmap _lhsOinhs _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOsynmap _lhsOsyns _lhsOvisMap _lhsOvisitnum+         in __result_ )+     in C_Nonterminals_s74 v73+   {-# INLINE rule423 #-}+   rule423 = \ ((_hdIads) :: [Edge]) ((_tlIads) :: [Edge]) ->+     ((++) _hdIads _tlIads)+   {-# INLINE rule424 #-}+   rule424 = \ ((_hdIap) :: A_P) ((_tlIap) :: A_P) ->+     (Map.unionWith (++) _hdIap _tlIap)+   {-# INLINE rule425 #-}+   rule425 = \ ((_hdIenonts) :: ENonterminals) ((_tlIenonts) :: ENonterminals) ->+     ((++) _hdIenonts _tlIenonts)+   {-# INLINE rule426 #-}+   rule426 = \ ((_hdIfdps) :: AttrOrderMap) ((_tlIfdps) :: AttrOrderMap) ->+     (Map.union _hdIfdps _tlIfdps)+   {-# INLINE rule427 #-}+   rule427 = \ ((_hdIfieldMap) :: FMap) ((_tlIfieldMap) :: FMap) ->+     ((Map.union) _hdIfieldMap _tlIfieldMap)+   {-# INLINE rule428 #-}+   rule428 = \ ((_hdIfsInP) :: FsInP) ((_tlIfsInP) :: FsInP) ->+     ((Map.union) _hdIfsInP _tlIfsInP)+   {-# INLINE rule429 #-}+   rule429 = \ ((_hdIfty) :: FTY) ((_tlIfty) :: FTY) ->+     (Map.union _hdIfty _tlIfty)+   {-# INLINE rule430 #-}+   rule430 = \ ((_hdIgen) :: Map Int Int) ((_tlIgen) :: Map Int Int) ->+     (Map.union _hdIgen _tlIgen)+   {-# INLINE rule431 #-}+   rule431 = \ ((_hdIhoMap) :: HOMap) ((_tlIhoMap) :: HOMap) ->+     ((Map.union) _hdIhoMap _tlIhoMap)+   {-# INLINE rule432 #-}+   rule432 = \ ((_hdIinhmap) :: Map.Map NontermIdent Attributes) ((_tlIinhmap) :: Map.Map NontermIdent Attributes) ->+     _hdIinhmap `Map.union` _tlIinhmap+   {-# INLINE rule433 #-}+   rule433 = \ ((_hdIinhs) :: AI_N) ((_tlIinhs) :: AI_N) ->+     (Map.union _hdIinhs _tlIinhs)+   {-# INLINE rule434 #-}+   rule434 = \ ((_hdIinss) :: Map Int [Int]) ((_tlIinss) :: Map Int [Int]) ->+     (Map.unionWith (++) _hdIinss _tlIinss)+   {-# INLINE rule435 #-}+   rule435 = \ ((_hdIlfp) :: SF_P) ((_tlIlfp) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIlfp _tlIlfp)+   {-# INLINE rule436 #-}+   rule436 = \ ((_hdIlfpr) :: SF_P) ((_tlIlfpr) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIlfpr _tlIlfpr)+   {-# INLINE rule437 #-}+   rule437 = \ ((_hdIlocalSigMap) :: Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))) ((_tlIlocalSigMap) :: Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))) ->+     _hdIlocalSigMap `Map.union` _tlIlocalSigMap+   {-# INLINE rule438 #-}+   rule438 = \ ((_hdIntDeps) :: Map NontermIdent (Set NontermIdent)) ((_tlIntDeps) :: Map NontermIdent (Set NontermIdent)) ->+     _hdIntDeps `mappend` _tlIntDeps+   {-# INLINE rule439 #-}+   rule439 = \ ((_hdIntHoDeps) :: Map NontermIdent (Set NontermIdent)) ((_tlIntHoDeps) :: Map NontermIdent (Set NontermIdent)) ->+     _hdIntHoDeps `mappend` _tlIntHoDeps+   {-# INLINE rule440 #-}+   rule440 = \ ((_hdIofld) :: [(Int, Int)]) ((_tlIofld) :: [(Int, Int)]) ->+     ((++) _hdIofld _tlIofld)+   {-# INLINE rule441 #-}+   rule441 = \ ((_hdIpmp) :: PMP) ((_tlIpmp) :: PMP) ->+     (Map.union _hdIpmp _tlIpmp)+   {-# INLINE rule442 #-}+   rule442 = \ ((_hdIpmpr) :: PMP_R) ((_tlIpmpr) :: PMP_R) ->+     (Map.union _hdIpmpr _tlIpmpr)+   {-# INLINE rule443 #-}+   rule443 = \ ((_hdIps) :: [PLabel]) ((_tlIps) :: [PLabel]) ->+     ((++) _hdIps _tlIps)+   {-# INLINE rule444 #-}+   rule444 = \ ((_hdIruleMap) :: Map.Map MyOccurrence Identifier) ((_tlIruleMap) :: Map.Map MyOccurrence Identifier) ->+     (Map.union _hdIruleMap _tlIruleMap)+   {-# INLINE rule445 #-}+   rule445 = \ ((_hdIsfp) :: SF_P) ((_tlIsfp) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIsfp _tlIsfp)+   {-# INLINE rule446 #-}+   rule446 = \ ((_hdIsynmap) :: Map.Map NontermIdent Attributes) ((_tlIsynmap) :: Map.Map NontermIdent Attributes) ->+     _hdIsynmap `Map.union` _tlIsynmap+   {-# INLINE rule447 #-}+   rule447 = \ ((_hdIsyns) :: AS_N) ((_tlIsyns) :: AS_N) ->+     (Map.union _hdIsyns _tlIsyns)+   {-# INLINE rule448 #-}+   rule448 = \ ((_hdIvisMap) :: IMap.IntMap Int) ((_tlIvisMap) :: IMap.IntMap Int) ->+     (IMap.union _hdIvisMap _tlIvisMap)+   {-# INLINE rule449 #-}+   rule449 = \ ((_hdIself) :: Nonterminal) ((_tlIself) :: Nonterminals) ->+     (:) _hdIself _tlIself+   {-# INLINE rule450 #-}+   rule450 = \ _self ->+     _self+   {-# INLINE rule451 #-}+   rule451 = \ ((_tlIflab) :: Int) ->+     _tlIflab+   {-# INLINE rule452 #-}+   rule452 = \ ((_tlIolab) :: Int) ->+     _tlIolab+   {-# INLINE rule453 #-}+   rule453 = \ ((_tlIrulenumber) :: Int) ->+     _tlIrulenumber+   {-# INLINE rule454 #-}+   rule454 = \ ((_tlIvisitnum) :: Int) ->+     _tlIvisitnum+   {-# INLINE rule455 #-}+   rule455 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule456 #-}+   rule456 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule457 #-}+   rule457 = \ ((_lhsIaroundMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->+     _lhsIaroundMap+   {-# INLINE rule458 #-}+   rule458 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule459 #-}+   rule459 = \ ((_lhsIaugM) :: Map.Map Identifier (Map.Map Identifier (Set.Set Dependency))) ->+     _lhsIaugM+   {-# INLINE rule460 #-}+   rule460 = \ ((_lhsIclassContexts) :: ContextMap) ->+     _lhsIclassContexts+   {-# INLINE rule461 #-}+   rule461 = \ ((_lhsIclosedHoNtDeps) :: Map NontermIdent (Set NontermIdent)) ->+     _lhsIclosedHoNtDeps+   {-# INLINE rule462 #-}+   rule462 = \ ((_lhsIclosedHoNtRevDeps) :: Map NontermIdent (Set NontermIdent)) ->+     _lhsIclosedHoNtRevDeps+   {-# INLINE rule463 #-}+   rule463 = \ ((_lhsIclosedNtDeps) :: Map NontermIdent (Set NontermIdent)) ->+     _lhsIclosedNtDeps+   {-# INLINE rule464 #-}+   rule464 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule465 #-}+   rule465 = \ ((_lhsIfty) :: FTY) ->+     _lhsIfty+   {-# INLINE rule466 #-}+   rule466 = \ ((_lhsIftyf) :: FTY) ->+     _lhsIftyf+   {-# INLINE rule467 #-}+   rule467 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule468 #-}+   rule468 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule469 #-}+   rule469 = \ ((_lhsImergeMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) ->+     _lhsImergeMap+   {-# INLINE rule470 #-}+   rule470 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule471 #-}+   rule471 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule472 #-}+   rule472 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab+   {-# INLINE rule473 #-}+   rule473 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule474 #-}+   rule474 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule475 #-}+   rule475 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule476 #-}+   rule476 = \ ((_lhsIres_ads) :: [Edge]) ->+     _lhsIres_ads+   {-# INLINE rule477 #-}+   rule477 = \ ((_lhsIrulenumber) :: Int) ->+     _lhsIrulenumber+   {-# INLINE rule478 #-}+   rule478 = \ ((_lhsIsched) :: InterfaceRes) ->+     _lhsIsched+   {-# INLINE rule479 #-}+   rule479 = \ ((_lhsItdp) :: TDPRes) ->+     _lhsItdp+   {-# INLINE rule480 #-}+   rule480 = \ ((_lhsIvisMapf) :: IMap.IntMap Int) ->+     _lhsIvisMapf+   {-# INLINE rule481 #-}+   rule481 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum+   {-# INLINE rule482 #-}+   rule482 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule483 #-}+   rule483 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule484 #-}+   rule484 = \ ((_lhsIaroundMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->+     _lhsIaroundMap+   {-# INLINE rule485 #-}+   rule485 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule486 #-}+   rule486 = \ ((_lhsIaugM) :: Map.Map Identifier (Map.Map Identifier (Set.Set Dependency))) ->+     _lhsIaugM+   {-# INLINE rule487 #-}+   rule487 = \ ((_lhsIclassContexts) :: ContextMap) ->+     _lhsIclassContexts+   {-# INLINE rule488 #-}+   rule488 = \ ((_lhsIclosedHoNtDeps) :: Map NontermIdent (Set NontermIdent)) ->+     _lhsIclosedHoNtDeps+   {-# INLINE rule489 #-}+   rule489 = \ ((_lhsIclosedHoNtRevDeps) :: Map NontermIdent (Set NontermIdent)) ->+     _lhsIclosedHoNtRevDeps+   {-# INLINE rule490 #-}+   rule490 = \ ((_lhsIclosedNtDeps) :: Map NontermIdent (Set NontermIdent)) ->+     _lhsIclosedNtDeps+   {-# INLINE rule491 #-}+   rule491 = \ ((_hdIflab) :: Int) ->+     _hdIflab+   {-# INLINE rule492 #-}+   rule492 = \ ((_hdIfty) :: FTY) ->+     _hdIfty+   {-# INLINE rule493 #-}+   rule493 = \ ((_lhsIftyf) :: FTY) ->+     _lhsIftyf+   {-# INLINE rule494 #-}+   rule494 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule495 #-}+   rule495 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule496 #-}+   rule496 = \ ((_lhsImergeMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) ->+     _lhsImergeMap+   {-# INLINE rule497 #-}+   rule497 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule498 #-}+   rule498 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule499 #-}+   rule499 = \ ((_hdIolab) :: Int) ->+     _hdIolab+   {-# INLINE rule500 #-}+   rule500 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule501 #-}+   rule501 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule502 #-}+   rule502 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule503 #-}+   rule503 = \ ((_lhsIres_ads) :: [Edge]) ->+     _lhsIres_ads+   {-# INLINE rule504 #-}+   rule504 = \ ((_hdIrulenumber) :: Int) ->+     _hdIrulenumber+   {-# INLINE rule505 #-}+   rule505 = \ ((_lhsIsched) :: InterfaceRes) ->+     _lhsIsched+   {-# INLINE rule506 #-}+   rule506 = \ ((_lhsItdp) :: TDPRes) ->+     _lhsItdp+   {-# INLINE rule507 #-}+   rule507 = \ ((_lhsIvisMapf) :: IMap.IntMap Int) ->+     _lhsIvisMapf+   {-# INLINE rule508 #-}+   rule508 = \ ((_hdIvisitnum) :: Int) ->+     _hdIvisitnum+{-# NOINLINE sem_Nonterminals_Nil #-}+sem_Nonterminals_Nil ::  T_Nonterminals +sem_Nonterminals_Nil  = T_Nonterminals (return st74) where+   {-# NOINLINE st74 #-}+   st74 = let+      v73 :: T_Nonterminals_v73 +      v73 = \ (T_Nonterminals_vIn73 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIclassContexts _lhsIclosedHoNtDeps _lhsIclosedHoNtRevDeps _lhsIclosedNtDeps _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsIsched _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _lhsOads :: [Edge]+         _lhsOads = rule509  ()+         _lhsOap :: A_P+         _lhsOap = rule510  ()+         _lhsOenonts :: ENonterminals+         _lhsOenonts = rule511  ()+         _lhsOfdps :: AttrOrderMap+         _lhsOfdps = rule512  ()+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule513  ()+         _lhsOfsInP :: FsInP+         _lhsOfsInP = rule514  ()+         _lhsOfty :: FTY+         _lhsOfty = rule515  ()+         _lhsOgen :: Map Int Int+         _lhsOgen = rule516  ()+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule517  ()+         _lhsOinhmap :: Map.Map NontermIdent Attributes+         _lhsOinhmap = rule518  ()+         _lhsOinhs :: AI_N+         _lhsOinhs = rule519  ()+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule520  ()+         _lhsOlfp :: SF_P+         _lhsOlfp = rule521  ()+         _lhsOlfpr :: SF_P+         _lhsOlfpr = rule522  ()+         _lhsOlocalSigMap :: Map.Map NontermIdent (Map.Map ConstructorIdent (Map.Map Identifier Type))+         _lhsOlocalSigMap = rule523  ()+         _lhsOntDeps :: Map NontermIdent (Set NontermIdent)+         _lhsOntDeps = rule524  ()+         _lhsOntHoDeps :: Map NontermIdent (Set NontermIdent)+         _lhsOntHoDeps = rule525  ()+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule526  ()+         _lhsOpmp :: PMP+         _lhsOpmp = rule527  ()+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule528  ()+         _lhsOps :: [PLabel]+         _lhsOps = rule529  ()+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOruleMap = rule530  ()+         _lhsOsfp :: SF_P+         _lhsOsfp = rule531  ()+         _lhsOsynmap :: Map.Map NontermIdent Attributes+         _lhsOsynmap = rule532  ()+         _lhsOsyns :: AS_N+         _lhsOsyns = rule533  ()+         _lhsOvisMap :: IMap.IntMap Int+         _lhsOvisMap = rule534  ()+         _self = rule535  ()+         _lhsOself :: Nonterminals+         _lhsOself = rule536 _self+         _lhsOflab :: Int+         _lhsOflab = rule537 _lhsIflab+         _lhsOolab :: Int+         _lhsOolab = rule538 _lhsIolab+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule539 _lhsIrulenumber+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule540 _lhsIvisitnum+         __result_ = T_Nonterminals_vOut73 _lhsOads _lhsOap _lhsOenonts _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinhmap _lhsOinhs _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOntDeps _lhsOntHoDeps _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOsynmap _lhsOsyns _lhsOvisMap _lhsOvisitnum+         in __result_ )+     in C_Nonterminals_s74 v73+   {-# INLINE rule509 #-}+   rule509 = \  (_ :: ()) ->+     []+   {-# INLINE rule510 #-}+   rule510 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule511 #-}+   rule511 = \  (_ :: ()) ->+     []+   {-# INLINE rule512 #-}+   rule512 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule513 #-}+   rule513 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule514 #-}+   rule514 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule515 #-}+   rule515 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule516 #-}+   rule516 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule517 #-}+   rule517 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule518 #-}+   rule518 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule519 #-}+   rule519 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule520 #-}+   rule520 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule521 #-}+   rule521 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule522 #-}+   rule522 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule523 #-}+   rule523 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule524 #-}+   rule524 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule525 #-}+   rule525 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule526 #-}+   rule526 = \  (_ :: ()) ->+     []+   {-# INLINE rule527 #-}+   rule527 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule528 #-}+   rule528 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule529 #-}+   rule529 = \  (_ :: ()) ->+     ([])+   {-# INLINE rule530 #-}+   rule530 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule531 #-}+   rule531 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule532 #-}+   rule532 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule533 #-}+   rule533 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule534 #-}+   rule534 = \  (_ :: ()) ->+     IMap.empty+   {-# INLINE rule535 #-}+   rule535 = \  (_ :: ()) ->+     []+   {-# INLINE rule536 #-}+   rule536 = \ _self ->+     _self+   {-# INLINE rule537 #-}+   rule537 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule538 #-}+   rule538 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab+   {-# INLINE rule539 #-}+   rule539 = \ ((_lhsIrulenumber) :: Int) ->+     _lhsIrulenumber+   {-# INLINE rule540 #-}+   rule540 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum++-- Pattern -----------------------------------------------------+-- wrapper+data Inh_Pattern  = Inh_Pattern {  }+data Syn_Pattern  = Syn_Pattern { afs_Syn_Pattern :: ([(FLabel, ALabel, Bool)]), copy_Syn_Pattern :: (Pattern), self_Syn_Pattern :: (Pattern) }+{-# INLINABLE wrap_Pattern #-}+wrap_Pattern :: T_Pattern  -> Inh_Pattern  -> (Syn_Pattern )+wrap_Pattern (T_Pattern act) (Inh_Pattern ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg76 = T_Pattern_vIn76 +        (T_Pattern_vOut76 _lhsOafs _lhsOcopy _lhsOself) <- return (inv_Pattern_s77 sem arg76)+        return (Syn_Pattern _lhsOafs _lhsOcopy _lhsOself)+   )++-- cata+{-# NOINLINE sem_Pattern #-}+sem_Pattern :: Pattern  -> T_Pattern +sem_Pattern ( Constr name_ pats_ ) = sem_Pattern_Constr name_ ( sem_Patterns pats_ )+sem_Pattern ( Product pos_ pats_ ) = sem_Pattern_Product pos_ ( sem_Patterns pats_ )+sem_Pattern ( Alias field_ attr_ pat_ ) = sem_Pattern_Alias field_ attr_ ( sem_Pattern pat_ )+sem_Pattern ( Irrefutable pat_ ) = sem_Pattern_Irrefutable ( sem_Pattern pat_ )+sem_Pattern ( Underscore pos_ ) = sem_Pattern_Underscore pos_++-- semantic domain+newtype T_Pattern  = T_Pattern {+                               attach_T_Pattern :: Identity (T_Pattern_s77 )+                               }+newtype T_Pattern_s77  = C_Pattern_s77 {+                                       inv_Pattern_s77 :: (T_Pattern_v76 )+                                       }+data T_Pattern_s78  = C_Pattern_s78+type T_Pattern_v76  = (T_Pattern_vIn76 ) -> (T_Pattern_vOut76 )+data T_Pattern_vIn76  = T_Pattern_vIn76 +data T_Pattern_vOut76  = T_Pattern_vOut76 ([(FLabel, ALabel, Bool)]) (Pattern) (Pattern)+{-# NOINLINE sem_Pattern_Constr #-}+sem_Pattern_Constr :: (ConstructorIdent) -> T_Patterns  -> T_Pattern +sem_Pattern_Constr arg_name_ arg_pats_ = T_Pattern (return st77) where+   {-# NOINLINE st77 #-}+   st77 = let+      v76 :: T_Pattern_v76 +      v76 = \ (T_Pattern_vIn76 ) -> ( let+         _patsX80 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))+         (T_Patterns_vOut79 _patsIafs _patsIcopy _patsIself) = inv_Patterns_s80 _patsX80 (T_Patterns_vIn79 )+         _lhsOafs :: [(FLabel, ALabel, Bool)]+         _lhsOafs = rule541 _patsIafs+         _copy = rule542 _patsIcopy arg_name_+         _self = rule543 _patsIself arg_name_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule544 _copy+         _lhsOself :: Pattern+         _lhsOself = rule545 _self+         __result_ = T_Pattern_vOut76 _lhsOafs _lhsOcopy _lhsOself+         in __result_ )+     in C_Pattern_s77 v76+   {-# INLINE rule541 #-}+   rule541 = \ ((_patsIafs) :: [(FLabel, ALabel, Bool)]) ->+     _patsIafs+   {-# INLINE rule542 #-}+   rule542 = \ ((_patsIcopy) :: Patterns) name_ ->+     Constr name_ _patsIcopy+   {-# INLINE rule543 #-}+   rule543 = \ ((_patsIself) :: Patterns) name_ ->+     Constr name_ _patsIself+   {-# INLINE rule544 #-}+   rule544 = \ _copy ->+     _copy+   {-# INLINE rule545 #-}+   rule545 = \ _self ->+     _self+{-# NOINLINE sem_Pattern_Product #-}+sem_Pattern_Product :: (Pos) -> T_Patterns  -> T_Pattern +sem_Pattern_Product arg_pos_ arg_pats_ = T_Pattern (return st77) where+   {-# NOINLINE st77 #-}+   st77 = let+      v76 :: T_Pattern_v76 +      v76 = \ (T_Pattern_vIn76 ) -> ( let+         _patsX80 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_pats_))+         (T_Patterns_vOut79 _patsIafs _patsIcopy _patsIself) = inv_Patterns_s80 _patsX80 (T_Patterns_vIn79 )+         _lhsOafs :: [(FLabel, ALabel, Bool)]+         _lhsOafs = rule546 _patsIafs+         _copy = rule547 _patsIcopy arg_pos_+         _self = rule548 _patsIself arg_pos_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule549 _copy+         _lhsOself :: Pattern+         _lhsOself = rule550 _self+         __result_ = T_Pattern_vOut76 _lhsOafs _lhsOcopy _lhsOself+         in __result_ )+     in C_Pattern_s77 v76+   {-# INLINE rule546 #-}+   rule546 = \ ((_patsIafs) :: [(FLabel, ALabel, Bool)]) ->+     _patsIafs+   {-# INLINE rule547 #-}+   rule547 = \ ((_patsIcopy) :: Patterns) pos_ ->+     Product pos_ _patsIcopy+   {-# INLINE rule548 #-}+   rule548 = \ ((_patsIself) :: Patterns) pos_ ->+     Product pos_ _patsIself+   {-# INLINE rule549 #-}+   rule549 = \ _copy ->+     _copy+   {-# INLINE rule550 #-}+   rule550 = \ _self ->+     _self+{-# NOINLINE sem_Pattern_Alias #-}+sem_Pattern_Alias :: (Identifier) -> (Identifier) -> T_Pattern  -> T_Pattern +sem_Pattern_Alias arg_field_ arg_attr_ arg_pat_ = T_Pattern (return st77) where+   {-# NOINLINE st77 #-}+   st77 = let+      v76 :: T_Pattern_v76 +      v76 = \ (T_Pattern_vIn76 ) -> ( let+         _patX77 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))+         (T_Pattern_vOut76 _patIafs _patIcopy _patIself) = inv_Pattern_s77 _patX77 (T_Pattern_vIn76 )+         _lhsOafs :: [(FLabel, ALabel, Bool)]+         _lhsOafs = rule551 _patIafs arg_attr_ arg_field_+         _copy = rule552 _patIcopy arg_attr_ arg_field_+         _self = rule553 _patIself arg_attr_ arg_field_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule554 _copy+         _lhsOself :: Pattern+         _lhsOself = rule555 _self+         __result_ = T_Pattern_vOut76 _lhsOafs _lhsOcopy _lhsOself+         in __result_ )+     in C_Pattern_s77 v76+   {-# INLINE rule551 #-}+   {-# LINE 260 "src-ag/LOAG/Prepare.ag" #-}+   rule551 = \ ((_patIafs) :: [(FLabel, ALabel, Bool)]) attr_ field_ ->+                {-# LINE 260 "src-ag/LOAG/Prepare.ag" #-}+                let isLocal = (field_ == _LOC || field_ == _INST)+                 in [(getName field_, (getName attr_, dlhs field_),+                      isLocal)] ++ _patIafs+                {-# LINE 4548 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule552 #-}+   rule552 = \ ((_patIcopy) :: Pattern) attr_ field_ ->+     Alias field_ attr_ _patIcopy+   {-# INLINE rule553 #-}+   rule553 = \ ((_patIself) :: Pattern) attr_ field_ ->+     Alias field_ attr_ _patIself+   {-# INLINE rule554 #-}+   rule554 = \ _copy ->+     _copy+   {-# INLINE rule555 #-}+   rule555 = \ _self ->+     _self+{-# NOINLINE sem_Pattern_Irrefutable #-}+sem_Pattern_Irrefutable :: T_Pattern  -> T_Pattern +sem_Pattern_Irrefutable arg_pat_ = T_Pattern (return st77) where+   {-# NOINLINE st77 #-}+   st77 = let+      v76 :: T_Pattern_v76 +      v76 = \ (T_Pattern_vIn76 ) -> ( let+         _patX77 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pat_))+         (T_Pattern_vOut76 _patIafs _patIcopy _patIself) = inv_Pattern_s77 _patX77 (T_Pattern_vIn76 )+         _lhsOafs :: [(FLabel, ALabel, Bool)]+         _lhsOafs = rule556 _patIafs+         _copy = rule557 _patIcopy+         _self = rule558 _patIself+         _lhsOcopy :: Pattern+         _lhsOcopy = rule559 _copy+         _lhsOself :: Pattern+         _lhsOself = rule560 _self+         __result_ = T_Pattern_vOut76 _lhsOafs _lhsOcopy _lhsOself+         in __result_ )+     in C_Pattern_s77 v76+   {-# INLINE rule556 #-}+   rule556 = \ ((_patIafs) :: [(FLabel, ALabel, Bool)]) ->+     _patIafs+   {-# INLINE rule557 #-}+   rule557 = \ ((_patIcopy) :: Pattern) ->+     Irrefutable _patIcopy+   {-# INLINE rule558 #-}+   rule558 = \ ((_patIself) :: Pattern) ->+     Irrefutable _patIself+   {-# INLINE rule559 #-}+   rule559 = \ _copy ->+     _copy+   {-# INLINE rule560 #-}+   rule560 = \ _self ->+     _self+{-# NOINLINE sem_Pattern_Underscore #-}+sem_Pattern_Underscore :: (Pos) -> T_Pattern +sem_Pattern_Underscore arg_pos_ = T_Pattern (return st77) where+   {-# NOINLINE st77 #-}+   st77 = let+      v76 :: T_Pattern_v76 +      v76 = \ (T_Pattern_vIn76 ) -> ( let+         _lhsOafs :: [(FLabel, ALabel, Bool)]+         _lhsOafs = rule561  ()+         _copy = rule562 arg_pos_+         _self = rule563 arg_pos_+         _lhsOcopy :: Pattern+         _lhsOcopy = rule564 _copy+         _lhsOself :: Pattern+         _lhsOself = rule565 _self+         __result_ = T_Pattern_vOut76 _lhsOafs _lhsOcopy _lhsOself+         in __result_ )+     in C_Pattern_s77 v76+   {-# INLINE rule561 #-}+   rule561 = \  (_ :: ()) ->+     []+   {-# INLINE rule562 #-}+   rule562 = \ pos_ ->+     Underscore pos_+   {-# INLINE rule563 #-}+   rule563 = \ pos_ ->+     Underscore pos_+   {-# INLINE rule564 #-}+   rule564 = \ _copy ->+     _copy+   {-# INLINE rule565 #-}+   rule565 = \ _self ->+     _self++-- Patterns ----------------------------------------------------+-- wrapper+data Inh_Patterns  = Inh_Patterns {  }+data Syn_Patterns  = Syn_Patterns { afs_Syn_Patterns :: ([(FLabel, ALabel, Bool)]), copy_Syn_Patterns :: (Patterns), self_Syn_Patterns :: (Patterns) }+{-# INLINABLE wrap_Patterns #-}+wrap_Patterns :: T_Patterns  -> Inh_Patterns  -> (Syn_Patterns )+wrap_Patterns (T_Patterns act) (Inh_Patterns ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg79 = T_Patterns_vIn79 +        (T_Patterns_vOut79 _lhsOafs _lhsOcopy _lhsOself) <- return (inv_Patterns_s80 sem arg79)+        return (Syn_Patterns _lhsOafs _lhsOcopy _lhsOself)+   )++-- cata+{-# NOINLINE sem_Patterns #-}+sem_Patterns :: Patterns  -> T_Patterns +sem_Patterns list = Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list)++-- semantic domain+newtype T_Patterns  = T_Patterns {+                                 attach_T_Patterns :: Identity (T_Patterns_s80 )+                                 }+newtype T_Patterns_s80  = C_Patterns_s80 {+                                         inv_Patterns_s80 :: (T_Patterns_v79 )+                                         }+data T_Patterns_s81  = C_Patterns_s81+type T_Patterns_v79  = (T_Patterns_vIn79 ) -> (T_Patterns_vOut79 )+data T_Patterns_vIn79  = T_Patterns_vIn79 +data T_Patterns_vOut79  = T_Patterns_vOut79 ([(FLabel, ALabel, Bool)]) (Patterns) (Patterns)+{-# NOINLINE sem_Patterns_Cons #-}+sem_Patterns_Cons :: T_Pattern  -> T_Patterns  -> T_Patterns +sem_Patterns_Cons arg_hd_ arg_tl_ = T_Patterns (return st80) where+   {-# NOINLINE st80 #-}+   st80 = let+      v79 :: T_Patterns_v79 +      v79 = \ (T_Patterns_vIn79 ) -> ( let+         _hdX77 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_hd_))+         _tlX80 = Control.Monad.Identity.runIdentity (attach_T_Patterns (arg_tl_))+         (T_Pattern_vOut76 _hdIafs _hdIcopy _hdIself) = inv_Pattern_s77 _hdX77 (T_Pattern_vIn76 )+         (T_Patterns_vOut79 _tlIafs _tlIcopy _tlIself) = inv_Patterns_s80 _tlX80 (T_Patterns_vIn79 )+         _lhsOafs :: [(FLabel, ALabel, Bool)]+         _lhsOafs = rule566 _hdIafs _tlIafs+         _copy = rule567 _hdIcopy _tlIcopy+         _self = rule568 _hdIself _tlIself+         _lhsOcopy :: Patterns+         _lhsOcopy = rule569 _copy+         _lhsOself :: Patterns+         _lhsOself = rule570 _self+         __result_ = T_Patterns_vOut79 _lhsOafs _lhsOcopy _lhsOself+         in __result_ )+     in C_Patterns_s80 v79+   {-# INLINE rule566 #-}+   rule566 = \ ((_hdIafs) :: [(FLabel, ALabel, Bool)]) ((_tlIafs) :: [(FLabel, ALabel, Bool)]) ->+     _hdIafs ++ _tlIafs+   {-# INLINE rule567 #-}+   rule567 = \ ((_hdIcopy) :: Pattern) ((_tlIcopy) :: Patterns) ->+     (:) _hdIcopy _tlIcopy+   {-# INLINE rule568 #-}+   rule568 = \ ((_hdIself) :: Pattern) ((_tlIself) :: Patterns) ->+     (:) _hdIself _tlIself+   {-# INLINE rule569 #-}+   rule569 = \ _copy ->+     _copy+   {-# INLINE rule570 #-}+   rule570 = \ _self ->+     _self+{-# NOINLINE sem_Patterns_Nil #-}+sem_Patterns_Nil ::  T_Patterns +sem_Patterns_Nil  = T_Patterns (return st80) where+   {-# NOINLINE st80 #-}+   st80 = let+      v79 :: T_Patterns_v79 +      v79 = \ (T_Patterns_vIn79 ) -> ( let+         _lhsOafs :: [(FLabel, ALabel, Bool)]+         _lhsOafs = rule571  ()+         _copy = rule572  ()+         _self = rule573  ()+         _lhsOcopy :: Patterns+         _lhsOcopy = rule574 _copy+         _lhsOself :: Patterns+         _lhsOself = rule575 _self+         __result_ = T_Patterns_vOut79 _lhsOafs _lhsOcopy _lhsOself+         in __result_ )+     in C_Patterns_s80 v79+   {-# INLINE rule571 #-}+   rule571 = \  (_ :: ()) ->+     []+   {-# INLINE rule572 #-}+   rule572 = \  (_ :: ()) ->+     []+   {-# INLINE rule573 #-}+   rule573 = \  (_ :: ()) ->+     []+   {-# INLINE rule574 #-}+   rule574 = \ _copy ->+     _copy+   {-# INLINE rule575 #-}+   rule575 = \ _self ->+     _self++-- Production --------------------------------------------------+-- wrapper+data Inh_Production  = Inh_Production { ain_Inh_Production :: (MyType -> MyAttributes), an_Inh_Production :: (MyType -> MyAttributes), aroundMap_Inh_Production :: (Map ConstructorIdent (Map Identifier [Expression])), asn_Inh_Production :: (MyType -> MyAttributes), augM_Inh_Production :: (Map.Map Identifier (Set.Set Dependency)), dty_Inh_Production :: (MyType), flab_Inh_Production :: (Int), fty_Inh_Production :: (FTY), ftyf_Inh_Production :: (FTY), hoMapf_Inh_Production :: (HOMap), lfpf_Inh_Production :: (SF_P), mergeMap_Inh_Production :: (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))), mysegments_Inh_Production :: (MySegments), nmp_Inh_Production :: (NMP), nmprf_Inh_Production :: (NMP_R), olab_Inh_Production :: (Int), options_Inh_Production :: (Options), pmpf_Inh_Production :: (PMP), pmprf_Inh_Production :: (PMP_R), res_ads_Inh_Production :: ([Edge]), rulenumber_Inh_Production :: (Int), tdp_Inh_Production :: (TDPRes), visMapf_Inh_Production :: (IMap.IntMap Int), visitnum_Inh_Production :: (Int) }+data Syn_Production  = Syn_Production { ads_Syn_Production :: ([Edge]), ap_Syn_Production :: (A_P), eprods_Syn_Production :: (EProductions), fdps_Syn_Production :: (Map.Map ConstructorIdent (Set Dependency)), fieldMap_Syn_Production :: (FMap), flab_Syn_Production :: (Int), fsInP_Syn_Production :: (FsInP), fty_Syn_Production :: (FTY), gen_Syn_Production :: (Map Int Int), hoMap_Syn_Production :: (HOMap), inss_Syn_Production :: (Map Int [Int]), lfp_Syn_Production :: (SF_P), lfpr_Syn_Production :: (SF_P), localSigMap_Syn_Production :: (Map.Map ConstructorIdent (Map.Map Identifier Type)), ofld_Syn_Production :: ([(Int, Int)]), olab_Syn_Production :: (Int), pmp_Syn_Production :: (PMP), pmpr_Syn_Production :: (PMP_R), ps_Syn_Production :: (PLabel), refHoNts_Syn_Production :: (Set NontermIdent), refNts_Syn_Production :: (Set NontermIdent), ruleMap_Syn_Production :: (Map.Map MyOccurrence Identifier), rulenumber_Syn_Production :: (Int), self_Syn_Production :: (Production), sfp_Syn_Production :: (SF_P), visitnum_Syn_Production :: (Int) }+{-# INLINABLE wrap_Production #-}+wrap_Production :: T_Production  -> Inh_Production  -> (Syn_Production )+wrap_Production (T_Production act) (Inh_Production _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIdty _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImysegments _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsItdp _lhsIvisMapf _lhsIvisitnum) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg82 = T_Production_vIn82 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIdty _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImysegments _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsItdp _lhsIvisMapf _lhsIvisitnum+        (T_Production_vOut82 _lhsOads _lhsOap _lhsOeprods _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOrefHoNts _lhsOrefNts _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOvisitnum) <- return (inv_Production_s83 sem arg82)+        return (Syn_Production _lhsOads _lhsOap _lhsOeprods _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOrefHoNts _lhsOrefNts _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOvisitnum)+   )++-- cata+{-# INLINE sem_Production #-}+sem_Production :: Production  -> T_Production +sem_Production ( Production con_ params_ constraints_ children_ rules_ typeSigs_ macro_  ) = sem_Production_Production con_ params_ constraints_ ( sem_Children children_ ) ( sem_Rules rules_ ) ( sem_TypeSigs typeSigs_ ) macro_ ++-- semantic domain+newtype T_Production  = T_Production {+                                     attach_T_Production :: Identity (T_Production_s83 )+                                     }+newtype T_Production_s83  = C_Production_s83 {+                                             inv_Production_s83 :: (T_Production_v82 )+                                             }+data T_Production_s84  = C_Production_s84+type T_Production_v82  = (T_Production_vIn82 ) -> (T_Production_vOut82 )+data T_Production_vIn82  = T_Production_vIn82 (MyType -> MyAttributes) (MyType -> MyAttributes) (Map ConstructorIdent (Map Identifier [Expression])) (MyType -> MyAttributes) (Map.Map Identifier (Set.Set Dependency)) (MyType) (Int) (FTY) (FTY) (HOMap) (SF_P) (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))) (MySegments) (NMP) (NMP_R) (Int) (Options) (PMP) (PMP_R) ([Edge]) (Int) (TDPRes) (IMap.IntMap Int) (Int)+data T_Production_vOut82  = T_Production_vOut82 ([Edge]) (A_P) (EProductions) (Map.Map ConstructorIdent (Set Dependency)) (FMap) (Int) (FsInP) (FTY) (Map Int Int) (HOMap) (Map Int [Int]) (SF_P) (SF_P) (Map.Map ConstructorIdent (Map.Map Identifier Type)) ([(Int, Int)]) (Int) (PMP) (PMP_R) (PLabel) (Set NontermIdent) (Set NontermIdent) (Map.Map MyOccurrence Identifier) (Int) (Production) (SF_P) (Int)+{-# NOINLINE sem_Production_Production #-}+sem_Production_Production :: (ConstructorIdent) -> ([Identifier]) -> ([Type]) -> T_Children  -> T_Rules  -> T_TypeSigs  -> (MaybeMacro) ->  T_Production +sem_Production_Production arg_con_ arg_params_ arg_constraints_ arg_children_ arg_rules_ arg_typeSigs_ arg_macro_  = T_Production (return st83) where+   {-# NOINLINE st83 #-}+   st83 = let+      v82 :: T_Production_v82 +      v82 = \ (T_Production_vIn82 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIdty _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImysegments _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _childrenX38 = Control.Monad.Identity.runIdentity (attach_T_Children (arg_children_))+         _rulesX92 = Control.Monad.Identity.runIdentity (attach_T_Rules (arg_rules_))+         _typeSigsX101 = Control.Monad.Identity.runIdentity (attach_T_TypeSigs (arg_typeSigs_))+         _segsX68 = Control.Monad.Identity.runIdentity (attach_T_MySegments ((sem_MySegments segs_val_)))+         (T_Children_vOut37 _childrenIap _childrenIechilds _childrenIfieldMap _childrenIflab _childrenIfty _childrenIgen _childrenIhoMap _childrenIinss _childrenIofld _childrenIolab _childrenIpmp _childrenIpmpr _childrenIpts _childrenIrefHoNts _childrenIrefNts _childrenIself) = inv_Children_s38 _childrenX38 (T_Children_vIn37 _childrenOain _childrenOan _childrenOaroundMap _childrenOasn _childrenOdty _childrenOflab _childrenOfty _childrenOhoMapf _childrenOlfpf _childrenOmergeMap _childrenOmergedChildren _childrenOnmp _childrenOnmprf _childrenOolab _childrenOoptions _childrenOpll _childrenOpmpf _childrenOpmprf)+         (T_Rules_vOut91 _rulesIerules _rulesIlfp _rulesIlfpr _rulesIruleMap _rulesIrulenumber _rulesIself _rulesIsfp _rulesIusedLocals) = inv_Rules_s92 _rulesX92 (T_Rules_vIn91 _rulesOdty _rulesOlfpf _rulesOpll _rulesOpts _rulesOrulenumber)+         (T_TypeSigs_vOut100 _typeSigsIlocalSigMap _typeSigsIself) = inv_TypeSigs_s101 _typeSigsX101 (T_TypeSigs_vIn100 )+         (T_MySegments_vOut67 _segsIevisits _segsIself _segsIvisitnum) = inv_MySegments_s68 _segsX68 (T_MySegments_vIn67 _segsOain _segsOasn _segsOdone _segsOfty _segsOhoMapf _segsOlfpf _segsOnmp _segsOnmprf _segsOoptions _segsOpmpf _segsOpmprf _segsOps _segsOruleMap _segsOtdp _segsOvisMapf _segsOvisitnum)+         _aroundMap = rule576 _lhsIaroundMap arg_con_+         _mergeMap = rule577 _lhsImergeMap arg_con_+         _mergedChildren = rule578 _mergeMap+         _lhsOlocalSigMap :: Map.Map ConstructorIdent (Map.Map Identifier Type)+         _lhsOlocalSigMap = rule579 _typeSigsIlocalSigMap arg_con_+         _ps = rule580 _lhsIdty arg_con_+         _lhsOads :: [Edge]+         _lhsOads = rule581 _childrenIpmpr _lhsIaugM _pll arg_con_+         _childrenOdty = rule582 _lhsIdty+         _pll = rule583 _lhsIdty arg_con_+         _rulesOpll = rule584 _pll+         _rulesOpts = rule585 _childrenIpts+         _lhsOfsInP :: FsInP+         _lhsOfsInP = rule586 _childrenIfieldMap _pll+         _lhsOfdps :: Map.Map ConstructorIdent (Set Dependency)+         _lhsOfdps = rule587 _lhsIdty _lhsIpmpf _lhsIres_ads arg_con_+         _segsOruleMap = rule588 _rulesIruleMap+         _segsOdone = rule589  ()+         _intros = rule590 _childrenIself+         _lhsOeprods :: EProductions+         _lhsOeprods = rule591 _childrenIechilds _intros _rulesIerules _segsIevisits arg_con_ arg_constraints_ arg_params_+         segs_val_ = rule592 _lhsImysegments _lhsInmp _lhsIpmprf _ps+         _lhsOap :: A_P+         _lhsOap = rule593 _childrenIap+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule594 _childrenIfieldMap+         _lhsOfty :: FTY+         _lhsOfty = rule595 _childrenIfty+         _lhsOgen :: Map Int Int+         _lhsOgen = rule596 _childrenIgen+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule597 _childrenIhoMap+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule598 _childrenIinss+         _lhsOlfp :: SF_P+         _lhsOlfp = rule599 _rulesIlfp+         _lhsOlfpr :: SF_P+         _lhsOlfpr = rule600 _rulesIlfpr+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule601 _childrenIofld+         _lhsOpmp :: PMP+         _lhsOpmp = rule602 _childrenIpmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule603 _childrenIpmpr+         _lhsOrefHoNts :: Set NontermIdent+         _lhsOrefHoNts = rule604 _childrenIrefHoNts+         _lhsOrefNts :: Set NontermIdent+         _lhsOrefNts = rule605 _childrenIrefNts+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOruleMap = rule606 _rulesIruleMap+         _lhsOsfp :: SF_P+         _lhsOsfp = rule607 _rulesIsfp+         _self = rule608 _childrenIself _rulesIself _typeSigsIself arg_con_ arg_constraints_ arg_macro_ arg_params_+         _lhsOself :: Production+         _lhsOself = rule609 _self+         _lhsOflab :: Int+         _lhsOflab = rule610 _childrenIflab+         _lhsOolab :: Int+         _lhsOolab = rule611 _childrenIolab+         _lhsOps :: PLabel+         _lhsOps = rule612 _ps+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule613 _rulesIrulenumber+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule614 _segsIvisitnum+         _childrenOain = rule615 _lhsIain+         _childrenOan = rule616 _lhsIan+         _childrenOaroundMap = rule617 _aroundMap+         _childrenOasn = rule618 _lhsIasn+         _childrenOflab = rule619 _lhsIflab+         _childrenOfty = rule620 _lhsIfty+         _childrenOhoMapf = rule621 _lhsIhoMapf+         _childrenOlfpf = rule622 _lhsIlfpf+         _childrenOmergeMap = rule623 _mergeMap+         _childrenOmergedChildren = rule624 _mergedChildren+         _childrenOnmp = rule625 _lhsInmp+         _childrenOnmprf = rule626 _lhsInmprf+         _childrenOolab = rule627 _lhsIolab+         _childrenOoptions = rule628 _lhsIoptions+         _childrenOpll = rule629 _pll+         _childrenOpmpf = rule630 _lhsIpmpf+         _childrenOpmprf = rule631 _lhsIpmprf+         _rulesOdty = rule632 _lhsIdty+         _rulesOlfpf = rule633 _lhsIlfpf+         _rulesOrulenumber = rule634 _lhsIrulenumber+         _segsOain = rule635 _lhsIain+         _segsOasn = rule636 _lhsIasn+         _segsOfty = rule637 _childrenIfty+         _segsOhoMapf = rule638 _lhsIhoMapf+         _segsOlfpf = rule639 _lhsIlfpf+         _segsOnmp = rule640 _lhsInmp+         _segsOnmprf = rule641 _lhsInmprf+         _segsOoptions = rule642 _lhsIoptions+         _segsOpmpf = rule643 _lhsIpmpf+         _segsOpmprf = rule644 _lhsIpmprf+         _segsOps = rule645 _ps+         _segsOtdp = rule646 _lhsItdp+         _segsOvisMapf = rule647 _lhsIvisMapf+         _segsOvisitnum = rule648 _lhsIvisitnum+         __result_ = T_Production_vOut82 _lhsOads _lhsOap _lhsOeprods _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOrefHoNts _lhsOrefNts _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOvisitnum+         in __result_ )+     in C_Production_s83 v82+   {-# INLINE rule576 #-}+   {-# LINE 89 "src-ag/ExecutionPlanCommon.ag" #-}+   rule576 = \ ((_lhsIaroundMap) :: Map ConstructorIdent (Map Identifier [Expression])) con_ ->+                                                 {-# LINE 89 "src-ag/ExecutionPlanCommon.ag" #-}+                                                 Map.findWithDefault Map.empty con_ _lhsIaroundMap+                                                 {-# LINE 4883 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule577 #-}+   {-# LINE 114 "src-ag/ExecutionPlanCommon.ag" #-}+   rule577 = \ ((_lhsImergeMap) :: Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))) con_ ->+                                                {-# LINE 114 "src-ag/ExecutionPlanCommon.ag" #-}+                                                Map.findWithDefault Map.empty con_ _lhsImergeMap+                                                {-# LINE 4889 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule578 #-}+   {-# LINE 120 "src-ag/ExecutionPlanCommon.ag" #-}+   rule578 = \ _mergeMap ->+                         {-# LINE 120 "src-ag/ExecutionPlanCommon.ag" #-}+                         Set.unions [ Set.fromList ms | (_,ms,_) <- Map.elems _mergeMap     ]+                         {-# LINE 4895 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule579 #-}+   {-# LINE 160 "src-ag/ExecutionPlanCommon.ag" #-}+   rule579 = \ ((_typeSigsIlocalSigMap) :: Map Identifier Type) con_ ->+                                                   {-# LINE 160 "src-ag/ExecutionPlanCommon.ag" #-}+                                                   Map.singleton con_ _typeSigsIlocalSigMap+                                                   {-# LINE 4901 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule580 #-}+   {-# LINE 115 "src-ag/LOAG/Prepare.ag" #-}+   rule580 = \ ((_lhsIdty) :: MyType) con_ ->+               {-# LINE 115 "src-ag/LOAG/Prepare.ag" #-}+               (_lhsIdty,getName con_)+               {-# LINE 4907 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule581 #-}+   {-# LINE 117 "src-ag/LOAG/Prepare.ag" #-}+   rule581 = \ ((_childrenIpmpr) :: PMP_R) ((_lhsIaugM) :: Map.Map Identifier (Set.Set Dependency)) _pll con_ ->+          {-# LINE 117 "src-ag/LOAG/Prepare.ag" #-}+          case Map.lookup con_ _lhsIaugM of+           Nothing -> []+           Just a  -> Set.toList $ Set.map (depToEdge _childrenIpmpr _pll    ) a+          {-# LINE 4915 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule582 #-}+   {-# LINE 120 "src-ag/LOAG/Prepare.ag" #-}+   rule582 = \ ((_lhsIdty) :: MyType) ->+                     {-# LINE 120 "src-ag/LOAG/Prepare.ag" #-}+                     _lhsIdty+                     {-# LINE 4921 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule583 #-}+   {-# LINE 214 "src-ag/LOAG/Prepare.ag" #-}+   rule583 = \ ((_lhsIdty) :: MyType) con_ ->+                  {-# LINE 214 "src-ag/LOAG/Prepare.ag" #-}+                  (_lhsIdty,getName con_)+                  {-# LINE 4927 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule584 #-}+   {-# LINE 215 "src-ag/LOAG/Prepare.ag" #-}+   rule584 = \ _pll ->+                  {-# LINE 215 "src-ag/LOAG/Prepare.ag" #-}+                  _pll+                  {-# LINE 4933 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule585 #-}+   {-# LINE 216 "src-ag/LOAG/Prepare.ag" #-}+   rule585 = \ ((_childrenIpts) :: Set.Set FLabel) ->+                  {-# LINE 216 "src-ag/LOAG/Prepare.ag" #-}+                  _childrenIpts+                  {-# LINE 4939 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule586 #-}+   {-# LINE 217 "src-ag/LOAG/Prepare.ag" #-}+   rule586 = \ ((_childrenIfieldMap) :: FMap) _pll ->+                  {-# LINE 217 "src-ag/LOAG/Prepare.ag" #-}+                  Map.singleton _pll $ Map.keys _childrenIfieldMap+                  {-# LINE 4945 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule587 #-}+   {-# LINE 89 "src-ag/LOAG/Order.ag" #-}+   rule587 = \ ((_lhsIdty) :: MyType) ((_lhsIpmpf) :: PMP) ((_lhsIres_ads) :: [Edge]) con_ ->+        {-# LINE 89 "src-ag/LOAG/Order.ag" #-}+        let op d@(f,t) ds+              | fst (argsOf $ findWithErr _lhsIpmpf "fdps" f) == (_lhsIdty,getName con_)+                  = Set.insert (edgeToDep _lhsIpmpf d) ds+              | otherwise+                  = ds+        in Map.singleton con_ $ foldr op Set.empty _lhsIres_ads+        {-# LINE 4956 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule588 #-}+   {-# LINE 167 "src-ag/LOAG/Order.ag" #-}+   rule588 = \ ((_rulesIruleMap) :: Map.Map MyOccurrence Identifier) ->+                          {-# LINE 167 "src-ag/LOAG/Order.ag" #-}+                          _rulesIruleMap+                          {-# LINE 4962 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule589 #-}+   {-# LINE 168 "src-ag/LOAG/Order.ag" #-}+   rule589 = \  (_ :: ()) ->+                          {-# LINE 168 "src-ag/LOAG/Order.ag" #-}+                          (Set.empty, Set.empty, Set.empty, Set.empty)+                          {-# LINE 4968 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule590 #-}+   {-# LINE 169 "src-ag/LOAG/Order.ag" #-}+   rule590 = \ ((_childrenIself) :: Children) ->+                        {-# LINE 169 "src-ag/LOAG/Order.ag" #-}+                        let intro (Child nm _ kind)+                              | kind == ChildAttr = Nothing+                              | otherwise = Just $ ChildIntro nm+                          in catMaybes $ map intro _childrenIself+                        {-# LINE 4977 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule591 #-}+   {-# LINE 174 "src-ag/LOAG/Order.ag" #-}+   rule591 = \ ((_childrenIechilds) :: EChildren) _intros ((_rulesIerules) :: ERules) ((_segsIevisits) :: Visits) con_ constraints_ params_ ->+              {-# LINE 174 "src-ag/LOAG/Order.ag" #-}+              let ((Visit ident from to inh syn steps kind):vss) = _segsIevisits+                  steps' = _intros     ++ steps+                  visits | null _segsIevisits = []+                         | otherwise =+                              ((Visit ident from to inh syn steps' kind):vss)+               in [EProduction+                          con_+                          params_+                          constraints_+                          _rulesIerules+                          _childrenIechilds+                          visits ]+              {-# LINE 4994 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule592 #-}+   {-# LINE 346 "src-ag/LOAG/Order.ag" #-}+   rule592 = \ ((_lhsImysegments) :: MySegments) ((_lhsInmp) :: NMP) ((_lhsIpmprf) :: PMP_R) _ps ->+              {-# LINE 346 "src-ag/LOAG/Order.ag" #-}+              map (\(MySegment visnr inhs syns _ _) ->+                     MySegment visnr inhs syns+                               (Just $ map (_lhsIpmprf Map.!) $+                                      handAllOut (_ps    ,"lhs") $+                                          map (_lhsInmp Map.!) inhs)+                               (Just $ map (_lhsIpmprf Map.!) $+                                      handAllOut (_ps    ,"lhs") $+                                          map (_lhsInmp Map.!) syns)+                           ) _lhsImysegments+              {-# LINE 5008 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule593 #-}+   rule593 = \ ((_childrenIap) :: A_P) ->+     _childrenIap+   {-# INLINE rule594 #-}+   rule594 = \ ((_childrenIfieldMap) :: FMap) ->+     _childrenIfieldMap+   {-# INLINE rule595 #-}+   rule595 = \ ((_childrenIfty) :: FTY) ->+     _childrenIfty+   {-# INLINE rule596 #-}+   rule596 = \ ((_childrenIgen) :: Map Int Int) ->+     _childrenIgen+   {-# INLINE rule597 #-}+   rule597 = \ ((_childrenIhoMap) :: HOMap) ->+     _childrenIhoMap+   {-# INLINE rule598 #-}+   rule598 = \ ((_childrenIinss) :: Map Int [Int]) ->+     _childrenIinss+   {-# INLINE rule599 #-}+   rule599 = \ ((_rulesIlfp) :: SF_P) ->+     _rulesIlfp+   {-# INLINE rule600 #-}+   rule600 = \ ((_rulesIlfpr) :: SF_P) ->+     _rulesIlfpr+   {-# INLINE rule601 #-}+   rule601 = \ ((_childrenIofld) :: [(Int, Int)]) ->+     _childrenIofld+   {-# INLINE rule602 #-}+   rule602 = \ ((_childrenIpmp) :: PMP) ->+     _childrenIpmp+   {-# INLINE rule603 #-}+   rule603 = \ ((_childrenIpmpr) :: PMP_R) ->+     _childrenIpmpr+   {-# INLINE rule604 #-}+   rule604 = \ ((_childrenIrefHoNts) :: Set NontermIdent) ->+     _childrenIrefHoNts+   {-# INLINE rule605 #-}+   rule605 = \ ((_childrenIrefNts) :: Set NontermIdent) ->+     _childrenIrefNts+   {-# INLINE rule606 #-}+   rule606 = \ ((_rulesIruleMap) :: Map.Map MyOccurrence Identifier) ->+     _rulesIruleMap+   {-# INLINE rule607 #-}+   rule607 = \ ((_rulesIsfp) :: SF_P) ->+     _rulesIsfp+   {-# INLINE rule608 #-}+   rule608 = \ ((_childrenIself) :: Children) ((_rulesIself) :: Rules) ((_typeSigsIself) :: TypeSigs) con_ constraints_ macro_ params_ ->+     Production con_ params_ constraints_ _childrenIself _rulesIself _typeSigsIself macro_+   {-# INLINE rule609 #-}+   rule609 = \ _self ->+     _self+   {-# INLINE rule610 #-}+   rule610 = \ ((_childrenIflab) :: Int) ->+     _childrenIflab+   {-# INLINE rule611 #-}+   rule611 = \ ((_childrenIolab) :: Int) ->+     _childrenIolab+   {-# INLINE rule612 #-}+   rule612 = \ _ps ->+     _ps+   {-# INLINE rule613 #-}+   rule613 = \ ((_rulesIrulenumber) :: Int) ->+     _rulesIrulenumber+   {-# INLINE rule614 #-}+   rule614 = \ ((_segsIvisitnum) :: Int) ->+     _segsIvisitnum+   {-# INLINE rule615 #-}+   rule615 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule616 #-}+   rule616 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule617 #-}+   rule617 = \ _aroundMap ->+     _aroundMap+   {-# INLINE rule618 #-}+   rule618 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule619 #-}+   rule619 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule620 #-}+   rule620 = \ ((_lhsIfty) :: FTY) ->+     _lhsIfty+   {-# INLINE rule621 #-}+   rule621 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule622 #-}+   rule622 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule623 #-}+   rule623 = \ _mergeMap ->+     _mergeMap+   {-# INLINE rule624 #-}+   rule624 = \ _mergedChildren ->+     _mergedChildren+   {-# INLINE rule625 #-}+   rule625 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule626 #-}+   rule626 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule627 #-}+   rule627 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab+   {-# INLINE rule628 #-}+   rule628 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule629 #-}+   rule629 = \ _pll ->+     _pll+   {-# INLINE rule630 #-}+   rule630 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule631 #-}+   rule631 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule632 #-}+   rule632 = \ ((_lhsIdty) :: MyType) ->+     _lhsIdty+   {-# INLINE rule633 #-}+   rule633 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule634 #-}+   rule634 = \ ((_lhsIrulenumber) :: Int) ->+     _lhsIrulenumber+   {-# INLINE rule635 #-}+   rule635 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule636 #-}+   rule636 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule637 #-}+   rule637 = \ ((_childrenIfty) :: FTY) ->+     _childrenIfty+   {-# INLINE rule638 #-}+   rule638 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule639 #-}+   rule639 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule640 #-}+   rule640 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule641 #-}+   rule641 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule642 #-}+   rule642 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule643 #-}+   rule643 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule644 #-}+   rule644 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule645 #-}+   rule645 = \ _ps ->+     _ps+   {-# INLINE rule646 #-}+   rule646 = \ ((_lhsItdp) :: TDPRes) ->+     _lhsItdp+   {-# INLINE rule647 #-}+   rule647 = \ ((_lhsIvisMapf) :: IMap.IntMap Int) ->+     _lhsIvisMapf+   {-# INLINE rule648 #-}+   rule648 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum++-- Productions -------------------------------------------------+-- wrapper+data Inh_Productions  = Inh_Productions { ain_Inh_Productions :: (MyType -> MyAttributes), an_Inh_Productions :: (MyType -> MyAttributes), aroundMap_Inh_Productions :: (Map ConstructorIdent (Map Identifier [Expression])), asn_Inh_Productions :: (MyType -> MyAttributes), augM_Inh_Productions :: (Map.Map Identifier (Set.Set Dependency)), dty_Inh_Productions :: (MyType), flab_Inh_Productions :: (Int), fty_Inh_Productions :: (FTY), ftyf_Inh_Productions :: (FTY), hoMapf_Inh_Productions :: (HOMap), lfpf_Inh_Productions :: (SF_P), mergeMap_Inh_Productions :: (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))), mysegments_Inh_Productions :: (MySegments), nmp_Inh_Productions :: (NMP), nmprf_Inh_Productions :: (NMP_R), olab_Inh_Productions :: (Int), options_Inh_Productions :: (Options), pmpf_Inh_Productions :: (PMP), pmprf_Inh_Productions :: (PMP_R), res_ads_Inh_Productions :: ([Edge]), rulenumber_Inh_Productions :: (Int), tdp_Inh_Productions :: (TDPRes), visMapf_Inh_Productions :: (IMap.IntMap Int), visitnum_Inh_Productions :: (Int) }+data Syn_Productions  = Syn_Productions { ads_Syn_Productions :: ([Edge]), ap_Syn_Productions :: (A_P), eprods_Syn_Productions :: (EProductions), fdps_Syn_Productions :: (Map.Map ConstructorIdent (Set Dependency)), fieldMap_Syn_Productions :: (FMap), flab_Syn_Productions :: (Int), fsInP_Syn_Productions :: (FsInP), fty_Syn_Productions :: (FTY), gen_Syn_Productions :: (Map Int Int), hoMap_Syn_Productions :: (HOMap), inss_Syn_Productions :: (Map Int [Int]), lfp_Syn_Productions :: (SF_P), lfpr_Syn_Productions :: (SF_P), localSigMap_Syn_Productions :: (Map.Map ConstructorIdent (Map.Map Identifier Type)), ofld_Syn_Productions :: ([(Int, Int)]), olab_Syn_Productions :: (Int), pmp_Syn_Productions :: (PMP), pmpr_Syn_Productions :: (PMP_R), ps_Syn_Productions :: ([PLabel]), refHoNts_Syn_Productions :: (Set NontermIdent), refNts_Syn_Productions :: (Set NontermIdent), ruleMap_Syn_Productions :: (Map.Map MyOccurrence Identifier), rulenumber_Syn_Productions :: (Int), self_Syn_Productions :: (Productions), sfp_Syn_Productions :: (SF_P), visitnum_Syn_Productions :: (Int) }+{-# INLINABLE wrap_Productions #-}+wrap_Productions :: T_Productions  -> Inh_Productions  -> (Syn_Productions )+wrap_Productions (T_Productions act) (Inh_Productions _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIdty _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImysegments _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsItdp _lhsIvisMapf _lhsIvisitnum) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg85 = T_Productions_vIn85 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIdty _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImysegments _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsItdp _lhsIvisMapf _lhsIvisitnum+        (T_Productions_vOut85 _lhsOads _lhsOap _lhsOeprods _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOrefHoNts _lhsOrefNts _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOvisitnum) <- return (inv_Productions_s86 sem arg85)+        return (Syn_Productions _lhsOads _lhsOap _lhsOeprods _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOrefHoNts _lhsOrefNts _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOvisitnum)+   )++-- cata+{-# NOINLINE sem_Productions #-}+sem_Productions :: Productions  -> T_Productions +sem_Productions list = Prelude.foldr sem_Productions_Cons sem_Productions_Nil (Prelude.map sem_Production list)++-- semantic domain+newtype T_Productions  = T_Productions {+                                       attach_T_Productions :: Identity (T_Productions_s86 )+                                       }+newtype T_Productions_s86  = C_Productions_s86 {+                                               inv_Productions_s86 :: (T_Productions_v85 )+                                               }+data T_Productions_s87  = C_Productions_s87+type T_Productions_v85  = (T_Productions_vIn85 ) -> (T_Productions_vOut85 )+data T_Productions_vIn85  = T_Productions_vIn85 (MyType -> MyAttributes) (MyType -> MyAttributes) (Map ConstructorIdent (Map Identifier [Expression])) (MyType -> MyAttributes) (Map.Map Identifier (Set.Set Dependency)) (MyType) (Int) (FTY) (FTY) (HOMap) (SF_P) (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))) (MySegments) (NMP) (NMP_R) (Int) (Options) (PMP) (PMP_R) ([Edge]) (Int) (TDPRes) (IMap.IntMap Int) (Int)+data T_Productions_vOut85  = T_Productions_vOut85 ([Edge]) (A_P) (EProductions) (Map.Map ConstructorIdent (Set Dependency)) (FMap) (Int) (FsInP) (FTY) (Map Int Int) (HOMap) (Map Int [Int]) (SF_P) (SF_P) (Map.Map ConstructorIdent (Map.Map Identifier Type)) ([(Int, Int)]) (Int) (PMP) (PMP_R) ([PLabel]) (Set NontermIdent) (Set NontermIdent) (Map.Map MyOccurrence Identifier) (Int) (Productions) (SF_P) (Int)+{-# NOINLINE sem_Productions_Cons #-}+sem_Productions_Cons :: T_Production  -> T_Productions  -> T_Productions +sem_Productions_Cons arg_hd_ arg_tl_ = T_Productions (return st86) where+   {-# NOINLINE st86 #-}+   st86 = let+      v85 :: T_Productions_v85 +      v85 = \ (T_Productions_vIn85 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIdty _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImysegments _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _hdX83 = Control.Monad.Identity.runIdentity (attach_T_Production (arg_hd_))+         _tlX86 = Control.Monad.Identity.runIdentity (attach_T_Productions (arg_tl_))+         (T_Production_vOut82 _hdIads _hdIap _hdIeprods _hdIfdps _hdIfieldMap _hdIflab _hdIfsInP _hdIfty _hdIgen _hdIhoMap _hdIinss _hdIlfp _hdIlfpr _hdIlocalSigMap _hdIofld _hdIolab _hdIpmp _hdIpmpr _hdIps _hdIrefHoNts _hdIrefNts _hdIruleMap _hdIrulenumber _hdIself _hdIsfp _hdIvisitnum) = inv_Production_s83 _hdX83 (T_Production_vIn82 _hdOain _hdOan _hdOaroundMap _hdOasn _hdOaugM _hdOdty _hdOflab _hdOfty _hdOftyf _hdOhoMapf _hdOlfpf _hdOmergeMap _hdOmysegments _hdOnmp _hdOnmprf _hdOolab _hdOoptions _hdOpmpf _hdOpmprf _hdOres_ads _hdOrulenumber _hdOtdp _hdOvisMapf _hdOvisitnum)+         (T_Productions_vOut85 _tlIads _tlIap _tlIeprods _tlIfdps _tlIfieldMap _tlIflab _tlIfsInP _tlIfty _tlIgen _tlIhoMap _tlIinss _tlIlfp _tlIlfpr _tlIlocalSigMap _tlIofld _tlIolab _tlIpmp _tlIpmpr _tlIps _tlIrefHoNts _tlIrefNts _tlIruleMap _tlIrulenumber _tlIself _tlIsfp _tlIvisitnum) = inv_Productions_s86 _tlX86 (T_Productions_vIn85 _tlOain _tlOan _tlOaroundMap _tlOasn _tlOaugM _tlOdty _tlOflab _tlOfty _tlOftyf _tlOhoMapf _tlOlfpf _tlOmergeMap _tlOmysegments _tlOnmp _tlOnmprf _tlOolab _tlOoptions _tlOpmpf _tlOpmprf _tlOres_ads _tlOrulenumber _tlOtdp _tlOvisMapf _tlOvisitnum)+         _tlOvisitnum = rule649 _lhsIvisitnum+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule650 _hdIvisitnum+         _lhsOads :: [Edge]+         _lhsOads = rule651 _hdIads _tlIads+         _lhsOap :: A_P+         _lhsOap = rule652 _hdIap _tlIap+         _lhsOeprods :: EProductions+         _lhsOeprods = rule653 _hdIeprods _tlIeprods+         _lhsOfdps :: Map.Map ConstructorIdent (Set Dependency)+         _lhsOfdps = rule654 _hdIfdps _tlIfdps+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule655 _hdIfieldMap _tlIfieldMap+         _lhsOfsInP :: FsInP+         _lhsOfsInP = rule656 _hdIfsInP _tlIfsInP+         _lhsOfty :: FTY+         _lhsOfty = rule657 _hdIfty _tlIfty+         _lhsOgen :: Map Int Int+         _lhsOgen = rule658 _hdIgen _tlIgen+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule659 _hdIhoMap _tlIhoMap+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule660 _hdIinss _tlIinss+         _lhsOlfp :: SF_P+         _lhsOlfp = rule661 _hdIlfp _tlIlfp+         _lhsOlfpr :: SF_P+         _lhsOlfpr = rule662 _hdIlfpr _tlIlfpr+         _lhsOlocalSigMap :: Map.Map ConstructorIdent (Map.Map Identifier Type)+         _lhsOlocalSigMap = rule663 _hdIlocalSigMap _tlIlocalSigMap+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule664 _hdIofld _tlIofld+         _lhsOpmp :: PMP+         _lhsOpmp = rule665 _hdIpmp _tlIpmp+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule666 _hdIpmpr _tlIpmpr+         _lhsOps :: [PLabel]+         _lhsOps = rule667 _hdIps _tlIps+         _lhsOrefHoNts :: Set NontermIdent+         _lhsOrefHoNts = rule668 _hdIrefHoNts _tlIrefHoNts+         _lhsOrefNts :: Set NontermIdent+         _lhsOrefNts = rule669 _hdIrefNts _tlIrefNts+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOruleMap = rule670 _hdIruleMap _tlIruleMap+         _lhsOsfp :: SF_P+         _lhsOsfp = rule671 _hdIsfp _tlIsfp+         _self = rule672 _hdIself _tlIself+         _lhsOself :: Productions+         _lhsOself = rule673 _self+         _lhsOflab :: Int+         _lhsOflab = rule674 _tlIflab+         _lhsOolab :: Int+         _lhsOolab = rule675 _tlIolab+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule676 _tlIrulenumber+         _hdOain = rule677 _lhsIain+         _hdOan = rule678 _lhsIan+         _hdOaroundMap = rule679 _lhsIaroundMap+         _hdOasn = rule680 _lhsIasn+         _hdOaugM = rule681 _lhsIaugM+         _hdOdty = rule682 _lhsIdty+         _hdOflab = rule683 _lhsIflab+         _hdOfty = rule684 _lhsIfty+         _hdOftyf = rule685 _lhsIftyf+         _hdOhoMapf = rule686 _lhsIhoMapf+         _hdOlfpf = rule687 _lhsIlfpf+         _hdOmergeMap = rule688 _lhsImergeMap+         _hdOmysegments = rule689 _lhsImysegments+         _hdOnmp = rule690 _lhsInmp+         _hdOnmprf = rule691 _lhsInmprf+         _hdOolab = rule692 _lhsIolab+         _hdOoptions = rule693 _lhsIoptions+         _hdOpmpf = rule694 _lhsIpmpf+         _hdOpmprf = rule695 _lhsIpmprf+         _hdOres_ads = rule696 _lhsIres_ads+         _hdOrulenumber = rule697 _lhsIrulenumber+         _hdOtdp = rule698 _lhsItdp+         _hdOvisMapf = rule699 _lhsIvisMapf+         _hdOvisitnum = rule700 _lhsIvisitnum+         _tlOain = rule701 _lhsIain+         _tlOan = rule702 _lhsIan+         _tlOaroundMap = rule703 _lhsIaroundMap+         _tlOasn = rule704 _lhsIasn+         _tlOaugM = rule705 _lhsIaugM+         _tlOdty = rule706 _lhsIdty+         _tlOflab = rule707 _hdIflab+         _tlOfty = rule708 _hdIfty+         _tlOftyf = rule709 _lhsIftyf+         _tlOhoMapf = rule710 _lhsIhoMapf+         _tlOlfpf = rule711 _lhsIlfpf+         _tlOmergeMap = rule712 _lhsImergeMap+         _tlOmysegments = rule713 _lhsImysegments+         _tlOnmp = rule714 _lhsInmp+         _tlOnmprf = rule715 _lhsInmprf+         _tlOolab = rule716 _hdIolab+         _tlOoptions = rule717 _lhsIoptions+         _tlOpmpf = rule718 _lhsIpmpf+         _tlOpmprf = rule719 _lhsIpmprf+         _tlOres_ads = rule720 _lhsIres_ads+         _tlOrulenumber = rule721 _hdIrulenumber+         _tlOtdp = rule722 _lhsItdp+         _tlOvisMapf = rule723 _lhsIvisMapf+         __result_ = T_Productions_vOut85 _lhsOads _lhsOap _lhsOeprods _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOrefHoNts _lhsOrefNts _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOvisitnum+         in __result_ )+     in C_Productions_s86 v85+   {-# INLINE rule649 #-}+   {-# LINE 192 "src-ag/LOAG/Order.ag" #-}+   rule649 = \ ((_lhsIvisitnum) :: Int) ->+                          {-# LINE 192 "src-ag/LOAG/Order.ag" #-}+                          _lhsIvisitnum+                          {-# LINE 5328 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule650 #-}+   {-# LINE 193 "src-ag/LOAG/Order.ag" #-}+   rule650 = \ ((_hdIvisitnum) :: Int) ->+                          {-# LINE 193 "src-ag/LOAG/Order.ag" #-}+                          _hdIvisitnum+                          {-# LINE 5334 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule651 #-}+   rule651 = \ ((_hdIads) :: [Edge]) ((_tlIads) :: [Edge]) ->+     ((++) _hdIads _tlIads)+   {-# INLINE rule652 #-}+   rule652 = \ ((_hdIap) :: A_P) ((_tlIap) :: A_P) ->+     (Map.unionWith (++) _hdIap _tlIap)+   {-# INLINE rule653 #-}+   rule653 = \ ((_hdIeprods) :: EProductions) ((_tlIeprods) :: EProductions) ->+     ((++) _hdIeprods _tlIeprods)+   {-# INLINE rule654 #-}+   rule654 = \ ((_hdIfdps) :: Map.Map ConstructorIdent (Set Dependency)) ((_tlIfdps) :: Map.Map ConstructorIdent (Set Dependency)) ->+     (Map.union _hdIfdps _tlIfdps)+   {-# INLINE rule655 #-}+   rule655 = \ ((_hdIfieldMap) :: FMap) ((_tlIfieldMap) :: FMap) ->+     ((Map.union) _hdIfieldMap _tlIfieldMap)+   {-# INLINE rule656 #-}+   rule656 = \ ((_hdIfsInP) :: FsInP) ((_tlIfsInP) :: FsInP) ->+     ((Map.union) _hdIfsInP _tlIfsInP)+   {-# INLINE rule657 #-}+   rule657 = \ ((_hdIfty) :: FTY) ((_tlIfty) :: FTY) ->+     (Map.union _hdIfty _tlIfty)+   {-# INLINE rule658 #-}+   rule658 = \ ((_hdIgen) :: Map Int Int) ((_tlIgen) :: Map Int Int) ->+     (Map.union _hdIgen _tlIgen)+   {-# INLINE rule659 #-}+   rule659 = \ ((_hdIhoMap) :: HOMap) ((_tlIhoMap) :: HOMap) ->+     ((Map.union) _hdIhoMap _tlIhoMap)+   {-# INLINE rule660 #-}+   rule660 = \ ((_hdIinss) :: Map Int [Int]) ((_tlIinss) :: Map Int [Int]) ->+     (Map.unionWith (++) _hdIinss _tlIinss)+   {-# INLINE rule661 #-}+   rule661 = \ ((_hdIlfp) :: SF_P) ((_tlIlfp) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIlfp _tlIlfp)+   {-# INLINE rule662 #-}+   rule662 = \ ((_hdIlfpr) :: SF_P) ((_tlIlfpr) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIlfpr _tlIlfpr)+   {-# INLINE rule663 #-}+   rule663 = \ ((_hdIlocalSigMap) :: Map.Map ConstructorIdent (Map.Map Identifier Type)) ((_tlIlocalSigMap) :: Map.Map ConstructorIdent (Map.Map Identifier Type)) ->+     _hdIlocalSigMap `Map.union` _tlIlocalSigMap+   {-# INLINE rule664 #-}+   rule664 = \ ((_hdIofld) :: [(Int, Int)]) ((_tlIofld) :: [(Int, Int)]) ->+     ((++) _hdIofld _tlIofld)+   {-# INLINE rule665 #-}+   rule665 = \ ((_hdIpmp) :: PMP) ((_tlIpmp) :: PMP) ->+     (Map.union _hdIpmp _tlIpmp)+   {-# INLINE rule666 #-}+   rule666 = \ ((_hdIpmpr) :: PMP_R) ((_tlIpmpr) :: PMP_R) ->+     (Map.union _hdIpmpr _tlIpmpr)+   {-# INLINE rule667 #-}+   rule667 = \ ((_hdIps) :: PLabel) ((_tlIps) :: [PLabel]) ->+     _hdIps : _tlIps+   {-# INLINE rule668 #-}+   rule668 = \ ((_hdIrefHoNts) :: Set NontermIdent) ((_tlIrefHoNts) :: Set NontermIdent) ->+     _hdIrefHoNts `mappend` _tlIrefHoNts+   {-# INLINE rule669 #-}+   rule669 = \ ((_hdIrefNts) :: Set NontermIdent) ((_tlIrefNts) :: Set NontermIdent) ->+     _hdIrefNts `mappend` _tlIrefNts+   {-# INLINE rule670 #-}+   rule670 = \ ((_hdIruleMap) :: Map.Map MyOccurrence Identifier) ((_tlIruleMap) :: Map.Map MyOccurrence Identifier) ->+     (Map.union _hdIruleMap _tlIruleMap)+   {-# INLINE rule671 #-}+   rule671 = \ ((_hdIsfp) :: SF_P) ((_tlIsfp) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIsfp _tlIsfp)+   {-# INLINE rule672 #-}+   rule672 = \ ((_hdIself) :: Production) ((_tlIself) :: Productions) ->+     (:) _hdIself _tlIself+   {-# INLINE rule673 #-}+   rule673 = \ _self ->+     _self+   {-# INLINE rule674 #-}+   rule674 = \ ((_tlIflab) :: Int) ->+     _tlIflab+   {-# INLINE rule675 #-}+   rule675 = \ ((_tlIolab) :: Int) ->+     _tlIolab+   {-# INLINE rule676 #-}+   rule676 = \ ((_tlIrulenumber) :: Int) ->+     _tlIrulenumber+   {-# INLINE rule677 #-}+   rule677 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule678 #-}+   rule678 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule679 #-}+   rule679 = \ ((_lhsIaroundMap) :: Map ConstructorIdent (Map Identifier [Expression])) ->+     _lhsIaroundMap+   {-# INLINE rule680 #-}+   rule680 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule681 #-}+   rule681 = \ ((_lhsIaugM) :: Map.Map Identifier (Set.Set Dependency)) ->+     _lhsIaugM+   {-# INLINE rule682 #-}+   rule682 = \ ((_lhsIdty) :: MyType) ->+     _lhsIdty+   {-# INLINE rule683 #-}+   rule683 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule684 #-}+   rule684 = \ ((_lhsIfty) :: FTY) ->+     _lhsIfty+   {-# INLINE rule685 #-}+   rule685 = \ ((_lhsIftyf) :: FTY) ->+     _lhsIftyf+   {-# INLINE rule686 #-}+   rule686 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule687 #-}+   rule687 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule688 #-}+   rule688 = \ ((_lhsImergeMap) :: Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))) ->+     _lhsImergeMap+   {-# INLINE rule689 #-}+   rule689 = \ ((_lhsImysegments) :: MySegments) ->+     _lhsImysegments+   {-# INLINE rule690 #-}+   rule690 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule691 #-}+   rule691 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule692 #-}+   rule692 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab+   {-# INLINE rule693 #-}+   rule693 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule694 #-}+   rule694 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule695 #-}+   rule695 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule696 #-}+   rule696 = \ ((_lhsIres_ads) :: [Edge]) ->+     _lhsIres_ads+   {-# INLINE rule697 #-}+   rule697 = \ ((_lhsIrulenumber) :: Int) ->+     _lhsIrulenumber+   {-# INLINE rule698 #-}+   rule698 = \ ((_lhsItdp) :: TDPRes) ->+     _lhsItdp+   {-# INLINE rule699 #-}+   rule699 = \ ((_lhsIvisMapf) :: IMap.IntMap Int) ->+     _lhsIvisMapf+   {-# INLINE rule700 #-}+   rule700 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum+   {-# INLINE rule701 #-}+   rule701 = \ ((_lhsIain) :: MyType -> MyAttributes) ->+     _lhsIain+   {-# INLINE rule702 #-}+   rule702 = \ ((_lhsIan) :: MyType -> MyAttributes) ->+     _lhsIan+   {-# INLINE rule703 #-}+   rule703 = \ ((_lhsIaroundMap) :: Map ConstructorIdent (Map Identifier [Expression])) ->+     _lhsIaroundMap+   {-# INLINE rule704 #-}+   rule704 = \ ((_lhsIasn) :: MyType -> MyAttributes) ->+     _lhsIasn+   {-# INLINE rule705 #-}+   rule705 = \ ((_lhsIaugM) :: Map.Map Identifier (Set.Set Dependency)) ->+     _lhsIaugM+   {-# INLINE rule706 #-}+   rule706 = \ ((_lhsIdty) :: MyType) ->+     _lhsIdty+   {-# INLINE rule707 #-}+   rule707 = \ ((_hdIflab) :: Int) ->+     _hdIflab+   {-# INLINE rule708 #-}+   rule708 = \ ((_hdIfty) :: FTY) ->+     _hdIfty+   {-# INLINE rule709 #-}+   rule709 = \ ((_lhsIftyf) :: FTY) ->+     _lhsIftyf+   {-# INLINE rule710 #-}+   rule710 = \ ((_lhsIhoMapf) :: HOMap) ->+     _lhsIhoMapf+   {-# INLINE rule711 #-}+   rule711 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule712 #-}+   rule712 = \ ((_lhsImergeMap) :: Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression))) ->+     _lhsImergeMap+   {-# INLINE rule713 #-}+   rule713 = \ ((_lhsImysegments) :: MySegments) ->+     _lhsImysegments+   {-# INLINE rule714 #-}+   rule714 = \ ((_lhsInmp) :: NMP) ->+     _lhsInmp+   {-# INLINE rule715 #-}+   rule715 = \ ((_lhsInmprf) :: NMP_R) ->+     _lhsInmprf+   {-# INLINE rule716 #-}+   rule716 = \ ((_hdIolab) :: Int) ->+     _hdIolab+   {-# INLINE rule717 #-}+   rule717 = \ ((_lhsIoptions) :: Options) ->+     _lhsIoptions+   {-# INLINE rule718 #-}+   rule718 = \ ((_lhsIpmpf) :: PMP) ->+     _lhsIpmpf+   {-# INLINE rule719 #-}+   rule719 = \ ((_lhsIpmprf) :: PMP_R) ->+     _lhsIpmprf+   {-# INLINE rule720 #-}+   rule720 = \ ((_lhsIres_ads) :: [Edge]) ->+     _lhsIres_ads+   {-# INLINE rule721 #-}+   rule721 = \ ((_hdIrulenumber) :: Int) ->+     _hdIrulenumber+   {-# INLINE rule722 #-}+   rule722 = \ ((_lhsItdp) :: TDPRes) ->+     _lhsItdp+   {-# INLINE rule723 #-}+   rule723 = \ ((_lhsIvisMapf) :: IMap.IntMap Int) ->+     _lhsIvisMapf+{-# NOINLINE sem_Productions_Nil #-}+sem_Productions_Nil ::  T_Productions +sem_Productions_Nil  = T_Productions (return st86) where+   {-# NOINLINE st86 #-}+   st86 = let+      v85 :: T_Productions_v85 +      v85 = \ (T_Productions_vIn85 _lhsIain _lhsIan _lhsIaroundMap _lhsIasn _lhsIaugM _lhsIdty _lhsIflab _lhsIfty _lhsIftyf _lhsIhoMapf _lhsIlfpf _lhsImergeMap _lhsImysegments _lhsInmp _lhsInmprf _lhsIolab _lhsIoptions _lhsIpmpf _lhsIpmprf _lhsIres_ads _lhsIrulenumber _lhsItdp _lhsIvisMapf _lhsIvisitnum) -> ( let+         _lhsOads :: [Edge]+         _lhsOads = rule724  ()+         _lhsOap :: A_P+         _lhsOap = rule725  ()+         _lhsOeprods :: EProductions+         _lhsOeprods = rule726  ()+         _lhsOfdps :: Map.Map ConstructorIdent (Set Dependency)+         _lhsOfdps = rule727  ()+         _lhsOfieldMap :: FMap+         _lhsOfieldMap = rule728  ()+         _lhsOfsInP :: FsInP+         _lhsOfsInP = rule729  ()+         _lhsOfty :: FTY+         _lhsOfty = rule730  ()+         _lhsOgen :: Map Int Int+         _lhsOgen = rule731  ()+         _lhsOhoMap :: HOMap+         _lhsOhoMap = rule732  ()+         _lhsOinss :: Map Int [Int]+         _lhsOinss = rule733  ()+         _lhsOlfp :: SF_P+         _lhsOlfp = rule734  ()+         _lhsOlfpr :: SF_P+         _lhsOlfpr = rule735  ()+         _lhsOlocalSigMap :: Map.Map ConstructorIdent (Map.Map Identifier Type)+         _lhsOlocalSigMap = rule736  ()+         _lhsOofld :: [(Int, Int)]+         _lhsOofld = rule737  ()+         _lhsOpmp :: PMP+         _lhsOpmp = rule738  ()+         _lhsOpmpr :: PMP_R+         _lhsOpmpr = rule739  ()+         _lhsOps :: [PLabel]+         _lhsOps = rule740  ()+         _lhsOrefHoNts :: Set NontermIdent+         _lhsOrefHoNts = rule741  ()+         _lhsOrefNts :: Set NontermIdent+         _lhsOrefNts = rule742  ()+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOruleMap = rule743  ()+         _lhsOsfp :: SF_P+         _lhsOsfp = rule744  ()+         _self = rule745  ()+         _lhsOself :: Productions+         _lhsOself = rule746 _self+         _lhsOflab :: Int+         _lhsOflab = rule747 _lhsIflab+         _lhsOolab :: Int+         _lhsOolab = rule748 _lhsIolab+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule749 _lhsIrulenumber+         _lhsOvisitnum :: Int+         _lhsOvisitnum = rule750 _lhsIvisitnum+         __result_ = T_Productions_vOut85 _lhsOads _lhsOap _lhsOeprods _lhsOfdps _lhsOfieldMap _lhsOflab _lhsOfsInP _lhsOfty _lhsOgen _lhsOhoMap _lhsOinss _lhsOlfp _lhsOlfpr _lhsOlocalSigMap _lhsOofld _lhsOolab _lhsOpmp _lhsOpmpr _lhsOps _lhsOrefHoNts _lhsOrefNts _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOvisitnum+         in __result_ )+     in C_Productions_s86 v85+   {-# INLINE rule724 #-}+   rule724 = \  (_ :: ()) ->+     []+   {-# INLINE rule725 #-}+   rule725 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule726 #-}+   rule726 = \  (_ :: ()) ->+     []+   {-# INLINE rule727 #-}+   rule727 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule728 #-}+   rule728 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule729 #-}+   rule729 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule730 #-}+   rule730 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule731 #-}+   rule731 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule732 #-}+   rule732 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule733 #-}+   rule733 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule734 #-}+   rule734 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule735 #-}+   rule735 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule736 #-}+   rule736 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule737 #-}+   rule737 = \  (_ :: ()) ->+     []+   {-# INLINE rule738 #-}+   rule738 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule739 #-}+   rule739 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule740 #-}+   rule740 = \  (_ :: ()) ->+     ([])+   {-# INLINE rule741 #-}+   rule741 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule742 #-}+   rule742 = \  (_ :: ()) ->+     mempty+   {-# INLINE rule743 #-}+   rule743 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule744 #-}+   rule744 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule745 #-}+   rule745 = \  (_ :: ()) ->+     []+   {-# INLINE rule746 #-}+   rule746 = \ _self ->+     _self+   {-# INLINE rule747 #-}+   rule747 = \ ((_lhsIflab) :: Int) ->+     _lhsIflab+   {-# INLINE rule748 #-}+   rule748 = \ ((_lhsIolab) :: Int) ->+     _lhsIolab+   {-# INLINE rule749 #-}+   rule749 = \ ((_lhsIrulenumber) :: Int) ->+     _lhsIrulenumber+   {-# INLINE rule750 #-}+   rule750 = \ ((_lhsIvisitnum) :: Int) ->+     _lhsIvisitnum++-- Rule --------------------------------------------------------+-- wrapper+data Inh_Rule  = Inh_Rule { dty_Inh_Rule :: (MyType), lfpf_Inh_Rule :: (SF_P), pll_Inh_Rule :: (PLabel), pts_Inh_Rule :: (Set.Set (FLabel)), rulenumber_Inh_Rule :: (Int) }+data Syn_Rule  = Syn_Rule { erules_Syn_Rule :: (ERule), lfp_Syn_Rule :: (SF_P), lfpr_Syn_Rule :: (SF_P), ruleMap_Syn_Rule :: (Map.Map MyOccurrence Identifier), rulenumber_Syn_Rule :: (Int), self_Syn_Rule :: (Rule), sfp_Syn_Rule :: (SF_P), used_Syn_Rule :: (Set.Set MyOccurrence), usedLocals_Syn_Rule :: (Set.Set MyOccurrence) }+{-# INLINABLE wrap_Rule #-}+wrap_Rule :: T_Rule  -> Inh_Rule  -> (Syn_Rule )+wrap_Rule (T_Rule act) (Inh_Rule _lhsIdty _lhsIlfpf _lhsIpll _lhsIpts _lhsIrulenumber) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg88 = T_Rule_vIn88 _lhsIdty _lhsIlfpf _lhsIpll _lhsIpts _lhsIrulenumber+        (T_Rule_vOut88 _lhsOerules _lhsOlfp _lhsOlfpr _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOused _lhsOusedLocals) <- return (inv_Rule_s89 sem arg88)+        return (Syn_Rule _lhsOerules _lhsOlfp _lhsOlfpr _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOused _lhsOusedLocals)+   )++-- cata+{-# INLINE sem_Rule #-}+sem_Rule :: Rule  -> T_Rule +sem_Rule ( Rule mbName_ pattern_ rhs_ owrt_ origin_ explicit_ pure_ identity_ mbError_ eager_ ) = sem_Rule_Rule mbName_ ( sem_Pattern pattern_ ) ( sem_Expression rhs_ ) owrt_ origin_ explicit_ pure_ identity_ mbError_ eager_++-- semantic domain+newtype T_Rule  = T_Rule {+                         attach_T_Rule :: Identity (T_Rule_s89 )+                         }+newtype T_Rule_s89  = C_Rule_s89 {+                                 inv_Rule_s89 :: (T_Rule_v88 )+                                 }+data T_Rule_s90  = C_Rule_s90+type T_Rule_v88  = (T_Rule_vIn88 ) -> (T_Rule_vOut88 )+data T_Rule_vIn88  = T_Rule_vIn88 (MyType) (SF_P) (PLabel) (Set.Set (FLabel)) (Int)+data T_Rule_vOut88  = T_Rule_vOut88 (ERule) (SF_P) (SF_P) (Map.Map MyOccurrence Identifier) (Int) (Rule) (SF_P) (Set.Set MyOccurrence) (Set.Set MyOccurrence)+{-# NOINLINE sem_Rule_Rule #-}+sem_Rule_Rule :: (Maybe Identifier) -> T_Pattern  -> T_Expression  -> (Bool) -> (String) -> (Bool) -> (Bool) -> (Bool) -> (Maybe Error) -> (Bool) -> T_Rule +sem_Rule_Rule arg_mbName_ arg_pattern_ arg_rhs_ arg_owrt_ arg_origin_ arg_explicit_ arg_pure_ arg_identity_ arg_mbError_ arg_eager_ = T_Rule (return st89) where+   {-# NOINLINE st89 #-}+   st89 = let+      v88 :: T_Rule_v88 +      v88 = \ (T_Rule_vIn88 _lhsIdty _lhsIlfpf _lhsIpll _lhsIpts _lhsIrulenumber) -> ( let+         _patternX77 = Control.Monad.Identity.runIdentity (attach_T_Pattern (arg_pattern_))+         _rhsX41 = Control.Monad.Identity.runIdentity (attach_T_Expression (arg_rhs_))+         (T_Pattern_vOut76 _patternIafs _patternIcopy _patternIself) = inv_Pattern_s77 _patternX77 (T_Pattern_vIn76 )+         (T_Expression_vOut40 _rhsIcopy _rhsIself _rhsIused) = inv_Expression_s41 _rhsX41 (T_Expression_vIn40 _rhsOpll _rhsOpts)+         _lhsOerules :: ERule+         _lhsOerules = rule751 _patternIcopy _rhsIcopy _rulename arg_explicit_ arg_mbError_ arg_origin_ arg_owrt_ arg_pure_+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule752 _lhsIrulenumber+         _rulename = rule753 _lhsIrulenumber arg_mbName_+         _usedLocals = rule754 _rhsIused+         _usesLocals = rule755 _usedLocals+         _lhsOsfp :: SF_P+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOlfp :: SF_P+         _lhsOlfpr :: SF_P+         (_lhsOsfp,_lhsOruleMap,_lhsOlfp,_lhsOlfpr) = rule756 _lhsIlfpf _lhsIpll _patternIafs _rhsIused _rulename _usedLocals _usesLocals+         _lhsOused :: Set.Set MyOccurrence+         _lhsOused = rule757 _rhsIused+         _lhsOusedLocals :: Set.Set MyOccurrence+         _lhsOusedLocals = rule758 _usedLocals+         _self = rule759 _patternIself _rhsIself arg_eager_ arg_explicit_ arg_identity_ arg_mbError_ arg_mbName_ arg_origin_ arg_owrt_ arg_pure_+         _lhsOself :: Rule+         _lhsOself = rule760 _self+         _rhsOpll = rule761 _lhsIpll+         _rhsOpts = rule762 _lhsIpts+         __result_ = T_Rule_vOut88 _lhsOerules _lhsOlfp _lhsOlfpr _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOused _lhsOusedLocals+         in __result_ )+     in C_Rule_s89 v88+   {-# INLINE rule751 #-}+   {-# LINE 65 "src-ag/ExecutionPlanCommon.ag" #-}+   rule751 = \ ((_patternIcopy) :: Pattern) ((_rhsIcopy) :: Expression) _rulename explicit_ mbError_ origin_ owrt_ pure_ ->+                        {-# LINE 65 "src-ag/ExecutionPlanCommon.ag" #-}+                        ERule _rulename+                              _patternIcopy+                              _rhsIcopy+                              owrt_+                              origin_+                              explicit_+                              pure_+                              mbError_+                        {-# LINE 5776 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule752 #-}+   {-# LINE 12 "src-ag/ExecutionPlanPre.ag" #-}+   rule752 = \ ((_lhsIrulenumber) :: Int) ->+                             {-# LINE 12 "src-ag/ExecutionPlanPre.ag" #-}+                             _lhsIrulenumber + 1+                             {-# LINE 5782 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule753 #-}+   {-# LINE 13 "src-ag/ExecutionPlanPre.ag" #-}+   rule753 = \ ((_lhsIrulenumber) :: Int) mbName_ ->+                             {-# LINE 13 "src-ag/ExecutionPlanPre.ag" #-}+                             maybe (identifier $ "rule" ++ show _lhsIrulenumber) id mbName_+                             {-# LINE 5788 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule754 #-}+   {-# LINE 230 "src-ag/LOAG/Prepare.ag" #-}+   rule754 = \ ((_rhsIused) :: Set.Set MyOccurrence) ->+                       {-# LINE 230 "src-ag/LOAG/Prepare.ag" #-}+                       Set.filter (\(MyOccurrence (_,f) _) -> f == "loc") _rhsIused+                       {-# LINE 5794 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule755 #-}+   {-# LINE 231 "src-ag/LOAG/Prepare.ag" #-}+   rule755 = \ _usedLocals ->+                       {-# LINE 231 "src-ag/LOAG/Prepare.ag" #-}+                       not $ Set.null _usedLocals+                       {-# LINE 5800 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule756 #-}+   {-# LINE 233 "src-ag/LOAG/Prepare.ag" #-}+   rule756 = \ ((_lhsIlfpf) :: SF_P) ((_lhsIpll) :: PLabel) ((_patternIafs) :: [(FLabel, ALabel, Bool)]) ((_rhsIused) :: Set.Set MyOccurrence) _rulename _usedLocals _usesLocals ->+          {-# LINE 233 "src-ag/LOAG/Prepare.ag" #-}+          foldr (\(f, a, b) (m',rm', l', lr') ->+            let att = (_lhsIpll, f) >.< a+                rm  = Map.insert att _rulename rm'+                l   = if _usesLocals     && not b+                        then Map.insert att _usedLocals     l'+                        else l'+                lr  = if _usesLocals     && not b+                       then Set.fold (\k m -> Map.insertWith (Set.union) k+                                   (Set.singleton att) m) lr' _usedLocals+                       else lr'+                sfpins = Map.insert att (_rhsIused `Set.union` fromHO) m'+                fromHO = maybe Set.empty id (Map.lookup hOcc _lhsIlfpf)+                  where hOcc = (_lhsIpll, "inst") >.< (f, AnyDir)+              in if b+                  then (m',rm, Map.insert att _rhsIused l,+                          Set.fold (\k m -> Map.insertWith (Set.union) k+                                  (Set.singleton att) m) lr _rhsIused)+                  else (sfpins,rm,l,lr))+                          (Map.empty,Map.empty,Map.empty,Map.empty) _patternIafs+          {-# LINE 5824 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule757 #-}+   rule757 = \ ((_rhsIused) :: Set.Set MyOccurrence) ->+     _rhsIused+   {-# INLINE rule758 #-}+   rule758 = \ _usedLocals ->+     _usedLocals+   {-# INLINE rule759 #-}+   rule759 = \ ((_patternIself) :: Pattern) ((_rhsIself) :: Expression) eager_ explicit_ identity_ mbError_ mbName_ origin_ owrt_ pure_ ->+     Rule mbName_ _patternIself _rhsIself owrt_ origin_ explicit_ pure_ identity_ mbError_ eager_+   {-# INLINE rule760 #-}+   rule760 = \ _self ->+     _self+   {-# INLINE rule761 #-}+   rule761 = \ ((_lhsIpll) :: PLabel) ->+     _lhsIpll+   {-# INLINE rule762 #-}+   rule762 = \ ((_lhsIpts) :: Set.Set (FLabel)) ->+     _lhsIpts++-- Rules -------------------------------------------------------+-- wrapper+data Inh_Rules  = Inh_Rules { dty_Inh_Rules :: (MyType), lfpf_Inh_Rules :: (SF_P), pll_Inh_Rules :: (PLabel), pts_Inh_Rules :: (Set.Set (FLabel)), rulenumber_Inh_Rules :: (Int) }+data Syn_Rules  = Syn_Rules { erules_Syn_Rules :: (ERules), lfp_Syn_Rules :: (SF_P), lfpr_Syn_Rules :: (SF_P), ruleMap_Syn_Rules :: (Map.Map MyOccurrence Identifier), rulenumber_Syn_Rules :: (Int), self_Syn_Rules :: (Rules), sfp_Syn_Rules :: (SF_P), usedLocals_Syn_Rules :: (Set.Set MyOccurrence) }+{-# INLINABLE wrap_Rules #-}+wrap_Rules :: T_Rules  -> Inh_Rules  -> (Syn_Rules )+wrap_Rules (T_Rules act) (Inh_Rules _lhsIdty _lhsIlfpf _lhsIpll _lhsIpts _lhsIrulenumber) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg91 = T_Rules_vIn91 _lhsIdty _lhsIlfpf _lhsIpll _lhsIpts _lhsIrulenumber+        (T_Rules_vOut91 _lhsOerules _lhsOlfp _lhsOlfpr _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOusedLocals) <- return (inv_Rules_s92 sem arg91)+        return (Syn_Rules _lhsOerules _lhsOlfp _lhsOlfpr _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOusedLocals)+   )++-- cata+{-# NOINLINE sem_Rules #-}+sem_Rules :: Rules  -> T_Rules +sem_Rules list = Prelude.foldr sem_Rules_Cons sem_Rules_Nil (Prelude.map sem_Rule list)++-- semantic domain+newtype T_Rules  = T_Rules {+                           attach_T_Rules :: Identity (T_Rules_s92 )+                           }+newtype T_Rules_s92  = C_Rules_s92 {+                                   inv_Rules_s92 :: (T_Rules_v91 )+                                   }+data T_Rules_s93  = C_Rules_s93+type T_Rules_v91  = (T_Rules_vIn91 ) -> (T_Rules_vOut91 )+data T_Rules_vIn91  = T_Rules_vIn91 (MyType) (SF_P) (PLabel) (Set.Set (FLabel)) (Int)+data T_Rules_vOut91  = T_Rules_vOut91 (ERules) (SF_P) (SF_P) (Map.Map MyOccurrence Identifier) (Int) (Rules) (SF_P) (Set.Set MyOccurrence)+{-# NOINLINE sem_Rules_Cons #-}+sem_Rules_Cons :: T_Rule  -> T_Rules  -> T_Rules +sem_Rules_Cons arg_hd_ arg_tl_ = T_Rules (return st92) where+   {-# NOINLINE st92 #-}+   st92 = let+      v91 :: T_Rules_v91 +      v91 = \ (T_Rules_vIn91 _lhsIdty _lhsIlfpf _lhsIpll _lhsIpts _lhsIrulenumber) -> ( let+         _hdX89 = Control.Monad.Identity.runIdentity (attach_T_Rule (arg_hd_))+         _tlX92 = Control.Monad.Identity.runIdentity (attach_T_Rules (arg_tl_))+         (T_Rule_vOut88 _hdIerules _hdIlfp _hdIlfpr _hdIruleMap _hdIrulenumber _hdIself _hdIsfp _hdIused _hdIusedLocals) = inv_Rule_s89 _hdX89 (T_Rule_vIn88 _hdOdty _hdOlfpf _hdOpll _hdOpts _hdOrulenumber)+         (T_Rules_vOut91 _tlIerules _tlIlfp _tlIlfpr _tlIruleMap _tlIrulenumber _tlIself _tlIsfp _tlIusedLocals) = inv_Rules_s92 _tlX92 (T_Rules_vIn91 _tlOdty _tlOlfpf _tlOpll _tlOpts _tlOrulenumber)+         _lhsOerules :: ERules+         _lhsOerules = rule763 _hdIerules _tlIerules+         _lhsOlfp :: SF_P+         _lhsOlfp = rule764 _hdIlfp _tlIlfp+         _lhsOlfpr :: SF_P+         _lhsOlfpr = rule765 _hdIlfpr _tlIlfpr+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOruleMap = rule766 _hdIruleMap _tlIruleMap+         _lhsOsfp :: SF_P+         _lhsOsfp = rule767 _hdIsfp _tlIsfp+         _lhsOusedLocals :: Set.Set MyOccurrence+         _lhsOusedLocals = rule768 _hdIusedLocals _tlIusedLocals+         _self = rule769 _hdIself _tlIself+         _lhsOself :: Rules+         _lhsOself = rule770 _self+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule771 _tlIrulenumber+         _hdOdty = rule772 _lhsIdty+         _hdOlfpf = rule773 _lhsIlfpf+         _hdOpll = rule774 _lhsIpll+         _hdOpts = rule775 _lhsIpts+         _hdOrulenumber = rule776 _lhsIrulenumber+         _tlOdty = rule777 _lhsIdty+         _tlOlfpf = rule778 _lhsIlfpf+         _tlOpll = rule779 _lhsIpll+         _tlOpts = rule780 _lhsIpts+         _tlOrulenumber = rule781 _hdIrulenumber+         __result_ = T_Rules_vOut91 _lhsOerules _lhsOlfp _lhsOlfpr _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOusedLocals+         in __result_ )+     in C_Rules_s92 v91+   {-# INLINE rule763 #-}+   rule763 = \ ((_hdIerules) :: ERule) ((_tlIerules) :: ERules) ->+     _hdIerules : _tlIerules+   {-# INLINE rule764 #-}+   rule764 = \ ((_hdIlfp) :: SF_P) ((_tlIlfp) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIlfp _tlIlfp)+   {-# INLINE rule765 #-}+   rule765 = \ ((_hdIlfpr) :: SF_P) ((_tlIlfpr) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIlfpr _tlIlfpr)+   {-# INLINE rule766 #-}+   rule766 = \ ((_hdIruleMap) :: Map.Map MyOccurrence Identifier) ((_tlIruleMap) :: Map.Map MyOccurrence Identifier) ->+     (Map.union _hdIruleMap _tlIruleMap)+   {-# INLINE rule767 #-}+   rule767 = \ ((_hdIsfp) :: SF_P) ((_tlIsfp) :: SF_P) ->+     (Map.unionWith (Set.union) _hdIsfp _tlIsfp)+   {-# INLINE rule768 #-}+   rule768 = \ ((_hdIusedLocals) :: Set.Set MyOccurrence) ((_tlIusedLocals) :: Set.Set MyOccurrence) ->+     ((Set.union) _hdIusedLocals _tlIusedLocals)+   {-# INLINE rule769 #-}+   rule769 = \ ((_hdIself) :: Rule) ((_tlIself) :: Rules) ->+     (:) _hdIself _tlIself+   {-# INLINE rule770 #-}+   rule770 = \ _self ->+     _self+   {-# INLINE rule771 #-}+   rule771 = \ ((_tlIrulenumber) :: Int) ->+     _tlIrulenumber+   {-# INLINE rule772 #-}+   rule772 = \ ((_lhsIdty) :: MyType) ->+     _lhsIdty+   {-# INLINE rule773 #-}+   rule773 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule774 #-}+   rule774 = \ ((_lhsIpll) :: PLabel) ->+     _lhsIpll+   {-# INLINE rule775 #-}+   rule775 = \ ((_lhsIpts) :: Set.Set (FLabel)) ->+     _lhsIpts+   {-# INLINE rule776 #-}+   rule776 = \ ((_lhsIrulenumber) :: Int) ->+     _lhsIrulenumber+   {-# INLINE rule777 #-}+   rule777 = \ ((_lhsIdty) :: MyType) ->+     _lhsIdty+   {-# INLINE rule778 #-}+   rule778 = \ ((_lhsIlfpf) :: SF_P) ->+     _lhsIlfpf+   {-# INLINE rule779 #-}+   rule779 = \ ((_lhsIpll) :: PLabel) ->+     _lhsIpll+   {-# INLINE rule780 #-}+   rule780 = \ ((_lhsIpts) :: Set.Set (FLabel)) ->+     _lhsIpts+   {-# INLINE rule781 #-}+   rule781 = \ ((_hdIrulenumber) :: Int) ->+     _hdIrulenumber+{-# NOINLINE sem_Rules_Nil #-}+sem_Rules_Nil ::  T_Rules +sem_Rules_Nil  = T_Rules (return st92) where+   {-# NOINLINE st92 #-}+   st92 = let+      v91 :: T_Rules_v91 +      v91 = \ (T_Rules_vIn91 _lhsIdty _lhsIlfpf _lhsIpll _lhsIpts _lhsIrulenumber) -> ( let+         _lhsOerules :: ERules+         _lhsOerules = rule782  ()+         _lhsOlfp :: SF_P+         _lhsOlfp = rule783  ()+         _lhsOlfpr :: SF_P+         _lhsOlfpr = rule784  ()+         _lhsOruleMap :: Map.Map MyOccurrence Identifier+         _lhsOruleMap = rule785  ()+         _lhsOsfp :: SF_P+         _lhsOsfp = rule786  ()+         _lhsOusedLocals :: Set.Set MyOccurrence+         _lhsOusedLocals = rule787  ()+         _self = rule788  ()+         _lhsOself :: Rules+         _lhsOself = rule789 _self+         _lhsOrulenumber :: Int+         _lhsOrulenumber = rule790 _lhsIrulenumber+         __result_ = T_Rules_vOut91 _lhsOerules _lhsOlfp _lhsOlfpr _lhsOruleMap _lhsOrulenumber _lhsOself _lhsOsfp _lhsOusedLocals+         in __result_ )+     in C_Rules_s92 v91+   {-# INLINE rule782 #-}+   rule782 = \  (_ :: ()) ->+     []+   {-# INLINE rule783 #-}+   rule783 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule784 #-}+   rule784 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule785 #-}+   rule785 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule786 #-}+   rule786 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule787 #-}+   rule787 = \  (_ :: ()) ->+     Set.empty+   {-# INLINE rule788 #-}+   rule788 = \  (_ :: ()) ->+     []+   {-# INLINE rule789 #-}+   rule789 = \ _self ->+     _self+   {-# INLINE rule790 #-}+   rule790 = \ ((_lhsIrulenumber) :: Int) ->+     _lhsIrulenumber++-- Sequence ----------------------------------------------------+-- wrapper+data Inh_Sequence  = Inh_Sequence {  }+data Syn_Sequence  = Syn_Sequence { self_Syn_Sequence :: (Sequence) }+{-# INLINABLE wrap_Sequence #-}+wrap_Sequence :: T_Sequence  -> Inh_Sequence  -> (Syn_Sequence )+wrap_Sequence (T_Sequence act) (Inh_Sequence ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg94 = T_Sequence_vIn94 +        (T_Sequence_vOut94 _lhsOself) <- return (inv_Sequence_s95 sem arg94)+        return (Syn_Sequence _lhsOself)+   )++-- cata+{-# NOINLINE sem_Sequence #-}+sem_Sequence :: Sequence  -> T_Sequence +sem_Sequence list = Prelude.foldr sem_Sequence_Cons sem_Sequence_Nil (Prelude.map sem_CRule list)++-- semantic domain+newtype T_Sequence  = T_Sequence {+                                 attach_T_Sequence :: Identity (T_Sequence_s95 )+                                 }+newtype T_Sequence_s95  = C_Sequence_s95 {+                                         inv_Sequence_s95 :: (T_Sequence_v94 )+                                         }+data T_Sequence_s96  = C_Sequence_s96+type T_Sequence_v94  = (T_Sequence_vIn94 ) -> (T_Sequence_vOut94 )+data T_Sequence_vIn94  = T_Sequence_vIn94 +data T_Sequence_vOut94  = T_Sequence_vOut94 (Sequence)+{-# NOINLINE sem_Sequence_Cons #-}+sem_Sequence_Cons :: T_CRule  -> T_Sequence  -> T_Sequence +sem_Sequence_Cons arg_hd_ arg_tl_ = T_Sequence (return st95) where+   {-# NOINLINE st95 #-}+   st95 = let+      v94 :: T_Sequence_v94 +      v94 = \ (T_Sequence_vIn94 ) -> ( let+         _hdX20 = Control.Monad.Identity.runIdentity (attach_T_CRule (arg_hd_))+         _tlX95 = Control.Monad.Identity.runIdentity (attach_T_Sequence (arg_tl_))+         (T_CRule_vOut19 _hdIself) = inv_CRule_s20 _hdX20 (T_CRule_vIn19 )+         (T_Sequence_vOut94 _tlIself) = inv_Sequence_s95 _tlX95 (T_Sequence_vIn94 )+         _self = rule791 _hdIself _tlIself+         _lhsOself :: Sequence+         _lhsOself = rule792 _self+         __result_ = T_Sequence_vOut94 _lhsOself+         in __result_ )+     in C_Sequence_s95 v94+   {-# INLINE rule791 #-}+   rule791 = \ ((_hdIself) :: CRule) ((_tlIself) :: Sequence) ->+     (:) _hdIself _tlIself+   {-# INLINE rule792 #-}+   rule792 = \ _self ->+     _self+{-# NOINLINE sem_Sequence_Nil #-}+sem_Sequence_Nil ::  T_Sequence +sem_Sequence_Nil  = T_Sequence (return st95) where+   {-# NOINLINE st95 #-}+   st95 = let+      v94 :: T_Sequence_v94 +      v94 = \ (T_Sequence_vIn94 ) -> ( let+         _self = rule793  ()+         _lhsOself :: Sequence+         _lhsOself = rule794 _self+         __result_ = T_Sequence_vOut94 _lhsOself+         in __result_ )+     in C_Sequence_s95 v94+   {-# INLINE rule793 #-}+   rule793 = \  (_ :: ()) ->+     []+   {-# INLINE rule794 #-}+   rule794 = \ _self ->+     _self++-- TypeSig -----------------------------------------------------+-- wrapper+data Inh_TypeSig  = Inh_TypeSig {  }+data Syn_TypeSig  = Syn_TypeSig { localSigMap_Syn_TypeSig :: (Map Identifier Type), self_Syn_TypeSig :: (TypeSig) }+{-# INLINABLE wrap_TypeSig #-}+wrap_TypeSig :: T_TypeSig  -> Inh_TypeSig  -> (Syn_TypeSig )+wrap_TypeSig (T_TypeSig act) (Inh_TypeSig ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg97 = T_TypeSig_vIn97 +        (T_TypeSig_vOut97 _lhsOlocalSigMap _lhsOself) <- return (inv_TypeSig_s98 sem arg97)+        return (Syn_TypeSig _lhsOlocalSigMap _lhsOself)+   )++-- cata+{-# INLINE sem_TypeSig #-}+sem_TypeSig :: TypeSig  -> T_TypeSig +sem_TypeSig ( TypeSig name_ tp_ ) = sem_TypeSig_TypeSig name_ tp_++-- semantic domain+newtype T_TypeSig  = T_TypeSig {+                               attach_T_TypeSig :: Identity (T_TypeSig_s98 )+                               }+newtype T_TypeSig_s98  = C_TypeSig_s98 {+                                       inv_TypeSig_s98 :: (T_TypeSig_v97 )+                                       }+data T_TypeSig_s99  = C_TypeSig_s99+type T_TypeSig_v97  = (T_TypeSig_vIn97 ) -> (T_TypeSig_vOut97 )+data T_TypeSig_vIn97  = T_TypeSig_vIn97 +data T_TypeSig_vOut97  = T_TypeSig_vOut97 (Map Identifier Type) (TypeSig)+{-# NOINLINE sem_TypeSig_TypeSig #-}+sem_TypeSig_TypeSig :: (Identifier) -> (Type) -> T_TypeSig +sem_TypeSig_TypeSig arg_name_ arg_tp_ = T_TypeSig (return st98) where+   {-# NOINLINE st98 #-}+   st98 = let+      v97 :: T_TypeSig_v97 +      v97 = \ (T_TypeSig_vIn97 ) -> ( let+         _lhsOlocalSigMap :: Map Identifier Type+         _lhsOlocalSigMap = rule795 arg_name_ arg_tp_+         _self = rule796 arg_name_ arg_tp_+         _lhsOself :: TypeSig+         _lhsOself = rule797 _self+         __result_ = T_TypeSig_vOut97 _lhsOlocalSigMap _lhsOself+         in __result_ )+     in C_TypeSig_s98 v97+   {-# INLINE rule795 #-}+   {-# LINE 161 "src-ag/ExecutionPlanCommon.ag" #-}+   rule795 = \ name_ tp_ ->+                                                   {-# LINE 161 "src-ag/ExecutionPlanCommon.ag" #-}+                                                   Map.singleton name_ tp_+                                                   {-# LINE 6150 "dist/build/LOAG/Order.hs"#-}+   {-# INLINE rule796 #-}+   rule796 = \ name_ tp_ ->+     TypeSig name_ tp_+   {-# INLINE rule797 #-}+   rule797 = \ _self ->+     _self++-- TypeSigs ----------------------------------------------------+-- wrapper+data Inh_TypeSigs  = Inh_TypeSigs {  }+data Syn_TypeSigs  = Syn_TypeSigs { localSigMap_Syn_TypeSigs :: (Map Identifier Type), self_Syn_TypeSigs :: (TypeSigs) }+{-# INLINABLE wrap_TypeSigs #-}+wrap_TypeSigs :: T_TypeSigs  -> Inh_TypeSigs  -> (Syn_TypeSigs )+wrap_TypeSigs (T_TypeSigs act) (Inh_TypeSigs ) =+   Control.Monad.Identity.runIdentity (+     do sem <- act+        let arg100 = T_TypeSigs_vIn100 +        (T_TypeSigs_vOut100 _lhsOlocalSigMap _lhsOself) <- return (inv_TypeSigs_s101 sem arg100)+        return (Syn_TypeSigs _lhsOlocalSigMap _lhsOself)+   )++-- cata+{-# NOINLINE sem_TypeSigs #-}+sem_TypeSigs :: TypeSigs  -> T_TypeSigs +sem_TypeSigs list = Prelude.foldr sem_TypeSigs_Cons sem_TypeSigs_Nil (Prelude.map sem_TypeSig list)++-- semantic domain+newtype T_TypeSigs  = T_TypeSigs {+                                 attach_T_TypeSigs :: Identity (T_TypeSigs_s101 )+                                 }+newtype T_TypeSigs_s101  = C_TypeSigs_s101 {+                                           inv_TypeSigs_s101 :: (T_TypeSigs_v100 )+                                           }+data T_TypeSigs_s102  = C_TypeSigs_s102+type T_TypeSigs_v100  = (T_TypeSigs_vIn100 ) -> (T_TypeSigs_vOut100 )+data T_TypeSigs_vIn100  = T_TypeSigs_vIn100 +data T_TypeSigs_vOut100  = T_TypeSigs_vOut100 (Map Identifier Type) (TypeSigs)+{-# NOINLINE sem_TypeSigs_Cons #-}+sem_TypeSigs_Cons :: T_TypeSig  -> T_TypeSigs  -> T_TypeSigs +sem_TypeSigs_Cons arg_hd_ arg_tl_ = T_TypeSigs (return st101) where+   {-# NOINLINE st101 #-}+   st101 = let+      v100 :: T_TypeSigs_v100 +      v100 = \ (T_TypeSigs_vIn100 ) -> ( let+         _hdX98 = Control.Monad.Identity.runIdentity (attach_T_TypeSig (arg_hd_))+         _tlX101 = Control.Monad.Identity.runIdentity (attach_T_TypeSigs (arg_tl_))+         (T_TypeSig_vOut97 _hdIlocalSigMap _hdIself) = inv_TypeSig_s98 _hdX98 (T_TypeSig_vIn97 )+         (T_TypeSigs_vOut100 _tlIlocalSigMap _tlIself) = inv_TypeSigs_s101 _tlX101 (T_TypeSigs_vIn100 )+         _lhsOlocalSigMap :: Map Identifier Type+         _lhsOlocalSigMap = rule798 _hdIlocalSigMap _tlIlocalSigMap+         _self = rule799 _hdIself _tlIself+         _lhsOself :: TypeSigs+         _lhsOself = rule800 _self+         __result_ = T_TypeSigs_vOut100 _lhsOlocalSigMap _lhsOself+         in __result_ )+     in C_TypeSigs_s101 v100+   {-# INLINE rule798 #-}+   rule798 = \ ((_hdIlocalSigMap) :: Map Identifier Type) ((_tlIlocalSigMap) :: Map Identifier Type) ->+     _hdIlocalSigMap `Map.union` _tlIlocalSigMap+   {-# INLINE rule799 #-}+   rule799 = \ ((_hdIself) :: TypeSig) ((_tlIself) :: TypeSigs) ->+     (:) _hdIself _tlIself+   {-# INLINE rule800 #-}+   rule800 = \ _self ->+     _self+{-# NOINLINE sem_TypeSigs_Nil #-}+sem_TypeSigs_Nil ::  T_TypeSigs +sem_TypeSigs_Nil  = T_TypeSigs (return st101) where+   {-# NOINLINE st101 #-}+   st101 = let+      v100 :: T_TypeSigs_v100 +      v100 = \ (T_TypeSigs_vIn100 ) -> ( let+         _lhsOlocalSigMap :: Map Identifier Type+         _lhsOlocalSigMap = rule801  ()+         _self = rule802  ()+         _lhsOself :: TypeSigs+         _lhsOself = rule803 _self+         __result_ = T_TypeSigs_vOut100 _lhsOlocalSigMap _lhsOself+         in __result_ )+     in C_TypeSigs_s101 v100+   {-# INLINE rule801 #-}+   rule801 = \  (_ :: ()) ->+     Map.empty+   {-# INLINE rule802 #-}+   rule802 = \  (_ :: ()) ->+     []+   {-# INLINE rule803 #-}+   rule803 = \ _self ->+     _self
+ src-generated/LOAG/Rep.hs view
@@ -0,0 +1,107 @@+++-- UUAGC 0.9.51 (src-ag/LOAG/Rep.ag)+module LOAG.Rep where++import CommonTypes+import AbstractSyntax+import LOAG.Common+import qualified Data.Array as A+import qualified Data.Map   as Map+import qualified Data.Set   as Set+++import Data.List (intercalate, foldl', nub)+import Data.Tuple (swap)+import Control.Arrow+-- FieldAtt ----------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         self                 : FieldAtt +   alternatives:+      alternative FieldAtt:+         child t              : {MyType}+         child p              : {PLabel}+         child f              : {FLabel}+         child a              : {ALabel}+         visit 0:+            local self        : _+-}+data FieldAtt = FieldAtt {t_FieldAtt_FieldAtt :: MyType,p_FieldAtt_FieldAtt :: PLabel,f_FieldAtt_FieldAtt :: FLabel,a_FieldAtt_FieldAtt :: ALabel}+-- FieldAtts ---------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         self                 : FieldAtts +   alternatives:+      alternative Cons:+         child hd             : FieldAtt +         child tl             : FieldAtts +         visit 0:+            local self        : _+      alternative Nil:+         visit 0:+            local self        : _+-}+type FieldAtts = [FieldAtt]+-- LOAGRep -----------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         self                 : LOAGRep +   alternatives:+      alternative LOAGRep:+         child ps             : {[PLabel]}+         child ap             : {A_P}+         child an             : {A_N}+         child ain            : {AI_N}+         child asn            : {AS_N}+         child sfp            : {SF_P}+         child pmp            : {PMP}+         child pmpr           : {PMP_R}+         child nmp            : {NMP}+         child nmpr           : {NMP_R}+         child gen            : {A.Array Int Int}+         child inss           : {A.Array Int [Int]}+         child ofld           : {A.Array Int Int}+         child fty            : {FTY}+         child fieldMap       : {FMap}+         child fsInP          : {Map.Map PLabel [(PLabel,FLabel)]}+         visit 0:+            local self        : _+-}+data LOAGRep = LOAGRep {ps_LOAGRep_LOAGRep :: ([PLabel]),ap_LOAGRep_LOAGRep :: A_P,an_LOAGRep_LOAGRep :: A_N,ain_LOAGRep_LOAGRep :: AI_N,asn_LOAGRep_LOAGRep :: AS_N,sfp_LOAGRep_LOAGRep :: SF_P,pmp_LOAGRep_LOAGRep :: PMP,pmpr_LOAGRep_LOAGRep :: PMP_R,nmp_LOAGRep_LOAGRep :: NMP,nmpr_LOAGRep_LOAGRep :: NMP_R,gen_LOAGRep_LOAGRep :: (A.Array Int Int),inss_LOAGRep_LOAGRep :: (A.Array Int [Int]),ofld_LOAGRep_LOAGRep :: (A.Array Int Int),fty_LOAGRep_LOAGRep :: FTY,fieldMap_LOAGRep_LOAGRep :: FMap,fsInP_LOAGRep_LOAGRep :: (Map.Map PLabel [(PLabel,FLabel)])}+-- MySegment ---------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         self                 : MySegment +   alternatives:+      alternative MySegment:+         child visnr          : {Int}+         child inhAttr        : {[Int]}+         child synAttr        : {[Int]}+         child inhOccs        : {Maybe [Int]}+         child synOccs        : {Maybe [Int]}+         visit 0:+            local self        : _+-}+data MySegment = MySegment {visnr_MySegment_MySegment :: Int,inhAttr_MySegment_MySegment :: ([Int]),synAttr_MySegment_MySegment :: ([Int]),inhOccs_MySegment_MySegment :: (Maybe [Int]),synOccs_MySegment_MySegment :: (Maybe [Int])}+               deriving ( Show)+-- MySegments --------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         self                 : MySegments +   alternatives:+      alternative Cons:+         child hd             : MySegment +         child tl             : MySegments +         visit 0:+            local self        : _+      alternative Nil:+         visit 0:+            local self        : _+-}+type MySegments = [MySegment]
src-generated/Macro.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/Macro.ag)+-- UUAGC 0.9.51 (src-ag/Macro.ag) module Macro where-{-# LINE 4 "./src-ag/Macro.ag" #-}+{-# LINE 4 "src-ag/Macro.ag" #-}  import CommonTypes {-# LINE 9 "dist/build/Macro.hs" #-}
src-generated/Order.hs view
@@ -2,7 +2,7 @@ {-# LANGUAGE ScopedTypeVariables #-}  module Order where-{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)@@ -14,20 +14,20 @@ import ErrorMessages {-# LINE 16 "dist/build/Order.hs" #-} -{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken {-# LINE 22 "dist/build/Order.hs" #-} -{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 29 "dist/build/Order.hs" #-} -{-# LINE 10 "./src-ag/Order.ag" #-}+{-# LINE 10 "src-ag/Order.ag" #-}  -- From uuagc import CommonTypes@@ -65,7 +65,7 @@ {-# LINE 66 "dist/build/Order.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 46 "./src-ag/Order.ag" #-}+{-# LINE 46 "src-ag/Order.ag" #-}  -- Terminates with an error if the key is not in the map findWithErr1 :: (Ord k, Show k) => String -> k -> Map k a -> a@@ -77,26 +77,26 @@   = Map.findWithDefault (error ("findWithErr2: key " ++ show k ++ " not in map: " ++ show m)) k m {-# LINE 79 "dist/build/Order.hs" #-} -{-# LINE 71 "./src-ag/Order.ag" #-}+{-# LINE 71 "src-ag/Order.ag" #-}  startsWith :: String -> String -> Bool startsWith k h = k == take (length k) h {-# LINE 85 "dist/build/Order.hs" #-} -{-# LINE 138 "./src-ag/Order.ag" #-}+{-# LINE 138 "src-ag/Order.ag" #-}  getNtName :: Type -> NontermIdent getNtName (NT nt _ _) = nt getNtName _           = nullIdent {-# LINE 92 "dist/build/Order.hs" #-} -{-# LINE 166 "./src-ag/Order.ag" #-}+{-# LINE 166 "src-ag/Order.ag" #-}  data AltAttr = AltAttr Identifier Identifier Bool                deriving (Eq, Ord, Show) {-# LINE 98 "dist/build/Order.hs" #-} -{-# LINE 239 "./src-ag/Order.ag" #-}+{-# LINE 239 "src-ag/Order.ag" #-}  substSelf nt tp   = case tp of@@ -107,7 +107,7 @@ haskellTupel ts =  Just ( Haskell ( '(' : (concat (intersperse "," (map show ts))) ++ ")" )) {-# LINE 109 "dist/build/Order.hs" #-} -{-# LINE 692 "./src-ag/Order.ag" #-}+{-# LINE 692 "src-ag/Order.ag" #-}  swap (a,b) = (b,a) @@ -235,8 +235,8 @@ wrap_Child (T_Child act) (Inh_Child _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIo_unbox _lhsIsyn _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Child_vIn1 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIo_unbox _lhsIsyn _lhsIsynMap-        (T_Child_vOut1 _lhsOattributes _lhsOcollectChildrenInhs _lhsOcollectChildrenSyns _lhsOerrors _lhsOfield _lhsOgathAltAttrs _lhsOgathRules _lhsOinhs _lhsOnts _lhsOsinglevisits _lhsOterminals) <- return (inv_Child_s2 sem arg)+        let arg1 = T_Child_vIn1 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIo_unbox _lhsIsyn _lhsIsynMap+        (T_Child_vOut1 _lhsOattributes _lhsOcollectChildrenInhs _lhsOcollectChildrenSyns _lhsOerrors _lhsOfield _lhsOgathAltAttrs _lhsOgathRules _lhsOinhs _lhsOnts _lhsOsinglevisits _lhsOterminals) <- return (inv_Child_s2 sem arg1)         return (Syn_Child _lhsOattributes _lhsOcollectChildrenInhs _lhsOcollectChildrenSyns _lhsOerrors _lhsOfield _lhsOgathAltAttrs _lhsOgathRules _lhsOinhs _lhsOnts _lhsOsinglevisits _lhsOterminals)    ) @@ -294,100 +294,100 @@          in __result_ )      in C_Child_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 19 "src-ag/DistChildAttr.ag" #-}    rule0 = \ name_ tp_ ->-                       {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+                       {-# LINE 19 "src-ag/DistChildAttr.ag" #-}                        case tp_ of                          NT nt _ _ -> nt                          Self      -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")                          Haskell t -> identifier ""                        {-# LINE 305 "dist/build/Order.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 23 "src-ag/DistChildAttr.ag" #-}    rule1 = \ _chnt ((_lhsIinhMap) :: Map Identifier Attributes) ->-                      {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 23 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIinhMap                       {-# LINE 311 "dist/build/Order.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 24 "src-ag/DistChildAttr.ag" #-}    rule2 = \ _chnt ((_lhsIsynMap) :: Map Identifier Attributes) ->-                      {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 24 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIsynMap                       {-# LINE 317 "dist/build/Order.hs"#-}    {-# INLINE rule3 #-}-   {-# LINE 180 "./src-ag/Order.ag" #-}+   {-# LINE 180 "src-ag/Order.ag" #-}    rule3 = \ _syn tp_ ->-                                {-# LINE 180 "./src-ag/Order.ag" #-}+                                {-# LINE 180 "src-ag/Order.ag" #-}                                 case tp_ of                                   NT nt _ _ -> Map.null _syn                                   _         -> True                                 {-# LINE 325 "dist/build/Order.hs"#-}    {-# INLINE rule4 #-}-   {-# LINE 183 "./src-ag/Order.ag" #-}+   {-# LINE 183 "src-ag/Order.ag" #-}    rule4 = \ _maptolocal _syn name_ ->-                                 {-# LINE 183 "./src-ag/Order.ag" #-}+                                 {-# LINE 183 "src-ag/Order.ag" #-}                                  if  _maptolocal                                      then [ AltAttr _LOC name_ True ]                                      else [ AltAttr name_ syn True | syn <- Map.keys _syn     ]                                  {-# LINE 333 "dist/build/Order.hs"#-}    {-# INLINE rule5 #-}-   {-# LINE 198 "./src-ag/Order.ag" #-}+   {-# LINE 198 "src-ag/Order.ag" #-}    rule5 = \ name_ tp_ ->-                        {-# LINE 198 "./src-ag/Order.ag" #-}+                        {-# LINE 198 "src-ag/Order.ag" #-}                         Seq.singleton (name_,getNtName tp_)                         {-# LINE 339 "dist/build/Order.hs"#-}    {-# INLINE rule6 #-}-   {-# LINE 199 "./src-ag/Order.ag" #-}+   {-# LINE 199 "src-ag/Order.ag" #-}    rule6 = \ _inh name_ ->-                         {-# LINE 199 "./src-ag/Order.ag" #-}+                         {-# LINE 199 "src-ag/Order.ag" #-}                          Seq.singleton (name_,_inh    )                          {-# LINE 345 "dist/build/Order.hs"#-}    {-# INLINE rule7 #-}-   {-# LINE 215 "./src-ag/Order.ag" #-}+   {-# LINE 215 "src-ag/Order.ag" #-}    rule7 = \ ((_lhsIcon) :: Identifier) ((_lhsInt) :: Identifier) _maptolocal _syn name_ tp_ ->-                              {-# LINE 215 "./src-ag/Order.ag" #-}+                              {-# LINE 215 "src-ag/Order.ag" #-}                               if  _maptolocal                                   then Seq.singleton (cRuleTerminal name_ _lhsInt _lhsIcon tp_)                                   else Seq.fromList [ cRuleRhsSyn syn _lhsInt _lhsIcon tp name_ (getNtName tp_) | (syn,tp) <- Map.assocs _syn    ]                               {-# LINE 353 "dist/build/Order.hs"#-}    {-# INLINE rule8 #-}-   {-# LINE 347 "./src-ag/Order.ag" #-}+   {-# LINE 347 "src-ag/Order.ag" #-}    rule8 = \ _syn name_ ->-                                       {-# LINE 347 "./src-ag/Order.ag" #-}+                                       {-# LINE 347 "src-ag/Order.ag" #-}                                        Map.singleton name_ _syn                                        {-# LINE 359 "dist/build/Order.hs"#-}    {-# INLINE rule9 #-}-   {-# LINE 348 "./src-ag/Order.ag" #-}+   {-# LINE 348 "src-ag/Order.ag" #-}    rule9 = \ _inh name_ ->-                                       {-# LINE 348 "./src-ag/Order.ag" #-}+                                       {-# LINE 348 "src-ag/Order.ag" #-}                                        Map.singleton name_ _inh                                        {-# LINE 365 "dist/build/Order.hs"#-}    {-# INLINE rule10 #-}-   {-# LINE 618 "./src-ag/Order.ag" #-}+   {-# LINE 618 "src-ag/Order.ag" #-}    rule10 = \ _inh _maptolocal _syn name_ tp_ ->-                                 {-# LINE 618 "./src-ag/Order.ag" #-}+                                 {-# LINE 618 "src-ag/Order.ag" #-}                                  if  _maptolocal                                      then []                                      else [CChildVisit name_ (getNtName tp_) 0 _inh     _syn     True]                                  {-# LINE 373 "dist/build/Order.hs"#-}    {-# INLINE rule11 #-}-   {-# LINE 643 "./src-ag/Order.ag" #-}+   {-# LINE 643 "src-ag/Order.ag" #-}    rule11 = \ _maptolocal name_ ->-                            {-# LINE 643 "./src-ag/Order.ag" #-}+                            {-# LINE 643 "src-ag/Order.ag" #-}                             if _maptolocal                             then [name_]                             else []                             {-# LINE 381 "dist/build/Order.hs"#-}    {-# INLINE rule12 #-}-   {-# LINE 672 "./src-ag/Order.ag" #-}+   {-# LINE 672 "src-ag/Order.ag" #-}    rule12 = \ _inh _syn name_ ->-                             {-# LINE 672 "./src-ag/Order.ag" #-}+                             {-# LINE 672 "src-ag/Order.ag" #-}                              [(name_, _inh    , _syn    )]                              {-# LINE 387 "dist/build/Order.hs"#-}    {-# INLINE rule13 #-}-   {-# LINE 676 "./src-ag/Order.ag" #-}+   {-# LINE 676 "src-ag/Order.ag" #-}    rule13 = \ kind_ name_ tp_ ->-                        {-# LINE 676 "./src-ag/Order.ag" #-}+                        {-# LINE 676 "src-ag/Order.ag" #-}                         (name_, tp_, kind_)                         {-# LINE 393 "dist/build/Order.hs"#-}    {-# INLINE rule14 #-}@@ -406,8 +406,8 @@ wrap_Children (T_Children act) (Inh_Children _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIo_unbox _lhsIsyn _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Children_vIn4 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIo_unbox _lhsIsyn _lhsIsynMap-        (T_Children_vOut4 _lhsOattributes _lhsOcollectChildrenInhs _lhsOcollectChildrenSyns _lhsOerrors _lhsOfields _lhsOgathAltAttrs _lhsOgathRules _lhsOinhs _lhsOnts _lhsOsinglevisits _lhsOterminals) <- return (inv_Children_s5 sem arg)+        let arg4 = T_Children_vIn4 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIo_unbox _lhsIsyn _lhsIsynMap+        (T_Children_vOut4 _lhsOattributes _lhsOcollectChildrenInhs _lhsOcollectChildrenSyns _lhsOerrors _lhsOfields _lhsOgathAltAttrs _lhsOgathRules _lhsOinhs _lhsOnts _lhsOsinglevisits _lhsOterminals) <- return (inv_Children_s5 sem arg4)         return (Syn_Children _lhsOattributes _lhsOcollectChildrenInhs _lhsOcollectChildrenSyns _lhsOerrors _lhsOfields _lhsOgathAltAttrs _lhsOgathRules _lhsOinhs _lhsOnts _lhsOsinglevisits _lhsOterminals)    ) @@ -486,9 +486,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule16 #-}-   {-# LINE 679 "./src-ag/Order.ag" #-}+   {-# LINE 679 "src-ag/Order.ag" #-}    rule16 = \ ((_hdIfield) :: (Identifier,Type,ChildKind)) ((_tlIfields) :: [(Identifier,Type,ChildKind)]) ->-                         {-# LINE 679 "./src-ag/Order.ag" #-}+                         {-# LINE 679 "src-ag/Order.ag" #-}                          _hdIfield : _tlIfields                          {-# LINE 494 "dist/build/Order.hs"#-}    {-# INLINE rule17 #-}@@ -620,9 +620,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule49 #-}-   {-# LINE 680 "./src-ag/Order.ag" #-}+   {-# LINE 680 "src-ag/Order.ag" #-}    rule49 = \  (_ :: ()) ->-                         {-# LINE 680 "./src-ag/Order.ag" #-}+                         {-# LINE 680 "src-ag/Order.ag" #-}                          []                          {-# LINE 628 "dist/build/Order.hs"#-}    {-# INLINE rule50 #-}@@ -665,8 +665,8 @@ wrap_Expression (T_Expression act) (Inh_Expression _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsImergeMap _lhsInt _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Expression_vIn7 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsImergeMap _lhsInt _lhsIoptions-        (T_Expression_vOut7 _lhsOallRhsVars _lhsOcopy _lhsOerrors _lhsOtextLines _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals) <- return (inv_Expression_s8 sem arg)+        let arg7 = T_Expression_vIn7 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsImergeMap _lhsInt _lhsIoptions+        (T_Expression_vOut7 _lhsOallRhsVars _lhsOcopy _lhsOerrors _lhsOtextLines _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals) <- return (inv_Expression_s8 sem arg7)         return (Syn_Expression _lhsOallRhsVars _lhsOcopy _lhsOerrors _lhsOtextLines _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals)    ) @@ -713,9 +713,9 @@          in __result_ )      in C_Expression_s8 v7    {-# INLINE rule60 #-}-   {-# LINE 469 "./src-ag/Order.ag" #-}+   {-# LINE 469 "src-ag/Order.ag" #-}    rule60 = \ ((_lhsIallfields) :: [(Identifier,Type,ChildKind)]) ((_lhsIallnts) :: [Identifier]) ((_lhsIattrs) :: [(Identifier,Identifier)]) ((_lhsIcon) :: Identifier) ((_lhsImergeMap) :: Map Identifier (Identifier,[Identifier])) ((_lhsInt) :: Identifier) ((_lhsIoptions) :: Options) tks_ ->-                                {-# LINE 469 "./src-ag/Order.ag" #-}+                                {-# LINE 469 "src-ag/Order.ag" #-}                                 let mergedChildren = [ x | (_,xs) <- Map.elems _lhsImergeMap, x <- xs ]                                     attrsIn = filter (\(fld,_) -> not (fld `elem` mergedChildren)) _lhsIattrs                                     inherited = Inh_HsTokensRoot@@ -740,15 +740,15 @@                                             in (textLines,usedAttrs',usedLocals,usedFields)                                 {-# LINE 742 "dist/build/Order.hs"#-}    {-# INLINE rule61 #-}-   {-# LINE 492 "./src-ag/Order.ag" #-}+   {-# LINE 492 "src-ag/Order.ag" #-}    rule61 = \  (_ :: ()) ->-                               {-# LINE 492 "./src-ag/Order.ag" #-}+                               {-# LINE 492 "src-ag/Order.ag" #-}                                Seq.empty                                {-# LINE 748 "dist/build/Order.hs"#-}    {-# INLINE rule62 #-}-   {-# LINE 493 "./src-ag/Order.ag" #-}+   {-# LINE 493 "src-ag/Order.ag" #-}    rule62 = \ _usedAttrs _usedFields _usedLocals ->-                                   {-# LINE 493 "./src-ag/Order.ag" #-}+                                   {-# LINE 493 "src-ag/Order.ag" #-}                                    Set.fromList _usedAttrs                                    `Set.union`                                    Set.fromList [ (_LOC, l) | l <- _usedLocals    ]@@ -783,8 +783,8 @@ wrap_Grammar (T_Grammar act) (Inh_Grammar _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Grammar_vIn10 _lhsIoptions-        (T_Grammar_vOut10 _lhsOerrors _lhsOnAutoRules _lhsOnExplicitRules _lhsOoutput) <- return (inv_Grammar_s11 sem arg)+        let arg10 = T_Grammar_vIn10 _lhsIoptions+        (T_Grammar_vOut10 _lhsOerrors _lhsOnAutoRules _lhsOnExplicitRules _lhsOoutput) <- return (inv_Grammar_s11 sem arg10)         return (Syn_Grammar _lhsOerrors _lhsOnAutoRules _lhsOnExplicitRules _lhsOoutput)    ) @@ -861,169 +861,169 @@          in __result_ )      in C_Grammar_s11 v10    {-# INLINE rule69 #-}-   {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 15 "src-ag/DistChildAttr.ag" #-}    rule69 = \ ((_nontsIinhMap') :: Map Identifier Attributes) ->-                             {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 15 "src-ag/DistChildAttr.ag" #-}                              _nontsIinhMap'                              {-# LINE 869 "dist/build/Order.hs"#-}    {-# INLINE rule70 #-}-   {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 16 "src-ag/DistChildAttr.ag" #-}    rule70 = \ ((_nontsIsynMap') :: Map Identifier Attributes) ->-                             {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 16 "src-ag/DistChildAttr.ag" #-}                              _nontsIsynMap'                              {-# LINE 875 "dist/build/Order.hs"#-}    {-# INLINE rule71 #-}-   {-# LINE 123 "./src-ag/Order.ag" #-}+   {-# LINE 123 "src-ag/Order.ag" #-}    rule71 = \ _cyclesErrors ((_lhsIoptions) :: Options) ->-                                    {-# LINE 123 "./src-ag/Order.ag" #-}+                                    {-# LINE 123 "src-ag/Order.ag" #-}                                     visit     _lhsIoptions && null _cyclesErrors                                     {-# LINE 881 "dist/build/Order.hs"#-}    {-# INLINE rule72 #-}-   {-# LINE 124 "./src-ag/Order.ag" #-}+   {-# LINE 124 "src-ag/Order.ag" #-}    rule72 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 124 "./src-ag/Order.ag" #-}+                                    {-# LINE 124 "src-ag/Order.ag" #-}                                     folds     _lhsIoptions                                     {-# LINE 887 "dist/build/Order.hs"#-}    {-# INLINE rule73 #-}-   {-# LINE 125 "./src-ag/Order.ag" #-}+   {-# LINE 125 "src-ag/Order.ag" #-}    rule73 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 125 "./src-ag/Order.ag" #-}+                                    {-# LINE 125 "src-ag/Order.ag" #-}                                     dataTypes _lhsIoptions                                     {-# LINE 893 "dist/build/Order.hs"#-}    {-# INLINE rule74 #-}-   {-# LINE 126 "./src-ag/Order.ag" #-}+   {-# LINE 126 "src-ag/Order.ag" #-}    rule74 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 126 "./src-ag/Order.ag" #-}+                                    {-# LINE 126 "src-ag/Order.ag" #-}                                     typeSigs  _lhsIoptions                                     {-# LINE 899 "dist/build/Order.hs"#-}    {-# INLINE rule75 #-}-   {-# LINE 127 "./src-ag/Order.ag" #-}+   {-# LINE 127 "src-ag/Order.ag" #-}    rule75 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 127 "./src-ag/Order.ag" #-}+                                    {-# LINE 127 "src-ag/Order.ag" #-}                                     semfuns   _lhsIoptions                                     {-# LINE 905 "dist/build/Order.hs"#-}    {-# INLINE rule76 #-}-   {-# LINE 128 "./src-ag/Order.ag" #-}+   {-# LINE 128 "src-ag/Order.ag" #-}    rule76 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 128 "./src-ag/Order.ag" #-}+                                    {-# LINE 128 "src-ag/Order.ag" #-}                                     rename    _lhsIoptions                                     {-# LINE 911 "dist/build/Order.hs"#-}    {-# INLINE rule77 #-}-   {-# LINE 129 "./src-ag/Order.ag" #-}+   {-# LINE 129 "src-ag/Order.ag" #-}    rule77 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 129 "./src-ag/Order.ag" #-}+                                    {-# LINE 129 "src-ag/Order.ag" #-}                                     newtypes  _lhsIoptions                                     {-# LINE 917 "dist/build/Order.hs"#-}    {-# INLINE rule78 #-}-   {-# LINE 130 "./src-ag/Order.ag" #-}+   {-# LINE 130 "src-ag/Order.ag" #-}    rule78 = \ ((_lhsIoptions) :: Options) ->-                                      {-# LINE 130 "./src-ag/Order.ag" #-}+                                      {-# LINE 130 "src-ag/Order.ag" #-}                                       visit   _lhsIoptions                                       {-# LINE 923 "dist/build/Order.hs"#-}    {-# INLINE rule79 #-}-   {-# LINE 131 "./src-ag/Order.ag" #-}+   {-# LINE 131 "src-ag/Order.ag" #-}    rule79 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 131 "./src-ag/Order.ag" #-}+                                    {-# LINE 131 "src-ag/Order.ag" #-}                                     unbox     _lhsIoptions                                     {-# LINE 929 "dist/build/Order.hs"#-}    {-# INLINE rule80 #-}-   {-# LINE 132 "./src-ag/Order.ag" #-}+   {-# LINE 132 "src-ag/Order.ag" #-}    rule80 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 132 "./src-ag/Order.ag" #-}+                                    {-# LINE 132 "src-ag/Order.ag" #-}                                     cases     _lhsIoptions                                     {-# LINE 935 "dist/build/Order.hs"#-}    {-# INLINE rule81 #-}-   {-# LINE 133 "./src-ag/Order.ag" #-}+   {-# LINE 133 "src-ag/Order.ag" #-}    rule81 = \ ((_lhsIoptions) :: Options) ->-                                    {-# LINE 133 "./src-ag/Order.ag" #-}+                                    {-# LINE 133 "src-ag/Order.ag" #-}                                     prefix    _lhsIoptions                                     {-# LINE 941 "dist/build/Order.hs"#-}    {-# INLINE rule82 #-}-   {-# LINE 262 "./src-ag/Order.ag" #-}+   {-# LINE 262 "src-ag/Order.ag" #-}    rule82 = \  (_ :: ()) ->-                               {-# LINE 262 "./src-ag/Order.ag" #-}+                               {-# LINE 262 "src-ag/Order.ag" #-}                                0                                {-# LINE 947 "dist/build/Order.hs"#-}    {-# INLINE rule83 #-}-   {-# LINE 288 "./src-ag/Order.ag" #-}+   {-# LINE 288 "src-ag/Order.ag" #-}    rule83 = \ manualAttrOrderMap_ ->-                                 {-# LINE 288 "./src-ag/Order.ag" #-}+                                 {-# LINE 288 "src-ag/Order.ag" #-}                                  manualAttrOrderMap_                                  {-# LINE 953 "dist/build/Order.hs"#-}    {-# INLINE rule84 #-}-   {-# LINE 417 "./src-ag/Order.ag" #-}+   {-# LINE 417 "src-ag/Order.ag" #-}    rule84 = \ aroundsMap_ ->-                                 {-# LINE 417 "./src-ag/Order.ag" #-}+                                 {-# LINE 417 "src-ag/Order.ag" #-}                                  aroundsMap_                                  {-# LINE 959 "dist/build/Order.hs"#-}    {-# INLINE rule85 #-}-   {-# LINE 508 "./src-ag/Order.ag" #-}+   {-# LINE 508 "src-ag/Order.ag" #-}    rule85 = \  (_ :: ()) ->-                             {-# LINE 508 "./src-ag/Order.ag" #-}+                             {-# LINE 508 "src-ag/Order.ag" #-}                              0                              {-# LINE 965 "dist/build/Order.hs"#-}    {-# INLINE rule86 #-}-   {-# LINE 546 "./src-ag/Order.ag" #-}+   {-# LINE 546 "src-ag/Order.ag" #-}    rule86 = \ ((_nontsIrules) :: Seq (Vertex,CRule)) ((_nontsIvcount) :: Int) ->-                              {-# LINE 546 "./src-ag/Order.ag" #-}+                              {-# LINE 546 "src-ag/Order.ag" #-}                               Array.array (0,_nontsIvcount-1) (toList _nontsIrules)                               {-# LINE 971 "dist/build/Order.hs"#-}    {-# INLINE rule87 #-}-   {-# LINE 547 "./src-ag/Order.ag" #-}+   {-# LINE 547 "src-ag/Order.ag" #-}    rule87 = \ ((_nontsIacount) :: Int) ((_nontsIntattrs) :: Seq (Vertex,NTAttr)) ->-                              {-# LINE 547 "./src-ag/Order.ag" #-}+                              {-# LINE 547 "src-ag/Order.ag" #-}                               Array.array (0,_nontsIacount-1) (toList _nontsIntattrs)                               {-# LINE 977 "dist/build/Order.hs"#-}    {-# INLINE rule88 #-}-   {-# LINE 548 "./src-ag/Order.ag" #-}+   {-# LINE 548 "src-ag/Order.ag" #-}    rule88 = \ ((_nontsIntattrs) :: Seq (Vertex,NTAttr)) ->-                               {-# LINE 548 "./src-ag/Order.ag" #-}+                               {-# LINE 548 "src-ag/Order.ag" #-}                                Map.fromList (map swap (toList _nontsIntattrs))                                {-# LINE 983 "dist/build/Order.hs"#-}    {-# INLINE rule89 #-}-   {-# LINE 549 "./src-ag/Order.ag" #-}+   {-# LINE 549 "src-ag/Order.ag" #-}    rule89 = \ _attrVertex ((_nontsIrules) :: Seq (Vertex,CRule)) ->-                              {-# LINE 549 "./src-ag/Order.ag" #-}+                              {-# LINE 549 "src-ag/Order.ag" #-}                               [ (s, maybe (-1) (\v -> findWithErr1 "Grammar.tdpToTds" v _attrVertex) (ntattr cr))                               | (s,cr) <- toList _nontsIrules]                               {-# LINE 990 "dist/build/Order.hs"#-}    {-# INLINE rule90 #-}-   {-# LINE 551 "./src-ag/Order.ag" #-}+   {-# LINE 551 "src-ag/Order.ag" #-}    rule90 = \ _tdpToTds ->-                               {-# LINE 551 "./src-ag/Order.ag" #-}+                               {-# LINE 551 "src-ag/Order.ag" #-}                                let  eq (_,v) (_,v') = v == v'                                     conv ((s,v):svs)  | v == -1 = Nothing                                                       | otherwise = Just (v,s:map fst svs)                                in mapMaybe conv (eqClasses eq _tdpToTds)                                {-# LINE 999 "dist/build/Order.hs"#-}    {-# INLINE rule91 #-}-   {-# LINE 555 "./src-ag/Order.ag" #-}+   {-# LINE 555 "src-ag/Order.ag" #-}    rule91 = \ ((_nontsIadditionalDep) :: Seq Edge) ((_nontsIdirectDep) :: Seq Edge) ->-                              {-# LINE 555 "./src-ag/Order.ag" #-}+                              {-# LINE 555 "src-ag/Order.ag" #-}                               toList (_nontsIdirectDep Seq.>< _nontsIadditionalDep)                               {-# LINE 1005 "dist/build/Order.hs"#-}    {-# INLINE rule92 #-}-   {-# LINE 556 "./src-ag/Order.ag" #-}+   {-# LINE 556 "src-ag/Order.ag" #-}    rule92 = \ ((_nontsIinstDep) :: Seq Edge) ->-                              {-# LINE 556 "./src-ag/Order.ag" #-}+                              {-# LINE 556 "src-ag/Order.ag" #-}                               toList _nontsIinstDep                               {-# LINE 1011 "dist/build/Order.hs"#-}    {-# INLINE rule93 #-}-   {-# LINE 557 "./src-ag/Order.ag" #-}+   {-# LINE 557 "src-ag/Order.ag" #-}    rule93 = \ ((_nontsIaroundDep) :: Seq Edge) ->-                              {-# LINE 557 "./src-ag/Order.ag" #-}+                              {-# LINE 557 "src-ag/Order.ag" #-}                               toList _nontsIaroundDep                               {-# LINE 1017 "dist/build/Order.hs"#-}    {-# INLINE rule94 #-}-   {-# LINE 558 "./src-ag/Order.ag" #-}+   {-# LINE 558 "src-ag/Order.ag" #-}    rule94 = \ ((_nontsImergeDep) :: Seq Edge) ->-                              {-# LINE 558 "./src-ag/Order.ag" #-}+                              {-# LINE 558 "src-ag/Order.ag" #-}                               toList _nontsImergeDep                               {-# LINE 1023 "dist/build/Order.hs"#-}    {-# INLINE rule95 #-}-   {-# LINE 559 "./src-ag/Order.ag" #-}+   {-# LINE 559 "src-ag/Order.ag" #-}    rule95 = \ _attrTable ((_nontsIacount) :: Int) ((_nontsIaranges) :: Seq (Int,Int,Int)) ((_nontsInonts) :: [(NontermIdent,[ConstructorIdent])]) ((_nontsIvcount) :: Int) _ruleTable _tdpToTds _tdsToTdp wrappers_ ->-                              {-# LINE 559 "./src-ag/Order.ag" #-}+                              {-# LINE 559 "src-ag/Order.ag" #-}                               let def [] = -1                                   def (v:vs) = v                                in Info { tdsToTdp   = Array.array (0,_nontsIacount-1) _tdsToTdp@@ -1036,9 +1036,9 @@                                        }                               {-# LINE 1038 "dist/build/Order.hs"#-}    {-# INLINE rule96 #-}-   {-# LINE 571 "./src-ag/Order.ag" #-}+   {-# LINE 571 "src-ag/Order.ag" #-}    rule96 = \ _aroundDep _attrTable _directDep _info _instDep ((_lhsIoptions) :: Options) _mergeDep _ruleTable ->-                                {-# LINE 571 "./src-ag/Order.ag" #-}+                                {-# LINE 571 "src-ag/Order.ag" #-}                                 case computeSequential _info _directDep (_instDep ++ _aroundDep ++ _mergeDep    ) of                                              CycleFree    cim cvm   -> ( cim                                                                        , cvm@@ -1062,34 +1062,34 @@                                                                        )                                 {-# LINE 1064 "dist/build/Order.hs"#-}    {-# INLINE rule97 #-}-   {-# LINE 592 "./src-ag/Order.ag" #-}+   {-# LINE 592 "src-ag/Order.ag" #-}    rule97 = \ _cyclesErrors ((_lhsIoptions) :: Options) ((_nontsIerrors) :: Seq Error) ->-                           {-# LINE 592 "./src-ag/Order.ag" #-}+                           {-# LINE 592 "src-ag/Order.ag" #-}                            (if withCycle _lhsIoptions then Seq.fromList _cyclesErrors else Seq.empty)                             Seq.>< _nontsIerrors                            {-# LINE 1071 "dist/build/Order.hs"#-}    {-# INLINE rule98 #-}-   {-# LINE 624 "./src-ag/Order.ag" #-}+   {-# LINE 624 "src-ag/Order.ag" #-}    rule98 = \ _aroundMap _mergeMap ((_nontsIcNonterminals) :: CNonterminals) _o_dovisit contextMap_ derivings_ paramMap_ pragmas_ quantMap_ typeSyns_ wrappers_ ->-                             {-# LINE 624 "./src-ag/Order.ag" #-}+                             {-# LINE 624 "src-ag/Order.ag" #-}                              CGrammar typeSyns_ derivings_ wrappers_ _nontsIcNonterminals pragmas_ paramMap_ contextMap_ quantMap_ _aroundMap     _mergeMap     _o_dovisit                              {-# LINE 1077 "dist/build/Order.hs"#-}    {-# INLINE rule99 #-}-   {-# LINE 637 "./src-ag/Order.ag" #-}+   {-# LINE 637 "src-ag/Order.ag" #-}    rule99 = \ aroundsMap_ ->-                               {-# LINE 637 "./src-ag/Order.ag" #-}+                               {-# LINE 637 "src-ag/Order.ag" #-}                                Map.map (Map.map Map.keysSet) aroundsMap_                                {-# LINE 1083 "dist/build/Order.hs"#-}    {-# INLINE rule100 #-}-   {-# LINE 638 "./src-ag/Order.ag" #-}+   {-# LINE 638 "src-ag/Order.ag" #-}    rule100 = \ mergeMap_ ->-                               {-# LINE 638 "./src-ag/Order.ag" #-}+                               {-# LINE 638 "src-ag/Order.ag" #-}                                Map.map (Map.map (Map.map (\(nt,srcs,_) -> (nt,srcs)))) mergeMap_                                {-# LINE 1089 "dist/build/Order.hs"#-}    {-# INLINE rule101 #-}-   {-# LINE 655 "./src-ag/Order.ag" #-}+   {-# LINE 655 "src-ag/Order.ag" #-}    rule101 = \ ((_nontsInonts) :: [(NontermIdent,[ConstructorIdent])]) ->-                             {-# LINE 655 "./src-ag/Order.ag" #-}+                             {-# LINE 655 "src-ag/Order.ag" #-}                              map fst (_nontsInonts)                              {-# LINE 1095 "dist/build/Order.hs"#-}    {-# INLINE rule102 #-}@@ -1123,8 +1123,8 @@ wrap_Nonterminal (T_Nonterminal act) (Inh_Nonterminal _lhsIacount _lhsIallnts _lhsIaroundMap _lhsIcInterfaceMap _lhsIcVisitsMap _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsynMap _lhsIvcount) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminal_vIn13 _lhsIacount _lhsIallnts _lhsIaroundMap _lhsIcInterfaceMap _lhsIcVisitsMap _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsynMap _lhsIvcount-        (T_Nonterminal_vOut13 _lhsOacount _lhsOadditionalDep _lhsOaranges _lhsOaroundDep _lhsOcNonterminal _lhsOdirectDep _lhsOerrors _lhsOinhMap' _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOnonts _lhsOntattrs _lhsOrules _lhsOsynMap' _lhsOvcount) <- return (inv_Nonterminal_s14 sem arg)+        let arg13 = T_Nonterminal_vIn13 _lhsIacount _lhsIallnts _lhsIaroundMap _lhsIcInterfaceMap _lhsIcVisitsMap _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsynMap _lhsIvcount+        (T_Nonterminal_vOut13 _lhsOacount _lhsOadditionalDep _lhsOaranges _lhsOaroundDep _lhsOcNonterminal _lhsOdirectDep _lhsOerrors _lhsOinhMap' _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOnonts _lhsOntattrs _lhsOrules _lhsOsynMap' _lhsOvcount) <- return (inv_Nonterminal_s14 sem arg13)         return (Syn_Nonterminal _lhsOacount _lhsOadditionalDep _lhsOaranges _lhsOaroundDep _lhsOcNonterminal _lhsOdirectDep _lhsOerrors _lhsOinhMap' _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOnonts _lhsOntattrs _lhsOrules _lhsOsynMap' _lhsOvcount)    ) @@ -1217,93 +1217,93 @@          in __result_ )      in C_Nonterminal_s14 v13    {-# INLINE rule109 #-}-   {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 7 "src-ag/DistChildAttr.ag" #-}    rule109 = \ inh_ nt_ ->-                                 {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 7 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ inh_                                  {-# LINE 1225 "dist/build/Order.hs"#-}    {-# INLINE rule110 #-}-   {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 8 "src-ag/DistChildAttr.ag" #-}    rule110 = \ nt_ syn_ ->-                                 {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 8 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ syn_                                  {-# LINE 1231 "dist/build/Order.hs"#-}    {-# INLINE rule111 #-}-   {-# LINE 97 "./src-ag/Order.ag" #-}+   {-# LINE 97 "src-ag/Order.ag" #-}    rule111 = \ nt_ ->-                               {-# LINE 97 "./src-ag/Order.ag" #-}+                               {-# LINE 97 "src-ag/Order.ag" #-}                                nt_                                {-# LINE 1237 "dist/build/Order.hs"#-}    {-# INLINE rule112 #-}-   {-# LINE 100 "./src-ag/Order.ag" #-}+   {-# LINE 100 "src-ag/Order.ag" #-}    rule112 = \ inh_ ->-                               {-# LINE 100 "./src-ag/Order.ag" #-}+                               {-# LINE 100 "src-ag/Order.ag" #-}                                inh_                                {-# LINE 1243 "dist/build/Order.hs"#-}    {-# INLINE rule113 #-}-   {-# LINE 101 "./src-ag/Order.ag" #-}+   {-# LINE 101 "src-ag/Order.ag" #-}    rule113 = \ syn_ ->-                               {-# LINE 101 "./src-ag/Order.ag" #-}+                               {-# LINE 101 "src-ag/Order.ag" #-}                                syn_                                {-# LINE 1249 "dist/build/Order.hs"#-}    {-# INLINE rule114 #-}-   {-# LINE 360 "./src-ag/Order.ag" #-}+   {-# LINE 360 "src-ag/Order.ag" #-}    rule114 = \ ((_lhsImergeMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier])))) nt_ ->-                                                {-# LINE 360 "./src-ag/Order.ag" #-}+                                                {-# LINE 360 "src-ag/Order.ag" #-}                                                 Map.findWithDefault Map.empty nt_ _lhsImergeMap                                                 {-# LINE 1255 "dist/build/Order.hs"#-}    {-# INLINE rule115 #-}-   {-# LINE 413 "./src-ag/Order.ag" #-}+   {-# LINE 413 "src-ag/Order.ag" #-}    rule115 = \ ((_lhsIaroundMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) nt_ ->-                                                 {-# LINE 413 "./src-ag/Order.ag" #-}+                                                 {-# LINE 413 "src-ag/Order.ag" #-}                                                  Map.findWithDefault Map.empty nt_ _lhsIaroundMap                                                  {-# LINE 1261 "dist/build/Order.hs"#-}    {-# INLINE rule116 #-}-   {-# LINE 511 "./src-ag/Order.ag" #-}+   {-# LINE 511 "src-ag/Order.ag" #-}    rule116 = \ inh_ nt_ syn_ ->-                                 {-# LINE 511 "./src-ag/Order.ag" #-}+                                 {-# LINE 511 "src-ag/Order.ag" #-}                                  [ NTAInh nt_ inh tp | (inh,tp) <- Map.assocs inh_ ]                                  ++ [NTASyn nt_ syn tp | (syn,tp) <- Map.assocs syn_ ]                                  {-# LINE 1268 "dist/build/Order.hs"#-}    {-# INLINE rule117 #-}-   {-# LINE 513 "./src-ag/Order.ag" #-}+   {-# LINE 513 "src-ag/Order.ag" #-}    rule117 = \ ((_lhsIacount) :: Int) _ntattrs ->-                                {-# LINE 513 "./src-ag/Order.ag" #-}+                                {-# LINE 513 "src-ag/Order.ag" #-}                                 Seq.fromList (zip [_lhsIacount ..] _ntattrs)                                 {-# LINE 1274 "dist/build/Order.hs"#-}    {-# INLINE rule118 #-}-   {-# LINE 514 "./src-ag/Order.ag" #-}+   {-# LINE 514 "src-ag/Order.ag" #-}    rule118 = \ ((_lhsIacount) :: Int) inh_ syn_ ->-                                {-# LINE 514 "./src-ag/Order.ag" #-}+                                {-# LINE 514 "src-ag/Order.ag" #-}                                 _lhsIacount + Map.size inh_ + Map.size syn_                                 {-# LINE 1280 "dist/build/Order.hs"#-}    {-# INLINE rule119 #-}-   {-# LINE 515 "./src-ag/Order.ag" #-}+   {-# LINE 515 "src-ag/Order.ag" #-}    rule119 = \ ((_lhsIacount) :: Int) inh_ syn_ ->-                                 {-# LINE 515 "./src-ag/Order.ag" #-}+                                 {-# LINE 515 "src-ag/Order.ag" #-}                                  Seq.singleton                                   (_lhsIacount                                   ,_lhsIacount + Map.size inh_                                   ,_lhsIacount + Map.size syn_ + Map.size inh_ - 1)                                  {-# LINE 1289 "dist/build/Order.hs"#-}    {-# INLINE rule120 #-}-   {-# LINE 524 "./src-ag/Order.ag" #-}+   {-# LINE 524 "src-ag/Order.ag" #-}    rule120 = \ ((_prodsIcons) :: [ConstructorIdent]) nt_ ->-                                {-# LINE 524 "./src-ag/Order.ag" #-}+                                {-# LINE 524 "src-ag/Order.ag" #-}                                 [(nt_,_prodsIcons)]                                 {-# LINE 1295 "dist/build/Order.hs"#-}    {-# INLINE rule121 #-}-   {-# LINE 601 "./src-ag/Order.ag" #-}+   {-# LINE 601 "src-ag/Order.ag" #-}    rule121 = \ ((_lhsIcInterfaceMap) :: CInterfaceMap) ((_lhsIo_dovisit) :: Bool) inh_ nt_ syn_ ->-                                 {-# LINE 601 "./src-ag/Order.ag" #-}+                                 {-# LINE 601 "src-ag/Order.ag" #-}                                  if  _lhsIo_dovisit                                         then findWithErr1 "Nonterminal.cInter" nt_ _lhsIcInterfaceMap                                         else CInterface [CSegment inh_ syn_]                                  {-# LINE 1303 "dist/build/Order.hs"#-}    {-# INLINE rule122 #-}-   {-# LINE 629 "./src-ag/Order.ag" #-}+   {-# LINE 629 "src-ag/Order.ag" #-}    rule122 = \ _cInter ((_prodsIcProductions) :: CProductions) inh_ nt_ params_ syn_ ->-                                       {-# LINE 629 "./src-ag/Order.ag" #-}+                                       {-# LINE 629 "src-ag/Order.ag" #-}                                        CNonterminal nt_ params_ inh_ syn_ _prodsIcProductions _cInter                                        {-# LINE 1309 "dist/build/Order.hs"#-}    {-# INLINE rule123 #-}@@ -1403,8 +1403,8 @@ wrap_Nonterminals (T_Nonterminals act) (Inh_Nonterminals _lhsIacount _lhsIallnts _lhsIaroundMap _lhsIcInterfaceMap _lhsIcVisitsMap _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsynMap _lhsIvcount) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminals_vIn16 _lhsIacount _lhsIallnts _lhsIaroundMap _lhsIcInterfaceMap _lhsIcVisitsMap _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsynMap _lhsIvcount-        (T_Nonterminals_vOut16 _lhsOacount _lhsOadditionalDep _lhsOaranges _lhsOaroundDep _lhsOcNonterminals _lhsOdirectDep _lhsOerrors _lhsOinhMap' _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOnonts _lhsOntattrs _lhsOrules _lhsOsynMap' _lhsOvcount) <- return (inv_Nonterminals_s17 sem arg)+        let arg16 = T_Nonterminals_vIn16 _lhsIacount _lhsIallnts _lhsIaroundMap _lhsIcInterfaceMap _lhsIcVisitsMap _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsynMap _lhsIvcount+        (T_Nonterminals_vOut16 _lhsOacount _lhsOadditionalDep _lhsOaranges _lhsOaroundDep _lhsOcNonterminals _lhsOdirectDep _lhsOerrors _lhsOinhMap' _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOnonts _lhsOntattrs _lhsOrules _lhsOsynMap' _lhsOvcount) <- return (inv_Nonterminals_s17 sem arg16)         return (Syn_Nonterminals _lhsOacount _lhsOadditionalDep _lhsOaranges _lhsOaroundDep _lhsOcNonterminals _lhsOdirectDep _lhsOerrors _lhsOinhMap' _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOnonts _lhsOntattrs _lhsOrules _lhsOsynMap' _lhsOvcount)    ) @@ -1517,9 +1517,9 @@          in __result_ )      in C_Nonterminals_s17 v16    {-# INLINE rule152 #-}-   {-# LINE 626 "./src-ag/Order.ag" #-}+   {-# LINE 626 "src-ag/Order.ag" #-}    rule152 = \ ((_hdIcNonterminal) :: CNonterminal) ((_tlIcNonterminals) :: CNonterminals) ->-                                 {-# LINE 626 "./src-ag/Order.ag" #-}+                                 {-# LINE 626 "src-ag/Order.ag" #-}                                  _hdIcNonterminal : _tlIcNonterminals                                  {-# LINE 1525 "dist/build/Order.hs"#-}    {-# INLINE rule153 #-}@@ -1747,9 +1747,9 @@          in __result_ )      in C_Nonterminals_s17 v16    {-# INLINE rule213 #-}-   {-# LINE 627 "./src-ag/Order.ag" #-}+   {-# LINE 627 "src-ag/Order.ag" #-}    rule213 = \  (_ :: ()) ->-                                 {-# LINE 627 "./src-ag/Order.ag" #-}+                                 {-# LINE 627 "src-ag/Order.ag" #-}                                  []                                  {-# LINE 1755 "dist/build/Order.hs"#-}    {-# INLINE rule214 #-}@@ -1810,8 +1810,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn19 _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn-        (T_Pattern_vOut19 _lhsOcopy _lhsOerrors _lhsOgathAltAttrs _lhsOinstVars _lhsOlocVars _lhsOpatternAttrs) <- return (inv_Pattern_s20 sem arg)+        let arg19 = T_Pattern_vIn19 _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn+        (T_Pattern_vOut19 _lhsOcopy _lhsOerrors _lhsOgathAltAttrs _lhsOinstVars _lhsOlocVars _lhsOpatternAttrs) <- return (inv_Pattern_s20 sem arg19)         return (Syn_Pattern _lhsOcopy _lhsOerrors _lhsOgathAltAttrs _lhsOinstVars _lhsOlocVars _lhsOpatternAttrs)    ) @@ -2007,29 +2007,29 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule256 #-}-   {-# LINE 187 "./src-ag/Order.ag" #-}+   {-# LINE 187 "src-ag/Order.ag" #-}    rule256 = \ attr_ field_ ->-                                {-# LINE 187 "./src-ag/Order.ag" #-}+                                {-# LINE 187 "src-ag/Order.ag" #-}                                 [AltAttr field_ attr_ (field_ == _LOC || field_ == _INST)]                                 {-# LINE 2015 "dist/build/Order.hs"#-}    {-# INLINE rule257 #-}-   {-# LINE 253 "./src-ag/Order.ag" #-}+   {-# LINE 253 "src-ag/Order.ag" #-}    rule257 = \ attr_ field_ ->-                                {-# LINE 253 "./src-ag/Order.ag" #-}+                                {-# LINE 253 "src-ag/Order.ag" #-}                                 [(field_,attr_,(field_ == _LOC || field_ == _INST))]                                 {-# LINE 2021 "dist/build/Order.hs"#-}    {-# INLINE rule258 #-}-   {-# LINE 685 "./src-ag/Order.ag" #-}+   {-# LINE 685 "src-ag/Order.ag" #-}    rule258 = \ attr_ field_ ->-                               {-# LINE 685 "./src-ag/Order.ag" #-}+                               {-# LINE 685 "src-ag/Order.ag" #-}                                if field_ == _LOC                                   then [attr_]                                   else []                                {-# LINE 2029 "dist/build/Order.hs"#-}    {-# INLINE rule259 #-}-   {-# LINE 688 "./src-ag/Order.ag" #-}+   {-# LINE 688 "src-ag/Order.ag" #-}    rule259 = \ attr_ field_ ->-                               {-# LINE 688 "./src-ag/Order.ag" #-}+                               {-# LINE 688 "src-ag/Order.ag" #-}                                if field_ == _INST                                   then [attr_]                                   else []@@ -2185,8 +2185,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn22 _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn-        (T_Patterns_vOut22 _lhsOcopy _lhsOerrors _lhsOgathAltAttrs _lhsOinstVars _lhsOlocVars _lhsOpatternAttrs) <- return (inv_Patterns_s23 sem arg)+        let arg22 = T_Patterns_vIn22 _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn+        (T_Patterns_vOut22 _lhsOcopy _lhsOerrors _lhsOgathAltAttrs _lhsOinstVars _lhsOlocVars _lhsOpatternAttrs) <- return (inv_Patterns_s23 sem arg22)         return (Syn_Patterns _lhsOcopy _lhsOerrors _lhsOgathAltAttrs _lhsOinstVars _lhsOlocVars _lhsOpatternAttrs)    ) @@ -2356,8 +2356,8 @@ wrap_Production (T_Production act) (Inh_Production _lhsIallnts _lhsIaroundMap _lhsIcVisitsMap _lhsIinh _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynMap _lhsIvcount) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Production_vIn25 _lhsIallnts _lhsIaroundMap _lhsIcVisitsMap _lhsIinh _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynMap _lhsIvcount-        (T_Production_vOut25 _lhsOadditionalDep _lhsOaroundDep _lhsOcProduction _lhsOcons _lhsOdirectDep _lhsOerrors _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOrules _lhsOvcount) <- return (inv_Production_s26 sem arg)+        let arg25 = T_Production_vIn25 _lhsIallnts _lhsIaroundMap _lhsIcVisitsMap _lhsIinh _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynMap _lhsIvcount+        (T_Production_vOut25 _lhsOadditionalDep _lhsOaroundDep _lhsOcProduction _lhsOcons _lhsOdirectDep _lhsOerrors _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOrules _lhsOvcount) <- return (inv_Production_s26 sem arg25)         return (Syn_Production _lhsOadditionalDep _lhsOaroundDep _lhsOcProduction _lhsOcons _lhsOdirectDep _lhsOerrors _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOrules _lhsOvcount)    ) @@ -2470,77 +2470,77 @@          in __result_ )      in C_Production_s26 v25    {-# INLINE rule315 #-}-   {-# LINE 93 "./src-ag/Order.ag" #-}+   {-# LINE 93 "src-ag/Order.ag" #-}    rule315 = \ con_ ->-                                  {-# LINE 93 "./src-ag/Order.ag" #-}+                                  {-# LINE 93 "src-ag/Order.ag" #-}                                   con_                                   {-# LINE 2478 "dist/build/Order.hs"#-}    {-# INLINE rule316 #-}-   {-# LINE 95 "./src-ag/Order.ag" #-}+   {-# LINE 95 "src-ag/Order.ag" #-}    rule316 = \ con_ ->-                               {-# LINE 95 "./src-ag/Order.ag" #-}+                               {-# LINE 95 "src-ag/Order.ag" #-}                                con_                                {-# LINE 2484 "dist/build/Order.hs"#-}    {-# INLINE rule317 #-}-   {-# LINE 175 "./src-ag/Order.ag" #-}+   {-# LINE 175 "src-ag/Order.ag" #-}    rule317 = \ ((_childrenIgathAltAttrs) :: [AltAttr]) ((_lhsIinh) :: Attributes) ((_rulesIgathAltAttrs) :: [AltAttr]) ->-                                       {-# LINE 175 "./src-ag/Order.ag" #-}+                                       {-# LINE 175 "src-ag/Order.ag" #-}                                        [ AltAttr _LHS inh True | inh <- Map.keys _lhsIinh ]                                         ++ _childrenIgathAltAttrs                                         ++ _rulesIgathAltAttrs                                        {-# LINE 2492 "dist/build/Order.hs"#-}    {-# INLINE rule318 #-}-   {-# LINE 191 "./src-ag/Order.ag" #-}+   {-# LINE 191 "src-ag/Order.ag" #-}    rule318 = \ _gathAltAttrs ((_lhsIvcount) :: Int) ->-                                 {-# LINE 191 "./src-ag/Order.ag" #-}+                                 {-# LINE 191 "src-ag/Order.ag" #-}                                  Map.fromList (zip _gathAltAttrs [_lhsIvcount..])                                  {-# LINE 2498 "dist/build/Order.hs"#-}    {-# INLINE rule319 #-}-   {-# LINE 204 "./src-ag/Order.ag" #-}+   {-# LINE 204 "src-ag/Order.ag" #-}    rule319 = \ ((_childrenInts) :: Seq (Identifier,NontermIdent)) ->-                                    {-# LINE 204 "./src-ag/Order.ag" #-}+                                    {-# LINE 204 "src-ag/Order.ag" #-}                                     Map.fromList (toList _childrenInts)                                     {-# LINE 2504 "dist/build/Order.hs"#-}    {-# INLINE rule320 #-}-   {-# LINE 205 "./src-ag/Order.ag" #-}+   {-# LINE 205 "src-ag/Order.ag" #-}    rule320 = \ ((_childrenIinhs) :: Seq (Identifier,Attributes)) ->-                                      {-# LINE 205 "./src-ag/Order.ag" #-}+                                      {-# LINE 205 "src-ag/Order.ag" #-}                                       Map.fromList (toList _childrenIinhs)                                       {-# LINE 2510 "dist/build/Order.hs"#-}    {-# INLINE rule321 #-}-   {-# LINE 211 "./src-ag/Order.ag" #-}+   {-# LINE 211 "src-ag/Order.ag" #-}    rule321 = \ ((_lhsIinh) :: Attributes) ((_lhsInt) :: Identifier) con_ ->-                                  {-# LINE 211 "./src-ag/Order.ag" #-}+                                  {-# LINE 211 "src-ag/Order.ag" #-}                                   [ cRuleLhsInh inh _lhsInt con_ tp | (inh,tp) <- Map.assocs _lhsIinh ]                                   {-# LINE 2516 "dist/build/Order.hs"#-}    {-# INLINE rule322 #-}-   {-# LINE 212 "./src-ag/Order.ag" #-}+   {-# LINE 212 "src-ag/Order.ag" #-}    rule322 = \ ((_childrenIgathRules) :: Seq CRule) _inhRules ((_rulesIgathRules) :: Seq CRule) ->-                                    {-# LINE 212 "./src-ag/Order.ag" #-}+                                    {-# LINE 212 "src-ag/Order.ag" #-}                                     _inhRules ++ toList (_childrenIgathRules Seq.>< _rulesIgathRules)                                     {-# LINE 2522 "dist/build/Order.hs"#-}    {-# INLINE rule323 #-}-   {-# LINE 264 "./src-ag/Order.ag" #-}+   {-# LINE 264 "src-ag/Order.ag" #-}    rule323 = \ _gathRules ((_lhsIvcount) :: Int) ->-                               {-# LINE 264 "./src-ag/Order.ag" #-}+                               {-# LINE 264 "src-ag/Order.ag" #-}                                Seq.fromList (zip [_lhsIvcount..] _gathRules)                                {-# LINE 2528 "dist/build/Order.hs"#-}    {-# INLINE rule324 #-}-   {-# LINE 265 "./src-ag/Order.ag" #-}+   {-# LINE 265 "src-ag/Order.ag" #-}    rule324 = \ _gathRules ((_lhsIvcount) :: Int) ->-                                 {-# LINE 265 "./src-ag/Order.ag" #-}+                                 {-# LINE 265 "src-ag/Order.ag" #-}                                  _lhsIvcount + length _gathRules                                  {-# LINE 2534 "dist/build/Order.hs"#-}    {-# INLINE rule325 #-}-   {-# LINE 293 "./src-ag/Order.ag" #-}+   {-# LINE 293 "src-ag/Order.ag" #-}    rule325 = \ ((_lhsImanualAttrDepMap) :: AttrOrderMap) ((_lhsInt) :: Identifier) con_ ->-            {-# LINE 293 "./src-ag/Order.ag" #-}+            {-# LINE 293 "src-ag/Order.ag" #-}             Set.toList $ Map.findWithDefault Set.empty con_ $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrDepMap             {-# LINE 2540 "dist/build/Order.hs"#-}    {-# INLINE rule326 #-}-   {-# LINE 296 "./src-ag/Order.ag" #-}+   {-# LINE 296 "src-ag/Order.ag" #-}    rule326 = \ _altAttrs _manualDeps ->-            {-# LINE 296 "./src-ag/Order.ag" #-}+            {-# LINE 296 "src-ag/Order.ag" #-}             Seq.fromList [ (vertex True occA, vertex False occB)                          | Dependency occA occB <- _manualDeps                          , let vertex inout (OccAttr child nm)@@ -2551,33 +2551,33 @@                          ]             {-# LINE 2553 "dist/build/Order.hs"#-}    {-# INLINE rule327 #-}-   {-# LINE 342 "./src-ag/Order.ag" #-}+   {-# LINE 342 "src-ag/Order.ag" #-}    rule327 = \ ((_childrenIcollectChildrenSyns) :: Map Identifier Attributes ) ->-                                         {-# LINE 342 "./src-ag/Order.ag" #-}+                                         {-# LINE 342 "src-ag/Order.ag" #-}                                          _childrenIcollectChildrenSyns                                          {-# LINE 2559 "dist/build/Order.hs"#-}    {-# INLINE rule328 #-}-   {-# LINE 343 "./src-ag/Order.ag" #-}+   {-# LINE 343 "src-ag/Order.ag" #-}    rule328 = \ ((_childrenIcollectChildrenInhs) :: Map Identifier Attributes ) ->-                                         {-# LINE 343 "./src-ag/Order.ag" #-}+                                         {-# LINE 343 "src-ag/Order.ag" #-}                                          _childrenIcollectChildrenInhs                                          {-# LINE 2565 "dist/build/Order.hs"#-}    {-# INLINE rule329 #-}-   {-# LINE 361 "./src-ag/Order.ag" #-}+   {-# LINE 361 "src-ag/Order.ag" #-}    rule329 = \ ((_lhsImergeMap) :: Map ConstructorIdent (Map Identifier (Identifier,[Identifier]))) con_ ->-                                                {-# LINE 361 "./src-ag/Order.ag" #-}+                                                {-# LINE 361 "src-ag/Order.ag" #-}                                                 Map.findWithDefault Map.empty con_ _lhsImergeMap                                                 {-# LINE 2571 "dist/build/Order.hs"#-}    {-# INLINE rule330 #-}-   {-# LINE 372 "./src-ag/Order.ag" #-}+   {-# LINE 372 "src-ag/Order.ag" #-}    rule330 = \ _mergeDep1 _mergeDep2 ->-                       {-# LINE 372 "./src-ag/Order.ag" #-}+                       {-# LINE 372 "src-ag/Order.ag" #-}                        _mergeDep1     Seq.>< _mergeDep2                        {-# LINE 2577 "dist/build/Order.hs"#-}    {-# INLINE rule331 #-}-   {-# LINE 374 "./src-ag/Order.ag" #-}+   {-# LINE 374 "src-ag/Order.ag" #-}    rule331 = \ _altAttrs ((_childrenIcollectChildrenSyns) :: Map Identifier Attributes ) _mergeMap ->-            {-# LINE 374 "./src-ag/Order.ag" #-}+            {-# LINE 374 "src-ag/Order.ag" #-}             Seq.fromList $                [ (childVert, synVert)                | childNm <- Map.keys _mergeMap@@ -2590,9 +2590,9 @@                ]             {-# LINE 2592 "dist/build/Order.hs"#-}    {-# INLINE rule332 #-}-   {-# LINE 385 "./src-ag/Order.ag" #-}+   {-# LINE 385 "src-ag/Order.ag" #-}    rule332 = \ _altAttrs ((_childrenIcollectChildrenSyns) :: Map Identifier Attributes ) _mergeMap ->-            {-# LINE 385 "./src-ag/Order.ag" #-}+            {-# LINE 385 "src-ag/Order.ag" #-}             Seq.fromList $                [ (mergedVert, sourceVert)                | (childNm, (_,cs)) <- Map.assocs _mergeMap@@ -2605,15 +2605,15 @@                ]             {-# LINE 2607 "dist/build/Order.hs"#-}    {-# INLINE rule333 #-}-   {-# LINE 414 "./src-ag/Order.ag" #-}+   {-# LINE 414 "src-ag/Order.ag" #-}    rule333 = \ ((_lhsIaroundMap) :: Map ConstructorIdent (Map Identifier [Expression])) con_ ->-                                                 {-# LINE 414 "./src-ag/Order.ag" #-}+                                                 {-# LINE 414 "src-ag/Order.ag" #-}                                                  Map.findWithDefault Map.empty con_ _lhsIaroundMap                                                  {-# LINE 2613 "dist/build/Order.hs"#-}    {-# INLINE rule334 #-}-   {-# LINE 422 "./src-ag/Order.ag" #-}+   {-# LINE 422 "src-ag/Order.ag" #-}    rule334 = \ _altAttrs _aroundMap ((_childrenIcollectChildrenSyns) :: Map Identifier Attributes ) ->-           {-# LINE 422 "./src-ag/Order.ag" #-}+           {-# LINE 422 "src-ag/Order.ag" #-}            Seq.fromList $              [ (childVert, synVert)              | childNm <- Map.keys _aroundMap@@ -2626,9 +2626,9 @@              ]            {-# LINE 2628 "dist/build/Order.hs"#-}    {-# INLINE rule335 #-}-   {-# LINE 433 "./src-ag/Order.ag" #-}+   {-# LINE 433 "src-ag/Order.ag" #-}    rule335 = \ _altAttrs _aroundMap ((_childrenIcollectChildrenInhs) :: Map Identifier Attributes ) ->-            {-# LINE 433 "./src-ag/Order.ag" #-}+            {-# LINE 433 "src-ag/Order.ag" #-}             Seq.fromList $               [ (childVert, inhVert)               | childNm <- Map.keys _aroundMap@@ -2641,33 +2641,33 @@               ]             {-# LINE 2643 "dist/build/Order.hs"#-}    {-# INLINE rule336 #-}-   {-# LINE 443 "./src-ag/Order.ag" #-}+   {-# LINE 443 "src-ag/Order.ag" #-}    rule336 = \ _aroundDep1 _aroundDep2 ->-                       {-# LINE 443 "./src-ag/Order.ag" #-}+                       {-# LINE 443 "src-ag/Order.ag" #-}                        _aroundDep1     Seq.>< _aroundDep2                        {-# LINE 2649 "dist/build/Order.hs"#-}    {-# INLINE rule337 #-}-   {-# LINE 527 "./src-ag/Order.ag" #-}+   {-# LINE 527 "src-ag/Order.ag" #-}    rule337 = \ con_ ->-                              {-# LINE 527 "./src-ag/Order.ag" #-}+                              {-# LINE 527 "src-ag/Order.ag" #-}                               [con_]                               {-# LINE 2655 "dist/build/Order.hs"#-}    {-# INLINE rule338 #-}-   {-# LINE 534 "./src-ag/Order.ag" #-}+   {-# LINE 534 "src-ag/Order.ag" #-}    rule338 = \  (_ :: ()) ->-                                     {-# LINE 534 "./src-ag/Order.ag" #-}+                                     {-# LINE 534 "src-ag/Order.ag" #-}                                      Map.empty                                      {-# LINE 2661 "dist/build/Order.hs"#-}    {-# INLINE rule339 #-}-   {-# LINE 540 "./src-ag/Order.ag" #-}+   {-# LINE 540 "src-ag/Order.ag" #-}    rule339 = \ ((_typeSigsItypeSigs) :: Map Identifier Type) ->-                                      {-# LINE 540 "./src-ag/Order.ag" #-}+                                      {-# LINE 540 "src-ag/Order.ag" #-}                                       _typeSigsItypeSigs                                       {-# LINE 2667 "dist/build/Order.hs"#-}    {-# INLINE rule340 #-}-   {-# LINE 608 "./src-ag/Order.ag" #-}+   {-# LINE 608 "src-ag/Order.ag" #-}    rule340 = \ ((_childrenIsinglevisits) :: [CRule]) _gathRules ((_lhsIcVisitsMap) :: CVisitsMap) ((_lhsIinh) :: Attributes) ((_lhsInt) :: Identifier) ((_lhsIo_dovisit) :: Bool) ((_lhsIsyn) :: Attributes) con_ ->-                                {-# LINE 608 "./src-ag/Order.ag" #-}+                                {-# LINE 608 "src-ag/Order.ag" #-}                                 if  _lhsIo_dovisit                                      then let prodsVisitsMap = findWithErr1 "Production.cVisits.nt" _lhsInt _lhsIcVisitsMap                                               visits = findWithErr1 "Production.cVisits.con" con_ prodsVisitsMap@@ -2676,36 +2676,36 @@                                            in  [CVisit _lhsIinh _lhsIsyn vss [] False]                                 {-# LINE 2678 "dist/build/Order.hs"#-}    {-# INLINE rule341 #-}-   {-# LINE 634 "./src-ag/Order.ag" #-}+   {-# LINE 634 "src-ag/Order.ag" #-}    rule341 = \ _cVisits ((_childrenIfields) :: [(Identifier,Type,ChildKind)]) ((_childrenIterminals) :: [Identifier]) con_ ->-                                     {-# LINE 634 "./src-ag/Order.ag" #-}+                                     {-# LINE 634 "src-ag/Order.ag" #-}                                      CProduction con_ _cVisits _childrenIfields _childrenIterminals                                      {-# LINE 2684 "dist/build/Order.hs"#-}    {-# INLINE rule342 #-}-   {-# LINE 662 "./src-ag/Order.ag" #-}+   {-# LINE 662 "src-ag/Order.ag" #-}    rule342 = \ ((_childrenIfields) :: [(Identifier,Type,ChildKind)]) ->-                                  {-# LINE 662 "./src-ag/Order.ag" #-}+                                  {-# LINE 662 "src-ag/Order.ag" #-}                                   _childrenIfields                                   {-# LINE 2690 "dist/build/Order.hs"#-}    {-# INLINE rule343 #-}-   {-# LINE 663 "./src-ag/Order.ag" #-}+   {-# LINE 663 "src-ag/Order.ag" #-}    rule343 = \ ((_childrenIattributes) :: [(Identifier,Attributes,Attributes)]) _inhnames ((_rulesIinstVars) :: [Identifier]) ((_rulesIlocVars) :: [Identifier]) ->-                                   {-# LINE 663 "./src-ag/Order.ag" #-}+                                   {-# LINE 663 "src-ag/Order.ag" #-}                                    map ((,) _LOC)  _rulesIlocVars ++                                    map ((,) _INST) _rulesIinstVars ++                                    map ((,) _LHS)  _inhnames ++                                    concat [map ((,) nm) (Map.keys as) | (nm,_,as) <- _childrenIattributes]                                    {-# LINE 2699 "dist/build/Order.hs"#-}    {-# INLINE rule344 #-}-   {-# LINE 667 "./src-ag/Order.ag" #-}+   {-# LINE 667 "src-ag/Order.ag" #-}    rule344 = \ ((_lhsIinh) :: Attributes) ->-                                   {-# LINE 667 "./src-ag/Order.ag" #-}+                                   {-# LINE 667 "src-ag/Order.ag" #-}                                    Map.keys _lhsIinh                                    {-# LINE 2705 "dist/build/Order.hs"#-}    {-# INLINE rule345 #-}-   {-# LINE 668 "./src-ag/Order.ag" #-}+   {-# LINE 668 "src-ag/Order.ag" #-}    rule345 = \ ((_lhsIsyn) :: Attributes) ->-                                   {-# LINE 668 "./src-ag/Order.ag" #-}+                                   {-# LINE 668 "src-ag/Order.ag" #-}                                    Map.keys _lhsIsyn                                    {-# LINE 2711 "dist/build/Order.hs"#-}    {-# INLINE rule346 #-}@@ -2817,8 +2817,8 @@ wrap_Productions (T_Productions act) (Inh_Productions _lhsIallnts _lhsIaroundMap _lhsIcVisitsMap _lhsIinh _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynMap _lhsIvcount) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Productions_vIn28 _lhsIallnts _lhsIaroundMap _lhsIcVisitsMap _lhsIinh _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynMap _lhsIvcount-        (T_Productions_vOut28 _lhsOadditionalDep _lhsOaroundDep _lhsOcProductions _lhsOcons _lhsOdirectDep _lhsOerrors _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOrules _lhsOvcount) <- return (inv_Productions_s29 sem arg)+        let arg28 = T_Productions_vIn28 _lhsIallnts _lhsIaroundMap _lhsIcVisitsMap _lhsIinh _lhsIinhMap _lhsImanualAttrDepMap _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynMap _lhsIvcount+        (T_Productions_vOut28 _lhsOadditionalDep _lhsOaroundDep _lhsOcProductions _lhsOcons _lhsOdirectDep _lhsOerrors _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOrules _lhsOvcount) <- return (inv_Productions_s29 sem arg28)         return (Syn_Productions _lhsOadditionalDep _lhsOaroundDep _lhsOcProductions _lhsOcons _lhsOdirectDep _lhsOerrors _lhsOinstDep _lhsOmergeDep _lhsOnAutoRules _lhsOnExplicitRules _lhsOrules _lhsOvcount)    ) @@ -2921,9 +2921,9 @@          in __result_ )      in C_Productions_s29 v28    {-# INLINE rule379 #-}-   {-# LINE 631 "./src-ag/Order.ag" #-}+   {-# LINE 631 "src-ag/Order.ag" #-}    rule379 = \ ((_hdIcProduction) :: CProduction) ((_tlIcProductions) :: CProductions) ->-                                {-# LINE 631 "./src-ag/Order.ag" #-}+                                {-# LINE 631 "src-ag/Order.ag" #-}                                 _hdIcProduction : _tlIcProductions                                 {-# LINE 2929 "dist/build/Order.hs"#-}    {-# INLINE rule380 #-}@@ -3126,9 +3126,9 @@          in __result_ )      in C_Productions_s29 v28    {-# INLINE rule435 #-}-   {-# LINE 632 "./src-ag/Order.ag" #-}+   {-# LINE 632 "src-ag/Order.ag" #-}    rule435 = \  (_ :: ()) ->-                                {-# LINE 632 "./src-ag/Order.ag" #-}+                                {-# LINE 632 "src-ag/Order.ag" #-}                                 []                                 {-# LINE 3134 "dist/build/Order.hs"#-}    {-# INLINE rule436 #-}@@ -3174,8 +3174,8 @@ wrap_Rule (T_Rule act) (Inh_Rule _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsIinhsOfChildren _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynsOfChildren) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rule_vIn31 _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsIinhsOfChildren _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynsOfChildren-        (T_Rule_vOut31 _lhsOdirectDep _lhsOerrors _lhsOgathAltAttrs _lhsOgathRules _lhsOinstDep _lhsOinstVars _lhsOlocVars _lhsOnAutoRules _lhsOnExplicitRules) <- return (inv_Rule_s32 sem arg)+        let arg31 = T_Rule_vIn31 _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsIinhsOfChildren _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynsOfChildren+        (T_Rule_vOut31 _lhsOdirectDep _lhsOerrors _lhsOgathAltAttrs _lhsOgathRules _lhsOinstDep _lhsOinstVars _lhsOlocVars _lhsOnAutoRules _lhsOnExplicitRules) <- return (inv_Rule_s32 sem arg31)         return (Syn_Rule _lhsOdirectDep _lhsOerrors _lhsOgathAltAttrs _lhsOgathRules _lhsOinstDep _lhsOinstVars _lhsOlocVars _lhsOnAutoRules _lhsOnExplicitRules)    ) @@ -3245,25 +3245,25 @@          in __result_ )      in C_Rule_s32 v31    {-# INLINE rule447 #-}-   {-# LINE 64 "./src-ag/Order.ag" #-}+   {-# LINE 64 "src-ag/Order.ag" #-}    rule447 = \ explicit_ ->-                                 {-# LINE 64 "./src-ag/Order.ag" #-}+                                 {-# LINE 64 "src-ag/Order.ag" #-}                                  if explicit_                                  then 1                                  else 0                                  {-# LINE 3255 "dist/build/Order.hs"#-}    {-# INLINE rule448 #-}-   {-# LINE 67 "./src-ag/Order.ag" #-}+   {-# LINE 67 "src-ag/Order.ag" #-}    rule448 = \ origin_ ->-                             {-# LINE 67 "./src-ag/Order.ag" #-}+                             {-# LINE 67 "src-ag/Order.ag" #-}                              if startsWith "use rule" origin_ || startsWith "copy rule" origin_                              then 1                              else 0                              {-# LINE 3263 "dist/build/Order.hs"#-}    {-# INLINE rule449 #-}-   {-# LINE 220 "./src-ag/Order.ag" #-}+   {-# LINE 220 "src-ag/Order.ag" #-}    rule449 = \ ((_lhsIallTypeSigs) :: Map Identifier Type) ((_lhsIaltAttrs) :: Map AltAttr Vertex) ((_lhsIchildInhs) :: Map Identifier Attributes) ((_lhsIsyn) :: Attributes) ((_patternIpatternAttrs) :: [(Identifier,Identifier,Bool)]) ->-                           {-# LINE 220 "./src-ag/Order.ag" #-}+                           {-# LINE 220 "src-ag/Order.ag" #-}                            let  tp field attr      | field == _LOC || field == _INST                                                                     = Map.lookup attr _lhsIallTypeSigs                                                     | field == _LHS = Map.lookup attr _lhsIsyn@@ -3278,27 +3278,27 @@                                             ]                            {-# LINE 3280 "dist/build/Order.hs"#-}    {-# INLINE rule450 #-}-   {-# LINE 234 "./src-ag/Order.ag" #-}+   {-# LINE 234 "src-ag/Order.ag" #-}    rule450 = \ _defines ((_lhsIchildNts) :: Map Identifier NontermIdent) ((_lhsIcon) :: Identifier) ((_lhsInt) :: Identifier) ((_patternIcopy) :: Pattern) ((_rhsIallRhsVars) :: Set (Identifier,Identifier)) ((_rhsItextLines) :: [String]) explicit_ mbName_ origin_ owrt_ ->-                              {-# LINE 234 "./src-ag/Order.ag" #-}+                              {-# LINE 234 "src-ag/Order.ag" #-}                               let childnt field = Map.lookup field _lhsIchildNts                               in Seq.fromList [ CRule attr False True _lhsInt _lhsIcon field (childnt field) tp _patternIcopy _rhsItextLines _defines owrt_ origin_ _rhsIallRhsVars explicit_ mbName_                                               | (field,attr,tp) <- Map.elems _defines                                               ]                               {-# LINE 3289 "dist/build/Order.hs"#-}    {-# INLINE rule451 #-}-   {-# LINE 273 "./src-ag/Order.ag" #-}+   {-# LINE 273 "src-ag/Order.ag" #-}    rule451 = \ _defines ((_lhsIaltAttrs) :: Map AltAttr Vertex) ((_rhsIusedAttrs) :: [(Identifier,Identifier)]) ((_rhsIusedFields) :: [Identifier]) ((_rhsIusedLocals) :: [Identifier]) ->-                 {-# LINE 273 "./src-ag/Order.ag" #-}+                 {-# LINE 273 "src-ag/Order.ag" #-}                  let  defined = Map.keys _defines                       used =  [ Map.lookup (AltAttr field attr True) _lhsIaltAttrs | (field,attr) <- _rhsIusedAttrs]                               ++ [ Map.lookup (AltAttr _LOC attr True) _lhsIaltAttrs | attr <- _rhsIusedLocals ++ _rhsIusedFields ]                  in Seq.fromList [ (x,y) | Just x <- used, y <- defined ]                  {-# LINE 3298 "dist/build/Order.hs"#-}    {-# INLINE rule452 #-}-   {-# LINE 317 "./src-ag/Order.ag" #-}+   {-# LINE 317 "src-ag/Order.ag" #-}    rule452 = \ _defines ((_lhsIaltAttrs) :: Map AltAttr Vertex) ((_lhsIsynsOfChildren) :: Map Identifier Attributes) ->-            {-# LINE 317 "./src-ag/Order.ag" #-}+            {-# LINE 317 "src-ag/Order.ag" #-}             Seq.fromList $               [ (instVert, synVert)               | (field,instNm,_) <- Map.elems _defines@@ -3311,9 +3311,9 @@               ]             {-# LINE 3313 "dist/build/Order.hs"#-}    {-# INLINE rule453 #-}-   {-# LINE 328 "./src-ag/Order.ag" #-}+   {-# LINE 328 "src-ag/Order.ag" #-}    rule453 = \ _defines ((_lhsIaltAttrs) :: Map AltAttr Vertex) ((_lhsIinhsOfChildren) :: Map Identifier Attributes) ->-            {-# LINE 328 "./src-ag/Order.ag" #-}+            {-# LINE 328 "src-ag/Order.ag" #-}             Seq.fromList $               [ (instVert, inhVert)               | (field,instNm,_) <- Map.elems _defines@@ -3326,9 +3326,9 @@               ]             {-# LINE 3328 "dist/build/Order.hs"#-}    {-# INLINE rule454 #-}-   {-# LINE 338 "./src-ag/Order.ag" #-}+   {-# LINE 338 "src-ag/Order.ag" #-}    rule454 = \ _instDep1 _instDep2 ->-                     {-# LINE 338 "./src-ag/Order.ag" #-}+                     {-# LINE 338 "src-ag/Order.ag" #-}                      _instDep1     Seq.>< _instDep2                      {-# LINE 3334 "dist/build/Order.hs"#-}    {-# INLINE rule455 #-}@@ -3395,8 +3395,8 @@ wrap_Rules (T_Rules act) (Inh_Rules _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsIinhsOfChildren _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynsOfChildren) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rules_vIn34 _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsIinhsOfChildren _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynsOfChildren-        (T_Rules_vOut34 _lhsOdirectDep _lhsOerrors _lhsOgathAltAttrs _lhsOgathRules _lhsOinstDep _lhsOinstVars _lhsOlocVars _lhsOnAutoRules _lhsOnExplicitRules) <- return (inv_Rules_s35 sem arg)+        let arg34 = T_Rules_vIn34 _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsIinhsOfChildren _lhsImergeMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIoptions _lhsIprefix _lhsIsyn _lhsIsynsOfChildren+        (T_Rules_vOut34 _lhsOdirectDep _lhsOerrors _lhsOgathAltAttrs _lhsOgathRules _lhsOinstDep _lhsOinstVars _lhsOlocVars _lhsOnAutoRules _lhsOnExplicitRules) <- return (inv_Rules_s35 sem arg34)         return (Syn_Rules _lhsOdirectDep _lhsOerrors _lhsOgathAltAttrs _lhsOgathRules _lhsOinstDep _lhsOinstVars _lhsOlocVars _lhsOnAutoRules _lhsOnExplicitRules)    ) @@ -3732,8 +3732,8 @@ wrap_TypeSig (T_TypeSig act) (Inh_TypeSig _lhsItypeSigs) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSig_vIn37 _lhsItypeSigs-        (T_TypeSig_vOut37 _lhsOtypeSigs) <- return (inv_TypeSig_s38 sem arg)+        let arg37 = T_TypeSig_vIn37 _lhsItypeSigs+        (T_TypeSig_vOut37 _lhsOtypeSigs) <- return (inv_TypeSig_s38 sem arg37)         return (Syn_TypeSig _lhsOtypeSigs)    ) @@ -3766,9 +3766,9 @@          in __result_ )      in C_TypeSig_s38 v37    {-# INLINE rule539 #-}-   {-# LINE 536 "./src-ag/Order.ag" #-}+   {-# LINE 536 "src-ag/Order.ag" #-}    rule539 = \ ((_lhsItypeSigs) :: Map Identifier Type) name_ tp_ ->-                             {-# LINE 536 "./src-ag/Order.ag" #-}+                             {-# LINE 536 "src-ag/Order.ag" #-}                              Map.insert name_ tp_ _lhsItypeSigs                              {-# LINE 3774 "dist/build/Order.hs"#-} @@ -3781,8 +3781,8 @@ wrap_TypeSigs (T_TypeSigs act) (Inh_TypeSigs _lhsItypeSigs) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSigs_vIn40 _lhsItypeSigs-        (T_TypeSigs_vOut40 _lhsOtypeSigs) <- return (inv_TypeSigs_s41 sem arg)+        let arg40 = T_TypeSigs_vIn40 _lhsItypeSigs+        (T_TypeSigs_vOut40 _lhsOtypeSigs) <- return (inv_TypeSigs_s41 sem arg40)         return (Syn_TypeSigs _lhsOtypeSigs)    ) 
src-generated/Patterns.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/Patterns.ag)+-- UUAGC 0.9.51 (src-ag/Patterns.ag) module Patterns where-{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos)
src-generated/PrintCleanCode.hs view
@@ -3,14 +3,14 @@ {-# LANGUAGE ScopedTypeVariables #-}  module PrintCleanCode where-{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 12 "dist/build/PrintCleanCode.hs" #-} -{-# LINE 2 "./src-ag/Code.ag" #-}+{-# LINE 2 "src-ag/Code.ag" #-}  import Patterns import Data.Set(Set)@@ -19,7 +19,7 @@ import qualified Data.Map as Map {-# LINE 21 "dist/build/PrintCleanCode.hs" #-} -{-# LINE 10 "./src-ag/PrintCleanCode.ag" #-}+{-# LINE 10 "src-ag/PrintCleanCode.ag" #-}  import Data.Char (isAlphaNum) import Pretty@@ -34,7 +34,7 @@ {-# LINE 35 "dist/build/PrintCleanCode.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 146 "./src-ag/Code.ag" #-}+{-# LINE 146 "src-ag/Code.ag" #-}  -- Unboxed tuples --   unbox  Whether unboxed tuples are wanted or not@@ -53,12 +53,12 @@                                | otherwise                                = UnboxedTupleLhs comps {-# LINE 55 "dist/build/PrintCleanCode.hs" #-} -{-# LINE 23 "./src-ag/PrintCleanCode.ag" #-}+{-# LINE 23 "src-ag/PrintCleanCode.ag" #-}  type PP_Docs = [PP_Doc] {-# LINE 60 "dist/build/PrintCleanCode.hs" #-} -{-# LINE 27 "./src-ag/PrintCleanCode.ag" #-}+{-# LINE 27 "src-ag/PrintCleanCode.ag" #-}  ppMultiSeqH :: [PP_Doc] -> PP_Doc -> PP_Doc ppMultiSeqH = ppMultiSeq' (>#<)@@ -71,7 +71,7 @@   = foldr (\v r -> (v >#< "`seq`") `next` pp_parens r) expr strictArgs {-# LINE 73 "dist/build/PrintCleanCode.hs" #-} -{-# LINE 322 "./src-ag/PrintCleanCode.ag" #-}+{-# LINE 322 "src-ag/PrintCleanCode.ag" #-}   reallySimple :: String -> Bool@@ -88,19 +88,19 @@  {-# LINE 90 "dist/build/PrintCleanCode.hs" #-} -{-# LINE 425 "./src-ag/PrintCleanCode.ag" #-}+{-# LINE 425 "src-ag/PrintCleanCode.ag" #-}  locname' :: Identifier -> [Char] locname' n = "_loc_" ++ getName n {-# LINE 96 "dist/build/PrintCleanCode.hs" #-} -{-# LINE 500 "./src-ag/PrintCleanCode.ag" #-}+{-# LINE 500 "src-ag/PrintCleanCode.ag" #-}  renderDocs :: [PP_Doc] -> String renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) "" {-# LINE 102 "dist/build/PrintCleanCode.hs" #-} -{-# LINE 548 "./src-ag/PrintCleanCode.ag" #-}+{-# LINE 548 "src-ag/PrintCleanCode.ag" #-}  writeModule :: FilePath -> [PP_Doc] -> IO () writeModule path docs@@ -125,8 +125,8 @@ wrap_CaseAlt !(T_CaseAlt act) !(Inh_CaseAlt _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_CaseAlt_vIn1 _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_CaseAlt_vOut1 _lhsOpps) <- return (inv_CaseAlt_s2 sem arg)+        let arg1 = T_CaseAlt_vIn1 _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_CaseAlt_vOut1 _lhsOpps) <- return (inv_CaseAlt_s2 sem arg1)         return (Syn_CaseAlt _lhsOpps)    ) @@ -170,15 +170,15 @@          in __result_ )      in C_CaseAlt_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 228 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 228 "src-ag/PrintCleanCode.ag" #-}    rule0 = \ ((_exprIpp) :: PP_Doc) ((_leftIpp) :: PP_Doc) ->-                               {-# LINE 228 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 228 "src-ag/PrintCleanCode.ag" #-}                                ["{" >#< _leftIpp >#< "->", _exprIpp >#< "}"]                                {-# LINE 178 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 449 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 449 "src-ag/PrintCleanCode.ag" #-}    rule1 = \  (_ :: ()) ->-                           {-# LINE 449 "./src-ag/PrintCleanCode.ag" #-}+                           {-# LINE 449 "src-ag/PrintCleanCode.ag" #-}                            False                            {-# LINE 184 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule2 #-}@@ -209,8 +209,8 @@ wrap_CaseAlts !(T_CaseAlts act) !(Inh_CaseAlts _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_CaseAlts_vIn4 _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_CaseAlts_vOut4 _lhsOpps) <- return (inv_CaseAlts_s5 sem arg)+        let arg4 = T_CaseAlts_vIn4 _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_CaseAlts_vOut4 _lhsOpps) <- return (inv_CaseAlts_s5 sem arg4)         return (Syn_CaseAlts _lhsOpps)    ) @@ -253,9 +253,9 @@          in __result_ )      in C_CaseAlts_s5 v4    {-# INLINE rule8 #-}-   {-# LINE 72 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 72 "src-ag/PrintCleanCode.ag" #-}    rule8 = \ ((_hdIpps) :: PP_Docs) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 72 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 72 "src-ag/PrintCleanCode.ag" #-}                      _hdIpps ++ _tlIpps                      {-# LINE 261 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule9 #-}@@ -289,9 +289,9 @@          in __result_ )      in C_CaseAlts_s5 v4    {-# INLINE rule15 #-}-   {-# LINE 73 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 73 "src-ag/PrintCleanCode.ag" #-}    rule15 = \  (_ :: ()) ->-                     {-# LINE 73 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 73 "src-ag/PrintCleanCode.ag" #-}                      []                      {-# LINE 297 "dist/build/PrintCleanCode.hs"#-} @@ -304,8 +304,8 @@ wrap_Chunk !(T_Chunk act) !(Inh_Chunk _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Chunk_vIn7 _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks-        !(T_Chunk_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps) <- return (inv_Chunk_s8 sem arg)+        let arg7 = T_Chunk_vIn7 _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks+        !(T_Chunk_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps) <- return (inv_Chunk_s8 sem arg7)         return (Syn_Chunk _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps)    ) @@ -390,17 +390,17 @@          in __result_ )      in C_Chunk_s8 v7    {-# INLINE rule16 #-}-   {-# LINE 43 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 43 "src-ag/PrintCleanCode.ag" #-}    rule16 = \ ((_lhsImainFile) :: String) ((_lhsIoptions) :: Options) name_ ->-                         {-# LINE 43 "./src-ag/PrintCleanCode.ag" #-}+                         {-# LINE 43 "src-ag/PrintCleanCode.ag" #-}                          if sepSemMods _lhsIoptions                          then replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ "_" ++ name_)                          else _lhsImainFile                          {-# LINE 400 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule17 #-}-   {-# LINE 104 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 104 "src-ag/PrintCleanCode.ag" #-}    rule17 = \ ((_cataFunIpps) :: PP_Docs) ((_commentIpp) :: PP_Doc) ((_dataDefIpps) :: PP_Docs) ((_infoIpps) :: PP_Docs) ((_lhsItextBlockMap) :: Map BlockInfo PP_Doc) ((_semDomIpps) :: PP_Docs) ((_semFunctionsIpps) :: PP_Docs) ((_semWrapperIpps) :: PP_Docs) name_ ->-                                {-# LINE 104 "./src-ag/PrintCleanCode.ag" #-}+                                {-# LINE 104 "src-ag/PrintCleanCode.ag" #-}                                 _commentIpp                                 :  _infoIpps                                 ++ _dataDefIpps@@ -411,15 +411,15 @@                                 ++ [Map.findWithDefault empty (BlockOther, Just $ identifier name_) _lhsItextBlockMap]                                 {-# LINE 413 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule18 #-}-   {-# LINE 508 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 508 "src-ag/PrintCleanCode.ag" #-}    rule18 = \ ((_lhsImainName) :: String) name_ ->-                      {-# LINE 508 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 508 "src-ag/PrintCleanCode.ag" #-}                       ["import " ++ _lhsImainName ++ "_" ++ name_ ++ "\n"]                       {-# LINE 419 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule19 #-}-   {-# LINE 515 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 515 "src-ag/PrintCleanCode.ag" #-}    rule19 = \ ((_commentIpp) :: PP_Doc) ((_dataDefIpps) :: PP_Docs) ((_lhsIoptions) :: Options) ((_semDomIpps) :: PP_Docs) ((_semWrapperIpps) :: PP_Docs) ->-            {-# LINE 515 "./src-ag/PrintCleanCode.ag" #-}+            {-# LINE 515 "src-ag/PrintCleanCode.ag" #-}             [ [_commentIpp]             , _dataDefIpps             , _semDomIpps@@ -427,18 +427,18 @@             ]             {-# LINE 429 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule20 #-}-   {-# LINE 521 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 521 "src-ag/PrintCleanCode.ag" #-}    rule20 = \ ((_cataFunIpps) :: PP_Docs) ((_commentIpp) :: PP_Doc) ((_lhsIoptions) :: Options) ((_semWrapperIpps) :: PP_Docs) ->-            {-# LINE 521 "./src-ag/PrintCleanCode.ag" #-}+            {-# LINE 521 "src-ag/PrintCleanCode.ag" #-}             [ [_commentIpp]             , _cataFunIpps             , if reference _lhsIoptions then [] else _semWrapperIpps             ]             {-# LINE 438 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule21 #-}-   {-# LINE 531 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 531 "src-ag/PrintCleanCode.ag" #-}    rule21 = \ ((_commentIpp) :: PP_Doc) _exports ((_infoIpps) :: PP_Docs) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptionsLine) :: String) ((_lhsIpragmaBlocks) :: String) ((_lhsItextBlockMap) :: Map BlockInfo PP_Doc) _outputfile ((_semFunctionsIpps) :: PP_Docs) name_ ->-            {-# LINE 531 "./src-ag/PrintCleanCode.ag" #-}+            {-# LINE 531 "src-ag/PrintCleanCode.ag" #-}             writeModule _outputfile               [ pp $ _lhsIpragmaBlocks               , pp $ Map.findWithDefault empty (BlockPragma, Just $ identifier name_) _lhsItextBlockMap@@ -453,9 +453,9 @@               ]             {-# LINE 455 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule22 #-}-   {-# LINE 546 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 546 "src-ag/PrintCleanCode.ag" #-}    rule22 = \ semNames_ ->-                      {-# LINE 546 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 546 "src-ag/PrintCleanCode.ag" #-}                       concat $ intersperse "," semNames_                       {-# LINE 461 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule23 #-}@@ -552,8 +552,8 @@ wrap_Chunks !(T_Chunks act) !(Inh_Chunks _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Chunks_vIn10 _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks-        !(T_Chunks_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps) <- return (inv_Chunks_s11 sem arg)+        let arg10 = T_Chunks_vIn10 _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks+        !(T_Chunks_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps) <- return (inv_Chunks_s11 sem arg10)         return (Syn_Chunks _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps)    ) @@ -620,9 +620,9 @@          in __result_ )      in C_Chunks_s11 v10    {-# INLINE rule51 #-}-   {-# LINE 96 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 96 "src-ag/PrintCleanCode.ag" #-}    rule51 = \ ((_hdIpps) :: PP_Docs) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 96 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 96 "src-ag/PrintCleanCode.ag" #-}                      _hdIpps ++ _tlIpps                      {-# LINE 628 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule52 #-}@@ -724,9 +724,9 @@          in __result_ )      in C_Chunks_s11 v10    {-# INLINE rule78 #-}-   {-# LINE 97 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 97 "src-ag/PrintCleanCode.ag" #-}    rule78 = \  (_ :: ()) ->-                     {-# LINE 97 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 97 "src-ag/PrintCleanCode.ag" #-}                      []                      {-# LINE 732 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule79 #-}@@ -751,8 +751,8 @@ wrap_DataAlt !(T_DataAlt act) !(Inh_DataAlt _lhsInested _lhsIstrictPre) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_DataAlt_vIn13 _lhsInested _lhsIstrictPre-        !(T_DataAlt_vOut13 _lhsOpp _lhsOppa) <- return (inv_DataAlt_s14 sem arg)+        let arg13 = T_DataAlt_vIn13 _lhsInested _lhsIstrictPre+        !(T_DataAlt_vOut13 _lhsOpp _lhsOppa) <- return (inv_DataAlt_s14 sem arg13)         return (Syn_DataAlt _lhsOpp _lhsOppa)    ) @@ -791,15 +791,15 @@          in __result_ )      in C_DataAlt_s14 v13    {-# INLINE rule83 #-}-   {-# LINE 231 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 231 "src-ag/PrintCleanCode.ag" #-}    rule83 = \ ((_argsIpps) :: PP_Docs) ((_lhsIstrictPre) :: PP_Doc) name_ ->-                               {-# LINE 231 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 231 "src-ag/PrintCleanCode.ag" #-}                                name_ >#< hv_sp (map ((_lhsIstrictPre >|<) . pp_parens) _argsIpps)                                {-# LINE 799 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule84 #-}-   {-# LINE 232 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 232 "src-ag/PrintCleanCode.ag" #-}    rule84 = \  (_ :: ()) ->-                               {-# LINE 232 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 232 "src-ag/PrintCleanCode.ag" #-}                                empty                                {-# LINE 805 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule85 #-}@@ -823,15 +823,15 @@          in __result_ )      in C_DataAlt_s14 v13    {-# INLINE rule86 #-}-   {-# LINE 233 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 233 "src-ag/PrintCleanCode.ag" #-}    rule86 = \ ((_argsIpps) :: PP_Docs) ((_lhsIstrictPre) :: PP_Doc) name_ ->-                               {-# LINE 233 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 233 "src-ag/PrintCleanCode.ag" #-}                                name_ >#< hv_sp (map ((_lhsIstrictPre >|<) . pp_parens) _argsIpps)                                {-# LINE 831 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule87 #-}-   {-# LINE 234 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 234 "src-ag/PrintCleanCode.ag" #-}    rule87 = \ ((_argsIppas) :: PP_Docs) name_ ->-                               {-# LINE 234 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 234 "src-ag/PrintCleanCode.ag" #-}                                let f n d = d >#< (pp_block ("(" ++ name_) ")" "" $ map pp (ppat n))                                            >#< pp "=" >#< pp "x"                                    ppat n = replicate (length _argsIppas - n - 1) (pp " _") ++ [pp " x"] ++ replicate n (pp " _")@@ -850,8 +850,8 @@ wrap_DataAlts !(T_DataAlts act) !(Inh_DataAlts _lhsInested _lhsIstrictPre) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_DataAlts_vIn16 _lhsInested _lhsIstrictPre-        !(T_DataAlts_vOut16 _lhsOppas _lhsOpps) <- return (inv_DataAlts_s17 sem arg)+        let arg16 = T_DataAlts_vIn16 _lhsInested _lhsIstrictPre+        !(T_DataAlts_vOut16 _lhsOppas _lhsOpps) <- return (inv_DataAlts_s17 sem arg16)         return (Syn_DataAlts _lhsOppas _lhsOpps)    ) @@ -894,15 +894,15 @@          in __result_ )      in C_DataAlts_s17 v16    {-# INLINE rule89 #-}-   {-# LINE 76 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 76 "src-ag/PrintCleanCode.ag" #-}    rule89 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                      {-# LINE 76 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 76 "src-ag/PrintCleanCode.ag" #-}                       _hdIpp : _tlIpps                       {-# LINE 902 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule90 #-}-   {-# LINE 77 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 77 "src-ag/PrintCleanCode.ag" #-}    rule90 = \ ((_hdIppa) :: PP_Doc) ((_tlIppas) :: PP_Docs) ->-                      {-# LINE 77 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 77 "src-ag/PrintCleanCode.ag" #-}                       _hdIppa : _tlIppas                       {-# LINE 908 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule91 #-}@@ -932,15 +932,15 @@          in __result_ )      in C_DataAlts_s17 v16    {-# INLINE rule95 #-}-   {-# LINE 78 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 78 "src-ag/PrintCleanCode.ag" #-}    rule95 = \  (_ :: ()) ->-                      {-# LINE 78 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 78 "src-ag/PrintCleanCode.ag" #-}                       []                       {-# LINE 940 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule96 #-}-   {-# LINE 79 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 79 "src-ag/PrintCleanCode.ag" #-}    rule96 = \  (_ :: ()) ->-                      {-# LINE 79 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 79 "src-ag/PrintCleanCode.ag" #-}                       []                       {-# LINE 946 "dist/build/PrintCleanCode.hs"#-} @@ -953,8 +953,8 @@ wrap_Decl !(T_Decl act) !(Inh_Decl _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Decl_vIn19 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Decl_vOut19 _lhsOpp _lhsOppa) <- return (inv_Decl_s20 sem arg)+        let arg19 = T_Decl_vIn19 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Decl_vOut19 _lhsOpp _lhsOppa) <- return (inv_Decl_s20 sem arg19)         return (Syn_Decl _lhsOpp _lhsOppa)    ) @@ -1010,9 +1010,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule97 #-}-   {-# LINE 114 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 114 "src-ag/PrintCleanCode.ag" #-}    rule97 = \ ((_leftIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) ->-                               {-# LINE 114 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 114 "src-ag/PrintCleanCode.ag" #-}                                _leftIpp >#< "="                                >-< indent 4 _rhsIpp                                {-# LINE 1019 "dist/build/PrintCleanCode.hs"#-}@@ -1066,9 +1066,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule106 #-}-   {-# LINE 116 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 116 "src-ag/PrintCleanCode.ag" #-}    rule106 = \ ((_leftIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) ->-                               {-# LINE 116 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 116 "src-ag/PrintCleanCode.ag" #-}                                _leftIpp >#< "<-" >#< _rhsIpp                                {-# LINE 1074 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule107 #-}@@ -1121,9 +1121,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule115 #-}-   {-# LINE 117 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 117 "src-ag/PrintCleanCode.ag" #-}    rule115 = \ ((_leftIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) ->-                               {-# LINE 117 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 117 "src-ag/PrintCleanCode.ag" #-}                                "let" >#< _leftIpp >#< "=" >#< _rhsIpp                                {-# LINE 1129 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule116 #-}@@ -1169,9 +1169,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule124 #-}-   {-# LINE 118 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 118 "src-ag/PrintCleanCode.ag" #-}    rule124 = \ ((_altsIppas) :: PP_Docs) ((_altsIpps) :: PP_Docs) derivings_ name_ params_ ->-                               {-# LINE 118 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 118 "src-ag/PrintCleanCode.ag" #-}                                "::" >#< hv_sp (name_ : params_)                                >#<  ( case _altsIpps of                                             [] -> empty@@ -1184,9 +1184,9 @@                                >-< foldr (>-<) empty _altsIppas                                {-# LINE 1186 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule125 #-}-   {-# LINE 346 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 346 "src-ag/PrintCleanCode.ag" #-}    rule125 = \ strict_ ->-                            {-# LINE 346 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 346 "src-ag/PrintCleanCode.ag" #-}                             if strict_ then pp "!" else empty                             {-# LINE 1192 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule126 #-}@@ -1213,9 +1213,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule128 #-}-   {-# LINE 129 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 129 "src-ag/PrintCleanCode.ag" #-}    rule128 = \ ((_tpIpp) :: PP_Doc) con_ name_ params_ ->-                               {-# LINE 129 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 129 "src-ag/PrintCleanCode.ag" #-}                                "::" >#< hv_sp (name_ : params_) >#< "=" >#< con_ >#< pp_parens _tpIpp                                {-# LINE 1221 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule129 #-}@@ -1242,9 +1242,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule131 #-}-   {-# LINE 130 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 130 "src-ag/PrintCleanCode.ag" #-}    rule131 = \ ((_tpIpp) :: PP_Doc) name_ params_ ->-                               {-# LINE 130 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 130 "src-ag/PrintCleanCode.ag" #-}                                "::" >#< hv_sp (name_ : params_) >#< ":==" >#<  _tpIpp                                {-# LINE 1250 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule132 #-}@@ -1271,9 +1271,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule134 #-}-   {-# LINE 131 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 131 "src-ag/PrintCleanCode.ag" #-}    rule134 = \ ((_tpIpp) :: PP_Doc) name_ ->-                               {-# LINE 131 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 131 "src-ag/PrintCleanCode.ag" #-}                                name_ >#< "::" >#< _tpIpp                                {-# LINE 1279 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule135 #-}@@ -1297,9 +1297,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule137 #-}-   {-# LINE 132 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 132 "src-ag/PrintCleanCode.ag" #-}    rule137 = \ txt_ ->-                               {-# LINE 132 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 132 "src-ag/PrintCleanCode.ag" #-}                                if '\n' `elem` txt_                                  then "/*" >-< vlist (lines txt_) >-< "*/"                                  else "//" >#< txt_@@ -1322,9 +1322,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule139 #-}-   {-# LINE 135 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 135 "src-ag/PrintCleanCode.ag" #-}    rule139 = \ txt_ ->-                               {-# LINE 135 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 135 "src-ag/PrintCleanCode.ag" #-}                                "/*#" >#< text txt_ >#< "#*/"                                {-# LINE 1330 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule140 #-}@@ -1356,9 +1356,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule141 #-}-   {-# LINE 136 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 136 "src-ag/PrintCleanCode.ag" #-}    rule141 = \ ((_leftIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) monadic_ ->-                               {-# LINE 136 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 136 "src-ag/PrintCleanCode.ag" #-}                                if monadic_                                then _leftIpp >#< "<-" >#< _rhsIpp                                else _leftIpp >#< "=" >-< indent 4 _rhsIpp@@ -1414,17 +1414,17 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule150 #-}-   {-# LINE 139 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 139 "src-ag/PrintCleanCode.ag" #-}    rule150 = \ ((_lhsIoptions) :: Options) ->-                               {-# LINE 139 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 139 "src-ag/PrintCleanCode.ag" #-}                                if breadthFirstStrict _lhsIoptions                                then "stepwiseEval"                                else "lazyEval"                                {-# LINE 1424 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule151 #-}-   {-# LINE 142 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 142 "src-ag/PrintCleanCode.ag" #-}    rule151 = \ ((_leftIpp) :: PP_Doc) ((_lhsIoptions) :: Options) ((_rhsIpp) :: PP_Doc) _strat nt_ ->-                               {-# LINE 142 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 142 "src-ag/PrintCleanCode.ag" #-}                                if breadthFirst _lhsIoptions                                then _leftIpp >#< "=" >#< "case" >#< _strat     >#< pp_parens _rhsIpp >#< "of"                                     >-< indent 4 (@@ -1466,8 +1466,8 @@ wrap_Decls !(T_Decls act) !(Inh_Decls _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Decls_vIn22 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Decls_vOut22 _lhsOpps) <- return (inv_Decls_s23 sem arg)+        let arg22 = T_Decls_vIn22 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Decls_vOut22 _lhsOpps) <- return (inv_Decls_s23 sem arg22)         return (Syn_Decls _lhsOpps)    ) @@ -1512,9 +1512,9 @@          in __result_ )      in C_Decls_s23 v22    {-# INLINE rule160 #-}-   {-# LINE 92 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 92 "src-ag/PrintCleanCode.ag" #-}    rule160 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 92 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 92 "src-ag/PrintCleanCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 1520 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule161 #-}@@ -1554,9 +1554,9 @@          in __result_ )      in C_Decls_s23 v22    {-# INLINE rule169 #-}-   {-# LINE 93 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 93 "src-ag/PrintCleanCode.ag" #-}    rule169 = \  (_ :: ()) ->-                     {-# LINE 93 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 93 "src-ag/PrintCleanCode.ag" #-}                      []                      {-# LINE 1562 "dist/build/PrintCleanCode.hs"#-} @@ -1569,8 +1569,8 @@ wrap_Expr !(T_Expr act) !(Inh_Expr _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Expr_vIn25 _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Expr_vOut25 _lhsOpp) <- return (inv_Expr_s26 sem arg)+        let arg25 = T_Expr_vIn25 _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Expr_vOut25 _lhsOpp) <- return (inv_Expr_s26 sem arg25)         return (Syn_Expr _lhsOpp)    ) @@ -1630,17 +1630,17 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule170 #-}-   {-# LINE 150 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 150 "src-ag/PrintCleanCode.ag" #-}    rule170 = \ ((_bodyIpp) :: PP_Doc) ((_declsIpps) :: PP_Docs) ->-                               {-# LINE 150 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 150 "src-ag/PrintCleanCode.ag" #-}                                pp_parens (    "let" >#< (vlist _declsIpps)                                          >-< "in " >#< _bodyIpp                                          )                                {-# LINE 1640 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule171 #-}-   {-# LINE 441 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 441 "src-ag/PrintCleanCode.ag" #-}    rule171 = \  (_ :: ()) ->-                            {-# LINE 441 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 441 "src-ag/PrintCleanCode.ag" #-}                             True                             {-# LINE 1646 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule172 #-}@@ -1684,9 +1684,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule178 #-}-   {-# LINE 153 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 153 "src-ag/PrintCleanCode.ag" #-}    rule178 = \ ((_altsIpps) :: PP_Docs) ((_exprIpp) :: PP_Doc) ->-                               {-# LINE 153 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 153 "src-ag/PrintCleanCode.ag" #-}                                pp_parens (    "case" >#< pp_parens _exprIpp >#< "of"                                          >-< (vlist _altsIpps)                                          )@@ -1733,17 +1733,17 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule185 #-}-   {-# LINE 156 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 156 "src-ag/PrintCleanCode.ag" #-}    rule185 = \ ((_bodyIpp) :: PP_Doc) ((_stmtsIpps) :: PP_Docs) ->-                               {-# LINE 156 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 156 "src-ag/PrintCleanCode.ag" #-}                                pp_parens ( "do" >#< (   vlist _stmtsIpps                                                     >-< ("return" >#< _bodyIpp))                                          )                                {-# LINE 1743 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule186 #-}-   {-# LINE 443 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 443 "src-ag/PrintCleanCode.ag" #-}    rule186 = \  (_ :: ()) ->-                            {-# LINE 443 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 443 "src-ag/PrintCleanCode.ag" #-}                             False                             {-# LINE 1749 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule187 #-}@@ -1789,25 +1789,25 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule193 #-}-   {-# LINE 159 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 159 "src-ag/PrintCleanCode.ag" #-}    rule193 = \ ((_argsIpps) :: PP_Docs) ((_lhsIoptions) :: Options) ->-                                    {-# LINE 159 "./src-ag/PrintCleanCode.ag" #-}+                                    {-# LINE 159 "src-ag/PrintCleanCode.ag" #-}                                     if strictSems _lhsIoptions                                     then _argsIpps                                     else []                                     {-# LINE 1799 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule194 #-}-   {-# LINE 162 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 162 "src-ag/PrintCleanCode.ag" #-}    rule194 = \ ((_lhsIoptions) :: Options) ->-                               {-# LINE 162 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 162 "src-ag/PrintCleanCode.ag" #-}                                if bangpats _lhsIoptions                                then \p -> pp_parens ("!" >|< p)                                else id                                {-# LINE 1807 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule195 #-}-   {-# LINE 165 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 165 "src-ag/PrintCleanCode.ag" #-}    rule195 = \ _addBang ((_argsIpps) :: PP_Docs) ((_bodyIpp) :: PP_Doc) _strictParams ->-                               {-# LINE 165 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 165 "src-ag/PrintCleanCode.ag" #-}                                pp_parens (    "\\" >#< (vlist (map _addBang     _argsIpps)) >#< "->"                                          >-< indent 4 (_strictParams     `ppMultiSeqV` _bodyIpp)                                          )@@ -1848,9 +1848,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule202 #-}-   {-# LINE 168 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 168 "src-ag/PrintCleanCode.ag" #-}    rule202 = \ ((_exprsIpps) :: PP_Docs) ((_lhsInested) :: Bool) ->-                               {-# LINE 168 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 168 "src-ag/PrintCleanCode.ag" #-}                                ppTuple _lhsInested _exprsIpps                                {-# LINE 1856 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule203 #-}@@ -1880,9 +1880,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule206 #-}-   {-# LINE 169 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 169 "src-ag/PrintCleanCode.ag" #-}    rule206 = \ ((_exprsIpps) :: PP_Docs) ((_lhsInested) :: Bool) ->-                                      {-# LINE 169 "./src-ag/PrintCleanCode.ag" #-}+                                      {-# LINE 169 "src-ag/PrintCleanCode.ag" #-}                                       ppUnboxedTuple _lhsInested _exprsIpps                                       {-# LINE 1888 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule207 #-}@@ -1912,9 +1912,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule210 #-}-   {-# LINE 170 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 170 "src-ag/PrintCleanCode.ag" #-}    rule210 = \ ((_argsIpps) :: PP_Docs) name_ ->-                               {-# LINE 170 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 170 "src-ag/PrintCleanCode.ag" #-}                                pp_parens $ name_ >#< hv_sp _argsIpps                                {-# LINE 1920 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule211 #-}@@ -1939,9 +1939,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule214 #-}-   {-# LINE 171 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 171 "src-ag/PrintCleanCode.ag" #-}    rule214 = \ txt_ ->-                               {-# LINE 171 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 171 "src-ag/PrintCleanCode.ag" #-}                                text txt_                                {-# LINE 1947 "dist/build/PrintCleanCode.hs"#-} {-# NOINLINE sem_Expr_TextExpr #-}@@ -1957,9 +1957,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule215 #-}-   {-# LINE 172 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 172 "src-ag/PrintCleanCode.ag" #-}    rule215 = \ lns_ ->-                               {-# LINE 172 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 172 "src-ag/PrintCleanCode.ag" #-}                                vlist (map text lns_)                                {-# LINE 1965 "dist/build/PrintCleanCode.hs"#-} {-# NOINLINE sem_Expr_Trace #-}@@ -1980,9 +1980,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule216 #-}-   {-# LINE 173 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 173 "src-ag/PrintCleanCode.ag" #-}    rule216 = \ ((_exprIpp) :: PP_Doc) txt_ ->-                               {-# LINE 173 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 173 "src-ag/PrintCleanCode.ag" #-}                                "trace" >#< (   pp_parens ("\"" >|< text txt_ >|< "\"")                                            >-< pp_parens _exprIpp                                            )@@ -2014,9 +2014,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule220 #-}-   {-# LINE 176 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 176 "src-ag/PrintCleanCode.ag" #-}    rule220 = \ ((_exprIpp) :: PP_Doc) onLeftSide_ onNewLine_ txt_ ->-                               {-# LINE 176 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 176 "src-ag/PrintCleanCode.ag" #-}                                let pragmaDoc = "/*#" >#< txt_ >#< "#*/"                                    op = if onNewLine_                                         then (>-<)@@ -2056,9 +2056,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule224 #-}-   {-# LINE 187 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 187 "src-ag/PrintCleanCode.ag" #-}    rule224 = \ ((_exprIpp) :: PP_Doc) ((_lhsIoutputfile) :: String) ->-                               {-# LINE 187 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 187 "src-ag/PrintCleanCode.ag" #-}                                _exprIpp >-< "/*# LINE" >#< ppWithLineNr (\n -> pp $ show $ n + 1) >#< show _lhsIoutputfile >#< "#*/"                                         >-< ""                                {-# LINE 2065 "dist/build/PrintCleanCode.hs"#-}@@ -2092,9 +2092,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule228 #-}-   {-# LINE 189 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 189 "src-ag/PrintCleanCode.ag" #-}    rule228 = \ ((_exprIpp) :: PP_Doc) ((_tpIpp) :: PP_Doc) ->-                               {-# LINE 189 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 189 "src-ag/PrintCleanCode.ag" #-}                                pp_parens (_exprIpp >#< "::" >#< _tpIpp)                                {-# LINE 2100 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule229 #-}@@ -2127,9 +2127,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule233 #-}-   {-# LINE 190 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 190 "src-ag/PrintCleanCode.ag" #-}    rule233 = \ ((_exprIpp) :: PP_Doc) ((_lhsIoptions) :: Options) nt_ ->-                               {-# LINE 190 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 190 "src-ag/PrintCleanCode.ag" #-}                                if breadthFirst _lhsIoptions                                then "final" >#<                                     pp_parens (nt_ >|< "_Syn" >#< pp_parens _exprIpp)@@ -2167,9 +2167,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule237 #-}-   {-# LINE 194 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 194 "src-ag/PrintCleanCode.ag" #-}    rule237 = \ ((_argsIpps) :: PP_Docs) ((_exprIpp) :: PP_Doc) ((_lhsIoptions) :: Options) nt_ ->-                               {-# LINE 194 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 194 "src-ag/PrintCleanCode.ag" #-}                                if breadthFirst _lhsIoptions                                then "invoke" >#< pp_parens _exprIpp >#< pp_parens (                                      nt_ >|< "_Inh" >#< pp_parens (ppTuple False _argsIpps))@@ -2222,9 +2222,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule244 #-}-   {-# LINE 198 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 198 "src-ag/PrintCleanCode.ag" #-}    rule244 = \ ((_exprIpp) :: PP_Doc) ((_leftIpp) :: PP_Doc) ((_lhsIoptions) :: Options) ((_rhsIpp) :: PP_Doc) nt_ ->-                               {-# LINE 198 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 198 "src-ag/PrintCleanCode.ag" #-}                                if breadthFirst _lhsIoptions                                then pp_parens ("resume" >#< pp_parens _exprIpp                                               >-< indent 2 (pp_parens ( "\\" >|<@@ -2239,9 +2239,9 @@                                               )                                {-# LINE 2241 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule245 #-}-   {-# LINE 445 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 445 "src-ag/PrintCleanCode.ag" #-}    rule245 = \  (_ :: ()) ->-                           {-# LINE 445 "./src-ag/PrintCleanCode.ag" #-}+                           {-# LINE 445 "src-ag/PrintCleanCode.ag" #-}                            False                            {-# LINE 2247 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule246 #-}@@ -2296,25 +2296,25 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule255 #-}-   {-# LINE 210 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 210 "src-ag/PrintCleanCode.ag" #-}    rule255 = \ ((_argsIpps) :: PP_Docs) ((_lhsIoptions) :: Options) ->-                                    {-# LINE 210 "./src-ag/PrintCleanCode.ag" #-}+                                    {-# LINE 210 "src-ag/PrintCleanCode.ag" #-}                                     if strictSems _lhsIoptions                                     then _argsIpps                                     else []                                     {-# LINE 2306 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule256 #-}-   {-# LINE 213 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 213 "src-ag/PrintCleanCode.ag" #-}    rule256 = \ ((_lhsIoptions) :: Options) ->-                               {-# LINE 213 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 213 "src-ag/PrintCleanCode.ag" #-}                                if bangpats _lhsIoptions                                then \p -> pp_parens ("!" >|< p)                                else id                                {-# LINE 2314 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule257 #-}-   {-# LINE 216 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 216 "src-ag/PrintCleanCode.ag" #-}    rule257 = \ _addBang ((_argsIpps) :: PP_Docs) ((_bodyIpp) :: PP_Doc) ((_lhsIoptions) :: Options) _strictParams nt_ ->-                               {-# LINE 216 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 216 "src-ag/PrintCleanCode.ag" #-}                                if breadthFirst _lhsIoptions                                then "Child" >#< pp_parens ( "\\" >|<                                         pp_parens (nt_ >|< "_Inh" >#<@@ -2354,8 +2354,8 @@ wrap_Exprs !(T_Exprs act) !(Inh_Exprs _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Exprs_vIn28 _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Exprs_vOut28 _lhsOpps) <- return (inv_Exprs_s29 sem arg)+        let arg28 = T_Exprs_vIn28 _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Exprs_vOut28 _lhsOpps) <- return (inv_Exprs_s29 sem arg28)         return (Syn_Exprs _lhsOpps)    ) @@ -2398,9 +2398,9 @@          in __result_ )      in C_Exprs_s29 v28    {-# INLINE rule264 #-}-   {-# LINE 68 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 68 "src-ag/PrintCleanCode.ag" #-}    rule264 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 68 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 68 "src-ag/PrintCleanCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 2406 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule265 #-}@@ -2434,9 +2434,9 @@          in __result_ )      in C_Exprs_s29 v28    {-# INLINE rule271 #-}-   {-# LINE 69 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 69 "src-ag/PrintCleanCode.ag" #-}    rule271 = \  (_ :: ()) ->-                     {-# LINE 69 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 69 "src-ag/PrintCleanCode.ag" #-}                      []                      {-# LINE 2442 "dist/build/PrintCleanCode.hs"#-} @@ -2449,8 +2449,8 @@ wrap_Lhs !(T_Lhs act) !(Inh_Lhs _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Lhs_vIn31 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Lhs_vOut31 _lhsOpp) <- return (inv_Lhs_s32 sem arg)+        let arg31 = T_Lhs_vIn31 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Lhs_vOut31 _lhsOpp) <- return (inv_Lhs_s32 sem arg31)         return (Syn_Lhs _lhsOpp)    ) @@ -2496,33 +2496,33 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule272 #-}-   {-# LINE 248 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 248 "src-ag/PrintCleanCode.ag" #-}    rule272 = \ _hasStrictVars ((_lhsIoptions) :: Options) _strictGuard ->-                             {-# LINE 248 "./src-ag/PrintCleanCode.ag" #-}+                             {-# LINE 248 "src-ag/PrintCleanCode.ag" #-}                              if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id                              {-# LINE 2504 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule273 #-}-   {-# LINE 250 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 250 "src-ag/PrintCleanCode.ag" #-}    rule273 = \ ((_pat3IstrictVars) :: [PP_Doc]) ->-                          {-# LINE 250 "./src-ag/PrintCleanCode.ag" #-}+                          {-# LINE 250 "src-ag/PrintCleanCode.ag" #-}                           _pat3IstrictVars `ppMultiSeqH` (pp "True")                           {-# LINE 2510 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule274 #-}-   {-# LINE 251 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 251 "src-ag/PrintCleanCode.ag" #-}    rule274 = \ ((_pat3IstrictVars) :: [PP_Doc]) ->-                            {-# LINE 251 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 251 "src-ag/PrintCleanCode.ag" #-}                             not (null _pat3IstrictVars)                             {-# LINE 2516 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule275 #-}-   {-# LINE 268 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 268 "src-ag/PrintCleanCode.ag" #-}    rule275 = \ _addStrictGuard ((_pat3Ipp) :: PP_Doc) ->-                               {-# LINE 268 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 268 "src-ag/PrintCleanCode.ag" #-}                                _addStrictGuard     _pat3Ipp                                {-# LINE 2522 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule276 #-}-   {-# LINE 406 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 406 "src-ag/PrintCleanCode.ag" #-}    rule276 = \  (_ :: ()) ->-                                {-# LINE 406 "./src-ag/PrintCleanCode.ag" #-}+                                {-# LINE 406 "src-ag/PrintCleanCode.ag" #-}                                 False                                 {-# LINE 2528 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule277 #-}@@ -2549,15 +2549,15 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule279 #-}-   {-# LINE 269 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 269 "src-ag/PrintCleanCode.ag" #-}    rule279 = \ ((_pat3Ipp') :: PP_Doc) ->-                               {-# LINE 269 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 269 "src-ag/PrintCleanCode.ag" #-}                                _pat3Ipp'                                {-# LINE 2557 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule280 #-}-   {-# LINE 406 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 406 "src-ag/PrintCleanCode.ag" #-}    rule280 = \  (_ :: ()) ->-                                {-# LINE 406 "./src-ag/PrintCleanCode.ag" #-}+                                {-# LINE 406 "src-ag/PrintCleanCode.ag" #-}                                 False                                 {-# LINE 2563 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule281 #-}@@ -2583,37 +2583,37 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule283 #-}-   {-# LINE 248 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 248 "src-ag/PrintCleanCode.ag" #-}    rule283 = \ _hasStrictVars ((_lhsIoptions) :: Options) _strictGuard ->-                             {-# LINE 248 "./src-ag/PrintCleanCode.ag" #-}+                             {-# LINE 248 "src-ag/PrintCleanCode.ag" #-}                              if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id                              {-# LINE 2591 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule284 #-}-   {-# LINE 253 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 253 "src-ag/PrintCleanCode.ag" #-}    rule284 = \ ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) comps_ ->-                          {-# LINE 253 "./src-ag/PrintCleanCode.ag" #-}+                          {-# LINE 253 "src-ag/PrintCleanCode.ag" #-}                           if stricterCases _lhsIoptions && not _lhsIisDeclOfLet                           then map text comps_ `ppMultiSeqH` (pp "True")                           else pp "True"                           {-# LINE 2599 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule285 #-}-   {-# LINE 256 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 256 "src-ag/PrintCleanCode.ag" #-}    rule285 = \ comps_ ->-                            {-# LINE 256 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 256 "src-ag/PrintCleanCode.ag" #-}                             not (null comps_)                             {-# LINE 2605 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule286 #-}-   {-# LINE 264 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 264 "src-ag/PrintCleanCode.ag" #-}    rule286 = \ ((_lhsIoptions) :: Options) ->-                      {-# LINE 264 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 264 "src-ag/PrintCleanCode.ag" #-}                       if bangpats _lhsIoptions                                then \p -> "!" >|< p                                else id                       {-# LINE 2613 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule287 #-}-   {-# LINE 270 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 270 "src-ag/PrintCleanCode.ag" #-}    rule287 = \ _addBang _addStrictGuard ((_lhsInested) :: Bool) comps_ ->-                               {-# LINE 270 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 270 "src-ag/PrintCleanCode.ag" #-}                                _addStrictGuard     $ ppTuple _lhsInested (map (_addBang     . text) comps_)                                {-# LINE 2619 "dist/build/PrintCleanCode.hs"#-} {-# NOINLINE sem_Lhs_UnboxedTupleLhs #-}@@ -2633,37 +2633,37 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule288 #-}-   {-# LINE 248 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 248 "src-ag/PrintCleanCode.ag" #-}    rule288 = \ _hasStrictVars ((_lhsIoptions) :: Options) _strictGuard ->-                             {-# LINE 248 "./src-ag/PrintCleanCode.ag" #-}+                             {-# LINE 248 "src-ag/PrintCleanCode.ag" #-}                              if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id                              {-# LINE 2641 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule289 #-}-   {-# LINE 253 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 253 "src-ag/PrintCleanCode.ag" #-}    rule289 = \ ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) comps_ ->-                          {-# LINE 253 "./src-ag/PrintCleanCode.ag" #-}+                          {-# LINE 253 "src-ag/PrintCleanCode.ag" #-}                           if stricterCases _lhsIoptions && not _lhsIisDeclOfLet                           then map text comps_ `ppMultiSeqH` (pp "True")                           else pp "True"                           {-# LINE 2649 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule290 #-}-   {-# LINE 256 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 256 "src-ag/PrintCleanCode.ag" #-}    rule290 = \ comps_ ->-                            {-# LINE 256 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 256 "src-ag/PrintCleanCode.ag" #-}                             not (null comps_)                             {-# LINE 2655 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule291 #-}-   {-# LINE 264 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 264 "src-ag/PrintCleanCode.ag" #-}    rule291 = \ ((_lhsIoptions) :: Options) ->-                      {-# LINE 264 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 264 "src-ag/PrintCleanCode.ag" #-}                       if bangpats _lhsIoptions                                then \p -> "!" >|< p                                else id                       {-# LINE 2663 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule292 #-}-   {-# LINE 271 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 271 "src-ag/PrintCleanCode.ag" #-}    rule292 = \ _addBang _addStrictGuard ((_lhsInested) :: Bool) comps_ ->-                                      {-# LINE 271 "./src-ag/PrintCleanCode.ag" #-}+                                      {-# LINE 271 "src-ag/PrintCleanCode.ag" #-}                                       _addStrictGuard     $ ppUnboxedTuple _lhsInested (map (_addBang     . text) comps_)                                       {-# LINE 2669 "dist/build/PrintCleanCode.hs"#-} {-# NOINLINE sem_Lhs_Fun #-}@@ -2688,35 +2688,35 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule293 #-}-   {-# LINE 259 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 259 "src-ag/PrintCleanCode.ag" #-}    rule293 = \ _hasStrictVars ((_lhsIoptions) :: Options) _strictGuard ->-                             {-# LINE 259 "./src-ag/PrintCleanCode.ag" #-}+                             {-# LINE 259 "src-ag/PrintCleanCode.ag" #-}                              if strictSems _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id                              {-# LINE 2696 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule294 #-}-   {-# LINE 260 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 260 "src-ag/PrintCleanCode.ag" #-}    rule294 = \ ((_argsIpps) :: PP_Docs) ->-                             {-# LINE 260 "./src-ag/PrintCleanCode.ag" #-}+                             {-# LINE 260 "src-ag/PrintCleanCode.ag" #-}                              not (null _argsIpps)                              {-# LINE 2702 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule295 #-}-   {-# LINE 261 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 261 "src-ag/PrintCleanCode.ag" #-}    rule295 = \ ((_argsIpps) :: PP_Docs) ->-                             {-# LINE 261 "./src-ag/PrintCleanCode.ag" #-}+                             {-# LINE 261 "src-ag/PrintCleanCode.ag" #-}                              _argsIpps `ppMultiSeqH` (pp "True")                              {-# LINE 2708 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule296 #-}-   {-# LINE 264 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 264 "src-ag/PrintCleanCode.ag" #-}    rule296 = \ ((_lhsIoptions) :: Options) ->-                      {-# LINE 264 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 264 "src-ag/PrintCleanCode.ag" #-}                       if bangpats _lhsIoptions                                then \p -> "!" >|< p                                else id                       {-# LINE 2716 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule297 #-}-   {-# LINE 272 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 272 "src-ag/PrintCleanCode.ag" #-}    rule297 = \ _addBang _addStrictGuard ((_argsIpps) :: PP_Docs) name_ ->-                               {-# LINE 272 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 272 "src-ag/PrintCleanCode.ag" #-}                                _addStrictGuard     (name_ >#< hv_sp (map _addBang     _argsIpps))                                {-# LINE 2722 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule298 #-}@@ -2747,9 +2747,9 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule301 #-}-   {-# LINE 273 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 273 "src-ag/PrintCleanCode.ag" #-}    rule301 = \ ((_subIpp) :: PP_Doc) name_ ->-                               {-# LINE 273 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 273 "src-ag/PrintCleanCode.ag" #-}                                pp_parens (name_ >#< _subIpp)                                {-# LINE 2755 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule302 #-}@@ -2774,8 +2774,8 @@ wrap_NamedType !(T_NamedType act) !(Inh_NamedType _lhsInested) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_NamedType_vIn34 _lhsInested-        !(T_NamedType_vOut34 _lhsOpp _lhsOppa) <- return (inv_NamedType_s35 sem arg)+        let arg34 = T_NamedType_vIn34 _lhsInested+        !(T_NamedType_vOut34 _lhsOpp _lhsOppa) <- return (inv_NamedType_s35 sem arg34)         return (Syn_NamedType _lhsOpp _lhsOppa)    ) @@ -2813,17 +2813,17 @@          in __result_ )      in C_NamedType_s35 v34    {-# INLINE rule306 #-}-   {-# LINE 240 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 240 "src-ag/PrintCleanCode.ag" #-}    rule306 = \ ((_tpIpp) :: PP_Doc) strict_ ->-                               {-# LINE 240 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 240 "src-ag/PrintCleanCode.ag" #-}                                if strict_                                  then "!" >|< pp_parens _tpIpp                                  else _tpIpp                                {-# LINE 2823 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule307 #-}-   {-# LINE 244 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 244 "src-ag/PrintCleanCode.ag" #-}    rule307 = \ name_ ->-                               {-# LINE 244 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 244 "src-ag/PrintCleanCode.ag" #-}                                pp name_                                {-# LINE 2829 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule308 #-}@@ -2839,8 +2839,8 @@ wrap_NamedTypes !(T_NamedTypes act) !(Inh_NamedTypes _lhsInested) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_NamedTypes_vIn37 _lhsInested-        !(T_NamedTypes_vOut37 _lhsOppas _lhsOpps) <- return (inv_NamedTypes_s38 sem arg)+        let arg37 = T_NamedTypes_vIn37 _lhsInested+        !(T_NamedTypes_vOut37 _lhsOppas _lhsOpps) <- return (inv_NamedTypes_s38 sem arg37)         return (Syn_NamedTypes _lhsOppas _lhsOpps)    ) @@ -2881,15 +2881,15 @@          in __result_ )      in C_NamedTypes_s38 v37    {-# INLINE rule309 #-}-   {-# LINE 86 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 86 "src-ag/PrintCleanCode.ag" #-}    rule309 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                      {-# LINE 86 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 86 "src-ag/PrintCleanCode.ag" #-}                       _hdIpp : _tlIpps                       {-# LINE 2889 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule310 #-}-   {-# LINE 87 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 87 "src-ag/PrintCleanCode.ag" #-}    rule310 = \ ((_hdIppa) :: PP_Doc) ((_tlIppas) :: PP_Docs) ->-                      {-# LINE 87 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 87 "src-ag/PrintCleanCode.ag" #-}                       _hdIppa : _tlIppas                       {-# LINE 2895 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule311 #-}@@ -2913,15 +2913,15 @@          in __result_ )      in C_NamedTypes_s38 v37    {-# INLINE rule313 #-}-   {-# LINE 88 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 88 "src-ag/PrintCleanCode.ag" #-}    rule313 = \  (_ :: ()) ->-                      {-# LINE 88 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 88 "src-ag/PrintCleanCode.ag" #-}                       []                       {-# LINE 2921 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule314 #-}-   {-# LINE 89 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 89 "src-ag/PrintCleanCode.ag" #-}    rule314 = \  (_ :: ()) ->-                      {-# LINE 89 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 89 "src-ag/PrintCleanCode.ag" #-}                       []                       {-# LINE 2927 "dist/build/PrintCleanCode.hs"#-} @@ -2934,8 +2934,8 @@ wrap_Pattern !(T_Pattern act) !(Inh_Pattern _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Pattern_vIn40 _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions-        !(T_Pattern_vOut40 _lhsOcopy _lhsOisUnderscore _lhsOpp _lhsOpp' _lhsOstrictVars) <- return (inv_Pattern_s41 sem arg)+        let arg40 = T_Pattern_vIn40 _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions+        !(T_Pattern_vOut40 _lhsOcopy _lhsOisUnderscore _lhsOpp _lhsOpp' _lhsOstrictVars) <- return (inv_Pattern_s41 sem arg40)         return (Syn_Pattern _lhsOcopy _lhsOisUnderscore _lhsOpp _lhsOpp' _lhsOstrictVars)    ) @@ -2987,29 +2987,29 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule315 #-}-   {-# LINE 378 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 378 "src-ag/PrintCleanCode.ag" #-}    rule315 = \ ((_lhsIbelowIrrefutable) :: Bool) ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) ->-                      {-# LINE 378 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 378 "src-ag/PrintCleanCode.ag" #-}                       if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable                       then \p -> "!" >|< p                       else id                       {-# LINE 2997 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule316 #-}-   {-# LINE 383 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 383 "src-ag/PrintCleanCode.ag" #-}    rule316 = \ _addBang ((_patsIpps) :: [PP_Doc]) name_ ->-                           {-# LINE 383 "./src-ag/PrintCleanCode.ag" #-}+                           {-# LINE 383 "src-ag/PrintCleanCode.ag" #-}                            _addBang     $ pp_parens $ name_ >#< hv_sp _patsIpps                            {-# LINE 3003 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule317 #-}-   {-# LINE 394 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 394 "src-ag/PrintCleanCode.ag" #-}    rule317 = \  (_ :: ()) ->-                                    {-# LINE 394 "./src-ag/PrintCleanCode.ag" #-}+                                    {-# LINE 394 "src-ag/PrintCleanCode.ag" #-}                                     False                                     {-# LINE 3009 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule318 #-}-   {-# LINE 417 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 417 "src-ag/PrintCleanCode.ag" #-}    rule318 = \ ((_patsIpps') :: [PP_Doc]) name_ ->-                            {-# LINE 417 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 417 "src-ag/PrintCleanCode.ag" #-}                             pp_parens $ name_ >#< hv_sp (map pp_parens _patsIpps')                             {-# LINE 3015 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule319 #-}@@ -3058,29 +3058,29 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule325 #-}-   {-# LINE 378 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 378 "src-ag/PrintCleanCode.ag" #-}    rule325 = \ ((_lhsIbelowIrrefutable) :: Bool) ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) ->-                      {-# LINE 378 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 378 "src-ag/PrintCleanCode.ag" #-}                       if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable                       then \p -> "!" >|< p                       else id                       {-# LINE 3068 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule326 #-}-   {-# LINE 384 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 384 "src-ag/PrintCleanCode.ag" #-}    rule326 = \ _addBang ((_patsIpps) :: [PP_Doc]) ->-                           {-# LINE 384 "./src-ag/PrintCleanCode.ag" #-}+                           {-# LINE 384 "src-ag/PrintCleanCode.ag" #-}                            _addBang     $ pp_block "(" ")" "," _patsIpps                            {-# LINE 3074 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule327 #-}-   {-# LINE 395 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 395 "src-ag/PrintCleanCode.ag" #-}    rule327 = \  (_ :: ()) ->-                                    {-# LINE 395 "./src-ag/PrintCleanCode.ag" #-}+                                    {-# LINE 395 "src-ag/PrintCleanCode.ag" #-}                                     False                                     {-# LINE 3080 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule328 #-}-   {-# LINE 418 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 418 "src-ag/PrintCleanCode.ag" #-}    rule328 = \ ((_patsIpps') :: [PP_Doc]) ->-                            {-# LINE 418 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 418 "src-ag/PrintCleanCode.ag" #-}                             pp_block "(" ")" "," _patsIpps'                             {-# LINE 3086 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule329 #-}@@ -3133,65 +3133,65 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule335 #-}-   {-# LINE 356 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 356 "src-ag/PrintCleanCode.ag" #-}    rule335 = \ ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) _ppVar ->-            {-# LINE 356 "./src-ag/PrintCleanCode.ag" #-}+            {-# LINE 356 "src-ag/PrintCleanCode.ag" #-}             if strictCases _lhsIoptions && not _lhsIisDeclOfLet             then [_ppVar    ]             else []             {-# LINE 3143 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule336 #-}-   {-# LINE 360 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 360 "src-ag/PrintCleanCode.ag" #-}    rule336 = \ ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) ((_patIstrictVars) :: [PP_Doc]) ->-            {-# LINE 360 "./src-ag/PrintCleanCode.ag" #-}+            {-# LINE 360 "src-ag/PrintCleanCode.ag" #-}             if stricterCases _lhsIoptions && not _lhsIisDeclOfLet             then _patIstrictVars             else []             {-# LINE 3151 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule337 #-}-   {-# LINE 364 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 364 "src-ag/PrintCleanCode.ag" #-}    rule337 = \ _strictPatVars _strictVar ->-            {-# LINE 364 "./src-ag/PrintCleanCode.ag" #-}+            {-# LINE 364 "src-ag/PrintCleanCode.ag" #-}             _strictVar     ++ _strictPatVars             {-# LINE 3157 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule338 #-}-   {-# LINE 378 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 378 "src-ag/PrintCleanCode.ag" #-}    rule338 = \ ((_lhsIbelowIrrefutable) :: Bool) ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) ->-                      {-# LINE 378 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 378 "src-ag/PrintCleanCode.ag" #-}                       if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable                       then \p -> "!" >|< p                       else id                       {-# LINE 3165 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule339 #-}-   {-# LINE 385 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 385 "src-ag/PrintCleanCode.ag" #-}    rule339 = \ ((_lhsIoptions) :: Options) attr_ field_ ->-                           {-# LINE 385 "./src-ag/PrintCleanCode.ag" #-}+                           {-# LINE 385 "src-ag/PrintCleanCode.ag" #-}                            pp (attrname _lhsIoptions False field_ attr_)                            {-# LINE 3171 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule340 #-}-   {-# LINE 386 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 386 "src-ag/PrintCleanCode.ag" #-}    rule340 = \ _addBang _ppVar ->-                              {-# LINE 386 "./src-ag/PrintCleanCode.ag" #-}+                              {-# LINE 386 "src-ag/PrintCleanCode.ag" #-}                               _addBang     $ _ppVar                               {-# LINE 3177 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule341 #-}-   {-# LINE 387 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 387 "src-ag/PrintCleanCode.ag" #-}    rule341 = \ ((_patIisUnderscore) :: Bool) ((_patIpp) :: PP_Doc) _ppVarBang ->-                           {-# LINE 387 "./src-ag/PrintCleanCode.ag" #-}+                           {-# LINE 387 "src-ag/PrintCleanCode.ag" #-}                            if _patIisUnderscore                             then _ppVarBang                             else _ppVarBang     >|< "@" >|< _patIpp                            {-# LINE 3185 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule342 #-}-   {-# LINE 396 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 396 "src-ag/PrintCleanCode.ag" #-}    rule342 = \  (_ :: ()) ->-                                    {-# LINE 396 "./src-ag/PrintCleanCode.ag" #-}+                                    {-# LINE 396 "src-ag/PrintCleanCode.ag" #-}                                     False                                     {-# LINE 3191 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule343 #-}-   {-# LINE 419 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 419 "src-ag/PrintCleanCode.ag" #-}    rule343 = \ ((_lhsIoptions) :: Options) ((_patIpp') :: PP_Doc) attr_ field_ ->-                            {-# LINE 419 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 419 "src-ag/PrintCleanCode.ag" #-}                             let attribute | field_ == _LOC || field_ == nullIdent = locname' attr_                                           | otherwise                             = attrname _lhsIoptions False field_ attr_                             in attribute >|< "@" >|< _patIpp'@@ -3238,27 +3238,27 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule349 #-}-   {-# LINE 366 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 366 "src-ag/PrintCleanCode.ag" #-}    rule349 = \  (_ :: ()) ->-                         {-# LINE 366 "./src-ag/PrintCleanCode.ag" #-}+                         {-# LINE 366 "src-ag/PrintCleanCode.ag" #-}                          []                          {-# LINE 3246 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule350 #-}-   {-# LINE 390 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 390 "src-ag/PrintCleanCode.ag" #-}    rule350 = \ ((_patIpp) :: PP_Doc) ->-                           {-# LINE 390 "./src-ag/PrintCleanCode.ag" #-}+                           {-# LINE 390 "src-ag/PrintCleanCode.ag" #-}                            text "~" >|< pp_parens _patIpp                            {-# LINE 3252 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule351 #-}-   {-# LINE 402 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 402 "src-ag/PrintCleanCode.ag" #-}    rule351 = \  (_ :: ()) ->-                               {-# LINE 402 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 402 "src-ag/PrintCleanCode.ag" #-}                                True                                {-# LINE 3258 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule352 #-}-   {-# LINE 422 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 422 "src-ag/PrintCleanCode.ag" #-}    rule352 = \ ((_patIpp) :: PP_Doc) ->-                            {-# LINE 422 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 422 "src-ag/PrintCleanCode.ag" #-}                             text "~" >|< pp_parens _patIpp                             {-# LINE 3264 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule353 #-}@@ -3298,21 +3298,21 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule358 #-}-   {-# LINE 391 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 391 "src-ag/PrintCleanCode.ag" #-}    rule358 = \  (_ :: ()) ->-                           {-# LINE 391 "./src-ag/PrintCleanCode.ag" #-}+                           {-# LINE 391 "src-ag/PrintCleanCode.ag" #-}                            text "_"                            {-# LINE 3306 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule359 #-}-   {-# LINE 397 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 397 "src-ag/PrintCleanCode.ag" #-}    rule359 = \  (_ :: ()) ->-                                    {-# LINE 397 "./src-ag/PrintCleanCode.ag" #-}+                                    {-# LINE 397 "src-ag/PrintCleanCode.ag" #-}                                     True                                     {-# LINE 3312 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule360 #-}-   {-# LINE 423 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 423 "src-ag/PrintCleanCode.ag" #-}    rule360 = \  (_ :: ()) ->-                            {-# LINE 423 "./src-ag/PrintCleanCode.ag" #-}+                            {-# LINE 423 "src-ag/PrintCleanCode.ag" #-}                             text "_"                             {-# LINE 3318 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule361 #-}@@ -3334,8 +3334,8 @@ wrap_Patterns !(T_Patterns act) !(Inh_Patterns _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Patterns_vIn43 _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions-        !(T_Patterns_vOut43 _lhsOcopy _lhsOpps _lhsOpps' _lhsOstrictVars) <- return (inv_Patterns_s44 sem arg)+        let arg43 = T_Patterns_vIn43 _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions+        !(T_Patterns_vOut43 _lhsOcopy _lhsOpps _lhsOpps' _lhsOstrictVars) <- return (inv_Patterns_s44 sem arg43)         return (Syn_Patterns _lhsOcopy _lhsOpps _lhsOpps' _lhsOstrictVars)    ) @@ -3385,15 +3385,15 @@          in __result_ )      in C_Patterns_s44 v43    {-# INLINE rule364 #-}-   {-# LINE 373 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 373 "src-ag/PrintCleanCode.ag" #-}    rule364 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: [PP_Doc]) ->-                     {-# LINE 373 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 373 "src-ag/PrintCleanCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 3393 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule365 #-}-   {-# LINE 413 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 413 "src-ag/PrintCleanCode.ag" #-}    rule365 = \ ((_hdIpp') :: PP_Doc) ((_tlIpps') :: [PP_Doc]) ->-                      {-# LINE 413 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 413 "src-ag/PrintCleanCode.ag" #-}                       _hdIpp' : _tlIpps'                       {-# LINE 3399 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule366 #-}@@ -3443,15 +3443,15 @@          in __result_ )      in C_Patterns_s44 v43    {-# INLINE rule375 #-}-   {-# LINE 374 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 374 "src-ag/PrintCleanCode.ag" #-}    rule375 = \  (_ :: ()) ->-                     {-# LINE 374 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 374 "src-ag/PrintCleanCode.ag" #-}                      []                      {-# LINE 3451 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule376 #-}-   {-# LINE 414 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 414 "src-ag/PrintCleanCode.ag" #-}    rule376 = \  (_ :: ()) ->-                      {-# LINE 414 "./src-ag/PrintCleanCode.ag" #-}+                      {-# LINE 414 "src-ag/PrintCleanCode.ag" #-}                       []                       {-# LINE 3457 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule377 #-}@@ -3473,8 +3473,8 @@ wrap_Program !(T_Program act) !(Inh_Program _lhsIimportBlocks _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Program_vIn46 _lhsIimportBlocks _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks-        !(T_Program_vOut46 _lhsOgenIO _lhsOoutput) <- return (inv_Program_s47 sem arg)+        let arg46 = T_Program_vIn46 _lhsIimportBlocks _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks+        !(T_Program_vOut46 _lhsOgenIO _lhsOoutput) <- return (inv_Program_s47 sem arg46)         return (Syn_Program _lhsOgenIO _lhsOoutput)    ) @@ -3527,39 +3527,39 @@          in __result_ )      in C_Program_s47 v46    {-# INLINE rule380 #-}-   {-# LINE 62 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 62 "src-ag/PrintCleanCode.ag" #-}    rule380 = \ ((_lhsIoptions) :: Options) ordered_ ->-                  {-# LINE 62 "./src-ag/PrintCleanCode.ag" #-}+                  {-# LINE 62 "src-ag/PrintCleanCode.ag" #-}                   _lhsIoptions { breadthFirst = breadthFirst _lhsIoptions && visit _lhsIoptions && cases _lhsIoptions && ordered_ }                   {-# LINE 3535 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule381 #-}-   {-# LINE 65 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 65 "src-ag/PrintCleanCode.ag" #-}    rule381 = \ ((_lhsIoptions) :: Options) ->-                              {-# LINE 65 "./src-ag/PrintCleanCode.ag" #-}+                              {-# LINE 65 "src-ag/PrintCleanCode.ag" #-}                               nest _lhsIoptions                               {-# LINE 3541 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule382 #-}-   {-# LINE 101 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 101 "src-ag/PrintCleanCode.ag" #-}    rule382 = \ ((_chunksIpps) :: PP_Docs) ->-                               {-# LINE 101 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 101 "src-ag/PrintCleanCode.ag" #-}                                _chunksIpps                                {-# LINE 3547 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule383 #-}-   {-# LINE 437 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 437 "src-ag/PrintCleanCode.ag" #-}    rule383 = \  (_ :: ()) ->-                             {-# LINE 437 "./src-ag/PrintCleanCode.ag" #-}+                             {-# LINE 437 "src-ag/PrintCleanCode.ag" #-}                              False                              {-# LINE 3553 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule384 #-}-   {-# LINE 471 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 471 "src-ag/PrintCleanCode.ag" #-}    rule384 = \ ((_lhsImainFile) :: String) ->-                             {-# LINE 471 "./src-ag/PrintCleanCode.ag" #-}+                             {-# LINE 471 "src-ag/PrintCleanCode.ag" #-}                              _lhsImainFile                              {-# LINE 3559 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule385 #-}-   {-# LINE 473 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 473 "src-ag/PrintCleanCode.ag" #-}    rule385 = \ ((_chunksIappendMain) :: [[PP_Doc]]) ((_chunksIimports) :: [String]) ((_lhsImainBlocksDoc) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptionsLine) :: String) ((_lhsIpragmaBlocks) :: String) _mainModuleFile ->-            {-# LINE 473 "./src-ag/PrintCleanCode.ag" #-}+            {-# LINE 473 "src-ag/PrintCleanCode.ag" #-}             writeModule _mainModuleFile               ( [ pp $ _lhsIpragmaBlocks                 , pp $ _lhsIoptionsLine@@ -3572,15 +3572,15 @@               )             {-# LINE 3574 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule386 #-}-   {-# LINE 484 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 484 "src-ag/PrintCleanCode.ag" #-}    rule386 = \ ((_lhsImainFile) :: String) ->-                         {-# LINE 484 "./src-ag/PrintCleanCode.ag" #-}+                         {-# LINE 484 "src-ag/PrintCleanCode.ag" #-}                          replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ "_common")                          {-# LINE 3580 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule387 #-}-   {-# LINE 486 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 486 "src-ag/PrintCleanCode.ag" #-}    rule387 = \ ((_chunksIappendCommon) :: [[PP_Doc]]) _commonFile ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptionsLine) :: String) ((_lhsIpragmaBlocks) :: String) ((_lhsItextBlocks) :: PP_Doc) ->-            {-# LINE 486 "./src-ag/PrintCleanCode.ag" #-}+            {-# LINE 486 "src-ag/PrintCleanCode.ag" #-}             writeModule _commonFile                 ( [ pp $ _lhsIpragmaBlocks                   , pp $ _lhsIoptionsLine@@ -3592,9 +3592,9 @@                 )             {-# LINE 3594 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule388 #-}-   {-# LINE 496 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 496 "src-ag/PrintCleanCode.ag" #-}    rule388 = \ ((_chunksIgenSems) :: IO ()) _genCommonModule _genMainModule ->-                    {-# LINE 496 "./src-ag/PrintCleanCode.ag" #-}+                    {-# LINE 496 "src-ag/PrintCleanCode.ag" #-}                     do _genMainModule                        _genCommonModule                        _chunksIgenSems@@ -3636,8 +3636,8 @@ wrap_Type !(T_Type act) !(Inh_Type _lhsInested) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Type_vIn49 _lhsInested-        !(T_Type_vOut49 _lhsOcopy _lhsOpp _lhsOprec) <- return (inv_Type_s50 sem arg)+        let arg49 = T_Type_vIn49 _lhsInested+        !(T_Type_vOut49 _lhsOcopy _lhsOpp _lhsOprec) <- return (inv_Type_s50 sem arg49)         return (Syn_Type _lhsOcopy _lhsOpp _lhsOprec)    ) @@ -3697,29 +3697,29 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule398 #-}-   {-# LINE 276 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 276 "src-ag/PrintCleanCode.ag" #-}    rule398 = \  (_ :: ()) ->-                               {-# LINE 276 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 276 "src-ag/PrintCleanCode.ag" #-}                                2                                {-# LINE 3705 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule399 #-}-   {-# LINE 277 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 277 "src-ag/PrintCleanCode.ag" #-}    rule399 = \ _l _r ((_rightIcopy) :: Type) ->-                               {-# LINE 277 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 277 "src-ag/PrintCleanCode.ag" #-}                                case _rightIcopy of                                  Arr{} -> _l     >-< _r                                  _     -> _l     >#< "->" >-< _r                                {-# LINE 3713 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule400 #-}-   {-# LINE 280 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 280 "src-ag/PrintCleanCode.ag" #-}    rule400 = \ ((_leftIpp) :: PP_Doc) ((_leftIprec) :: Int) ->-                               {-# LINE 280 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 280 "src-ag/PrintCleanCode.ag" #-}                                if _leftIprec  <= 2 then pp_parens _leftIpp  else _leftIpp                                {-# LINE 3719 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule401 #-}-   {-# LINE 281 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 281 "src-ag/PrintCleanCode.ag" #-}    rule401 = \ ((_rightIpp) :: PP_Doc) ((_rightIprec) :: Int) ->-                               {-# LINE 281 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 281 "src-ag/PrintCleanCode.ag" #-}                                if _rightIprec <  2 then pp_parens _rightIpp else _rightIpp                                {-# LINE 3725 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule402 #-}@@ -3755,9 +3755,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule406 #-}-   {-# LINE 287 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 287 "src-ag/PrintCleanCode.ag" #-}    rule406 = \ ((_rightIpp) :: PP_Doc) left_ ->-                 {-# LINE 287 "./src-ag/PrintCleanCode.ag" #-}+                 {-# LINE 287 "src-ag/PrintCleanCode.ag" #-}                  _rightIpp >#< " | " >#< (pp_block "" "" "&" $ map (\(n,ns) -> hv_sp $ map pp (n:ns)) left_)                  {-# LINE 3763 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule407 #-}@@ -3793,9 +3793,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule411 #-}-   {-# LINE 289 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 289 "src-ag/PrintCleanCode.ag" #-}    rule411 = \ ((_rightIpp) :: PP_Doc) left_ ->-                 {-# LINE 289 "./src-ag/PrintCleanCode.ag" #-}+                 {-# LINE 289 "src-ag/PrintCleanCode.ag" #-}                  left_ >#< _rightIpp                  {-# LINE 3801 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule412 #-}@@ -3834,9 +3834,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule416 #-}-   {-# LINE 284 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 284 "src-ag/PrintCleanCode.ag" #-}    rule416 = \ ((_argsIpps) :: PP_Docs) ((_funcIpp) :: PP_Doc) ->-                 {-# LINE 284 "./src-ag/PrintCleanCode.ag" #-}+                 {-# LINE 284 "src-ag/PrintCleanCode.ag" #-}                  pp "(" >#< hv_sp (_funcIpp : _argsIpps) >#< pp ")"                  {-# LINE 3842 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule417 #-}@@ -3875,15 +3875,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule422 #-}-   {-# LINE 291 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 291 "src-ag/PrintCleanCode.ag" #-}    rule422 = \  (_ :: ()) ->-                               {-# LINE 291 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 291 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 3883 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule423 #-}-   {-# LINE 292 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 292 "src-ag/PrintCleanCode.ag" #-}    rule423 = \ ((_lhsInested) :: Bool) ((_tpsIpps) :: PP_Docs) ->-                               {-# LINE 292 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 292 "src-ag/PrintCleanCode.ag" #-}                                ppTuple _lhsInested _tpsIpps                                {-# LINE 3889 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule424 #-}@@ -3916,15 +3916,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule427 #-}-   {-# LINE 294 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 294 "src-ag/PrintCleanCode.ag" #-}    rule427 = \  (_ :: ()) ->-                                      {-# LINE 294 "./src-ag/PrintCleanCode.ag" #-}+                                      {-# LINE 294 "src-ag/PrintCleanCode.ag" #-}                                       5                                       {-# LINE 3924 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule428 #-}-   {-# LINE 295 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 295 "src-ag/PrintCleanCode.ag" #-}    rule428 = \ ((_lhsInested) :: Bool) ((_tpsIpps) :: PP_Docs) ->-                                      {-# LINE 295 "./src-ag/PrintCleanCode.ag" #-}+                                      {-# LINE 295 "src-ag/PrintCleanCode.ag" #-}                                       ppUnboxedTuple _lhsInested _tpsIpps                                       {-# LINE 3930 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule429 #-}@@ -3957,15 +3957,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule432 #-}-   {-# LINE 297 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 297 "src-ag/PrintCleanCode.ag" #-}    rule432 = \  (_ :: ()) ->-                               {-# LINE 297 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 297 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 3965 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule433 #-}-   {-# LINE 298 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 298 "src-ag/PrintCleanCode.ag" #-}    rule433 = \ ((_tpIpp) :: PP_Doc) ->-                               {-# LINE 298 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 298 "src-ag/PrintCleanCode.ag" #-}                                "[" >|< _tpIpp >|< "]"                                {-# LINE 3971 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule434 #-}@@ -3995,15 +3995,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule437 #-}-   {-# LINE 300 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 300 "src-ag/PrintCleanCode.ag" #-}    rule437 = \  (_ :: ()) ->-                               {-# LINE 300 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 300 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 4003 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule438 #-}-   {-# LINE 301 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 301 "src-ag/PrintCleanCode.ag" #-}    rule438 = \ txt_ ->-                               {-# LINE 301 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 301 "src-ag/PrintCleanCode.ag" #-}                                if reallySimple txt_ then text txt_ else pp_parens (text txt_)                                {-# LINE 4009 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule439 #-}@@ -4031,21 +4031,21 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule441 #-}-   {-# LINE 303 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 303 "src-ag/PrintCleanCode.ag" #-}    rule441 = \  (_ :: ()) ->-                               {-# LINE 303 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 303 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 4039 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule442 #-}-   {-# LINE 304 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 304 "src-ag/PrintCleanCode.ag" #-}    rule442 = \ _prefix name_ params_ ->-                               {-# LINE 304 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 304 "src-ag/PrintCleanCode.ag" #-}                                _prefix     >|< text name_ >#< hv_sp params_                                {-# LINE 4045 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule443 #-}-   {-# LINE 305 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 305 "src-ag/PrintCleanCode.ag" #-}    rule443 = \ deforested_ ->-                                {-# LINE 305 "./src-ag/PrintCleanCode.ag" #-}+                                {-# LINE 305 "src-ag/PrintCleanCode.ag" #-}                                 if deforested_                                 then text "T_"                                 else empty@@ -4077,15 +4077,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule446 #-}-   {-# LINE 308 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 308 "src-ag/PrintCleanCode.ag" #-}    rule446 = \  (_ :: ()) ->-                               {-# LINE 308 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 308 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 4085 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule447 #-}-   {-# LINE 309 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 309 "src-ag/PrintCleanCode.ag" #-}    rule447 = \ ((_tpIpp) :: PP_Doc) ->-                               {-# LINE 309 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 309 "src-ag/PrintCleanCode.ag" #-}                                text "Maybe" >#< pp_parens _tpIpp                                {-# LINE 4091 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule448 #-}@@ -4121,15 +4121,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule451 #-}-   {-# LINE 310 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 310 "src-ag/PrintCleanCode.ag" #-}    rule451 = \  (_ :: ()) ->-                               {-# LINE 310 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 310 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 4129 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule452 #-}-   {-# LINE 311 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 311 "src-ag/PrintCleanCode.ag" #-}    rule452 = \ ((_leftIpp) :: PP_Doc) ((_rightIpp) :: PP_Doc) ->-                               {-# LINE 311 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 311 "src-ag/PrintCleanCode.ag" #-}                                text "Either" >#< pp_parens _leftIpp >#< pp_parens _rightIpp                                {-# LINE 4135 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule453 #-}@@ -4168,15 +4168,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule457 #-}-   {-# LINE 312 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 312 "src-ag/PrintCleanCode.ag" #-}    rule457 = \  (_ :: ()) ->-                               {-# LINE 312 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 312 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 4176 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule458 #-}-   {-# LINE 313 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 313 "src-ag/PrintCleanCode.ag" #-}    rule458 = \ ((_keyIpp) :: PP_Doc) ((_valueIpp) :: PP_Doc) ->-                               {-# LINE 313 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 313 "src-ag/PrintCleanCode.ag" #-}                                text "'Data.Map'.Map" >#< pp_parens _keyIpp >#< pp_parens _valueIpp                                {-# LINE 4182 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule459 #-}@@ -4212,15 +4212,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule463 #-}-   {-# LINE 314 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 314 "src-ag/PrintCleanCode.ag" #-}    rule463 = \  (_ :: ()) ->-                               {-# LINE 314 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 314 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 4220 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule464 #-}-   {-# LINE 315 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 315 "src-ag/PrintCleanCode.ag" #-}    rule464 = \ ((_valueIpp) :: PP_Doc) ->-                               {-# LINE 315 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 315 "src-ag/PrintCleanCode.ag" #-}                                text "'Data.IntMap'.IntMap" >#< pp_parens _valueIpp                                {-# LINE 4226 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule465 #-}@@ -4253,15 +4253,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule468 #-}-   {-# LINE 316 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 316 "src-ag/PrintCleanCode.ag" #-}    rule468 = \  (_ :: ()) ->-                               {-# LINE 316 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 316 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 4261 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule469 #-}-   {-# LINE 317 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 317 "src-ag/PrintCleanCode.ag" #-}    rule469 = \ ((_tpIpp) :: PP_Doc) ->-                               {-# LINE 317 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 317 "src-ag/PrintCleanCode.ag" #-}                                text "'Data.Set'.Set" >#< pp_parens _tpIpp                                {-# LINE 4267 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule470 #-}@@ -4291,15 +4291,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule473 #-}-   {-# LINE 318 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 318 "src-ag/PrintCleanCode.ag" #-}    rule473 = \  (_ :: ()) ->-                               {-# LINE 318 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 318 "src-ag/PrintCleanCode.ag" #-}                                5                                {-# LINE 4299 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule474 #-}-   {-# LINE 319 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 319 "src-ag/PrintCleanCode.ag" #-}    rule474 = \  (_ :: ()) ->-                               {-# LINE 319 "./src-ag/PrintCleanCode.ag" #-}+                               {-# LINE 319 "src-ag/PrintCleanCode.ag" #-}                                text "'Data.IntSet'.IntSet"                                {-# LINE 4305 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule475 #-}@@ -4318,8 +4318,8 @@ wrap_Types !(T_Types act) !(Inh_Types _lhsInested) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Types_vIn52 _lhsInested-        !(T_Types_vOut52 _lhsOcopy _lhsOpps) <- return (inv_Types_s53 sem arg)+        let arg52 = T_Types_vIn52 _lhsInested+        !(T_Types_vOut52 _lhsOcopy _lhsOpps) <- return (inv_Types_s53 sem arg52)         return (Syn_Types _lhsOcopy _lhsOpps)    ) @@ -4361,9 +4361,9 @@          in __result_ )      in C_Types_s53 v52    {-# INLINE rule477 #-}-   {-# LINE 82 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 82 "src-ag/PrintCleanCode.ag" #-}    rule477 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 82 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 82 "src-ag/PrintCleanCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 4369 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule478 #-}@@ -4394,9 +4394,9 @@          in __result_ )      in C_Types_s53 v52    {-# INLINE rule482 #-}-   {-# LINE 83 "./src-ag/PrintCleanCode.ag" #-}+   {-# LINE 83 "src-ag/PrintCleanCode.ag" #-}    rule482 = \  (_ :: ()) ->-                     {-# LINE 83 "./src-ag/PrintCleanCode.ag" #-}+                     {-# LINE 83 "src-ag/PrintCleanCode.ag" #-}                      []                      {-# LINE 4402 "dist/build/PrintCleanCode.hs"#-}    {-# INLINE rule483 #-}
src-generated/PrintCode.hs view
@@ -3,14 +3,14 @@ {-# LANGUAGE ScopedTypeVariables #-}  module PrintCode where-{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 12 "dist/build/PrintCode.hs" #-} -{-# LINE 2 "./src-ag/Code.ag" #-}+{-# LINE 2 "src-ag/Code.ag" #-}  import Patterns import Data.Set(Set)@@ -19,7 +19,7 @@ import qualified Data.Map as Map {-# LINE 21 "dist/build/PrintCode.hs" #-} -{-# LINE 10 "./src-ag/PrintCode.ag" #-}+{-# LINE 10 "src-ag/PrintCode.ag" #-}  import Data.Char (isAlphaNum) import Pretty@@ -34,7 +34,7 @@ {-# LINE 35 "dist/build/PrintCode.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 146 "./src-ag/Code.ag" #-}+{-# LINE 146 "src-ag/Code.ag" #-}  -- Unboxed tuples --   unbox  Whether unboxed tuples are wanted or not@@ -53,12 +53,12 @@                                | otherwise                                = UnboxedTupleLhs comps {-# LINE 55 "dist/build/PrintCode.hs" #-} -{-# LINE 23 "./src-ag/PrintCode.ag" #-}+{-# LINE 23 "src-ag/PrintCode.ag" #-}  type PP_Docs = [PP_Doc] {-# LINE 60 "dist/build/PrintCode.hs" #-} -{-# LINE 27 "./src-ag/PrintCode.ag" #-}+{-# LINE 27 "src-ag/PrintCode.ag" #-}  ppMultiSeqH :: [PP_Doc] -> PP_Doc -> PP_Doc ppMultiSeqH = ppMultiSeq' (>#<)@@ -71,7 +71,7 @@   = foldr (\v r -> (v >#< "`seq`") `next` pp_parens r) expr strictArgs {-# LINE 73 "dist/build/PrintCode.hs" #-} -{-# LINE 303 "./src-ag/PrintCode.ag" #-}+{-# LINE 303 "src-ag/PrintCode.ag" #-}   reallySimple :: String -> Bool@@ -86,19 +86,19 @@  {-# LINE 88 "dist/build/PrintCode.hs" #-} -{-# LINE 404 "./src-ag/PrintCode.ag" #-}+{-# LINE 404 "src-ag/PrintCode.ag" #-}  locname' :: Identifier -> [Char] locname' n = "_loc_" ++ getName n {-# LINE 94 "dist/build/PrintCode.hs" #-} -{-# LINE 479 "./src-ag/PrintCode.ag" #-}+{-# LINE 479 "src-ag/PrintCode.ag" #-}  renderDocs :: [PP_Doc] -> String renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) "" {-# LINE 100 "dist/build/PrintCode.hs" #-} -{-# LINE 527 "./src-ag/PrintCode.ag" #-}+{-# LINE 527 "src-ag/PrintCode.ag" #-}  writeModule :: FilePath -> [PP_Doc] -> IO () writeModule path docs@@ -123,8 +123,8 @@ wrap_CaseAlt !(T_CaseAlt act) !(Inh_CaseAlt _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_CaseAlt_vIn1 _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_CaseAlt_vOut1 _lhsOpps) <- return (inv_CaseAlt_s2 sem arg)+        let arg1 = T_CaseAlt_vIn1 _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_CaseAlt_vOut1 _lhsOpps) <- return (inv_CaseAlt_s2 sem arg1)         return (Syn_CaseAlt _lhsOpps)    ) @@ -168,15 +168,15 @@          in __result_ )      in C_CaseAlt_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 218 "./src-ag/PrintCode.ag" #-}+   {-# LINE 218 "src-ag/PrintCode.ag" #-}    rule0 = \ ((_exprIpp) :: PP_Doc) ((_leftIpp) :: PP_Doc) ->-                               {-# LINE 218 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 218 "src-ag/PrintCode.ag" #-}                                ["{" >#< _leftIpp >#< "->", _exprIpp >#< "}"]                                {-# LINE 176 "dist/build/PrintCode.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 428 "./src-ag/PrintCode.ag" #-}+   {-# LINE 428 "src-ag/PrintCode.ag" #-}    rule1 = \  (_ :: ()) ->-                           {-# LINE 428 "./src-ag/PrintCode.ag" #-}+                           {-# LINE 428 "src-ag/PrintCode.ag" #-}                            False                            {-# LINE 182 "dist/build/PrintCode.hs"#-}    {-# INLINE rule2 #-}@@ -207,8 +207,8 @@ wrap_CaseAlts !(T_CaseAlts act) !(Inh_CaseAlts _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_CaseAlts_vIn4 _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_CaseAlts_vOut4 _lhsOpps) <- return (inv_CaseAlts_s5 sem arg)+        let arg4 = T_CaseAlts_vIn4 _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_CaseAlts_vOut4 _lhsOpps) <- return (inv_CaseAlts_s5 sem arg4)         return (Syn_CaseAlts _lhsOpps)    ) @@ -251,9 +251,9 @@          in __result_ )      in C_CaseAlts_s5 v4    {-# INLINE rule8 #-}-   {-# LINE 68 "./src-ag/PrintCode.ag" #-}+   {-# LINE 68 "src-ag/PrintCode.ag" #-}    rule8 = \ ((_hdIpps) :: PP_Docs) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 68 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 68 "src-ag/PrintCode.ag" #-}                      _hdIpps ++ _tlIpps                      {-# LINE 259 "dist/build/PrintCode.hs"#-}    {-# INLINE rule9 #-}@@ -287,9 +287,9 @@          in __result_ )      in C_CaseAlts_s5 v4    {-# INLINE rule15 #-}-   {-# LINE 69 "./src-ag/PrintCode.ag" #-}+   {-# LINE 69 "src-ag/PrintCode.ag" #-}    rule15 = \  (_ :: ()) ->-                     {-# LINE 69 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 69 "src-ag/PrintCode.ag" #-}                      []                      {-# LINE 295 "dist/build/PrintCode.hs"#-} @@ -302,8 +302,8 @@ wrap_Chunk !(T_Chunk act) !(Inh_Chunk _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Chunk_vIn7 _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks-        !(T_Chunk_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps) <- return (inv_Chunk_s8 sem arg)+        let arg7 = T_Chunk_vIn7 _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks+        !(T_Chunk_vOut7 _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps) <- return (inv_Chunk_s8 sem arg7)         return (Syn_Chunk _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps)    ) @@ -388,17 +388,17 @@          in __result_ )      in C_Chunk_s8 v7    {-# INLINE rule16 #-}-   {-# LINE 43 "./src-ag/PrintCode.ag" #-}+   {-# LINE 43 "src-ag/PrintCode.ag" #-}    rule16 = \ ((_lhsImainFile) :: String) ((_lhsIoptions) :: Options) name_ ->-                         {-# LINE 43 "./src-ag/PrintCode.ag" #-}+                         {-# LINE 43 "src-ag/PrintCode.ag" #-}                          if sepSemMods _lhsIoptions                          then replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ "_" ++ name_)                          else _lhsImainFile                          {-# LINE 398 "dist/build/PrintCode.hs"#-}    {-# INLINE rule17 #-}-   {-# LINE 96 "./src-ag/PrintCode.ag" #-}+   {-# LINE 96 "src-ag/PrintCode.ag" #-}    rule17 = \ ((_cataFunIpps) :: PP_Docs) ((_commentIpp) :: PP_Doc) ((_dataDefIpps) :: PP_Docs) ((_infoIpps) :: PP_Docs) ((_lhsItextBlockMap) :: Map BlockInfo PP_Doc) ((_semDomIpps) :: PP_Docs) ((_semFunctionsIpps) :: PP_Docs) ((_semWrapperIpps) :: PP_Docs) name_ ->-                                {-# LINE 96 "./src-ag/PrintCode.ag" #-}+                                {-# LINE 96 "src-ag/PrintCode.ag" #-}                                 _commentIpp                                 :  _infoIpps                                 ++ _dataDefIpps@@ -409,15 +409,15 @@                                 ++ [Map.findWithDefault empty (BlockOther, Just $ identifier name_) _lhsItextBlockMap]                                 {-# LINE 411 "dist/build/PrintCode.hs"#-}    {-# INLINE rule18 #-}-   {-# LINE 487 "./src-ag/PrintCode.ag" #-}+   {-# LINE 487 "src-ag/PrintCode.ag" #-}    rule18 = \ ((_lhsImainName) :: String) name_ ->-                      {-# LINE 487 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 487 "src-ag/PrintCode.ag" #-}                       ["import " ++ _lhsImainName ++ "_" ++ name_ ++ "\n"]                       {-# LINE 417 "dist/build/PrintCode.hs"#-}    {-# INLINE rule19 #-}-   {-# LINE 494 "./src-ag/PrintCode.ag" #-}+   {-# LINE 494 "src-ag/PrintCode.ag" #-}    rule19 = \ ((_commentIpp) :: PP_Doc) ((_dataDefIpps) :: PP_Docs) ((_lhsIoptions) :: Options) ((_semDomIpps) :: PP_Docs) ((_semWrapperIpps) :: PP_Docs) ->-            {-# LINE 494 "./src-ag/PrintCode.ag" #-}+            {-# LINE 494 "src-ag/PrintCode.ag" #-}             [ [_commentIpp]             , _dataDefIpps             , _semDomIpps@@ -425,18 +425,18 @@             ]             {-# LINE 427 "dist/build/PrintCode.hs"#-}    {-# INLINE rule20 #-}-   {-# LINE 500 "./src-ag/PrintCode.ag" #-}+   {-# LINE 500 "src-ag/PrintCode.ag" #-}    rule20 = \ ((_cataFunIpps) :: PP_Docs) ((_commentIpp) :: PP_Doc) ((_lhsIoptions) :: Options) ((_semWrapperIpps) :: PP_Docs) ->-            {-# LINE 500 "./src-ag/PrintCode.ag" #-}+            {-# LINE 500 "src-ag/PrintCode.ag" #-}             [ [_commentIpp]             , _cataFunIpps             , if reference _lhsIoptions then [] else _semWrapperIpps             ]             {-# LINE 436 "dist/build/PrintCode.hs"#-}    {-# INLINE rule21 #-}-   {-# LINE 510 "./src-ag/PrintCode.ag" #-}+   {-# LINE 510 "src-ag/PrintCode.ag" #-}    rule21 = \ ((_commentIpp) :: PP_Doc) _exports ((_infoIpps) :: PP_Docs) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptionsLine) :: String) ((_lhsIpragmaBlocks) :: String) ((_lhsItextBlockMap) :: Map BlockInfo PP_Doc) _outputfile ((_semFunctionsIpps) :: PP_Docs) name_ ->-            {-# LINE 510 "./src-ag/PrintCode.ag" #-}+            {-# LINE 510 "src-ag/PrintCode.ag" #-}             writeModule _outputfile               [ pp $ _lhsIpragmaBlocks               , pp $ Map.findWithDefault empty (BlockPragma, Just $ identifier name_) _lhsItextBlockMap@@ -451,9 +451,9 @@               ]             {-# LINE 453 "dist/build/PrintCode.hs"#-}    {-# INLINE rule22 #-}-   {-# LINE 525 "./src-ag/PrintCode.ag" #-}+   {-# LINE 525 "src-ag/PrintCode.ag" #-}    rule22 = \ semNames_ ->-                      {-# LINE 525 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 525 "src-ag/PrintCode.ag" #-}                       concat $ intersperse "," semNames_                       {-# LINE 459 "dist/build/PrintCode.hs"#-}    {-# INLINE rule23 #-}@@ -550,8 +550,8 @@ wrap_Chunks !(T_Chunks act) !(Inh_Chunks _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Chunks_vIn10 _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks-        !(T_Chunks_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps) <- return (inv_Chunks_s11 sem arg)+        let arg10 = T_Chunks_vIn10 _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks+        !(T_Chunks_vOut10 _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps) <- return (inv_Chunks_s11 sem arg10)         return (Syn_Chunks _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps)    ) @@ -618,9 +618,9 @@          in __result_ )      in C_Chunks_s11 v10    {-# INLINE rule51 #-}-   {-# LINE 88 "./src-ag/PrintCode.ag" #-}+   {-# LINE 88 "src-ag/PrintCode.ag" #-}    rule51 = \ ((_hdIpps) :: PP_Docs) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 88 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 88 "src-ag/PrintCode.ag" #-}                      _hdIpps ++ _tlIpps                      {-# LINE 626 "dist/build/PrintCode.hs"#-}    {-# INLINE rule52 #-}@@ -722,9 +722,9 @@          in __result_ )      in C_Chunks_s11 v10    {-# INLINE rule78 #-}-   {-# LINE 89 "./src-ag/PrintCode.ag" #-}+   {-# LINE 89 "src-ag/PrintCode.ag" #-}    rule78 = \  (_ :: ()) ->-                     {-# LINE 89 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 89 "src-ag/PrintCode.ag" #-}                      []                      {-# LINE 730 "dist/build/PrintCode.hs"#-}    {-# INLINE rule79 #-}@@ -749,8 +749,8 @@ wrap_DataAlt !(T_DataAlt act) !(Inh_DataAlt _lhsInested _lhsIstrictPre) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_DataAlt_vIn13 _lhsInested _lhsIstrictPre-        !(T_DataAlt_vOut13 _lhsOpp) <- return (inv_DataAlt_s14 sem arg)+        let arg13 = T_DataAlt_vIn13 _lhsInested _lhsIstrictPre+        !(T_DataAlt_vOut13 _lhsOpp) <- return (inv_DataAlt_s14 sem arg13)         return (Syn_DataAlt _lhsOpp)    ) @@ -787,9 +787,9 @@          in __result_ )      in C_DataAlt_s14 v13    {-# INLINE rule83 #-}-   {-# LINE 221 "./src-ag/PrintCode.ag" #-}+   {-# LINE 221 "src-ag/PrintCode.ag" #-}    rule83 = \ ((_argsIpps) :: PP_Docs) ((_lhsIstrictPre) :: PP_Doc) name_ ->-                               {-# LINE 221 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 221 "src-ag/PrintCode.ag" #-}                                name_ >#< hv_sp (map ((_lhsIstrictPre >|<) . pp_parens) _argsIpps)                                {-# LINE 795 "dist/build/PrintCode.hs"#-}    {-# INLINE rule84 #-}@@ -811,9 +811,9 @@          in __result_ )      in C_DataAlt_s14 v13    {-# INLINE rule85 #-}-   {-# LINE 222 "./src-ag/PrintCode.ag" #-}+   {-# LINE 222 "src-ag/PrintCode.ag" #-}    rule85 = \ ((_argsIpps) :: PP_Docs) name_ ->-                               {-# LINE 222 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 222 "src-ag/PrintCode.ag" #-}                                name_ >#< pp_block "{" "}" "," _argsIpps                                {-# LINE 819 "dist/build/PrintCode.hs"#-}    {-# INLINE rule86 #-}@@ -829,8 +829,8 @@ wrap_DataAlts !(T_DataAlts act) !(Inh_DataAlts _lhsInested _lhsIstrictPre) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_DataAlts_vIn16 _lhsInested _lhsIstrictPre-        !(T_DataAlts_vOut16 _lhsOpps) <- return (inv_DataAlts_s17 sem arg)+        let arg16 = T_DataAlts_vIn16 _lhsInested _lhsIstrictPre+        !(T_DataAlts_vOut16 _lhsOpps) <- return (inv_DataAlts_s17 sem arg16)         return (Syn_DataAlts _lhsOpps)    ) @@ -871,9 +871,9 @@          in __result_ )      in C_DataAlts_s17 v16    {-# INLINE rule87 #-}-   {-# LINE 72 "./src-ag/PrintCode.ag" #-}+   {-# LINE 72 "src-ag/PrintCode.ag" #-}    rule87 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 72 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 72 "src-ag/PrintCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 879 "dist/build/PrintCode.hs"#-}    {-# INLINE rule88 #-}@@ -901,9 +901,9 @@          in __result_ )      in C_DataAlts_s17 v16    {-# INLINE rule92 #-}-   {-# LINE 73 "./src-ag/PrintCode.ag" #-}+   {-# LINE 73 "src-ag/PrintCode.ag" #-}    rule92 = \  (_ :: ()) ->-                     {-# LINE 73 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 73 "src-ag/PrintCode.ag" #-}                      []                      {-# LINE 909 "dist/build/PrintCode.hs"#-} @@ -916,8 +916,8 @@ wrap_Decl !(T_Decl act) !(Inh_Decl _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Decl_vIn19 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Decl_vOut19 _lhsOpp) <- return (inv_Decl_s20 sem arg)+        let arg19 = T_Decl_vIn19 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Decl_vOut19 _lhsOpp) <- return (inv_Decl_s20 sem arg19)         return (Syn_Decl _lhsOpp)    ) @@ -971,9 +971,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule93 #-}-   {-# LINE 106 "./src-ag/PrintCode.ag" #-}+   {-# LINE 106 "src-ag/PrintCode.ag" #-}    rule93 = \ ((_leftIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) ->-                               {-# LINE 106 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 106 "src-ag/PrintCode.ag" #-}                                _leftIpp >#< "="                                >-< indent 4 _rhsIpp                                {-# LINE 980 "dist/build/PrintCode.hs"#-}@@ -1022,9 +1022,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule101 #-}-   {-# LINE 108 "./src-ag/PrintCode.ag" #-}+   {-# LINE 108 "src-ag/PrintCode.ag" #-}    rule101 = \ ((_leftIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) ->-                               {-# LINE 108 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 108 "src-ag/PrintCode.ag" #-}                                _leftIpp >#< "<-" >#< _rhsIpp                                {-# LINE 1030 "dist/build/PrintCode.hs"#-}    {-# INLINE rule102 #-}@@ -1072,9 +1072,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule109 #-}-   {-# LINE 109 "./src-ag/PrintCode.ag" #-}+   {-# LINE 109 "src-ag/PrintCode.ag" #-}    rule109 = \ ((_leftIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) ->-                               {-# LINE 109 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 109 "src-ag/PrintCode.ag" #-}                                "let" >#< _leftIpp >#< "=" >#< _rhsIpp                                {-# LINE 1080 "dist/build/PrintCode.hs"#-}    {-# INLINE rule110 #-}@@ -1115,9 +1115,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule117 #-}-   {-# LINE 110 "./src-ag/PrintCode.ag" #-}+   {-# LINE 110 "src-ag/PrintCode.ag" #-}    rule117 = \ ((_altsIpps) :: PP_Docs) derivings_ name_ params_ ->-                               {-# LINE 110 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 110 "src-ag/PrintCode.ag" #-}                                "data" >#< hv_sp (name_ : params_)                                >#<  ( case _altsIpps of                                             [] -> empty@@ -1129,9 +1129,9 @@                                     )                                {-# LINE 1131 "dist/build/PrintCode.hs"#-}    {-# INLINE rule118 #-}-   {-# LINE 325 "./src-ag/PrintCode.ag" #-}+   {-# LINE 325 "src-ag/PrintCode.ag" #-}    rule118 = \ strict_ ->-                            {-# LINE 325 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 325 "src-ag/PrintCode.ag" #-}                             if strict_ then pp "!" else empty                             {-# LINE 1137 "dist/build/PrintCode.hs"#-}    {-# INLINE rule119 #-}@@ -1153,9 +1153,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule120 #-}-   {-# LINE 119 "./src-ag/PrintCode.ag" #-}+   {-# LINE 119 "src-ag/PrintCode.ag" #-}    rule120 = \ ((_tpIpp) :: PP_Doc) con_ name_ params_ ->-                               {-# LINE 119 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 119 "src-ag/PrintCode.ag" #-}                                "newtype" >#< hv_sp (name_ : params_) >#< "=" >#< con_ >#< pp_parens _tpIpp                                {-# LINE 1161 "dist/build/PrintCode.hs"#-}    {-# INLINE rule121 #-}@@ -1177,9 +1177,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule122 #-}-   {-# LINE 120 "./src-ag/PrintCode.ag" #-}+   {-# LINE 120 "src-ag/PrintCode.ag" #-}    rule122 = \ ((_tpIpp) :: PP_Doc) name_ params_ ->-                               {-# LINE 120 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 120 "src-ag/PrintCode.ag" #-}                                "type" >#< hv_sp (name_ : params_) >#< "=" >#<  _tpIpp                                {-# LINE 1185 "dist/build/PrintCode.hs"#-}    {-# INLINE rule123 #-}@@ -1201,9 +1201,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule124 #-}-   {-# LINE 121 "./src-ag/PrintCode.ag" #-}+   {-# LINE 121 "src-ag/PrintCode.ag" #-}    rule124 = \ ((_tpIpp) :: PP_Doc) name_ ->-                               {-# LINE 121 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 121 "src-ag/PrintCode.ag" #-}                                name_ >#< "::" >#< _tpIpp                                {-# LINE 1209 "dist/build/PrintCode.hs"#-}    {-# INLINE rule125 #-}@@ -1222,9 +1222,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule126 #-}-   {-# LINE 122 "./src-ag/PrintCode.ag" #-}+   {-# LINE 122 "src-ag/PrintCode.ag" #-}    rule126 = \ txt_ ->-                               {-# LINE 122 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 122 "src-ag/PrintCode.ag" #-}                                if '\n' `elem` txt_                                  then "{-" >-< vlist (lines txt_) >-< "-}"                                  else "--" >#< txt_@@ -1242,9 +1242,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule127 #-}-   {-# LINE 125 "./src-ag/PrintCode.ag" #-}+   {-# LINE 125 "src-ag/PrintCode.ag" #-}    rule127 = \ txt_ ->-                               {-# LINE 125 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 125 "src-ag/PrintCode.ag" #-}                                "{-#" >#< text txt_ >#< "#-}"                                {-# LINE 1250 "dist/build/PrintCode.hs"#-} {-# NOINLINE sem_Decl_Resume #-}@@ -1271,9 +1271,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule128 #-}-   {-# LINE 126 "./src-ag/PrintCode.ag" #-}+   {-# LINE 126 "src-ag/PrintCode.ag" #-}    rule128 = \ ((_leftIpp) :: PP_Doc) ((_rhsIpp) :: PP_Doc) monadic_ ->-                               {-# LINE 126 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 126 "src-ag/PrintCode.ag" #-}                                if monadic_                                then _leftIpp >#< "<-" >#< _rhsIpp                                else _leftIpp >#< "=" >-< indent 4 _rhsIpp@@ -1324,17 +1324,17 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule136 #-}-   {-# LINE 129 "./src-ag/PrintCode.ag" #-}+   {-# LINE 129 "src-ag/PrintCode.ag" #-}    rule136 = \ ((_lhsIoptions) :: Options) ->-                               {-# LINE 129 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 129 "src-ag/PrintCode.ag" #-}                                if breadthFirstStrict _lhsIoptions                                then "stepwiseEval"                                else "lazyEval"                                {-# LINE 1334 "dist/build/PrintCode.hs"#-}    {-# INLINE rule137 #-}-   {-# LINE 132 "./src-ag/PrintCode.ag" #-}+   {-# LINE 132 "src-ag/PrintCode.ag" #-}    rule137 = \ ((_leftIpp) :: PP_Doc) ((_lhsIoptions) :: Options) ((_rhsIpp) :: PP_Doc) _strat nt_ ->-                               {-# LINE 132 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 132 "src-ag/PrintCode.ag" #-}                                if breadthFirst _lhsIoptions                                then _leftIpp >#< "=" >#< "case" >#< _strat     >#< pp_parens _rhsIpp >#< "of"                                     >-< indent 4 (@@ -1373,8 +1373,8 @@ wrap_Decls !(T_Decls act) !(Inh_Decls _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Decls_vIn22 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Decls_vOut22 _lhsOpps) <- return (inv_Decls_s23 sem arg)+        let arg22 = T_Decls_vIn22 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Decls_vOut22 _lhsOpps) <- return (inv_Decls_s23 sem arg22)         return (Syn_Decls _lhsOpps)    ) @@ -1419,9 +1419,9 @@          in __result_ )      in C_Decls_s23 v22    {-# INLINE rule145 #-}-   {-# LINE 84 "./src-ag/PrintCode.ag" #-}+   {-# LINE 84 "src-ag/PrintCode.ag" #-}    rule145 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 84 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 84 "src-ag/PrintCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 1427 "dist/build/PrintCode.hs"#-}    {-# INLINE rule146 #-}@@ -1461,9 +1461,9 @@          in __result_ )      in C_Decls_s23 v22    {-# INLINE rule154 #-}-   {-# LINE 85 "./src-ag/PrintCode.ag" #-}+   {-# LINE 85 "src-ag/PrintCode.ag" #-}    rule154 = \  (_ :: ()) ->-                     {-# LINE 85 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 85 "src-ag/PrintCode.ag" #-}                      []                      {-# LINE 1469 "dist/build/PrintCode.hs"#-} @@ -1476,8 +1476,8 @@ wrap_Expr !(T_Expr act) !(Inh_Expr _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Expr_vIn25 _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Expr_vOut25 _lhsOpp) <- return (inv_Expr_s26 sem arg)+        let arg25 = T_Expr_vIn25 _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Expr_vOut25 _lhsOpp) <- return (inv_Expr_s26 sem arg25)         return (Syn_Expr _lhsOpp)    ) @@ -1537,17 +1537,17 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule155 #-}-   {-# LINE 140 "./src-ag/PrintCode.ag" #-}+   {-# LINE 140 "src-ag/PrintCode.ag" #-}    rule155 = \ ((_bodyIpp) :: PP_Doc) ((_declsIpps) :: PP_Docs) ->-                               {-# LINE 140 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 140 "src-ag/PrintCode.ag" #-}                                pp_parens (    "let" >#< (vlist _declsIpps)                                          >-< "in " >#< _bodyIpp                                          )                                {-# LINE 1547 "dist/build/PrintCode.hs"#-}    {-# INLINE rule156 #-}-   {-# LINE 420 "./src-ag/PrintCode.ag" #-}+   {-# LINE 420 "src-ag/PrintCode.ag" #-}    rule156 = \  (_ :: ()) ->-                            {-# LINE 420 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 420 "src-ag/PrintCode.ag" #-}                             True                             {-# LINE 1553 "dist/build/PrintCode.hs"#-}    {-# INLINE rule157 #-}@@ -1591,9 +1591,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule163 #-}-   {-# LINE 143 "./src-ag/PrintCode.ag" #-}+   {-# LINE 143 "src-ag/PrintCode.ag" #-}    rule163 = \ ((_altsIpps) :: PP_Docs) ((_exprIpp) :: PP_Doc) ->-                               {-# LINE 143 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 143 "src-ag/PrintCode.ag" #-}                                pp_parens (    "case" >#< pp_parens _exprIpp >#< "of"                                          >-< (vlist _altsIpps)                                          )@@ -1640,17 +1640,17 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule170 #-}-   {-# LINE 146 "./src-ag/PrintCode.ag" #-}+   {-# LINE 146 "src-ag/PrintCode.ag" #-}    rule170 = \ ((_bodyIpp) :: PP_Doc) ((_stmtsIpps) :: PP_Docs) ->-                               {-# LINE 146 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 146 "src-ag/PrintCode.ag" #-}                                pp_parens ( "do" >#< (   vlist _stmtsIpps                                                     >-< ("return" >#< _bodyIpp))                                          )                                {-# LINE 1650 "dist/build/PrintCode.hs"#-}    {-# INLINE rule171 #-}-   {-# LINE 422 "./src-ag/PrintCode.ag" #-}+   {-# LINE 422 "src-ag/PrintCode.ag" #-}    rule171 = \  (_ :: ()) ->-                            {-# LINE 422 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 422 "src-ag/PrintCode.ag" #-}                             False                             {-# LINE 1656 "dist/build/PrintCode.hs"#-}    {-# INLINE rule172 #-}@@ -1696,25 +1696,25 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule178 #-}-   {-# LINE 149 "./src-ag/PrintCode.ag" #-}+   {-# LINE 149 "src-ag/PrintCode.ag" #-}    rule178 = \ ((_argsIpps) :: PP_Docs) ((_lhsIoptions) :: Options) ->-                                    {-# LINE 149 "./src-ag/PrintCode.ag" #-}+                                    {-# LINE 149 "src-ag/PrintCode.ag" #-}                                     if strictSems _lhsIoptions                                     then _argsIpps                                     else []                                     {-# LINE 1706 "dist/build/PrintCode.hs"#-}    {-# INLINE rule179 #-}-   {-# LINE 152 "./src-ag/PrintCode.ag" #-}+   {-# LINE 152 "src-ag/PrintCode.ag" #-}    rule179 = \ ((_lhsIoptions) :: Options) ->-                               {-# LINE 152 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 152 "src-ag/PrintCode.ag" #-}                                if bangpats _lhsIoptions                                then \p -> pp_parens ("!" >|< p)                                else id                                {-# LINE 1714 "dist/build/PrintCode.hs"#-}    {-# INLINE rule180 #-}-   {-# LINE 155 "./src-ag/PrintCode.ag" #-}+   {-# LINE 155 "src-ag/PrintCode.ag" #-}    rule180 = \ _addBang ((_argsIpps) :: PP_Docs) ((_bodyIpp) :: PP_Doc) _strictParams ->-                               {-# LINE 155 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 155 "src-ag/PrintCode.ag" #-}                                pp_parens (    "\\" >#< (vlist (map _addBang     _argsIpps)) >#< "->"                                          >-< indent 4 (_strictParams     `ppMultiSeqV` _bodyIpp)                                          )@@ -1755,9 +1755,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule187 #-}-   {-# LINE 158 "./src-ag/PrintCode.ag" #-}+   {-# LINE 158 "src-ag/PrintCode.ag" #-}    rule187 = \ ((_exprsIpps) :: PP_Docs) ((_lhsInested) :: Bool) ->-                               {-# LINE 158 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 158 "src-ag/PrintCode.ag" #-}                                ppTuple _lhsInested _exprsIpps                                {-# LINE 1763 "dist/build/PrintCode.hs"#-}    {-# INLINE rule188 #-}@@ -1787,9 +1787,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule191 #-}-   {-# LINE 159 "./src-ag/PrintCode.ag" #-}+   {-# LINE 159 "src-ag/PrintCode.ag" #-}    rule191 = \ ((_exprsIpps) :: PP_Docs) ((_lhsInested) :: Bool) ->-                                      {-# LINE 159 "./src-ag/PrintCode.ag" #-}+                                      {-# LINE 159 "src-ag/PrintCode.ag" #-}                                       ppUnboxedTuple _lhsInested _exprsIpps                                       {-# LINE 1795 "dist/build/PrintCode.hs"#-}    {-# INLINE rule192 #-}@@ -1819,9 +1819,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule195 #-}-   {-# LINE 160 "./src-ag/PrintCode.ag" #-}+   {-# LINE 160 "src-ag/PrintCode.ag" #-}    rule195 = \ ((_argsIpps) :: PP_Docs) name_ ->-                               {-# LINE 160 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 160 "src-ag/PrintCode.ag" #-}                                pp_parens $ name_ >#< hv_sp _argsIpps                                {-# LINE 1827 "dist/build/PrintCode.hs"#-}    {-# INLINE rule196 #-}@@ -1846,9 +1846,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule199 #-}-   {-# LINE 161 "./src-ag/PrintCode.ag" #-}+   {-# LINE 161 "src-ag/PrintCode.ag" #-}    rule199 = \ txt_ ->-                               {-# LINE 161 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 161 "src-ag/PrintCode.ag" #-}                                text txt_                                {-# LINE 1854 "dist/build/PrintCode.hs"#-} {-# NOINLINE sem_Expr_TextExpr #-}@@ -1864,9 +1864,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule200 #-}-   {-# LINE 162 "./src-ag/PrintCode.ag" #-}+   {-# LINE 162 "src-ag/PrintCode.ag" #-}    rule200 = \ lns_ ->-                               {-# LINE 162 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 162 "src-ag/PrintCode.ag" #-}                                vlist (map text lns_)                                {-# LINE 1872 "dist/build/PrintCode.hs"#-} {-# NOINLINE sem_Expr_Trace #-}@@ -1887,9 +1887,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule201 #-}-   {-# LINE 163 "./src-ag/PrintCode.ag" #-}+   {-# LINE 163 "src-ag/PrintCode.ag" #-}    rule201 = \ ((_exprIpp) :: PP_Doc) txt_ ->-                               {-# LINE 163 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 163 "src-ag/PrintCode.ag" #-}                                "trace" >#< (   pp_parens ("\"" >|< text txt_ >|< "\"")                                            >-< pp_parens _exprIpp                                            )@@ -1921,9 +1921,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule205 #-}-   {-# LINE 166 "./src-ag/PrintCode.ag" #-}+   {-# LINE 166 "src-ag/PrintCode.ag" #-}    rule205 = \ ((_exprIpp) :: PP_Doc) onLeftSide_ onNewLine_ txt_ ->-                               {-# LINE 166 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 166 "src-ag/PrintCode.ag" #-}                                let pragmaDoc = "{-#" >#< txt_ >#< "#-}"                                    op = if onNewLine_                                         then (>-<)@@ -1963,9 +1963,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule209 #-}-   {-# LINE 177 "./src-ag/PrintCode.ag" #-}+   {-# LINE 177 "src-ag/PrintCode.ag" #-}    rule209 = \ ((_exprIpp) :: PP_Doc) ((_lhsIoutputfile) :: String) ->-                               {-# LINE 177 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 177 "src-ag/PrintCode.ag" #-}                                _exprIpp >-< "{-# LINE" >#< ppWithLineNr (\n -> pp $ show $ n + 1) >#< show _lhsIoutputfile >#< "#-}"                                         >-< ""                                {-# LINE 1972 "dist/build/PrintCode.hs"#-}@@ -1999,9 +1999,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule213 #-}-   {-# LINE 179 "./src-ag/PrintCode.ag" #-}+   {-# LINE 179 "src-ag/PrintCode.ag" #-}    rule213 = \ ((_exprIpp) :: PP_Doc) ((_tpIpp) :: PP_Doc) ->-                               {-# LINE 179 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 179 "src-ag/PrintCode.ag" #-}                                pp_parens (_exprIpp >#< "::" >#< _tpIpp)                                {-# LINE 2007 "dist/build/PrintCode.hs"#-}    {-# INLINE rule214 #-}@@ -2034,9 +2034,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule218 #-}-   {-# LINE 180 "./src-ag/PrintCode.ag" #-}+   {-# LINE 180 "src-ag/PrintCode.ag" #-}    rule218 = \ ((_exprIpp) :: PP_Doc) ((_lhsIoptions) :: Options) nt_ ->-                               {-# LINE 180 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 180 "src-ag/PrintCode.ag" #-}                                if breadthFirst _lhsIoptions                                then "final" >#<                                     pp_parens (nt_ >|< "_Syn" >#< pp_parens _exprIpp)@@ -2074,9 +2074,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule222 #-}-   {-# LINE 184 "./src-ag/PrintCode.ag" #-}+   {-# LINE 184 "src-ag/PrintCode.ag" #-}    rule222 = \ ((_argsIpps) :: PP_Docs) ((_exprIpp) :: PP_Doc) ((_lhsIoptions) :: Options) nt_ ->-                               {-# LINE 184 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 184 "src-ag/PrintCode.ag" #-}                                if breadthFirst _lhsIoptions                                then "invoke" >#< pp_parens _exprIpp >#< pp_parens (                                      nt_ >|< "_Inh" >#< pp_parens (ppTuple False _argsIpps))@@ -2129,9 +2129,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule229 #-}-   {-# LINE 188 "./src-ag/PrintCode.ag" #-}+   {-# LINE 188 "src-ag/PrintCode.ag" #-}    rule229 = \ ((_exprIpp) :: PP_Doc) ((_leftIpp) :: PP_Doc) ((_lhsIoptions) :: Options) ((_rhsIpp) :: PP_Doc) nt_ ->-                               {-# LINE 188 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 188 "src-ag/PrintCode.ag" #-}                                if breadthFirst _lhsIoptions                                then pp_parens ("resume" >#< pp_parens _exprIpp                                               >-< indent 2 (pp_parens ( "\\" >|<@@ -2146,9 +2146,9 @@                                               )                                {-# LINE 2148 "dist/build/PrintCode.hs"#-}    {-# INLINE rule230 #-}-   {-# LINE 424 "./src-ag/PrintCode.ag" #-}+   {-# LINE 424 "src-ag/PrintCode.ag" #-}    rule230 = \  (_ :: ()) ->-                           {-# LINE 424 "./src-ag/PrintCode.ag" #-}+                           {-# LINE 424 "src-ag/PrintCode.ag" #-}                            False                            {-# LINE 2154 "dist/build/PrintCode.hs"#-}    {-# INLINE rule231 #-}@@ -2203,25 +2203,25 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule240 #-}-   {-# LINE 200 "./src-ag/PrintCode.ag" #-}+   {-# LINE 200 "src-ag/PrintCode.ag" #-}    rule240 = \ ((_argsIpps) :: PP_Docs) ((_lhsIoptions) :: Options) ->-                                    {-# LINE 200 "./src-ag/PrintCode.ag" #-}+                                    {-# LINE 200 "src-ag/PrintCode.ag" #-}                                     if strictSems _lhsIoptions                                     then _argsIpps                                     else []                                     {-# LINE 2213 "dist/build/PrintCode.hs"#-}    {-# INLINE rule241 #-}-   {-# LINE 203 "./src-ag/PrintCode.ag" #-}+   {-# LINE 203 "src-ag/PrintCode.ag" #-}    rule241 = \ ((_lhsIoptions) :: Options) ->-                               {-# LINE 203 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 203 "src-ag/PrintCode.ag" #-}                                if bangpats _lhsIoptions                                then \p -> pp_parens ("!" >|< p)                                else id                                {-# LINE 2221 "dist/build/PrintCode.hs"#-}    {-# INLINE rule242 #-}-   {-# LINE 206 "./src-ag/PrintCode.ag" #-}+   {-# LINE 206 "src-ag/PrintCode.ag" #-}    rule242 = \ _addBang ((_argsIpps) :: PP_Docs) ((_bodyIpp) :: PP_Doc) ((_lhsIoptions) :: Options) _strictParams nt_ ->-                               {-# LINE 206 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 206 "src-ag/PrintCode.ag" #-}                                if breadthFirst _lhsIoptions                                then "Child" >#< pp_parens ( "\\" >|<                                         pp_parens (nt_ >|< "_Inh" >#<@@ -2261,8 +2261,8 @@ wrap_Exprs !(T_Exprs act) !(Inh_Exprs _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Exprs_vIn28 _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Exprs_vOut28 _lhsOpps) <- return (inv_Exprs_s29 sem arg)+        let arg28 = T_Exprs_vIn28 _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Exprs_vOut28 _lhsOpps) <- return (inv_Exprs_s29 sem arg28)         return (Syn_Exprs _lhsOpps)    ) @@ -2305,9 +2305,9 @@          in __result_ )      in C_Exprs_s29 v28    {-# INLINE rule249 #-}-   {-# LINE 64 "./src-ag/PrintCode.ag" #-}+   {-# LINE 64 "src-ag/PrintCode.ag" #-}    rule249 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 64 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 64 "src-ag/PrintCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 2313 "dist/build/PrintCode.hs"#-}    {-# INLINE rule250 #-}@@ -2341,9 +2341,9 @@          in __result_ )      in C_Exprs_s29 v28    {-# INLINE rule256 #-}-   {-# LINE 65 "./src-ag/PrintCode.ag" #-}+   {-# LINE 65 "src-ag/PrintCode.ag" #-}    rule256 = \  (_ :: ()) ->-                     {-# LINE 65 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 65 "src-ag/PrintCode.ag" #-}                      []                      {-# LINE 2349 "dist/build/PrintCode.hs"#-} @@ -2356,8 +2356,8 @@ wrap_Lhs !(T_Lhs act) !(Inh_Lhs _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Lhs_vIn31 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile-        !(T_Lhs_vOut31 _lhsOpp) <- return (inv_Lhs_s32 sem arg)+        let arg31 = T_Lhs_vIn31 _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile+        !(T_Lhs_vOut31 _lhsOpp) <- return (inv_Lhs_s32 sem arg31)         return (Syn_Lhs _lhsOpp)    ) @@ -2403,33 +2403,33 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule257 #-}-   {-# LINE 231 "./src-ag/PrintCode.ag" #-}+   {-# LINE 231 "src-ag/PrintCode.ag" #-}    rule257 = \ _hasStrictVars ((_lhsIoptions) :: Options) _strictGuard ->-                             {-# LINE 231 "./src-ag/PrintCode.ag" #-}+                             {-# LINE 231 "src-ag/PrintCode.ag" #-}                              if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id                              {-# LINE 2411 "dist/build/PrintCode.hs"#-}    {-# INLINE rule258 #-}-   {-# LINE 233 "./src-ag/PrintCode.ag" #-}+   {-# LINE 233 "src-ag/PrintCode.ag" #-}    rule258 = \ ((_pat3IstrictVars) :: [PP_Doc]) ->-                          {-# LINE 233 "./src-ag/PrintCode.ag" #-}+                          {-# LINE 233 "src-ag/PrintCode.ag" #-}                           _pat3IstrictVars `ppMultiSeqH` (pp "True")                           {-# LINE 2417 "dist/build/PrintCode.hs"#-}    {-# INLINE rule259 #-}-   {-# LINE 234 "./src-ag/PrintCode.ag" #-}+   {-# LINE 234 "src-ag/PrintCode.ag" #-}    rule259 = \ ((_pat3IstrictVars) :: [PP_Doc]) ->-                            {-# LINE 234 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 234 "src-ag/PrintCode.ag" #-}                             not (null _pat3IstrictVars)                             {-# LINE 2423 "dist/build/PrintCode.hs"#-}    {-# INLINE rule260 #-}-   {-# LINE 251 "./src-ag/PrintCode.ag" #-}+   {-# LINE 251 "src-ag/PrintCode.ag" #-}    rule260 = \ _addStrictGuard ((_pat3Ipp) :: PP_Doc) ->-                               {-# LINE 251 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 251 "src-ag/PrintCode.ag" #-}                                _addStrictGuard     _pat3Ipp                                {-# LINE 2429 "dist/build/PrintCode.hs"#-}    {-# INLINE rule261 #-}-   {-# LINE 385 "./src-ag/PrintCode.ag" #-}+   {-# LINE 385 "src-ag/PrintCode.ag" #-}    rule261 = \  (_ :: ()) ->-                                {-# LINE 385 "./src-ag/PrintCode.ag" #-}+                                {-# LINE 385 "src-ag/PrintCode.ag" #-}                                 False                                 {-# LINE 2435 "dist/build/PrintCode.hs"#-}    {-# INLINE rule262 #-}@@ -2456,15 +2456,15 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule264 #-}-   {-# LINE 252 "./src-ag/PrintCode.ag" #-}+   {-# LINE 252 "src-ag/PrintCode.ag" #-}    rule264 = \ ((_pat3Ipp') :: PP_Doc) ->-                               {-# LINE 252 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 252 "src-ag/PrintCode.ag" #-}                                _pat3Ipp'                                {-# LINE 2464 "dist/build/PrintCode.hs"#-}    {-# INLINE rule265 #-}-   {-# LINE 385 "./src-ag/PrintCode.ag" #-}+   {-# LINE 385 "src-ag/PrintCode.ag" #-}    rule265 = \  (_ :: ()) ->-                                {-# LINE 385 "./src-ag/PrintCode.ag" #-}+                                {-# LINE 385 "src-ag/PrintCode.ag" #-}                                 False                                 {-# LINE 2470 "dist/build/PrintCode.hs"#-}    {-# INLINE rule266 #-}@@ -2490,37 +2490,37 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule268 #-}-   {-# LINE 231 "./src-ag/PrintCode.ag" #-}+   {-# LINE 231 "src-ag/PrintCode.ag" #-}    rule268 = \ _hasStrictVars ((_lhsIoptions) :: Options) _strictGuard ->-                             {-# LINE 231 "./src-ag/PrintCode.ag" #-}+                             {-# LINE 231 "src-ag/PrintCode.ag" #-}                              if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id                              {-# LINE 2498 "dist/build/PrintCode.hs"#-}    {-# INLINE rule269 #-}-   {-# LINE 236 "./src-ag/PrintCode.ag" #-}+   {-# LINE 236 "src-ag/PrintCode.ag" #-}    rule269 = \ ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) comps_ ->-                          {-# LINE 236 "./src-ag/PrintCode.ag" #-}+                          {-# LINE 236 "src-ag/PrintCode.ag" #-}                           if stricterCases _lhsIoptions && not _lhsIisDeclOfLet                           then map text comps_ `ppMultiSeqH` (pp "True")                           else pp "True"                           {-# LINE 2506 "dist/build/PrintCode.hs"#-}    {-# INLINE rule270 #-}-   {-# LINE 239 "./src-ag/PrintCode.ag" #-}+   {-# LINE 239 "src-ag/PrintCode.ag" #-}    rule270 = \ comps_ ->-                            {-# LINE 239 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 239 "src-ag/PrintCode.ag" #-}                             not (null comps_)                             {-# LINE 2512 "dist/build/PrintCode.hs"#-}    {-# INLINE rule271 #-}-   {-# LINE 247 "./src-ag/PrintCode.ag" #-}+   {-# LINE 247 "src-ag/PrintCode.ag" #-}    rule271 = \ ((_lhsIoptions) :: Options) ->-                      {-# LINE 247 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 247 "src-ag/PrintCode.ag" #-}                       if bangpats _lhsIoptions                                then \p -> "!" >|< p                                else id                       {-# LINE 2520 "dist/build/PrintCode.hs"#-}    {-# INLINE rule272 #-}-   {-# LINE 253 "./src-ag/PrintCode.ag" #-}+   {-# LINE 253 "src-ag/PrintCode.ag" #-}    rule272 = \ _addBang _addStrictGuard ((_lhsInested) :: Bool) comps_ ->-                               {-# LINE 253 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 253 "src-ag/PrintCode.ag" #-}                                _addStrictGuard     $ ppTuple _lhsInested (map (_addBang     . text) comps_)                                {-# LINE 2526 "dist/build/PrintCode.hs"#-} {-# NOINLINE sem_Lhs_UnboxedTupleLhs #-}@@ -2540,37 +2540,37 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule273 #-}-   {-# LINE 231 "./src-ag/PrintCode.ag" #-}+   {-# LINE 231 "src-ag/PrintCode.ag" #-}    rule273 = \ _hasStrictVars ((_lhsIoptions) :: Options) _strictGuard ->-                             {-# LINE 231 "./src-ag/PrintCode.ag" #-}+                             {-# LINE 231 "src-ag/PrintCode.ag" #-}                              if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id                              {-# LINE 2548 "dist/build/PrintCode.hs"#-}    {-# INLINE rule274 #-}-   {-# LINE 236 "./src-ag/PrintCode.ag" #-}+   {-# LINE 236 "src-ag/PrintCode.ag" #-}    rule274 = \ ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) comps_ ->-                          {-# LINE 236 "./src-ag/PrintCode.ag" #-}+                          {-# LINE 236 "src-ag/PrintCode.ag" #-}                           if stricterCases _lhsIoptions && not _lhsIisDeclOfLet                           then map text comps_ `ppMultiSeqH` (pp "True")                           else pp "True"                           {-# LINE 2556 "dist/build/PrintCode.hs"#-}    {-# INLINE rule275 #-}-   {-# LINE 239 "./src-ag/PrintCode.ag" #-}+   {-# LINE 239 "src-ag/PrintCode.ag" #-}    rule275 = \ comps_ ->-                            {-# LINE 239 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 239 "src-ag/PrintCode.ag" #-}                             not (null comps_)                             {-# LINE 2562 "dist/build/PrintCode.hs"#-}    {-# INLINE rule276 #-}-   {-# LINE 247 "./src-ag/PrintCode.ag" #-}+   {-# LINE 247 "src-ag/PrintCode.ag" #-}    rule276 = \ ((_lhsIoptions) :: Options) ->-                      {-# LINE 247 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 247 "src-ag/PrintCode.ag" #-}                       if bangpats _lhsIoptions                                then \p -> "!" >|< p                                else id                       {-# LINE 2570 "dist/build/PrintCode.hs"#-}    {-# INLINE rule277 #-}-   {-# LINE 254 "./src-ag/PrintCode.ag" #-}+   {-# LINE 254 "src-ag/PrintCode.ag" #-}    rule277 = \ _addBang _addStrictGuard ((_lhsInested) :: Bool) comps_ ->-                                      {-# LINE 254 "./src-ag/PrintCode.ag" #-}+                                      {-# LINE 254 "src-ag/PrintCode.ag" #-}                                       _addStrictGuard     $ ppUnboxedTuple _lhsInested (map (_addBang     . text) comps_)                                       {-# LINE 2576 "dist/build/PrintCode.hs"#-} {-# NOINLINE sem_Lhs_Fun #-}@@ -2595,35 +2595,35 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule278 #-}-   {-# LINE 242 "./src-ag/PrintCode.ag" #-}+   {-# LINE 242 "src-ag/PrintCode.ag" #-}    rule278 = \ _hasStrictVars ((_lhsIoptions) :: Options) _strictGuard ->-                             {-# LINE 242 "./src-ag/PrintCode.ag" #-}+                             {-# LINE 242 "src-ag/PrintCode.ag" #-}                              if strictSems _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id                              {-# LINE 2603 "dist/build/PrintCode.hs"#-}    {-# INLINE rule279 #-}-   {-# LINE 243 "./src-ag/PrintCode.ag" #-}+   {-# LINE 243 "src-ag/PrintCode.ag" #-}    rule279 = \ ((_argsIpps) :: PP_Docs) ->-                             {-# LINE 243 "./src-ag/PrintCode.ag" #-}+                             {-# LINE 243 "src-ag/PrintCode.ag" #-}                              not (null _argsIpps)                              {-# LINE 2609 "dist/build/PrintCode.hs"#-}    {-# INLINE rule280 #-}-   {-# LINE 244 "./src-ag/PrintCode.ag" #-}+   {-# LINE 244 "src-ag/PrintCode.ag" #-}    rule280 = \ ((_argsIpps) :: PP_Docs) ->-                             {-# LINE 244 "./src-ag/PrintCode.ag" #-}+                             {-# LINE 244 "src-ag/PrintCode.ag" #-}                              _argsIpps `ppMultiSeqH` (pp "True")                              {-# LINE 2615 "dist/build/PrintCode.hs"#-}    {-# INLINE rule281 #-}-   {-# LINE 247 "./src-ag/PrintCode.ag" #-}+   {-# LINE 247 "src-ag/PrintCode.ag" #-}    rule281 = \ ((_lhsIoptions) :: Options) ->-                      {-# LINE 247 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 247 "src-ag/PrintCode.ag" #-}                       if bangpats _lhsIoptions                                then \p -> "!" >|< p                                else id                       {-# LINE 2623 "dist/build/PrintCode.hs"#-}    {-# INLINE rule282 #-}-   {-# LINE 255 "./src-ag/PrintCode.ag" #-}+   {-# LINE 255 "src-ag/PrintCode.ag" #-}    rule282 = \ _addBang _addStrictGuard ((_argsIpps) :: PP_Docs) name_ ->-                               {-# LINE 255 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 255 "src-ag/PrintCode.ag" #-}                                _addStrictGuard     (name_ >#< hv_sp (map _addBang     _argsIpps))                                {-# LINE 2629 "dist/build/PrintCode.hs"#-}    {-# INLINE rule283 #-}@@ -2654,9 +2654,9 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule286 #-}-   {-# LINE 256 "./src-ag/PrintCode.ag" #-}+   {-# LINE 256 "src-ag/PrintCode.ag" #-}    rule286 = \ ((_subIpp) :: PP_Doc) name_ ->-                               {-# LINE 256 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 256 "src-ag/PrintCode.ag" #-}                                pp_parens (name_ >#< _subIpp)                                {-# LINE 2662 "dist/build/PrintCode.hs"#-}    {-# INLINE rule287 #-}@@ -2681,8 +2681,8 @@ wrap_NamedType !(T_NamedType act) !(Inh_NamedType _lhsInested) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_NamedType_vIn34 _lhsInested-        !(T_NamedType_vOut34 _lhsOpp) <- return (inv_NamedType_s35 sem arg)+        let arg34 = T_NamedType_vIn34 _lhsInested+        !(T_NamedType_vOut34 _lhsOpp) <- return (inv_NamedType_s35 sem arg34)         return (Syn_NamedType _lhsOpp)    ) @@ -2718,9 +2718,9 @@          in __result_ )      in C_NamedType_s35 v34    {-# INLINE rule291 #-}-   {-# LINE 225 "./src-ag/PrintCode.ag" #-}+   {-# LINE 225 "src-ag/PrintCode.ag" #-}    rule291 = \ ((_tpIpp) :: PP_Doc) name_ strict_ ->-                               {-# LINE 225 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 225 "src-ag/PrintCode.ag" #-}                                if strict_                                then name_ >#< "::" >#< "!" >|< pp_parens _tpIpp                                else name_ >#< "::" >#< _tpIpp@@ -2738,8 +2738,8 @@ wrap_NamedTypes !(T_NamedTypes act) !(Inh_NamedTypes _lhsInested) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_NamedTypes_vIn37 _lhsInested-        !(T_NamedTypes_vOut37 _lhsOpps) <- return (inv_NamedTypes_s38 sem arg)+        let arg37 = T_NamedTypes_vIn37 _lhsInested+        !(T_NamedTypes_vOut37 _lhsOpps) <- return (inv_NamedTypes_s38 sem arg37)         return (Syn_NamedTypes _lhsOpps)    ) @@ -2778,9 +2778,9 @@          in __result_ )      in C_NamedTypes_s38 v37    {-# INLINE rule293 #-}-   {-# LINE 80 "./src-ag/PrintCode.ag" #-}+   {-# LINE 80 "src-ag/PrintCode.ag" #-}    rule293 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 80 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 80 "src-ag/PrintCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 2786 "dist/build/PrintCode.hs"#-}    {-# INLINE rule294 #-}@@ -2802,9 +2802,9 @@          in __result_ )      in C_NamedTypes_s38 v37    {-# INLINE rule296 #-}-   {-# LINE 81 "./src-ag/PrintCode.ag" #-}+   {-# LINE 81 "src-ag/PrintCode.ag" #-}    rule296 = \  (_ :: ()) ->-                     {-# LINE 81 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 81 "src-ag/PrintCode.ag" #-}                      []                      {-# LINE 2810 "dist/build/PrintCode.hs"#-} @@ -2817,8 +2817,8 @@ wrap_Pattern !(T_Pattern act) !(Inh_Pattern _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Pattern_vIn40 _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions-        !(T_Pattern_vOut40 _lhsOcopy _lhsOisUnderscore _lhsOpp _lhsOpp' _lhsOstrictVars) <- return (inv_Pattern_s41 sem arg)+        let arg40 = T_Pattern_vIn40 _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions+        !(T_Pattern_vOut40 _lhsOcopy _lhsOisUnderscore _lhsOpp _lhsOpp' _lhsOstrictVars) <- return (inv_Pattern_s41 sem arg40)         return (Syn_Pattern _lhsOcopy _lhsOisUnderscore _lhsOpp _lhsOpp' _lhsOstrictVars)    ) @@ -2870,29 +2870,29 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule297 #-}-   {-# LINE 357 "./src-ag/PrintCode.ag" #-}+   {-# LINE 357 "src-ag/PrintCode.ag" #-}    rule297 = \ ((_lhsIbelowIrrefutable) :: Bool) ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) ->-                      {-# LINE 357 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 357 "src-ag/PrintCode.ag" #-}                       if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable                       then \p -> "!" >|< p                       else id                       {-# LINE 2880 "dist/build/PrintCode.hs"#-}    {-# INLINE rule298 #-}-   {-# LINE 362 "./src-ag/PrintCode.ag" #-}+   {-# LINE 362 "src-ag/PrintCode.ag" #-}    rule298 = \ _addBang ((_patsIpps) :: [PP_Doc]) name_ ->-                           {-# LINE 362 "./src-ag/PrintCode.ag" #-}+                           {-# LINE 362 "src-ag/PrintCode.ag" #-}                            _addBang     $ pp_parens $ name_ >#< hv_sp _patsIpps                            {-# LINE 2886 "dist/build/PrintCode.hs"#-}    {-# INLINE rule299 #-}-   {-# LINE 373 "./src-ag/PrintCode.ag" #-}+   {-# LINE 373 "src-ag/PrintCode.ag" #-}    rule299 = \  (_ :: ()) ->-                                    {-# LINE 373 "./src-ag/PrintCode.ag" #-}+                                    {-# LINE 373 "src-ag/PrintCode.ag" #-}                                     False                                     {-# LINE 2892 "dist/build/PrintCode.hs"#-}    {-# INLINE rule300 #-}-   {-# LINE 396 "./src-ag/PrintCode.ag" #-}+   {-# LINE 396 "src-ag/PrintCode.ag" #-}    rule300 = \ ((_patsIpps') :: [PP_Doc]) name_ ->-                            {-# LINE 396 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 396 "src-ag/PrintCode.ag" #-}                             pp_parens $ name_ >#< hv_sp (map pp_parens _patsIpps')                             {-# LINE 2898 "dist/build/PrintCode.hs"#-}    {-# INLINE rule301 #-}@@ -2941,29 +2941,29 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule307 #-}-   {-# LINE 357 "./src-ag/PrintCode.ag" #-}+   {-# LINE 357 "src-ag/PrintCode.ag" #-}    rule307 = \ ((_lhsIbelowIrrefutable) :: Bool) ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) ->-                      {-# LINE 357 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 357 "src-ag/PrintCode.ag" #-}                       if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable                       then \p -> "!" >|< p                       else id                       {-# LINE 2951 "dist/build/PrintCode.hs"#-}    {-# INLINE rule308 #-}-   {-# LINE 363 "./src-ag/PrintCode.ag" #-}+   {-# LINE 363 "src-ag/PrintCode.ag" #-}    rule308 = \ _addBang ((_patsIpps) :: [PP_Doc]) ->-                           {-# LINE 363 "./src-ag/PrintCode.ag" #-}+                           {-# LINE 363 "src-ag/PrintCode.ag" #-}                            _addBang     $ pp_block "(" ")" "," _patsIpps                            {-# LINE 2957 "dist/build/PrintCode.hs"#-}    {-# INLINE rule309 #-}-   {-# LINE 374 "./src-ag/PrintCode.ag" #-}+   {-# LINE 374 "src-ag/PrintCode.ag" #-}    rule309 = \  (_ :: ()) ->-                                    {-# LINE 374 "./src-ag/PrintCode.ag" #-}+                                    {-# LINE 374 "src-ag/PrintCode.ag" #-}                                     False                                     {-# LINE 2963 "dist/build/PrintCode.hs"#-}    {-# INLINE rule310 #-}-   {-# LINE 397 "./src-ag/PrintCode.ag" #-}+   {-# LINE 397 "src-ag/PrintCode.ag" #-}    rule310 = \ ((_patsIpps') :: [PP_Doc]) ->-                            {-# LINE 397 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 397 "src-ag/PrintCode.ag" #-}                             pp_block "(" ")" "," _patsIpps'                             {-# LINE 2969 "dist/build/PrintCode.hs"#-}    {-# INLINE rule311 #-}@@ -3016,65 +3016,65 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule317 #-}-   {-# LINE 335 "./src-ag/PrintCode.ag" #-}+   {-# LINE 335 "src-ag/PrintCode.ag" #-}    rule317 = \ ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) _ppVar ->-            {-# LINE 335 "./src-ag/PrintCode.ag" #-}+            {-# LINE 335 "src-ag/PrintCode.ag" #-}             if strictCases _lhsIoptions && not _lhsIisDeclOfLet             then [_ppVar    ]             else []             {-# LINE 3026 "dist/build/PrintCode.hs"#-}    {-# INLINE rule318 #-}-   {-# LINE 339 "./src-ag/PrintCode.ag" #-}+   {-# LINE 339 "src-ag/PrintCode.ag" #-}    rule318 = \ ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) ((_patIstrictVars) :: [PP_Doc]) ->-            {-# LINE 339 "./src-ag/PrintCode.ag" #-}+            {-# LINE 339 "src-ag/PrintCode.ag" #-}             if stricterCases _lhsIoptions && not _lhsIisDeclOfLet             then _patIstrictVars             else []             {-# LINE 3034 "dist/build/PrintCode.hs"#-}    {-# INLINE rule319 #-}-   {-# LINE 343 "./src-ag/PrintCode.ag" #-}+   {-# LINE 343 "src-ag/PrintCode.ag" #-}    rule319 = \ _strictPatVars _strictVar ->-            {-# LINE 343 "./src-ag/PrintCode.ag" #-}+            {-# LINE 343 "src-ag/PrintCode.ag" #-}             _strictVar     ++ _strictPatVars             {-# LINE 3040 "dist/build/PrintCode.hs"#-}    {-# INLINE rule320 #-}-   {-# LINE 357 "./src-ag/PrintCode.ag" #-}+   {-# LINE 357 "src-ag/PrintCode.ag" #-}    rule320 = \ ((_lhsIbelowIrrefutable) :: Bool) ((_lhsIisDeclOfLet) :: Bool) ((_lhsIoptions) :: Options) ->-                      {-# LINE 357 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 357 "src-ag/PrintCode.ag" #-}                       if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable                       then \p -> "!" >|< p                       else id                       {-# LINE 3048 "dist/build/PrintCode.hs"#-}    {-# INLINE rule321 #-}-   {-# LINE 364 "./src-ag/PrintCode.ag" #-}+   {-# LINE 364 "src-ag/PrintCode.ag" #-}    rule321 = \ ((_lhsIoptions) :: Options) attr_ field_ ->-                           {-# LINE 364 "./src-ag/PrintCode.ag" #-}+                           {-# LINE 364 "src-ag/PrintCode.ag" #-}                            pp (attrname _lhsIoptions False field_ attr_)                            {-# LINE 3054 "dist/build/PrintCode.hs"#-}    {-# INLINE rule322 #-}-   {-# LINE 365 "./src-ag/PrintCode.ag" #-}+   {-# LINE 365 "src-ag/PrintCode.ag" #-}    rule322 = \ _addBang _ppVar ->-                              {-# LINE 365 "./src-ag/PrintCode.ag" #-}+                              {-# LINE 365 "src-ag/PrintCode.ag" #-}                               _addBang     $ _ppVar                               {-# LINE 3060 "dist/build/PrintCode.hs"#-}    {-# INLINE rule323 #-}-   {-# LINE 366 "./src-ag/PrintCode.ag" #-}+   {-# LINE 366 "src-ag/PrintCode.ag" #-}    rule323 = \ ((_patIisUnderscore) :: Bool) ((_patIpp) :: PP_Doc) _ppVarBang ->-                           {-# LINE 366 "./src-ag/PrintCode.ag" #-}+                           {-# LINE 366 "src-ag/PrintCode.ag" #-}                            if _patIisUnderscore                             then _ppVarBang                             else _ppVarBang     >|< "@" >|< _patIpp                            {-# LINE 3068 "dist/build/PrintCode.hs"#-}    {-# INLINE rule324 #-}-   {-# LINE 375 "./src-ag/PrintCode.ag" #-}+   {-# LINE 375 "src-ag/PrintCode.ag" #-}    rule324 = \  (_ :: ()) ->-                                    {-# LINE 375 "./src-ag/PrintCode.ag" #-}+                                    {-# LINE 375 "src-ag/PrintCode.ag" #-}                                     False                                     {-# LINE 3074 "dist/build/PrintCode.hs"#-}    {-# INLINE rule325 #-}-   {-# LINE 398 "./src-ag/PrintCode.ag" #-}+   {-# LINE 398 "src-ag/PrintCode.ag" #-}    rule325 = \ ((_lhsIoptions) :: Options) ((_patIpp') :: PP_Doc) attr_ field_ ->-                            {-# LINE 398 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 398 "src-ag/PrintCode.ag" #-}                             let attribute | field_ == _LOC || field_ == nullIdent = locname' attr_                                           | otherwise                             = attrname _lhsIoptions False field_ attr_                             in attribute >|< "@" >|< _patIpp'@@ -3121,27 +3121,27 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule331 #-}-   {-# LINE 345 "./src-ag/PrintCode.ag" #-}+   {-# LINE 345 "src-ag/PrintCode.ag" #-}    rule331 = \  (_ :: ()) ->-                         {-# LINE 345 "./src-ag/PrintCode.ag" #-}+                         {-# LINE 345 "src-ag/PrintCode.ag" #-}                          []                          {-# LINE 3129 "dist/build/PrintCode.hs"#-}    {-# INLINE rule332 #-}-   {-# LINE 369 "./src-ag/PrintCode.ag" #-}+   {-# LINE 369 "src-ag/PrintCode.ag" #-}    rule332 = \ ((_patIpp) :: PP_Doc) ->-                           {-# LINE 369 "./src-ag/PrintCode.ag" #-}+                           {-# LINE 369 "src-ag/PrintCode.ag" #-}                            text "~" >|< pp_parens _patIpp                            {-# LINE 3135 "dist/build/PrintCode.hs"#-}    {-# INLINE rule333 #-}-   {-# LINE 381 "./src-ag/PrintCode.ag" #-}+   {-# LINE 381 "src-ag/PrintCode.ag" #-}    rule333 = \  (_ :: ()) ->-                               {-# LINE 381 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 381 "src-ag/PrintCode.ag" #-}                                True                                {-# LINE 3141 "dist/build/PrintCode.hs"#-}    {-# INLINE rule334 #-}-   {-# LINE 401 "./src-ag/PrintCode.ag" #-}+   {-# LINE 401 "src-ag/PrintCode.ag" #-}    rule334 = \ ((_patIpp) :: PP_Doc) ->-                            {-# LINE 401 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 401 "src-ag/PrintCode.ag" #-}                             text "~" >|< pp_parens _patIpp                             {-# LINE 3147 "dist/build/PrintCode.hs"#-}    {-# INLINE rule335 #-}@@ -3181,21 +3181,21 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule340 #-}-   {-# LINE 370 "./src-ag/PrintCode.ag" #-}+   {-# LINE 370 "src-ag/PrintCode.ag" #-}    rule340 = \  (_ :: ()) ->-                           {-# LINE 370 "./src-ag/PrintCode.ag" #-}+                           {-# LINE 370 "src-ag/PrintCode.ag" #-}                            text "_"                            {-# LINE 3189 "dist/build/PrintCode.hs"#-}    {-# INLINE rule341 #-}-   {-# LINE 376 "./src-ag/PrintCode.ag" #-}+   {-# LINE 376 "src-ag/PrintCode.ag" #-}    rule341 = \  (_ :: ()) ->-                                    {-# LINE 376 "./src-ag/PrintCode.ag" #-}+                                    {-# LINE 376 "src-ag/PrintCode.ag" #-}                                     True                                     {-# LINE 3195 "dist/build/PrintCode.hs"#-}    {-# INLINE rule342 #-}-   {-# LINE 402 "./src-ag/PrintCode.ag" #-}+   {-# LINE 402 "src-ag/PrintCode.ag" #-}    rule342 = \  (_ :: ()) ->-                            {-# LINE 402 "./src-ag/PrintCode.ag" #-}+                            {-# LINE 402 "src-ag/PrintCode.ag" #-}                             text "_"                             {-# LINE 3201 "dist/build/PrintCode.hs"#-}    {-# INLINE rule343 #-}@@ -3217,8 +3217,8 @@ wrap_Patterns !(T_Patterns act) !(Inh_Patterns _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Patterns_vIn43 _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions-        !(T_Patterns_vOut43 _lhsOcopy _lhsOpps _lhsOpps' _lhsOstrictVars) <- return (inv_Patterns_s44 sem arg)+        let arg43 = T_Patterns_vIn43 _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions+        !(T_Patterns_vOut43 _lhsOcopy _lhsOpps _lhsOpps' _lhsOstrictVars) <- return (inv_Patterns_s44 sem arg43)         return (Syn_Patterns _lhsOcopy _lhsOpps _lhsOpps' _lhsOstrictVars)    ) @@ -3268,15 +3268,15 @@          in __result_ )      in C_Patterns_s44 v43    {-# INLINE rule346 #-}-   {-# LINE 352 "./src-ag/PrintCode.ag" #-}+   {-# LINE 352 "src-ag/PrintCode.ag" #-}    rule346 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: [PP_Doc]) ->-                     {-# LINE 352 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 352 "src-ag/PrintCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 3276 "dist/build/PrintCode.hs"#-}    {-# INLINE rule347 #-}-   {-# LINE 392 "./src-ag/PrintCode.ag" #-}+   {-# LINE 392 "src-ag/PrintCode.ag" #-}    rule347 = \ ((_hdIpp') :: PP_Doc) ((_tlIpps') :: [PP_Doc]) ->-                      {-# LINE 392 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 392 "src-ag/PrintCode.ag" #-}                       _hdIpp' : _tlIpps'                       {-# LINE 3282 "dist/build/PrintCode.hs"#-}    {-# INLINE rule348 #-}@@ -3326,15 +3326,15 @@          in __result_ )      in C_Patterns_s44 v43    {-# INLINE rule357 #-}-   {-# LINE 353 "./src-ag/PrintCode.ag" #-}+   {-# LINE 353 "src-ag/PrintCode.ag" #-}    rule357 = \  (_ :: ()) ->-                     {-# LINE 353 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 353 "src-ag/PrintCode.ag" #-}                      []                      {-# LINE 3334 "dist/build/PrintCode.hs"#-}    {-# INLINE rule358 #-}-   {-# LINE 393 "./src-ag/PrintCode.ag" #-}+   {-# LINE 393 "src-ag/PrintCode.ag" #-}    rule358 = \  (_ :: ()) ->-                      {-# LINE 393 "./src-ag/PrintCode.ag" #-}+                      {-# LINE 393 "src-ag/PrintCode.ag" #-}                       []                       {-# LINE 3340 "dist/build/PrintCode.hs"#-}    {-# INLINE rule359 #-}@@ -3356,8 +3356,8 @@ wrap_Program !(T_Program act) !(Inh_Program _lhsIimportBlocks _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Program_vIn46 _lhsIimportBlocks _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks-        !(T_Program_vOut46 _lhsOgenIO _lhsOoutput) <- return (inv_Program_s47 sem arg)+        let arg46 = T_Program_vIn46 _lhsIimportBlocks _lhsImainBlocksDoc _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks+        !(T_Program_vOut46 _lhsOgenIO _lhsOoutput) <- return (inv_Program_s47 sem arg46)         return (Syn_Program _lhsOgenIO _lhsOoutput)    ) @@ -3410,39 +3410,39 @@          in __result_ )      in C_Program_s47 v46    {-# INLINE rule362 #-}-   {-# LINE 58 "./src-ag/PrintCode.ag" #-}+   {-# LINE 58 "src-ag/PrintCode.ag" #-}    rule362 = \ ((_lhsIoptions) :: Options) ordered_ ->-                  {-# LINE 58 "./src-ag/PrintCode.ag" #-}+                  {-# LINE 58 "src-ag/PrintCode.ag" #-}                   _lhsIoptions { breadthFirst = breadthFirst _lhsIoptions && visit _lhsIoptions && cases _lhsIoptions && ordered_ }                   {-# LINE 3418 "dist/build/PrintCode.hs"#-}    {-# INLINE rule363 #-}-   {-# LINE 61 "./src-ag/PrintCode.ag" #-}+   {-# LINE 61 "src-ag/PrintCode.ag" #-}    rule363 = \ ((_lhsIoptions) :: Options) ->-                              {-# LINE 61 "./src-ag/PrintCode.ag" #-}+                              {-# LINE 61 "src-ag/PrintCode.ag" #-}                               nest _lhsIoptions                               {-# LINE 3424 "dist/build/PrintCode.hs"#-}    {-# INLINE rule364 #-}-   {-# LINE 93 "./src-ag/PrintCode.ag" #-}+   {-# LINE 93 "src-ag/PrintCode.ag" #-}    rule364 = \ ((_chunksIpps) :: PP_Docs) ->-                               {-# LINE 93 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 93 "src-ag/PrintCode.ag" #-}                                _chunksIpps                                {-# LINE 3430 "dist/build/PrintCode.hs"#-}    {-# INLINE rule365 #-}-   {-# LINE 416 "./src-ag/PrintCode.ag" #-}+   {-# LINE 416 "src-ag/PrintCode.ag" #-}    rule365 = \  (_ :: ()) ->-                             {-# LINE 416 "./src-ag/PrintCode.ag" #-}+                             {-# LINE 416 "src-ag/PrintCode.ag" #-}                              False                              {-# LINE 3436 "dist/build/PrintCode.hs"#-}    {-# INLINE rule366 #-}-   {-# LINE 450 "./src-ag/PrintCode.ag" #-}+   {-# LINE 450 "src-ag/PrintCode.ag" #-}    rule366 = \ ((_lhsImainFile) :: String) ->-                             {-# LINE 450 "./src-ag/PrintCode.ag" #-}+                             {-# LINE 450 "src-ag/PrintCode.ag" #-}                              _lhsImainFile                              {-# LINE 3442 "dist/build/PrintCode.hs"#-}    {-# INLINE rule367 #-}-   {-# LINE 452 "./src-ag/PrintCode.ag" #-}+   {-# LINE 452 "src-ag/PrintCode.ag" #-}    rule367 = \ ((_chunksIappendMain) :: [[PP_Doc]]) ((_chunksIimports) :: [String]) ((_lhsImainBlocksDoc) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptionsLine) :: String) ((_lhsIpragmaBlocks) :: String) _mainModuleFile ->-            {-# LINE 452 "./src-ag/PrintCode.ag" #-}+            {-# LINE 452 "src-ag/PrintCode.ag" #-}             writeModule _mainModuleFile               ( [ pp $ _lhsIpragmaBlocks                 , pp $ _lhsIoptionsLine@@ -3455,15 +3455,15 @@               )             {-# LINE 3457 "dist/build/PrintCode.hs"#-}    {-# INLINE rule368 #-}-   {-# LINE 463 "./src-ag/PrintCode.ag" #-}+   {-# LINE 463 "src-ag/PrintCode.ag" #-}    rule368 = \ ((_lhsImainFile) :: String) ->-                         {-# LINE 463 "./src-ag/PrintCode.ag" #-}+                         {-# LINE 463 "src-ag/PrintCode.ag" #-}                          replaceBaseName _lhsImainFile (takeBaseName _lhsImainFile ++ "_common")                          {-# LINE 3463 "dist/build/PrintCode.hs"#-}    {-# INLINE rule369 #-}-   {-# LINE 465 "./src-ag/PrintCode.ag" #-}+   {-# LINE 465 "src-ag/PrintCode.ag" #-}    rule369 = \ ((_chunksIappendCommon) :: [[PP_Doc]]) _commonFile ((_lhsIimportBlocks) :: PP_Doc) ((_lhsImainName) :: String) ((_lhsImoduleHeader) :: String -> String -> String -> Bool -> String) ((_lhsIoptionsLine) :: String) ((_lhsIpragmaBlocks) :: String) ((_lhsItextBlocks) :: PP_Doc) ->-            {-# LINE 465 "./src-ag/PrintCode.ag" #-}+            {-# LINE 465 "src-ag/PrintCode.ag" #-}             writeModule _commonFile                 ( [ pp $ _lhsIpragmaBlocks                   , pp $ _lhsIoptionsLine@@ -3475,9 +3475,9 @@                 )             {-# LINE 3477 "dist/build/PrintCode.hs"#-}    {-# INLINE rule370 #-}-   {-# LINE 475 "./src-ag/PrintCode.ag" #-}+   {-# LINE 475 "src-ag/PrintCode.ag" #-}    rule370 = \ ((_chunksIgenSems) :: IO ()) _genCommonModule _genMainModule ->-                    {-# LINE 475 "./src-ag/PrintCode.ag" #-}+                    {-# LINE 475 "src-ag/PrintCode.ag" #-}                     do _genMainModule                        _genCommonModule                        _chunksIgenSems@@ -3519,8 +3519,8 @@ wrap_Type !(T_Type act) !(Inh_Type _lhsInested) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Type_vIn49 _lhsInested-        !(T_Type_vOut49 _lhsOpp _lhsOprec) <- return (inv_Type_s50 sem arg)+        let arg49 = T_Type_vIn49 _lhsInested+        !(T_Type_vOut49 _lhsOpp _lhsOprec) <- return (inv_Type_s50 sem arg49)         return (Syn_Type _lhsOpp _lhsOprec)    ) @@ -3577,27 +3577,27 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule380 #-}-   {-# LINE 259 "./src-ag/PrintCode.ag" #-}+   {-# LINE 259 "src-ag/PrintCode.ag" #-}    rule380 = \  (_ :: ()) ->-                               {-# LINE 259 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 259 "src-ag/PrintCode.ag" #-}                                2                                {-# LINE 3585 "dist/build/PrintCode.hs"#-}    {-# INLINE rule381 #-}-   {-# LINE 260 "./src-ag/PrintCode.ag" #-}+   {-# LINE 260 "src-ag/PrintCode.ag" #-}    rule381 = \ _l _r ->-                               {-# LINE 260 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 260 "src-ag/PrintCode.ag" #-}                                _l     >#< "->" >-< _r                                {-# LINE 3591 "dist/build/PrintCode.hs"#-}    {-# INLINE rule382 #-}-   {-# LINE 261 "./src-ag/PrintCode.ag" #-}+   {-# LINE 261 "src-ag/PrintCode.ag" #-}    rule382 = \ ((_leftIpp) :: PP_Doc) ((_leftIprec) :: Int) ->-                               {-# LINE 261 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 261 "src-ag/PrintCode.ag" #-}                                if _leftIprec  <= 2 then pp_parens _leftIpp  else _leftIpp                                {-# LINE 3597 "dist/build/PrintCode.hs"#-}    {-# INLINE rule383 #-}-   {-# LINE 262 "./src-ag/PrintCode.ag" #-}+   {-# LINE 262 "src-ag/PrintCode.ag" #-}    rule383 = \ ((_rightIpp) :: PP_Doc) ((_rightIprec) :: Int) ->-                               {-# LINE 262 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 262 "src-ag/PrintCode.ag" #-}                                if _rightIprec <  2 then pp_parens _rightIpp else _rightIpp                                {-# LINE 3603 "dist/build/PrintCode.hs"#-}    {-# INLINE rule384 #-}@@ -3624,9 +3624,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule386 #-}-   {-# LINE 268 "./src-ag/PrintCode.ag" #-}+   {-# LINE 268 "src-ag/PrintCode.ag" #-}    rule386 = \ ((_rightIpp) :: PP_Doc) left_ ->-                 {-# LINE 268 "./src-ag/PrintCode.ag" #-}+                 {-# LINE 268 "src-ag/PrintCode.ag" #-}                  (pp_block "(" ")" "," $ map (\(n,ns) -> hv_sp $ map pp (n:ns)) left_) >#< "=>" >#< _rightIpp                  {-# LINE 3632 "dist/build/PrintCode.hs"#-}    {-# INLINE rule387 #-}@@ -3653,9 +3653,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule389 #-}-   {-# LINE 270 "./src-ag/PrintCode.ag" #-}+   {-# LINE 270 "src-ag/PrintCode.ag" #-}    rule389 = \ ((_rightIpp) :: PP_Doc) left_ ->-                 {-# LINE 270 "./src-ag/PrintCode.ag" #-}+                 {-# LINE 270 "src-ag/PrintCode.ag" #-}                  left_ >#< _rightIpp                  {-# LINE 3661 "dist/build/PrintCode.hs"#-}    {-# INLINE rule390 #-}@@ -3685,9 +3685,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule392 #-}-   {-# LINE 265 "./src-ag/PrintCode.ag" #-}+   {-# LINE 265 "src-ag/PrintCode.ag" #-}    rule392 = \ ((_argsIpps) :: PP_Docs) ((_funcIpp) :: PP_Doc) ->-                 {-# LINE 265 "./src-ag/PrintCode.ag" #-}+                 {-# LINE 265 "src-ag/PrintCode.ag" #-}                  hv_sp (_funcIpp : _argsIpps)                  {-# LINE 3693 "dist/build/PrintCode.hs"#-}    {-# INLINE rule393 #-}@@ -3717,15 +3717,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule396 #-}-   {-# LINE 272 "./src-ag/PrintCode.ag" #-}+   {-# LINE 272 "src-ag/PrintCode.ag" #-}    rule396 = \  (_ :: ()) ->-                               {-# LINE 272 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 272 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 3725 "dist/build/PrintCode.hs"#-}    {-# INLINE rule397 #-}-   {-# LINE 273 "./src-ag/PrintCode.ag" #-}+   {-# LINE 273 "src-ag/PrintCode.ag" #-}    rule397 = \ ((_lhsInested) :: Bool) ((_tpsIpps) :: PP_Docs) ->-                               {-# LINE 273 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 273 "src-ag/PrintCode.ag" #-}                                ppTuple _lhsInested _tpsIpps                                {-# LINE 3731 "dist/build/PrintCode.hs"#-}    {-# INLINE rule398 #-}@@ -3749,15 +3749,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule399 #-}-   {-# LINE 275 "./src-ag/PrintCode.ag" #-}+   {-# LINE 275 "src-ag/PrintCode.ag" #-}    rule399 = \  (_ :: ()) ->-                                      {-# LINE 275 "./src-ag/PrintCode.ag" #-}+                                      {-# LINE 275 "src-ag/PrintCode.ag" #-}                                       5                                       {-# LINE 3757 "dist/build/PrintCode.hs"#-}    {-# INLINE rule400 #-}-   {-# LINE 276 "./src-ag/PrintCode.ag" #-}+   {-# LINE 276 "src-ag/PrintCode.ag" #-}    rule400 = \ ((_lhsInested) :: Bool) ((_tpsIpps) :: PP_Docs) ->-                                      {-# LINE 276 "./src-ag/PrintCode.ag" #-}+                                      {-# LINE 276 "src-ag/PrintCode.ag" #-}                                       ppUnboxedTuple _lhsInested _tpsIpps                                       {-# LINE 3763 "dist/build/PrintCode.hs"#-}    {-# INLINE rule401 #-}@@ -3781,15 +3781,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule402 #-}-   {-# LINE 278 "./src-ag/PrintCode.ag" #-}+   {-# LINE 278 "src-ag/PrintCode.ag" #-}    rule402 = \  (_ :: ()) ->-                               {-# LINE 278 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 278 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 3789 "dist/build/PrintCode.hs"#-}    {-# INLINE rule403 #-}-   {-# LINE 279 "./src-ag/PrintCode.ag" #-}+   {-# LINE 279 "src-ag/PrintCode.ag" #-}    rule403 = \ ((_tpIpp) :: PP_Doc) ->-                               {-# LINE 279 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 279 "src-ag/PrintCode.ag" #-}                                "[" >|< _tpIpp >|< "]"                                {-# LINE 3795 "dist/build/PrintCode.hs"#-}    {-# INLINE rule404 #-}@@ -3810,15 +3810,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule405 #-}-   {-# LINE 281 "./src-ag/PrintCode.ag" #-}+   {-# LINE 281 "src-ag/PrintCode.ag" #-}    rule405 = \  (_ :: ()) ->-                               {-# LINE 281 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 281 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 3818 "dist/build/PrintCode.hs"#-}    {-# INLINE rule406 #-}-   {-# LINE 282 "./src-ag/PrintCode.ag" #-}+   {-# LINE 282 "src-ag/PrintCode.ag" #-}    rule406 = \ txt_ ->-                               {-# LINE 282 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 282 "src-ag/PrintCode.ag" #-}                                if reallySimple txt_ then text txt_ else pp_parens (text txt_)                                {-# LINE 3824 "dist/build/PrintCode.hs"#-} {-# NOINLINE sem_Type_NontermType #-}@@ -3837,21 +3837,21 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule407 #-}-   {-# LINE 284 "./src-ag/PrintCode.ag" #-}+   {-# LINE 284 "src-ag/PrintCode.ag" #-}    rule407 = \  (_ :: ()) ->-                               {-# LINE 284 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 284 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 3845 "dist/build/PrintCode.hs"#-}    {-# INLINE rule408 #-}-   {-# LINE 285 "./src-ag/PrintCode.ag" #-}+   {-# LINE 285 "src-ag/PrintCode.ag" #-}    rule408 = \ _prefix name_ params_ ->-                               {-# LINE 285 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 285 "src-ag/PrintCode.ag" #-}                                _prefix     >|< text name_ >#< hv_sp params_                                {-# LINE 3851 "dist/build/PrintCode.hs"#-}    {-# INLINE rule409 #-}-   {-# LINE 286 "./src-ag/PrintCode.ag" #-}+   {-# LINE 286 "src-ag/PrintCode.ag" #-}    rule409 = \ deforested_ ->-                                {-# LINE 286 "./src-ag/PrintCode.ag" #-}+                                {-# LINE 286 "src-ag/PrintCode.ag" #-}                                 if deforested_                                 then text "T_"                                 else empty@@ -3874,15 +3874,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule410 #-}-   {-# LINE 289 "./src-ag/PrintCode.ag" #-}+   {-# LINE 289 "src-ag/PrintCode.ag" #-}    rule410 = \  (_ :: ()) ->-                               {-# LINE 289 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 289 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 3882 "dist/build/PrintCode.hs"#-}    {-# INLINE rule411 #-}-   {-# LINE 290 "./src-ag/PrintCode.ag" #-}+   {-# LINE 290 "src-ag/PrintCode.ag" #-}    rule411 = \ ((_tpIpp) :: PP_Doc) ->-                               {-# LINE 290 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 290 "src-ag/PrintCode.ag" #-}                                text "Maybe" >#< pp_parens _tpIpp                                {-# LINE 3888 "dist/build/PrintCode.hs"#-}    {-# INLINE rule412 #-}@@ -3909,15 +3909,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule413 #-}-   {-# LINE 291 "./src-ag/PrintCode.ag" #-}+   {-# LINE 291 "src-ag/PrintCode.ag" #-}    rule413 = \  (_ :: ()) ->-                               {-# LINE 291 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 291 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 3917 "dist/build/PrintCode.hs"#-}    {-# INLINE rule414 #-}-   {-# LINE 292 "./src-ag/PrintCode.ag" #-}+   {-# LINE 292 "src-ag/PrintCode.ag" #-}    rule414 = \ ((_leftIpp) :: PP_Doc) ((_rightIpp) :: PP_Doc) ->-                               {-# LINE 292 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 292 "src-ag/PrintCode.ag" #-}                                text "Either" >#< pp_parens _leftIpp >#< pp_parens _rightIpp                                {-# LINE 3923 "dist/build/PrintCode.hs"#-}    {-# INLINE rule415 #-}@@ -3947,15 +3947,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule417 #-}-   {-# LINE 293 "./src-ag/PrintCode.ag" #-}+   {-# LINE 293 "src-ag/PrintCode.ag" #-}    rule417 = \  (_ :: ()) ->-                               {-# LINE 293 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 293 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 3955 "dist/build/PrintCode.hs"#-}    {-# INLINE rule418 #-}-   {-# LINE 294 "./src-ag/PrintCode.ag" #-}+   {-# LINE 294 "src-ag/PrintCode.ag" #-}    rule418 = \ ((_keyIpp) :: PP_Doc) ((_valueIpp) :: PP_Doc) ->-                               {-# LINE 294 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 294 "src-ag/PrintCode.ag" #-}                                text "Data.Map.Map" >#< pp_parens _keyIpp >#< pp_parens _valueIpp                                {-# LINE 3961 "dist/build/PrintCode.hs"#-}    {-# INLINE rule419 #-}@@ -3982,15 +3982,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule421 #-}-   {-# LINE 295 "./src-ag/PrintCode.ag" #-}+   {-# LINE 295 "src-ag/PrintCode.ag" #-}    rule421 = \  (_ :: ()) ->-                               {-# LINE 295 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 295 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 3990 "dist/build/PrintCode.hs"#-}    {-# INLINE rule422 #-}-   {-# LINE 296 "./src-ag/PrintCode.ag" #-}+   {-# LINE 296 "src-ag/PrintCode.ag" #-}    rule422 = \ ((_valueIpp) :: PP_Doc) ->-                               {-# LINE 296 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 296 "src-ag/PrintCode.ag" #-}                                text "Data.IntMap.IntMap" >#< pp_parens _valueIpp                                {-# LINE 3996 "dist/build/PrintCode.hs"#-}    {-# INLINE rule423 #-}@@ -4014,15 +4014,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule424 #-}-   {-# LINE 297 "./src-ag/PrintCode.ag" #-}+   {-# LINE 297 "src-ag/PrintCode.ag" #-}    rule424 = \  (_ :: ()) ->-                               {-# LINE 297 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 297 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 4022 "dist/build/PrintCode.hs"#-}    {-# INLINE rule425 #-}-   {-# LINE 298 "./src-ag/PrintCode.ag" #-}+   {-# LINE 298 "src-ag/PrintCode.ag" #-}    rule425 = \ ((_tpIpp) :: PP_Doc) ->-                               {-# LINE 298 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 298 "src-ag/PrintCode.ag" #-}                                text "Data.Set.Set" >#< pp_parens _tpIpp                                {-# LINE 4028 "dist/build/PrintCode.hs"#-}    {-# INLINE rule426 #-}@@ -4043,15 +4043,15 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule427 #-}-   {-# LINE 299 "./src-ag/PrintCode.ag" #-}+   {-# LINE 299 "src-ag/PrintCode.ag" #-}    rule427 = \  (_ :: ()) ->-                               {-# LINE 299 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 299 "src-ag/PrintCode.ag" #-}                                5                                {-# LINE 4051 "dist/build/PrintCode.hs"#-}    {-# INLINE rule428 #-}-   {-# LINE 300 "./src-ag/PrintCode.ag" #-}+   {-# LINE 300 "src-ag/PrintCode.ag" #-}    rule428 = \  (_ :: ()) ->-                               {-# LINE 300 "./src-ag/PrintCode.ag" #-}+                               {-# LINE 300 "src-ag/PrintCode.ag" #-}                                text "Data.IntSet.IntSet"                                {-# LINE 4057 "dist/build/PrintCode.hs"#-} @@ -4064,8 +4064,8 @@ wrap_Types !(T_Types act) !(Inh_Types _lhsInested) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Types_vIn52 _lhsInested-        !(T_Types_vOut52 _lhsOpps) <- return (inv_Types_s53 sem arg)+        let arg52 = T_Types_vIn52 _lhsInested+        !(T_Types_vOut52 _lhsOpps) <- return (inv_Types_s53 sem arg52)         return (Syn_Types _lhsOpps)    ) @@ -4104,9 +4104,9 @@          in __result_ )      in C_Types_s53 v52    {-# INLINE rule429 #-}-   {-# LINE 76 "./src-ag/PrintCode.ag" #-}+   {-# LINE 76 "src-ag/PrintCode.ag" #-}    rule429 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 76 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 76 "src-ag/PrintCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 4112 "dist/build/PrintCode.hs"#-}    {-# INLINE rule430 #-}@@ -4128,8 +4128,8 @@          in __result_ )      in C_Types_s53 v52    {-# INLINE rule432 #-}-   {-# LINE 77 "./src-ag/PrintCode.ag" #-}+   {-# LINE 77 "src-ag/PrintCode.ag" #-}    rule432 = \  (_ :: ()) ->-                     {-# LINE 77 "./src-ag/PrintCode.ag" #-}+                     {-# LINE 77 "src-ag/PrintCode.ag" #-}                      []                      {-# LINE 4136 "dist/build/PrintCode.hs"#-}
src-generated/PrintErrorMessages.hs view
@@ -2,7 +2,7 @@ {-# LANGUAGE ScopedTypeVariables #-}  module PrintErrorMessages where-{-# LINE 2 "./src-ag/ErrorMessages.ag" #-}+{-# LINE 2 "src-ag/ErrorMessages.ag" #-}  import UU.Scanner.Position(Pos) import Pretty@@ -10,7 +10,7 @@ import CommonTypes {-# LINE 12 "dist/build/PrintErrorMessages.hs" #-} -{-# LINE 4 "./src-ag/PrintErrorMessages.ag" #-}+{-# LINE 4 "src-ag/PrintErrorMessages.ag" #-}  import UU.Scanner.Position(Pos(..), noPos) import ErrorMessages@@ -20,14 +20,14 @@ {-# LINE 21 "dist/build/PrintErrorMessages.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 13 "./src-ag/PrintErrorMessages.ag" #-}+{-# LINE 13 "src-ag/PrintErrorMessages.ag" #-}  instance Err.Error Error where   noMsg  = Err.strMsg "error"   strMsg = CustomError False noPos . pp {-# LINE 29 "dist/build/PrintErrorMessages.hs" #-} -{-# LINE 20 "./src-ag/PrintErrorMessages.ag" #-}+{-# LINE 20 "src-ag/PrintErrorMessages.ag" #-}  isError :: Options -> Error -> Bool isError _ (ParserError     _ _ _    ) = True@@ -71,7 +71,7 @@   = any ($ opts) [ wignore, bangpats, cases, strictCases, stricterCases, strictSems, withCycle ] {-# LINE 73 "dist/build/PrintErrorMessages.hs" #-} -{-# LINE 548 "./src-ag/PrintErrorMessages.ag" #-}+{-# LINE 548 "src-ag/PrintErrorMessages.ag" #-}  toWidth :: Int -> String -> String toWidth n xs | k<n       = xs ++ replicate (n-k) ' '@@ -117,7 +117,7 @@ ppAttrUse f a = "@" >|< ppAttr f a {-# LINE 119 "dist/build/PrintErrorMessages.hs" #-} -{-# LINE 594 "./src-ag/PrintErrorMessages.ag" #-}+{-# LINE 594 "src-ag/PrintErrorMessages.ag" #-}  infixr 5 +#+ (+#+) :: String -> String -> String@@ -189,8 +189,8 @@ wrap_Error (T_Error act) (Inh_Error _lhsIoptions _lhsIverbose) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Error_vIn1 _lhsIoptions _lhsIverbose-        (T_Error_vOut1 _lhsOme _lhsOpp) <- return (inv_Error_s2 sem arg)+        let arg1 = T_Error_vIn1 _lhsIoptions _lhsIverbose+        (T_Error_vOut1 _lhsOme _lhsOpp) <- return (inv_Error_s2 sem arg1)         return (Syn_Error _lhsOme _lhsOpp)    ) @@ -260,9 +260,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 87 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 87 "src-ag/PrintErrorMessages.ag" #-}    rule0 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me action_ pos_ problem_ ->-                               {-# LINE 87 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 87 "src-ag/PrintErrorMessages.ag" #-}                                let mesg = text ("parser expecting " ++ problem_)                                    pat  = text ""                                    help = text ""@@ -291,9 +291,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule3 #-}-   {-# LINE 93 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 93 "src-ag/PrintErrorMessages.ag" #-}    rule3 = \ ((_lhsIverbose) :: Bool) msg_ pos_ ->-                               {-# LINE 93 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 93 "src-ag/PrintErrorMessages.ag" #-}                                ppError True pos_ (text msg_) (text "") (text "") (text "Correct the syntax of the Haskell code.") _lhsIverbose                                {-# LINE 299 "dist/build/PrintErrorMessages.hs"#-}    {-# INLINE rule4 #-}@@ -318,9 +318,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule6 #-}-   {-# LINE 95 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 95 "src-ag/PrintErrorMessages.ag" #-}    rule6 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me con_ nt_ occ1_ ->-                               {-# LINE 95 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 95 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Repeated definition for alternative", getName con_                                                  ,"of nonterminal", getName nt_, "."                                                  ] >-<@@ -362,9 +362,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule9 #-}-   {-# LINE 117 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 117 "src-ag/PrintErrorMessages.ag" #-}    rule9 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me nt_ occ1_ ->-                               {-# LINE 117 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 117 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Definition of type synonym", getName nt_, "clashes with another"                                                  ,"type synonym."                                                  ] >-<@@ -404,9 +404,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule12 #-}-   {-# LINE 134 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 134 "src-ag/PrintErrorMessages.ag" #-}    rule12 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me name_ occ1_ ->-                               {-# LINE 134 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 134 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Definition of nonterminal set", getName name_, "clashes with another"                                                  ,"set, a type synonym or a data definition."                                                  ] >-<@@ -445,9 +445,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule15 #-}-   {-# LINE 150 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 150 "src-ag/PrintErrorMessages.ag" #-}    rule15 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ nt_ occ1_ ->-                               {-# LINE 150 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 150 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Repeated declaration of inherited attribute", getName attr_                                                  , "of nonterminal", getName nt_, "."                                                  ] >-<@@ -487,9 +487,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule18 #-}-   {-# LINE 169 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 169 "src-ag/PrintErrorMessages.ag" #-}    rule18 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ nt_ occ1_ ->-                               {-# LINE 169 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 169 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Repeated declaration of synthesized attribute", getName attr_                                                  , "of nonterminal", getName nt_, "."                                                  ] >-<@@ -529,9 +529,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule21 #-}-   {-# LINE 188 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 188 "src-ag/PrintErrorMessages.ag" #-}    rule21 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me con_ name_ nt_ occ1_ ->-                               {-# LINE 188 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 188 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Repeated declaration for field", getName name_, "of alternative"                                                  ,getName con_, "of nonterminal", getName nt_, "."                                                  ] >-<@@ -572,9 +572,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule24 #-}-   {-# LINE 208 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 208 "src-ag/PrintErrorMessages.ag" #-}    rule24 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ field_ nt_ occ1_ ->-                               {-# LINE 208 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 208 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more rules for"                                                  ,showAttrDef field_ attr_,"."                                                  ]  >-<@@ -613,9 +613,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule27 #-}-   {-# LINE 226 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 226 "src-ag/PrintErrorMessages.ag" #-}    rule27 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me con_ nm_ nt_ ->-                               {-# LINE 226 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 226 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more rule names for"                                                  ,show nm_,"."                                                  ]@@ -651,9 +651,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule30 #-}-   {-# LINE 241 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 241 "src-ag/PrintErrorMessages.ag" #-}    rule30 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ nt_ ->-                               {-# LINE 241 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 241 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more typesignatures for"                                                  ,showAttrDef _LOC attr_,"."                                                  ]  >-<@@ -691,9 +691,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule33 #-}-   {-# LINE 258 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 258 "src-ag/PrintErrorMessages.ag" #-}    rule33 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me nt_ ->-                               {-# LINE 258 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 258 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Nonterminal", getName nt_, "is not defined."                                                  ]                                    pat   = "DATA" >#< getName nt_ >#< "..."@@ -725,9 +725,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule36 #-}-   {-# LINE 268 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 268 "src-ag/PrintErrorMessages.ag" #-}    rule36 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me con_ nt_ ->-                               {-# LINE 268 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 268 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Constructor", getName con_, "of nonterminal" ,getName nt_, "is  not defined."                                                  ]                                    pat   =   "DATA" >#< getName nt_@@ -761,9 +761,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule39 #-}-   {-# LINE 280 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 280 "src-ag/PrintErrorMessages.ag" #-}    rule39 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me con_ name_ nt_ ->-                               {-# LINE 280 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 280 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Constructor", getName con_, "of nonterminal" ,getName nt_                                                  , "does not have a nontrivial field named", getName name_ , "."                                                  ]@@ -800,9 +800,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule42 #-}-   {-# LINE 295 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 295 "src-ag/PrintErrorMessages.ag" #-}    rule42 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ field_ nt_ ->-                               {-# LINE 295 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 295 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Missing rule for", showAttrDef field_ attr_ , "in alternative"                                                  , getName con_ , "of nonterminal",getName nt_ ,"."                                                  ]@@ -837,9 +837,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule45 #-}-   {-# LINE 308 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 308 "src-ag/PrintErrorMessages.ag" #-}    rule45 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me con_ name_ nt_ ->-                                  {-# LINE 308 "./src-ag/PrintErrorMessages.ag" #-}+                                  {-# LINE 308 "src-ag/PrintErrorMessages.ag" #-}                                   let mesg  = wfill ["Missing rule name ", show name_ , "in alternative"                                                     , getName con_ , "of nonterminal",getName nt_ ,"."                                                     ]@@ -873,9 +873,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule48 #-}-   {-# LINE 320 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 320 "src-ag/PrintErrorMessages.ag" #-}    rule48 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ field_ nt_ ->-                               {-# LINE 320 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 320 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Rule for non-existing", showAttrDef field_ attr_ , "at alternative"                                                  , getName con_ , "of nonterminal",getName nt_, "."                                                  ]@@ -910,9 +910,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule51 #-}-   {-# LINE 334 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 334 "src-ag/PrintErrorMessages.ag" #-}    rule51 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me con_ nt_ var_ ->-                               {-# LINE 334 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 334 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Undefined local variable or field",getName var_, "at constructor"                                                  , getName con_ , "of nonterminal",getName nt_, "."                                                  ]@@ -949,9 +949,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule54 #-}-   {-# LINE 349 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 349 "src-ag/PrintErrorMessages.ag" #-}    rule54 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me con_ nt_ var_ ->-                               {-# LINE 349 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 349 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Nontrivial field ",getName var_, "is used as local at constructor"                                                  , getName con_ , "of nonterminal",getName nt_, "."                                                  ]@@ -987,9 +987,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule57 #-}-   {-# LINE 363 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 363 "src-ag/PrintErrorMessages.ag" #-}    rule57 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ field_ isOut_ nt_ ->-                               {-# LINE 363 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 363 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Undefined"                                                  , if isOut_                                                    then showAttrDef field_ attr_@@ -1030,9 +1030,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule60 #-}-   {-# LINE 391 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 391 "src-ag/PrintErrorMessages.ag" #-}    rule60 = \ ((_lhsIoptions) :: Options) _me mbCon_ nt_ verts_ ->-                               {-# LINE 391 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 391 "src-ag/PrintErrorMessages.ag" #-}                                let pos  = getPos nt_                                    mesg = text "Circular dependency for nonterminal" >#< getName nt_                                           >#< ( case mbCon_ of@@ -1070,9 +1070,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule63 #-}-   {-# LINE 382 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 382 "src-ag/PrintErrorMessages.ag" #-}    rule63 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me name_ ->-                               {-# LINE 382 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 382 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Cyclic definition for nonterminal set", getName name_]                                    pat   = "SET" >#< getName name_ >#< "=" >#< "..." >#< getName name_ >#< "..."                                    help =  wfill ["The defintion for a nonterminal set named" , getName name_@@ -1104,9 +1104,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule66 #-}-   {-# LINE 406 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 406 "src-ag/PrintErrorMessages.ag" #-}    rule66 = \ ((_lhsIoptions) :: Options) _me mesg_ pos_ ->-                               {-# LINE 406 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 406 "src-ag/PrintErrorMessages.ag" #-}                                let pat   =  text "unknown"                                    help = wfill ["not available."]                                    act  = wfill ["unknown"]@@ -1134,9 +1134,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule69 #-}-   {-# LINE 411 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 411 "src-ag/PrintErrorMessages.ag" #-}    rule69 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ nt_ o_visit_ path_ ->-                               {-# LINE 411 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 411 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Circular dependency for local attribute", getName attr_                                                  , "of alternative", getName con_, "of nonterminal", getName nt_]                                    pat   = "SEM" >#< getName nt_@@ -1171,9 +1171,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule72 #-}-   {-# LINE 423 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 423 "src-ag/PrintErrorMessages.ag" #-}    rule72 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ nt_ o_visit_ path_ ->-                               {-# LINE 423 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 423 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Circular dependency for inst attribute", getName attr_                                                  , "of alternative", getName con_, "of nonterminal", getName nt_]                                    pat   = "SEM" >#< getName nt_@@ -1208,9 +1208,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule75 #-}-   {-# LINE 435 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 435 "src-ag/PrintErrorMessages.ag" #-}    rule75 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me cyclic_ nt_ o_visit_ ->-                               {-# LINE 435 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 435 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["In nonterminal", getName nt_, "synthesized and inherited attributes are mutually dependent" ]                                            >-< vlist (map showEdge cyclic_)                                    pat   = text ""@@ -1241,9 +1241,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule78 #-}-   {-# LINE 443 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 443 "src-ag/PrintErrorMessages.ag" #-}    rule78 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me cinter_ cyclic_ nt_ ->-                               {-# LINE 443 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 443 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["After scheduling, in nonterminal", getName nt_, "synthesized and inherited attributes have an INDUCED mutual dependency" ]                                            >-< vlist (map showEdge cyclic_)                                    pat   = text ""@@ -1275,9 +1275,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule81 #-}-   {-# LINE 452 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 452 "src-ag/PrintErrorMessages.ag" #-}    rule81 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ nt_ ->-                               {-# LINE 452 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 452 "src-ag/PrintErrorMessages.ag" #-}                                let mesg = wfill ["Type signature needed, but not found for", showAttrDef _LOC attr_ , "in alternative"                                                  , getName con_ , "of nonterminal",getName nt_ ,"."                                                  ]>-<@@ -1314,9 +1314,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule84 #-}-   {-# LINE 466 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 466 "src-ag/PrintErrorMessages.ag" #-}    rule84 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ nt_ ->-                               {-# LINE 466 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 466 "src-ag/PrintErrorMessages.ag" #-}                                let mesg = wfill ["Type signature needed, but not found for", showAttrDef _INST attr_ , "in alternative"                                                  , getName con_ , "of nonterminal",getName nt_ ,"."                                                  ]>-<@@ -1353,9 +1353,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule87 #-}-   {-# LINE 496 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 496 "src-ag/PrintErrorMessages.ag" #-}    rule87 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ con_ nt_ ->-                               {-# LINE 496 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 496 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more unique-attribute signatures for"                                                  ,showAttrDef _LOC attr_,"."                                                  ]  >-<@@ -1393,9 +1393,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule90 #-}-   {-# LINE 480 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 480 "src-ag/PrintErrorMessages.ag" #-}    rule90 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ nt_ ->-                               {-# LINE 480 "./src-ag/PrintErrorMessages.ag" #-}+                               {-# LINE 480 "src-ag/PrintErrorMessages.ag" #-}                                let mesg  = wfill ["Missing unique counter (chained attribute)"                                                  , getName attr_                                                  , "at nonterminal"@@ -1433,9 +1433,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule93 #-}-   {-# LINE 513 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 513 "src-ag/PrintErrorMessages.ag" #-}    rule93 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me attr_ nt_ ->-                              {-# LINE 513 "./src-ag/PrintErrorMessages.ag" #-}+                              {-# LINE 513 "src-ag/PrintErrorMessages.ag" #-}                               let mesg  = wfill ["Missing synthesized attribute"                                                 , getName attr_                                                 , "at nonterminal"@@ -1473,9 +1473,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule96 #-}-   {-# LINE 529 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 529 "src-ag/PrintErrorMessages.ag" #-}    rule96 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me child_ from_ to_ vis_ ->-                              {-# LINE 529 "./src-ag/PrintErrorMessages.ag" #-}+                              {-# LINE 529 "src-ag/PrintErrorMessages.ag" #-}                               let mesg  = "visit" >#< vis_ >#< "of child" >#< child_ >#< " with kind" >#< show to_ >#< " cannot be called from a visit with kind " >#< show from_                                   pat   = empty                                   help  = empty@@ -1504,9 +1504,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule99 #-}-   {-# LINE 535 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 535 "src-ag/PrintErrorMessages.ag" #-}    rule99 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me kind_ rule_ ->-                              {-# LINE 535 "./src-ag/PrintErrorMessages.ag" #-}+                              {-# LINE 535 "src-ag/PrintErrorMessages.ag" #-}                               let mesg  = "rule" >#< rule_ >#< "cannot be called from a visit with kind " >#< show kind_                                   pat   = empty                                   help  = empty@@ -1535,9 +1535,9 @@          in __result_ )      in C_Error_s2 v1    {-# INLINE rule102 #-}-   {-# LINE 542 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 542 "src-ag/PrintErrorMessages.ag" #-}    rule102 = \ ((_lhsIoptions) :: Options) ((_lhsIverbose) :: Bool) _me child_ kind_ ->-                              {-# LINE 542 "./src-ag/PrintErrorMessages.ag" #-}+                              {-# LINE 542 "src-ag/PrintErrorMessages.ag" #-}                               let mesg  = "child" >#< child_ >#< "cannot be called from a visit with kind " >#< show kind_                                   pat   = empty                                   help  = empty@@ -1560,8 +1560,8 @@ wrap_Errors (T_Errors act) (Inh_Errors _lhsIdups _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Errors_vIn4 _lhsIdups _lhsIoptions-        (T_Errors_vOut4 _lhsOpp) <- return (inv_Errors_s5 sem arg)+        let arg4 = T_Errors_vIn4 _lhsIdups _lhsIoptions+        (T_Errors_vOut4 _lhsOpp) <- return (inv_Errors_s5 sem arg4)         return (Syn_Errors _lhsOpp)    ) @@ -1604,29 +1604,29 @@          in __result_ )      in C_Errors_s5 v4    {-# INLINE rule105 #-}-   {-# LINE 76 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 76 "src-ag/PrintErrorMessages.ag" #-}    rule105 = \ ((_lhsIoptions) :: Options) ->-                       {-# LINE 76 "./src-ag/PrintErrorMessages.ag" #-}+                       {-# LINE 76 "src-ag/PrintErrorMessages.ag" #-}                        verbose _lhsIoptions                        {-# LINE 1612 "dist/build/PrintErrorMessages.hs"#-}    {-# INLINE rule106 #-}-   {-# LINE 77 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 77 "src-ag/PrintErrorMessages.ag" #-}    rule106 = \ ((_hdIpp) :: PP_Doc) ->-                      {-# LINE 77 "./src-ag/PrintErrorMessages.ag" #-}+                      {-# LINE 77 "src-ag/PrintErrorMessages.ag" #-}                       disp _hdIpp 5000 ""                       {-# LINE 1618 "dist/build/PrintErrorMessages.hs"#-}    {-# INLINE rule107 #-}-   {-# LINE 79 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 79 "src-ag/PrintErrorMessages.ag" #-}    rule107 = \ ((_hdIpp) :: PP_Doc) ((_lhsIdups) :: [String]) _str ((_tlIpp) :: PP_Doc) ->-                     {-# LINE 79 "./src-ag/PrintErrorMessages.ag" #-}+                     {-# LINE 79 "src-ag/PrintErrorMessages.ag" #-}                      if _str     `elem` _lhsIdups                      then _tlIpp                      else _hdIpp >-< _tlIpp                      {-# LINE 1626 "dist/build/PrintErrorMessages.hs"#-}    {-# INLINE rule108 #-}-   {-# LINE 82 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 82 "src-ag/PrintErrorMessages.ag" #-}    rule108 = \ ((_lhsIdups) :: [String]) _str ->-                      {-# LINE 82 "./src-ag/PrintErrorMessages.ag" #-}+                      {-# LINE 82 "src-ag/PrintErrorMessages.ag" #-}                       _str     : _lhsIdups                       {-# LINE 1632 "dist/build/PrintErrorMessages.hs"#-}    {-# INLINE rule109 #-}@@ -1652,14 +1652,14 @@          in __result_ )      in C_Errors_s5 v4    {-# INLINE rule112 #-}-   {-# LINE 76 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 76 "src-ag/PrintErrorMessages.ag" #-}    rule112 = \ ((_lhsIoptions) :: Options) ->-                       {-# LINE 76 "./src-ag/PrintErrorMessages.ag" #-}+                       {-# LINE 76 "src-ag/PrintErrorMessages.ag" #-}                        verbose _lhsIoptions                        {-# LINE 1660 "dist/build/PrintErrorMessages.hs"#-}    {-# INLINE rule113 #-}-   {-# LINE 83 "./src-ag/PrintErrorMessages.ag" #-}+   {-# LINE 83 "src-ag/PrintErrorMessages.ag" #-}    rule113 = \  (_ :: ()) ->-                     {-# LINE 83 "./src-ag/PrintErrorMessages.ag" #-}+                     {-# LINE 83 "src-ag/PrintErrorMessages.ag" #-}                      text ""                      {-# LINE 1666 "dist/build/PrintErrorMessages.hs"#-}
src-generated/PrintOcamlCode.hs view
@@ -3,14 +3,14 @@ {-# LANGUAGE ScopedTypeVariables #-}  module PrintOcamlCode where-{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 12 "dist/build/PrintOcamlCode.hs" #-} -{-# LINE 2 "./src-ag/Code.ag" #-}+{-# LINE 2 "src-ag/Code.ag" #-}  import Patterns import Data.Set(Set)@@ -19,7 +19,7 @@ import qualified Data.Map as Map {-# LINE 21 "dist/build/PrintOcamlCode.hs" #-} -{-# LINE 10 "./src-ag/PrintOcamlCode.ag" #-}+{-# LINE 10 "src-ag/PrintOcamlCode.ag" #-}  import Pretty import Code@@ -31,7 +31,7 @@ {-# LINE 32 "dist/build/PrintOcamlCode.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 146 "./src-ag/Code.ag" #-}+{-# LINE 146 "src-ag/Code.ag" #-}  -- Unboxed tuples --   unbox  Whether unboxed tuples are wanted or not@@ -50,7 +50,7 @@                                | otherwise                                = UnboxedTupleLhs comps {-# LINE 52 "dist/build/PrintOcamlCode.hs" #-} -{-# LINE 21 "./src-ag/PrintOcamlCode.ag" #-}+{-# LINE 21 "src-ag/PrintOcamlCode.ag" #-}  type PP_Docs = [PP_Doc] @@ -69,7 +69,7 @@ ppTuple False pps = "(" >|< pp_block " " ")" "," pps {-# LINE 71 "dist/build/PrintOcamlCode.hs" #-} -{-# LINE 177 "./src-ag/PrintOcamlCode.ag" #-}+{-# LINE 177 "src-ag/PrintOcamlCode.ag" #-}  toOcamlTC :: String -> String toOcamlTC (c:cs) = toLower c : cs@@ -84,8 +84,8 @@ wrap_CaseAlt !(T_CaseAlt act) !(Inh_CaseAlt _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_CaseAlt_vIn1 _lhsIoptions-        !(T_CaseAlt_vOut1 _lhsOpp) <- return (inv_CaseAlt_s2 sem arg)+        let arg1 = T_CaseAlt_vIn1 _lhsIoptions+        !(T_CaseAlt_vOut1 _lhsOpp) <- return (inv_CaseAlt_s2 sem arg1)         return (Syn_CaseAlt _lhsOpp)    ) @@ -124,9 +124,9 @@          in __result_ )      in C_CaseAlt_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 184 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 184 "src-ag/PrintOcamlCode.ag" #-}    rule0 = \ ((_exprIpp) :: PP_Doc) ((_leftIpp) :: PP_Doc) ->-                               {-# LINE 184 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 184 "src-ag/PrintOcamlCode.ag" #-}                                _leftIpp >#< "->" >#< _exprIpp                                {-# LINE 132 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule1 #-}@@ -145,8 +145,8 @@ wrap_CaseAlts !(T_CaseAlts act) !(Inh_CaseAlts _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_CaseAlts_vIn4 _lhsIoptions-        !(T_CaseAlts_vOut4 _lhsOpps) <- return (inv_CaseAlts_s5 sem arg)+        let arg4 = T_CaseAlts_vIn4 _lhsIoptions+        !(T_CaseAlts_vOut4 _lhsOpps) <- return (inv_CaseAlts_s5 sem arg4)         return (Syn_CaseAlts _lhsOpps)    ) @@ -185,9 +185,9 @@          in __result_ )      in C_CaseAlts_s5 v4    {-# INLINE rule3 #-}-   {-# LINE 65 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 65 "src-ag/PrintOcamlCode.ag" #-}    rule3 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 65 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 65 "src-ag/PrintOcamlCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 193 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule4 #-}@@ -209,9 +209,9 @@          in __result_ )      in C_CaseAlts_s5 v4    {-# INLINE rule6 #-}-   {-# LINE 66 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 66 "src-ag/PrintOcamlCode.ag" #-}    rule6 = \  (_ :: ()) ->-                     {-# LINE 66 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 66 "src-ag/PrintOcamlCode.ag" #-}                      []                      {-# LINE 217 "dist/build/PrintOcamlCode.hs"#-} @@ -224,8 +224,8 @@ wrap_Chunk !(T_Chunk act) !(Inh_Chunk _lhsIisToplevel _lhsIoptions _lhsItextBlockMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Chunk_vIn7 _lhsIisToplevel _lhsIoptions _lhsItextBlockMap-        !(T_Chunk_vOut7 _lhsOpps) <- return (inv_Chunk_s8 sem arg)+        let arg7 = T_Chunk_vIn7 _lhsIisToplevel _lhsIoptions _lhsItextBlockMap+        !(T_Chunk_vOut7 _lhsOpps) <- return (inv_Chunk_s8 sem arg7)         return (Syn_Chunk _lhsOpps)    ) @@ -286,9 +286,9 @@          in __result_ )      in C_Chunk_s8 v7    {-# INLINE rule7 #-}-   {-# LINE 97 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 97 "src-ag/PrintOcamlCode.ag" #-}    rule7 = \ ((_cataFunIpps) :: PP_Docs) ((_commentIpp) :: PP_Doc) ((_dataDefIpps) :: PP_Docs) ((_infoIpps) :: PP_Docs) ((_lhsItextBlockMap) :: Map BlockInfo PP_Doc) ((_semDomIpps) :: PP_Docs) ((_semFunctionsIpps) :: PP_Docs) ((_semWrapperIpps) :: PP_Docs) name_ ->-                                {-# LINE 97 "./src-ag/PrintOcamlCode.ag" #-}+                                {-# LINE 97 "src-ag/PrintOcamlCode.ag" #-}                                 _commentIpp                                 :  _infoIpps                                 ++ _dataDefIpps@@ -350,8 +350,8 @@ wrap_Chunks !(T_Chunks act) !(Inh_Chunks _lhsIisToplevel _lhsIoptions _lhsItextBlockMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Chunks_vIn10 _lhsIisToplevel _lhsIoptions _lhsItextBlockMap-        !(T_Chunks_vOut10 _lhsOpps) <- return (inv_Chunks_s11 sem arg)+        let arg10 = T_Chunks_vIn10 _lhsIisToplevel _lhsIoptions _lhsItextBlockMap+        !(T_Chunks_vOut10 _lhsOpps) <- return (inv_Chunks_s11 sem arg10)         return (Syn_Chunks _lhsOpps)    ) @@ -394,9 +394,9 @@          in __result_ )      in C_Chunks_s11 v10    {-# INLINE rule22 #-}-   {-# LINE 85 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 85 "src-ag/PrintOcamlCode.ag" #-}    rule22 = \ ((_hdIpps) :: PP_Docs) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 85 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 85 "src-ag/PrintOcamlCode.ag" #-}                      _hdIpps ++ _tlIpps                      {-# LINE 402 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule23 #-}@@ -430,9 +430,9 @@          in __result_ )      in C_Chunks_s11 v10    {-# INLINE rule29 #-}-   {-# LINE 86 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 86 "src-ag/PrintOcamlCode.ag" #-}    rule29 = \  (_ :: ()) ->-                     {-# LINE 86 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 86 "src-ag/PrintOcamlCode.ag" #-}                      []                      {-# LINE 438 "dist/build/PrintOcamlCode.hs"#-} @@ -445,8 +445,8 @@ wrap_DataAlt !(T_DataAlt act) !(Inh_DataAlt ) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_DataAlt_vIn13 -        !(T_DataAlt_vOut13 _lhsOpp) <- return (inv_DataAlt_s14 sem arg)+        let arg13 = T_DataAlt_vIn13 +        !(T_DataAlt_vOut13 _lhsOpp) <- return (inv_DataAlt_s14 sem arg13)         return (Syn_DataAlt _lhsOpp)    ) @@ -482,9 +482,9 @@          in __result_ )      in C_DataAlt_s14 v13    {-# INLINE rule30 #-}-   {-# LINE 187 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 187 "src-ag/PrintOcamlCode.ag" #-}    rule30 = \ ((_argsIpps) :: PP_Docs) name_ ->-                               {-# LINE 187 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 187 "src-ag/PrintOcamlCode.ag" #-}                                name_ >#< "of" >#< pp_block "" "" " * " (map pp_parens _argsIpps)                                {-# LINE 490 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_DataAlt_Record #-}@@ -502,9 +502,9 @@          in __result_ )      in C_DataAlt_s14 v13    {-# INLINE rule31 #-}-   {-# LINE 188 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 188 "src-ag/PrintOcamlCode.ag" #-}    rule31 = \ ((_argsIpps) :: PP_Docs) ->-                               {-# LINE 188 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 188 "src-ag/PrintOcamlCode.ag" #-}                                pp_block "{" "}" ";" _argsIpps                                {-# LINE 510 "dist/build/PrintOcamlCode.hs"#-} @@ -517,8 +517,8 @@ wrap_DataAlts !(T_DataAlts act) !(Inh_DataAlts ) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_DataAlts_vIn16 -        !(T_DataAlts_vOut16 _lhsOpps) <- return (inv_DataAlts_s17 sem arg)+        let arg16 = T_DataAlts_vIn16 +        !(T_DataAlts_vOut16 _lhsOpps) <- return (inv_DataAlts_s17 sem arg16)         return (Syn_DataAlts _lhsOpps)    ) @@ -555,9 +555,9 @@          in __result_ )      in C_DataAlts_s17 v16    {-# INLINE rule32 #-}-   {-# LINE 69 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 69 "src-ag/PrintOcamlCode.ag" #-}    rule32 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 69 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 69 "src-ag/PrintOcamlCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 563 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_DataAlts_Nil #-}@@ -573,9 +573,9 @@          in __result_ )      in C_DataAlts_s17 v16    {-# INLINE rule33 #-}-   {-# LINE 70 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 70 "src-ag/PrintOcamlCode.ag" #-}    rule33 = \  (_ :: ()) ->-                     {-# LINE 70 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 70 "src-ag/PrintOcamlCode.ag" #-}                      []                      {-# LINE 581 "dist/build/PrintOcamlCode.hs"#-} @@ -588,8 +588,8 @@ wrap_Decl !(T_Decl act) !(Inh_Decl _lhsIisToplevel _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Decl_vIn19 _lhsIisToplevel _lhsIoptions-        !(T_Decl_vOut19 _lhsOpp) <- return (inv_Decl_s20 sem arg)+        let arg19 = T_Decl_vIn19 _lhsIisToplevel _lhsIoptions+        !(T_Decl_vOut19 _lhsOpp) <- return (inv_Decl_s20 sem arg19)         return (Syn_Decl _lhsOpp)    ) @@ -638,9 +638,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule34 #-}-   {-# LINE 107 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 107 "src-ag/PrintOcamlCode.ag" #-}    rule34 = \ ((_leftIpp) :: PP_Doc) ((_lhsIisToplevel) :: Bool) ((_rhsIpp) :: PP_Doc) ->-                               {-# LINE 107 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 107 "src-ag/PrintOcamlCode.ag" #-}                                if _lhsIisToplevel                                then "let" >#< _leftIpp >#< "="                                     >-< indent 4 _rhsIpp >#< ";;"@@ -672,9 +672,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule37 #-}-   {-# LINE 112 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 112 "src-ag/PrintOcamlCode.ag" #-}    rule37 = \  (_ :: ()) ->-                               {-# LINE 112 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 112 "src-ag/PrintOcamlCode.ag" #-}                                error "pp of Decl.Bind not supported"                                {-# LINE 680 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule38 #-}@@ -702,9 +702,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule40 #-}-   {-# LINE 113 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 113 "src-ag/PrintOcamlCode.ag" #-}    rule40 = \  (_ :: ()) ->-                               {-# LINE 113 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 113 "src-ag/PrintOcamlCode.ag" #-}                                error "pp of Decl.BindLet not supported"                                {-# LINE 710 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule41 #-}@@ -728,9 +728,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule43 #-}-   {-# LINE 114 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 114 "src-ag/PrintOcamlCode.ag" #-}    rule43 = \ ((_altsIpps) :: PP_Docs) name_ params_ ->-                               {-# LINE 114 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 114 "src-ag/PrintOcamlCode.ag" #-}                                "type" >#< hv_sp (map (\p -> "'" >|< p) params_ ++ [text $ toOcamlTC name_])                                >#<  ( case _altsIpps of                                             [] -> empty@@ -754,9 +754,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule44 #-}-   {-# LINE 121 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 121 "src-ag/PrintOcamlCode.ag" #-}    rule44 = \  (_ :: ()) ->-                               {-# LINE 121 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 121 "src-ag/PrintOcamlCode.ag" #-}                                error "pp of Decl.NewType not supported"                                {-# LINE 762 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Decl_Type #-}@@ -774,9 +774,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule45 #-}-   {-# LINE 122 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 122 "src-ag/PrintOcamlCode.ag" #-}    rule45 = \ ((_tpIpp) :: PP_Doc) name_ params_ ->-                               {-# LINE 122 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 122 "src-ag/PrintOcamlCode.ag" #-}                                "type" >#< hv_sp (map (\p -> "'" >|< p) params_ ++ [text $ toOcamlTC name_]) >#< "=" >#<  _tpIpp >#< ";;"                                {-# LINE 782 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Decl_TSig #-}@@ -794,9 +794,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule46 #-}-   {-# LINE 123 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 123 "src-ag/PrintOcamlCode.ag" #-}    rule46 = \ ((_tpIpp) :: PP_Doc) name_ ->-                               {-# LINE 123 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 123 "src-ag/PrintOcamlCode.ag" #-}                                "(*" >#< name_ >#< ":" >#< _tpIpp >#< "*)"                                {-# LINE 802 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Decl_Comment #-}@@ -812,9 +812,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule47 #-}-   {-# LINE 124 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 124 "src-ag/PrintOcamlCode.ag" #-}    rule47 = \ txt_ ->-                               {-# LINE 124 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 124 "src-ag/PrintOcamlCode.ag" #-}                                if '\n' `elem` txt_                                  then "(* " >-< vlist (lines txt_) >-< "*)"                                  else "(*" >#< txt_ >#< "*)"@@ -832,9 +832,9 @@          in __result_ )      in C_Decl_s20 v19    {-# INLINE rule48 #-}-   {-# LINE 127 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 127 "src-ag/PrintOcamlCode.ag" #-}    rule48 = \  (_ :: ()) ->-                               {-# LINE 127 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 127 "src-ag/PrintOcamlCode.ag" #-}                                error "pp of Decl.PragmaDecl not supported"                                {-# LINE 840 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Decl_Resume #-}@@ -901,8 +901,8 @@ wrap_Decls !(T_Decls act) !(Inh_Decls _lhsIisToplevel _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Decls_vIn22 _lhsIisToplevel _lhsIoptions-        !(T_Decls_vOut22 _lhsOpps) <- return (inv_Decls_s23 sem arg)+        let arg22 = T_Decls_vIn22 _lhsIisToplevel _lhsIoptions+        !(T_Decls_vOut22 _lhsOpps) <- return (inv_Decls_s23 sem arg22)         return (Syn_Decls _lhsOpps)    ) @@ -943,9 +943,9 @@          in __result_ )      in C_Decls_s23 v22    {-# INLINE rule55 #-}-   {-# LINE 81 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 81 "src-ag/PrintOcamlCode.ag" #-}    rule55 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 81 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 81 "src-ag/PrintOcamlCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 951 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule56 #-}@@ -973,9 +973,9 @@          in __result_ )      in C_Decls_s23 v22    {-# INLINE rule60 #-}-   {-# LINE 82 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 82 "src-ag/PrintOcamlCode.ag" #-}    rule60 = \  (_ :: ()) ->-                     {-# LINE 82 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 82 "src-ag/PrintOcamlCode.ag" #-}                      []                      {-# LINE 981 "dist/build/PrintOcamlCode.hs"#-} @@ -988,8 +988,8 @@ wrap_Expr !(T_Expr act) !(Inh_Expr _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Expr_vIn25 _lhsIoptions-        !(T_Expr_vOut25 _lhsOpp) <- return (inv_Expr_s26 sem arg)+        let arg25 = T_Expr_vIn25 _lhsIoptions+        !(T_Expr_vOut25 _lhsOpp) <- return (inv_Expr_s26 sem arg25)         return (Syn_Expr _lhsOpp)    ) @@ -1045,15 +1045,15 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule61 #-}-   {-# LINE 131 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 131 "src-ag/PrintOcamlCode.ag" #-}    rule61 = \ ((_bodyIpp) :: PP_Doc) ((_declsIpps) :: PP_Docs) ->-                                 {-# LINE 131 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 131 "src-ag/PrintOcamlCode.ag" #-}                                  pp_parens $ vlist (_declsIpps ++ [_bodyIpp])                                  {-# LINE 1053 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule62 #-}-   {-# LINE 220 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 220 "src-ag/PrintOcamlCode.ag" #-}    rule62 = \  (_ :: ()) ->-                           {-# LINE 220 "./src-ag/PrintOcamlCode.ag" #-}+                           {-# LINE 220 "src-ag/PrintOcamlCode.ag" #-}                            False                            {-# LINE 1059 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule63 #-}@@ -1081,9 +1081,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule65 #-}-   {-# LINE 132 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 132 "src-ag/PrintOcamlCode.ag" #-}    rule65 = \ ((_altsIpps) :: PP_Docs) ((_exprIpp) :: PP_Doc) ->-                                 {-# LINE 132 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 132 "src-ag/PrintOcamlCode.ag" #-}                                  pp_parens ( "match" >#< _exprIpp >#< "with"                                            >-< indent 2 ( case _altsIpps of                                                             [] -> empty@@ -1118,15 +1118,15 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule68 #-}-   {-# LINE 139 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 139 "src-ag/PrintOcamlCode.ag" #-}    rule68 = \  (_ :: ()) ->-                                 {-# LINE 139 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 139 "src-ag/PrintOcamlCode.ag" #-}                                  error "pp of Expr.Do not supported"                                  {-# LINE 1126 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule69 #-}-   {-# LINE 222 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 222 "src-ag/PrintOcamlCode.ag" #-}    rule69 = \  (_ :: ()) ->-                           {-# LINE 222 "./src-ag/PrintOcamlCode.ag" #-}+                           {-# LINE 222 "src-ag/PrintOcamlCode.ag" #-}                            False                            {-# LINE 1132 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule70 #-}@@ -1154,9 +1154,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule72 #-}-   {-# LINE 140 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 140 "src-ag/PrintOcamlCode.ag" #-}    rule72 = \ ((_argsIpps) :: PP_Docs) ((_bodyIpp) :: PP_Doc) ->-                                 {-# LINE 140 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 140 "src-ag/PrintOcamlCode.ag" #-}                                  pp_parens ( pp "fun" >#< hv_sp _argsIpps >#< "->"                                            >-< indent 2 _bodyIpp )                                  {-# LINE 1163 "dist/build/PrintOcamlCode.hs"#-}@@ -1182,9 +1182,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule75 #-}-   {-# LINE 142 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 142 "src-ag/PrintOcamlCode.ag" #-}    rule75 = \ ((_exprsIpps) :: PP_Docs) ->-                                 {-# LINE 142 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 142 "src-ag/PrintOcamlCode.ag" #-}                                  ppTuple False _exprsIpps                                  {-# LINE 1190 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule76 #-}@@ -1206,9 +1206,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule77 #-}-   {-# LINE 143 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 143 "src-ag/PrintOcamlCode.ag" #-}    rule77 = \  (_ :: ()) ->-                                   {-# LINE 143 "./src-ag/PrintOcamlCode.ag" #-}+                                   {-# LINE 143 "src-ag/PrintOcamlCode.ag" #-}                                    error "pp of Expr.UnboxedTupleExpr not supported"                                    {-# LINE 1214 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule78 #-}@@ -1230,9 +1230,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule79 #-}-   {-# LINE 144 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 144 "src-ag/PrintOcamlCode.ag" #-}    rule79 = \ ((_argsIpps) :: PP_Docs) name_ ->-                                 {-# LINE 144 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 144 "src-ag/PrintOcamlCode.ag" #-}                                  pp_parens $ name_ >#< hv_sp _argsIpps                                  {-# LINE 1238 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule80 #-}@@ -1251,9 +1251,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule81 #-}-   {-# LINE 145 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 145 "src-ag/PrintOcamlCode.ag" #-}    rule81 = \ txt_ ->-                                 {-# LINE 145 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 145 "src-ag/PrintOcamlCode.ag" #-}                                  text txt_                                  {-# LINE 1259 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Expr_TextExpr #-}@@ -1269,9 +1269,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule82 #-}-   {-# LINE 146 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 146 "src-ag/PrintOcamlCode.ag" #-}    rule82 = \ lns_ ->-                                 {-# LINE 146 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 146 "src-ag/PrintOcamlCode.ag" #-}                                  vlist (map text lns_)                                  {-# LINE 1277 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Expr_Trace #-}@@ -1290,9 +1290,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule83 #-}-   {-# LINE 147 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 147 "src-ag/PrintOcamlCode.ag" #-}    rule83 = \ ((_exprIpp) :: PP_Doc) ->-                                 {-# LINE 147 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 147 "src-ag/PrintOcamlCode.ag" #-}                                  _exprIpp                                  {-# LINE 1298 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule84 #-}@@ -1314,9 +1314,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule85 #-}-   {-# LINE 148 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 148 "src-ag/PrintOcamlCode.ag" #-}    rule85 = \ ((_exprIpp) :: PP_Doc) ->-                                 {-# LINE 148 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 148 "src-ag/PrintOcamlCode.ag" #-}                                  _exprIpp                                  {-# LINE 1322 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule86 #-}@@ -1338,9 +1338,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule87 #-}-   {-# LINE 149 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 149 "src-ag/PrintOcamlCode.ag" #-}    rule87 = \ ((_exprIpp) :: PP_Doc) ->-                                 {-# LINE 149 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 149 "src-ag/PrintOcamlCode.ag" #-}                                  _exprIpp                                  {-# LINE 1346 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule88 #-}@@ -1364,9 +1364,9 @@          in __result_ )      in C_Expr_s26 v25    {-# INLINE rule89 #-}-   {-# LINE 150 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 150 "src-ag/PrintOcamlCode.ag" #-}    rule89 = \ ((_exprIpp) :: PP_Doc) ->-                                 {-# LINE 150 "./src-ag/PrintOcamlCode.ag" #-}+                                 {-# LINE 150 "src-ag/PrintOcamlCode.ag" #-}                                  _exprIpp                                  {-# LINE 1372 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule90 #-}@@ -1490,8 +1490,8 @@ wrap_Exprs !(T_Exprs act) !(Inh_Exprs _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Exprs_vIn28 _lhsIoptions-        !(T_Exprs_vOut28 _lhsOpps) <- return (inv_Exprs_s29 sem arg)+        let arg28 = T_Exprs_vIn28 _lhsIoptions+        !(T_Exprs_vOut28 _lhsOpps) <- return (inv_Exprs_s29 sem arg28)         return (Syn_Exprs _lhsOpps)    ) @@ -1530,9 +1530,9 @@          in __result_ )      in C_Exprs_s29 v28    {-# INLINE rule103 #-}-   {-# LINE 61 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 61 "src-ag/PrintOcamlCode.ag" #-}    rule103 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 61 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 61 "src-ag/PrintOcamlCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 1538 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule104 #-}@@ -1554,9 +1554,9 @@          in __result_ )      in C_Exprs_s29 v28    {-# INLINE rule106 #-}-   {-# LINE 62 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 62 "src-ag/PrintOcamlCode.ag" #-}    rule106 = \  (_ :: ()) ->-                     {-# LINE 62 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 62 "src-ag/PrintOcamlCode.ag" #-}                      []                      {-# LINE 1562 "dist/build/PrintOcamlCode.hs"#-} @@ -1569,8 +1569,8 @@ wrap_Lhs !(T_Lhs act) !(Inh_Lhs _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Lhs_vIn31 _lhsIoptions-        !(T_Lhs_vOut31 _lhsOpp) <- return (inv_Lhs_s32 sem arg)+        let arg31 = T_Lhs_vIn31 _lhsIoptions+        !(T_Lhs_vOut31 _lhsOpp) <- return (inv_Lhs_s32 sem arg31)         return (Syn_Lhs _lhsOpp)    ) @@ -1611,9 +1611,9 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule107 #-}-   {-# LINE 153 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 153 "src-ag/PrintOcamlCode.ag" #-}    rule107 = \ ((_pat3Ipp) :: PP_Doc) ->-                               {-# LINE 153 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 153 "src-ag/PrintOcamlCode.ag" #-}                                _pat3Ipp                                {-# LINE 1619 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule108 #-}@@ -1635,9 +1635,9 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule109 #-}-   {-# LINE 154 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 154 "src-ag/PrintOcamlCode.ag" #-}    rule109 = \  (_ :: ()) ->-                               {-# LINE 154 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 154 "src-ag/PrintOcamlCode.ag" #-}                                error "pp of Lhs.Pattern3SM not supported"                                {-# LINE 1643 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule110 #-}@@ -1656,9 +1656,9 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule111 #-}-   {-# LINE 155 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 155 "src-ag/PrintOcamlCode.ag" #-}    rule111 = \ comps_ ->-                               {-# LINE 155 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 155 "src-ag/PrintOcamlCode.ag" #-}                                ppTuple False (map text comps_)                                {-# LINE 1664 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Lhs_UnboxedTupleLhs #-}@@ -1674,9 +1674,9 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule112 #-}-   {-# LINE 156 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 156 "src-ag/PrintOcamlCode.ag" #-}    rule112 = \  (_ :: ()) ->-                                      {-# LINE 156 "./src-ag/PrintOcamlCode.ag" #-}+                                      {-# LINE 156 "src-ag/PrintOcamlCode.ag" #-}                                       error "pp of Lhs.UnboxedTupleLhs not supported"                                       {-# LINE 1682 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Lhs_Fun #-}@@ -1695,9 +1695,9 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule113 #-}-   {-# LINE 157 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 157 "src-ag/PrintOcamlCode.ag" #-}    rule113 = \ ((_argsIpps) :: PP_Docs) name_ ->-                               {-# LINE 157 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 157 "src-ag/PrintOcamlCode.ag" #-}                                name_ >#< hv_sp _argsIpps                                {-# LINE 1703 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule114 #-}@@ -1719,9 +1719,9 @@          in __result_ )      in C_Lhs_s32 v31    {-# INLINE rule115 #-}-   {-# LINE 158 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 158 "src-ag/PrintOcamlCode.ag" #-}    rule115 = \ ((_subIpp) :: PP_Doc) name_ ->-                               {-# LINE 158 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 158 "src-ag/PrintOcamlCode.ag" #-}                                pp_parens (name_ >#< _subIpp)                                {-# LINE 1727 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule116 #-}@@ -1737,8 +1737,8 @@ wrap_NamedType !(T_NamedType act) !(Inh_NamedType ) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_NamedType_vIn34 -        !(T_NamedType_vOut34 _lhsOpp) <- return (inv_NamedType_s35 sem arg)+        let arg34 = T_NamedType_vIn34 +        !(T_NamedType_vOut34 _lhsOpp) <- return (inv_NamedType_s35 sem arg34)         return (Syn_NamedType _lhsOpp)    ) @@ -1773,9 +1773,9 @@          in __result_ )      in C_NamedType_s35 v34    {-# INLINE rule117 #-}-   {-# LINE 191 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 191 "src-ag/PrintOcamlCode.ag" #-}    rule117 = \ ((_tpIpp) :: PP_Doc) name_ ->-                               {-# LINE 191 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 191 "src-ag/PrintOcamlCode.ag" #-}                                name_ >#< ":" >#< _tpIpp                                {-# LINE 1781 "dist/build/PrintOcamlCode.hs"#-} @@ -1788,8 +1788,8 @@ wrap_NamedTypes !(T_NamedTypes act) !(Inh_NamedTypes ) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_NamedTypes_vIn37 -        !(T_NamedTypes_vOut37 _lhsOpps) <- return (inv_NamedTypes_s38 sem arg)+        let arg37 = T_NamedTypes_vIn37 +        !(T_NamedTypes_vOut37 _lhsOpps) <- return (inv_NamedTypes_s38 sem arg37)         return (Syn_NamedTypes _lhsOpps)    ) @@ -1826,9 +1826,9 @@          in __result_ )      in C_NamedTypes_s38 v37    {-# INLINE rule118 #-}-   {-# LINE 77 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 77 "src-ag/PrintOcamlCode.ag" #-}    rule118 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 77 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 77 "src-ag/PrintOcamlCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 1834 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_NamedTypes_Nil #-}@@ -1844,9 +1844,9 @@          in __result_ )      in C_NamedTypes_s38 v37    {-# INLINE rule119 #-}-   {-# LINE 78 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 78 "src-ag/PrintOcamlCode.ag" #-}    rule119 = \  (_ :: ()) ->-                     {-# LINE 78 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 78 "src-ag/PrintOcamlCode.ag" #-}                      []                      {-# LINE 1852 "dist/build/PrintOcamlCode.hs"#-} @@ -1859,8 +1859,8 @@ wrap_Pattern !(T_Pattern act) !(Inh_Pattern _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Pattern_vIn40 _lhsIoptions-        !(T_Pattern_vOut40 _lhsOcopy _lhsOisUnderscore _lhsOpp) <- return (inv_Pattern_s41 sem arg)+        let arg40 = T_Pattern_vIn40 _lhsIoptions+        !(T_Pattern_vOut40 _lhsOcopy _lhsOisUnderscore _lhsOpp) <- return (inv_Pattern_s41 sem arg40)         return (Syn_Pattern _lhsOcopy _lhsOisUnderscore _lhsOpp)    ) @@ -1905,15 +1905,15 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule120 #-}-   {-# LINE 194 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 194 "src-ag/PrintOcamlCode.ag" #-}    rule120 = \ ((_patsIpps) :: PP_Docs) name_ ->-                           {-# LINE 194 "./src-ag/PrintOcamlCode.ag" #-}+                           {-# LINE 194 "src-ag/PrintOcamlCode.ag" #-}                            pp_parens $ name_ >#< hv_sp _patsIpps                            {-# LINE 1913 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule121 #-}-   {-# LINE 204 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 204 "src-ag/PrintOcamlCode.ag" #-}    rule121 = \  (_ :: ()) ->-                                    {-# LINE 204 "./src-ag/PrintOcamlCode.ag" #-}+                                    {-# LINE 204 "src-ag/PrintOcamlCode.ag" #-}                                     False                                     {-# LINE 1919 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule122 #-}@@ -1946,15 +1946,15 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule125 #-}-   {-# LINE 195 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 195 "src-ag/PrintOcamlCode.ag" #-}    rule125 = \ ((_patsIpps) :: PP_Docs) ->-                           {-# LINE 195 "./src-ag/PrintOcamlCode.ag" #-}+                           {-# LINE 195 "src-ag/PrintOcamlCode.ag" #-}                            pp_block "(" ")" "," _patsIpps                            {-# LINE 1954 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule126 #-}-   {-# LINE 205 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 205 "src-ag/PrintOcamlCode.ag" #-}    rule126 = \  (_ :: ()) ->-                                    {-# LINE 205 "./src-ag/PrintOcamlCode.ag" #-}+                                    {-# LINE 205 "src-ag/PrintOcamlCode.ag" #-}                                     False                                     {-# LINE 1960 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule127 #-}@@ -1987,17 +1987,17 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule130 #-}-   {-# LINE 197 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 197 "src-ag/PrintOcamlCode.ag" #-}    rule130 = \ ((_lhsIoptions) :: Options) ((_patIisUnderscore) :: Bool) attr_ field_ ->-                           {-# LINE 197 "./src-ag/PrintOcamlCode.ag" #-}+                           {-# LINE 197 "src-ag/PrintOcamlCode.ag" #-}                            if _patIisUnderscore                             then pp (attrname _lhsIoptions False field_ attr_)                             else error "pp of Pattern.Alias is only supported in the form (x@_)"                            {-# LINE 1997 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule131 #-}-   {-# LINE 206 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 206 "src-ag/PrintOcamlCode.ag" #-}    rule131 = \  (_ :: ()) ->-                                    {-# LINE 206 "./src-ag/PrintOcamlCode.ag" #-}+                                    {-# LINE 206 "src-ag/PrintOcamlCode.ag" #-}                                     False                                     {-# LINE 2003 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule132 #-}@@ -2030,9 +2030,9 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule135 #-}-   {-# LINE 200 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 200 "src-ag/PrintOcamlCode.ag" #-}    rule135 = \  (_ :: ()) ->-                           {-# LINE 200 "./src-ag/PrintOcamlCode.ag" #-}+                           {-# LINE 200 "src-ag/PrintOcamlCode.ag" #-}                            error "pp of Pattern.Irrefutable not supported"                            {-# LINE 2038 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule136 #-}@@ -2065,15 +2065,15 @@          in __result_ )      in C_Pattern_s41 v40    {-# INLINE rule140 #-}-   {-# LINE 201 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 201 "src-ag/PrintOcamlCode.ag" #-}    rule140 = \  (_ :: ()) ->-                           {-# LINE 201 "./src-ag/PrintOcamlCode.ag" #-}+                           {-# LINE 201 "src-ag/PrintOcamlCode.ag" #-}                            text "_"                            {-# LINE 2073 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule141 #-}-   {-# LINE 207 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 207 "src-ag/PrintOcamlCode.ag" #-}    rule141 = \  (_ :: ()) ->-                                    {-# LINE 207 "./src-ag/PrintOcamlCode.ag" #-}+                                    {-# LINE 207 "src-ag/PrintOcamlCode.ag" #-}                                     True                                     {-# LINE 2079 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule142 #-}@@ -2092,8 +2092,8 @@ wrap_Patterns !(T_Patterns act) !(Inh_Patterns _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Patterns_vIn43 _lhsIoptions-        !(T_Patterns_vOut43 _lhsOcopy _lhsOpps) <- return (inv_Patterns_s44 sem arg)+        let arg43 = T_Patterns_vIn43 _lhsIoptions+        !(T_Patterns_vOut43 _lhsOcopy _lhsOpps) <- return (inv_Patterns_s44 sem arg43)         return (Syn_Patterns _lhsOcopy _lhsOpps)    ) @@ -2135,9 +2135,9 @@          in __result_ )      in C_Patterns_s44 v43    {-# INLINE rule144 #-}-   {-# LINE 89 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 89 "src-ag/PrintOcamlCode.ag" #-}    rule144 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 89 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 89 "src-ag/PrintOcamlCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 2143 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule145 #-}@@ -2168,9 +2168,9 @@          in __result_ )      in C_Patterns_s44 v43    {-# INLINE rule149 #-}-   {-# LINE 90 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 90 "src-ag/PrintOcamlCode.ag" #-}    rule149 = \  (_ :: ()) ->-                     {-# LINE 90 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 90 "src-ag/PrintOcamlCode.ag" #-}                      []                      {-# LINE 2176 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule150 #-}@@ -2189,8 +2189,8 @@ wrap_Program !(T_Program act) !(Inh_Program _lhsIoptions _lhsItextBlockMap) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Program_vIn46 _lhsIoptions _lhsItextBlockMap-        !(T_Program_vOut46 _lhsOoutput) <- return (inv_Program_s47 sem arg)+        let arg46 = T_Program_vIn46 _lhsIoptions _lhsItextBlockMap+        !(T_Program_vOut46 _lhsOoutput) <- return (inv_Program_s47 sem arg46)         return (Syn_Program _lhsOoutput)    ) @@ -2228,15 +2228,15 @@          in __result_ )      in C_Program_s47 v46    {-# INLINE rule152 #-}-   {-# LINE 58 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 58 "src-ag/PrintOcamlCode.ag" #-}    rule152 = \ ((_chunksIpps) :: PP_Docs) ->-                               {-# LINE 58 "./src-ag/PrintOcamlCode.ag" #-}+                               {-# LINE 58 "src-ag/PrintOcamlCode.ag" #-}                                _chunksIpps                                {-# LINE 2236 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule153 #-}-   {-# LINE 216 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 216 "src-ag/PrintOcamlCode.ag" #-}    rule153 = \  (_ :: ()) ->-                            {-# LINE 216 "./src-ag/PrintOcamlCode.ag" #-}+                            {-# LINE 216 "src-ag/PrintOcamlCode.ag" #-}                             True                             {-# LINE 2242 "dist/build/PrintOcamlCode.hs"#-}    {-# INLINE rule154 #-}@@ -2255,8 +2255,8 @@ wrap_Type !(T_Type act) !(Inh_Type ) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Type_vIn49 -        !(T_Type_vOut49 _lhsOpp) <- return (inv_Type_s50 sem arg)+        let arg49 = T_Type_vIn49 +        !(T_Type_vOut49 _lhsOpp) <- return (inv_Type_s50 sem arg49)         return (Syn_Type _lhsOpp)    ) @@ -2307,9 +2307,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule156 #-}-   {-# LINE 161 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 161 "src-ag/PrintOcamlCode.ag" #-}    rule156 = \ ((_leftIpp) :: PP_Doc) ((_rightIpp) :: PP_Doc) ->-                          {-# LINE 161 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 161 "src-ag/PrintOcamlCode.ag" #-}                           pp_parens (_leftIpp >#< "->" >#< _rightIpp)                           {-# LINE 2315 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_CtxApp #-}@@ -2327,9 +2327,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule157 #-}-   {-# LINE 162 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 162 "src-ag/PrintOcamlCode.ag" #-}    rule157 = \  (_ :: ()) ->-                          {-# LINE 162 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 162 "src-ag/PrintOcamlCode.ag" #-}                           error "pp of Type.CtxApp not supported"                           {-# LINE 2335 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_QuantApp #-}@@ -2366,9 +2366,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule159 #-}-   {-# LINE 163 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 163 "src-ag/PrintOcamlCode.ag" #-}    rule159 = \ ((_argsIpps) :: PP_Docs) ((_funcIpp) :: PP_Doc) ->-                          {-# LINE 163 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 163 "src-ag/PrintOcamlCode.ag" #-}                           pp_parens (hv_sp (_argsIpps ++ [_funcIpp]))                           {-# LINE 2374 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_TupleType #-}@@ -2386,9 +2386,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule160 #-}-   {-# LINE 164 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 164 "src-ag/PrintOcamlCode.ag" #-}    rule160 = \ ((_tpsIpps) :: PP_Docs) ->-                          {-# LINE 164 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 164 "src-ag/PrintOcamlCode.ag" #-}                           pp_block "(" ")" "," _tpsIpps                           {-# LINE 2394 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_UnboxedTupleType #-}@@ -2406,9 +2406,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule161 #-}-   {-# LINE 166 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 166 "src-ag/PrintOcamlCode.ag" #-}    rule161 = \  (_ :: ()) ->-                          {-# LINE 166 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 166 "src-ag/PrintOcamlCode.ag" #-}                           error "pp of Type.UnboxedTupleType is not supported"                           {-# LINE 2414 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_List #-}@@ -2426,9 +2426,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule162 #-}-   {-# LINE 167 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 167 "src-ag/PrintOcamlCode.ag" #-}    rule162 = \ ((_tpIpp) :: PP_Doc) ->-                          {-# LINE 167 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 167 "src-ag/PrintOcamlCode.ag" #-}                           _tpIpp >#< "list"                           {-# LINE 2434 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_SimpleType #-}@@ -2444,9 +2444,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule163 #-}-   {-# LINE 168 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 168 "src-ag/PrintOcamlCode.ag" #-}    rule163 = \ txt_ ->-                          {-# LINE 168 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 168 "src-ag/PrintOcamlCode.ag" #-}                           text txt_                           {-# LINE 2452 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_NontermType #-}@@ -2462,9 +2462,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule164 #-}-   {-# LINE 169 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 169 "src-ag/PrintOcamlCode.ag" #-}    rule164 = \ name_ params_ ->-                           {-# LINE 169 "./src-ag/PrintOcamlCode.ag" #-}+                           {-# LINE 169 "src-ag/PrintOcamlCode.ag" #-}                            pp_block "(" ")" " " (map text params_ ++ [text $ toOcamlTC name_])                            {-# LINE 2470 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_TMaybe #-}@@ -2482,9 +2482,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule165 #-}-   {-# LINE 170 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 170 "src-ag/PrintOcamlCode.ag" #-}    rule165 = \ ((_tpIpp) :: PP_Doc) ->-                          {-# LINE 170 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 170 "src-ag/PrintOcamlCode.ag" #-}                           _tpIpp >#< "opt"                           {-# LINE 2490 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_TEither #-}@@ -2504,9 +2504,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule166 #-}-   {-# LINE 171 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 171 "src-ag/PrintOcamlCode.ag" #-}    rule166 = \  (_ :: ()) ->-                          {-# LINE 171 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 171 "src-ag/PrintOcamlCode.ag" #-}                           error "pp of Type.TEither is not supported"                           {-# LINE 2512 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_TMap #-}@@ -2526,9 +2526,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule167 #-}-   {-# LINE 172 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 172 "src-ag/PrintOcamlCode.ag" #-}    rule167 = \  (_ :: ()) ->-                          {-# LINE 172 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 172 "src-ag/PrintOcamlCode.ag" #-}                           error "pp of Type.TMap is not supported"                           {-# LINE 2534 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_TIntMap #-}@@ -2546,9 +2546,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule168 #-}-   {-# LINE 173 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 173 "src-ag/PrintOcamlCode.ag" #-}    rule168 = \  (_ :: ()) ->-                          {-# LINE 173 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 173 "src-ag/PrintOcamlCode.ag" #-}                           error "pp of Type.TIntMap is not supported"                           {-# LINE 2554 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_TSet #-}@@ -2566,9 +2566,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule169 #-}-   {-# LINE 174 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 174 "src-ag/PrintOcamlCode.ag" #-}    rule169 = \  (_ :: ()) ->-                          {-# LINE 174 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 174 "src-ag/PrintOcamlCode.ag" #-}                           error "pp of Type.TSet is not supported"                           {-# LINE 2574 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Type_TIntSet #-}@@ -2584,9 +2584,9 @@          in __result_ )      in C_Type_s50 v49    {-# INLINE rule170 #-}-   {-# LINE 175 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 175 "src-ag/PrintOcamlCode.ag" #-}    rule170 = \  (_ :: ()) ->-                          {-# LINE 175 "./src-ag/PrintOcamlCode.ag" #-}+                          {-# LINE 175 "src-ag/PrintOcamlCode.ag" #-}                           error "pp of Type.TIntSet is not supported"                           {-# LINE 2592 "dist/build/PrintOcamlCode.hs"#-} @@ -2599,8 +2599,8 @@ wrap_Types !(T_Types act) !(Inh_Types ) =    Control.Monad.Identity.runIdentity (      do !sem <- act-        let arg = T_Types_vIn52 -        !(T_Types_vOut52 _lhsOpps) <- return (inv_Types_s53 sem arg)+        let arg52 = T_Types_vIn52 +        !(T_Types_vOut52 _lhsOpps) <- return (inv_Types_s53 sem arg52)         return (Syn_Types _lhsOpps)    ) @@ -2637,9 +2637,9 @@          in __result_ )      in C_Types_s53 v52    {-# INLINE rule171 #-}-   {-# LINE 73 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 73 "src-ag/PrintOcamlCode.ag" #-}    rule171 = \ ((_hdIpp) :: PP_Doc) ((_tlIpps) :: PP_Docs) ->-                     {-# LINE 73 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 73 "src-ag/PrintOcamlCode.ag" #-}                      _hdIpp : _tlIpps                      {-# LINE 2645 "dist/build/PrintOcamlCode.hs"#-} {-# NOINLINE sem_Types_Nil #-}@@ -2655,8 +2655,8 @@          in __result_ )      in C_Types_s53 v52    {-# INLINE rule172 #-}-   {-# LINE 74 "./src-ag/PrintOcamlCode.ag" #-}+   {-# LINE 74 "src-ag/PrintOcamlCode.ag" #-}    rule172 = \  (_ :: ()) ->-                     {-# LINE 74 "./src-ag/PrintOcamlCode.ag" #-}+                     {-# LINE 74 "src-ag/PrintOcamlCode.ag" #-}                      []                      {-# LINE 2663 "dist/build/PrintOcamlCode.hs"#-}
src-generated/PrintVisitCode.hs view
@@ -2,19 +2,19 @@ {-# LANGUAGE ScopedTypeVariables #-}  module PrintVisitCode where-{-# LINE 2 "./src-ag/DeclBlocks.ag" #-}+{-# LINE 2 "src-ag/DeclBlocks.ag" #-}  import Code (Decl,Expr) {-# LINE 9 "dist/build/PrintVisitCode.hs" #-} -{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 16 "dist/build/PrintVisitCode.hs" #-} -{-# LINE 2 "./src-ag/CodeSyntax.ag" #-}+{-# LINE 2 "src-ag/CodeSyntax.ag" #-}  import Patterns import CommonTypes@@ -22,7 +22,7 @@ import Data.Set(Set) {-# LINE 24 "dist/build/PrintVisitCode.hs" #-} -{-# LINE 10 "./src-ag/PrintVisitCode.ag" #-}+{-# LINE 10 "src-ag/PrintVisitCode.ag" #-}  import CommonTypes import SequentialTypes@@ -46,7 +46,7 @@ {-# LINE 47 "dist/build/PrintVisitCode.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 32 "./src-ag/PrintVisitCode.ag" #-}+{-# LINE 32 "src-ag/PrintVisitCode.ag" #-}  type PP_Docs = [PP_Doc] @@ -69,8 +69,8 @@ wrap_CGrammar (T_CGrammar act) (Inh_CGrammar _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CGrammar_vIn1 _lhsIoptions-        (T_CGrammar_vOut1 _lhsOoutput) <- return (inv_CGrammar_s2 sem arg)+        let arg1 = T_CGrammar_vIn1 _lhsIoptions+        (T_CGrammar_vOut1 _lhsOoutput) <- return (inv_CGrammar_s2 sem arg1)         return (Syn_CGrammar _lhsOoutput)    ) @@ -105,9 +105,9 @@          in __result_ )      in C_CGrammar_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 53 "./src-ag/PrintVisitCode.ag" #-}+   {-# LINE 53 "src-ag/PrintVisitCode.ag" #-}    rule0 = \  (_ :: ()) ->-                     {-# LINE 53 "./src-ag/PrintVisitCode.ag" #-}+                     {-# LINE 53 "src-ag/PrintVisitCode.ag" #-}                      []                      {-# LINE 113 "dist/build/PrintVisitCode.hs"#-} @@ -120,8 +120,8 @@ wrap_CInterface (T_CInterface act) (Inh_CInterface ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CInterface_vIn4 -        (T_CInterface_vOut4 ) <- return (inv_CInterface_s5 sem arg)+        let arg4 = T_CInterface_vIn4 +        (T_CInterface_vOut4 ) <- return (inv_CInterface_s5 sem arg4)         return (Syn_CInterface )    ) @@ -163,8 +163,8 @@ wrap_CNonterminal (T_CNonterminal act) (Inh_CNonterminal ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CNonterminal_vIn7 -        (T_CNonterminal_vOut7 ) <- return (inv_CNonterminal_s8 sem arg)+        let arg7 = T_CNonterminal_vIn7 +        (T_CNonterminal_vOut7 ) <- return (inv_CNonterminal_s8 sem arg7)         return (Syn_CNonterminal )    ) @@ -208,8 +208,8 @@ wrap_CNonterminals (T_CNonterminals act) (Inh_CNonterminals ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CNonterminals_vIn10 -        (T_CNonterminals_vOut10 ) <- return (inv_CNonterminals_s11 sem arg)+        let arg10 = T_CNonterminals_vIn10 +        (T_CNonterminals_vOut10 ) <- return (inv_CNonterminals_s11 sem arg10)         return (Syn_CNonterminals )    ) @@ -263,8 +263,8 @@ wrap_CProduction (T_CProduction act) (Inh_CProduction ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CProduction_vIn13 -        (T_CProduction_vOut13 ) <- return (inv_CProduction_s14 sem arg)+        let arg13 = T_CProduction_vIn13 +        (T_CProduction_vOut13 ) <- return (inv_CProduction_s14 sem arg13)         return (Syn_CProduction )    ) @@ -306,8 +306,8 @@ wrap_CProductions (T_CProductions act) (Inh_CProductions ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CProductions_vIn16 -        (T_CProductions_vOut16 ) <- return (inv_CProductions_s17 sem arg)+        let arg16 = T_CProductions_vIn16 +        (T_CProductions_vOut16 ) <- return (inv_CProductions_s17 sem arg16)         return (Syn_CProductions )    ) @@ -361,8 +361,8 @@ wrap_CRule (T_CRule act) (Inh_CRule ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CRule_vIn19 -        (T_CRule_vOut19 ) <- return (inv_CRule_s20 sem arg)+        let arg19 = T_CRule_vIn19 +        (T_CRule_vOut19 ) <- return (inv_CRule_s20 sem arg19)         return (Syn_CRule )    ) @@ -415,8 +415,8 @@ wrap_CSegment (T_CSegment act) (Inh_CSegment ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CSegment_vIn22 -        (T_CSegment_vOut22 ) <- return (inv_CSegment_s23 sem arg)+        let arg22 = T_CSegment_vIn22 +        (T_CSegment_vOut22 ) <- return (inv_CSegment_s23 sem arg22)         return (Syn_CSegment )    ) @@ -456,8 +456,8 @@ wrap_CSegments (T_CSegments act) (Inh_CSegments ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CSegments_vIn25 -        (T_CSegments_vOut25 ) <- return (inv_CSegments_s26 sem arg)+        let arg25 = T_CSegments_vIn25 +        (T_CSegments_vOut25 ) <- return (inv_CSegments_s26 sem arg25)         return (Syn_CSegments )    ) @@ -511,8 +511,8 @@ wrap_CVisit (T_CVisit act) (Inh_CVisit ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CVisit_vIn28 -        (T_CVisit_vOut28 ) <- return (inv_CVisit_s29 sem arg)+        let arg28 = T_CVisit_vIn28 +        (T_CVisit_vOut28 ) <- return (inv_CVisit_s29 sem arg28)         return (Syn_CVisit )    ) @@ -556,8 +556,8 @@ wrap_CVisits (T_CVisits act) (Inh_CVisits ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_CVisits_vIn31 -        (T_CVisits_vOut31 ) <- return (inv_CVisits_s32 sem arg)+        let arg31 = T_CVisits_vIn31 +        (T_CVisits_vOut31 ) <- return (inv_CVisits_s32 sem arg31)         return (Syn_CVisits )    ) @@ -611,8 +611,8 @@ wrap_DeclBlocks (T_DeclBlocks act) (Inh_DeclBlocks ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_DeclBlocks_vIn34 -        (T_DeclBlocks_vOut34 ) <- return (inv_DeclBlocks_s35 sem arg)+        let arg34 = T_DeclBlocks_vIn34 +        (T_DeclBlocks_vOut34 ) <- return (inv_DeclBlocks_s35 sem arg34)         return (Syn_DeclBlocks )    ) @@ -665,8 +665,8 @@ wrap_DeclBlocksRoot (T_DeclBlocksRoot act) (Inh_DeclBlocksRoot ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_DeclBlocksRoot_vIn37 -        (T_DeclBlocksRoot_vOut37 ) <- return (inv_DeclBlocksRoot_s38 sem arg)+        let arg37 = T_DeclBlocksRoot_vIn37 +        (T_DeclBlocksRoot_vOut37 ) <- return (inv_DeclBlocksRoot_s38 sem arg37)         return (Syn_DeclBlocksRoot )    ) @@ -708,8 +708,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn40 -        (T_Pattern_vOut40 _lhsOcopy) <- return (inv_Pattern_s41 sem arg)+        let arg40 = T_Pattern_vIn40 +        (T_Pattern_vOut40 _lhsOcopy) <- return (inv_Pattern_s41 sem arg40)         return (Syn_Pattern _lhsOcopy)    ) @@ -846,8 +846,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn43 -        (T_Patterns_vOut43 _lhsOcopy) <- return (inv_Patterns_s44 sem arg)+        let arg43 = T_Patterns_vIn43 +        (T_Patterns_vOut43 _lhsOcopy) <- return (inv_Patterns_s44 sem arg43)         return (Syn_Patterns _lhsOcopy)    ) @@ -919,8 +919,8 @@ wrap_Sequence (T_Sequence act) (Inh_Sequence ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Sequence_vIn46 -        (T_Sequence_vOut46 ) <- return (inv_Sequence_s47 sem arg)+        let arg46 = T_Sequence_vIn46 +        (T_Sequence_vOut46 ) <- return (inv_Sequence_s47 sem arg46)         return (Syn_Sequence )    ) 
src-generated/ResolveLocals.hs view
@@ -2,20 +2,20 @@ {-# LANGUAGE ScopedTypeVariables #-}  module ResolveLocals where-{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken {-# LINE 10 "dist/build/ResolveLocals.hs" #-} -{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 17 "dist/build/ResolveLocals.hs" #-} -{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)@@ -27,7 +27,7 @@ import ErrorMessages {-# LINE 29 "dist/build/ResolveLocals.hs" #-} -{-# LINE 15 "./src-ag/ResolveLocals.ag" #-}+{-# LINE 15 "src-ag/ResolveLocals.ag" #-}  import qualified Data.Set as Set import qualified Data.Map as Map@@ -55,8 +55,8 @@ wrap_Child (T_Child act) (Inh_Child _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIsyn _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Child_vIn1 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIsyn _lhsIsynMap-        (T_Child_vOut1 _lhsOattributes _lhsOfield _lhsOoutput) <- return (inv_Child_s2 sem arg)+        let arg1 = T_Child_vIn1 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIsyn _lhsIsynMap+        (T_Child_vOut1 _lhsOattributes _lhsOfield _lhsOoutput) <- return (inv_Child_s2 sem arg1)         return (Syn_Child _lhsOattributes _lhsOfield _lhsOoutput)    ) @@ -97,36 +97,36 @@          in __result_ )      in C_Child_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 19 "src-ag/DistChildAttr.ag" #-}    rule0 = \ name_ tp_ ->-                       {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+                       {-# LINE 19 "src-ag/DistChildAttr.ag" #-}                        case tp_ of                          NT nt _ _ -> nt                          Self      -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")                          Haskell t -> identifier ""                        {-# LINE 108 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 23 "src-ag/DistChildAttr.ag" #-}    rule1 = \ _chnt ((_lhsIinhMap) :: Map Identifier Attributes) ->-                      {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 23 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIinhMap                       {-# LINE 114 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 24 "src-ag/DistChildAttr.ag" #-}    rule2 = \ _chnt ((_lhsIsynMap) :: Map Identifier Attributes) ->-                      {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 24 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIsynMap                       {-# LINE 120 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule3 #-}-   {-# LINE 83 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 83 "src-ag/ResolveLocals.ag" #-}    rule3 = \ _inh _syn name_ ->-                             {-# LINE 83 "./src-ag/ResolveLocals.ag" #-}+                             {-# LINE 83 "src-ag/ResolveLocals.ag" #-}                              [(name_, _inh    , _syn    )]                              {-# LINE 126 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule4 #-}-   {-# LINE 86 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 86 "src-ag/ResolveLocals.ag" #-}    rule4 = \ kind_ name_ tp_ ->-                        {-# LINE 86 "./src-ag/ResolveLocals.ag" #-}+                        {-# LINE 86 "src-ag/ResolveLocals.ag" #-}                         (name_, tp_, kind_)                         {-# LINE 132 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule5 #-}@@ -145,8 +145,8 @@ wrap_Children (T_Children act) (Inh_Children _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIsyn _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Children_vIn4 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIsyn _lhsIsynMap-        (T_Children_vOut4 _lhsOattributes _lhsOfields _lhsOoutput) <- return (inv_Children_s5 sem arg)+        let arg4 = T_Children_vIn4 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIsyn _lhsIsynMap+        (T_Children_vOut4 _lhsOattributes _lhsOfields _lhsOoutput) <- return (inv_Children_s5 sem arg4)         return (Syn_Children _lhsOattributes _lhsOfields _lhsOoutput)    ) @@ -208,9 +208,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule7 #-}-   {-# LINE 89 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 89 "src-ag/ResolveLocals.ag" #-}    rule7 = \ ((_hdIfield) :: (Identifier,Type,ChildKind)) ((_tlIfields) :: [(Identifier,Type,ChildKind)]) ->-                         {-# LINE 89 "./src-ag/ResolveLocals.ag" #-}+                         {-# LINE 89 "src-ag/ResolveLocals.ag" #-}                          _hdIfield : _tlIfields                          {-# LINE 216 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule8 #-}@@ -300,9 +300,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule31 #-}-   {-# LINE 90 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 90 "src-ag/ResolveLocals.ag" #-}    rule31 = \  (_ :: ()) ->-                         {-# LINE 90 "./src-ag/ResolveLocals.ag" #-}+                         {-# LINE 90 "src-ag/ResolveLocals.ag" #-}                          []                          {-# LINE 308 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule32 #-}@@ -324,8 +324,8 @@ wrap_Expression (T_Expression act) (Inh_Expression _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsImergeMap _lhsInt _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Expression_vIn7 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsImergeMap _lhsInt _lhsIoptions-        (T_Expression_vOut7 _lhsOerrors _lhsOoutput) <- return (inv_Expression_s8 sem arg)+        let arg7 = T_Expression_vIn7 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsImergeMap _lhsInt _lhsIoptions+        (T_Expression_vOut7 _lhsOerrors _lhsOoutput) <- return (inv_Expression_s8 sem arg7)         return (Syn_Expression _lhsOerrors _lhsOoutput)    ) @@ -362,9 +362,9 @@          in __result_ )      in C_Expression_s8 v7    {-# INLINE rule35 #-}-   {-# LINE 145 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 145 "src-ag/ResolveLocals.ag" #-}    rule35 = \ ((_lhsIallfields) :: [(Identifier,Type,ChildKind)]) ((_lhsIallnts) :: [Identifier]) ((_lhsIattrs) :: [(Identifier,Identifier)]) ((_lhsIcon) :: Identifier) ((_lhsImergeMap) :: Map Identifier (Identifier,[Identifier])) ((_lhsInt) :: Identifier) ((_lhsIoptions) :: Options) tks_ ->-                                {-# LINE 145 "./src-ag/ResolveLocals.ag" #-}+                                {-# LINE 145 "src-ag/ResolveLocals.ag" #-}                                 let mergedChildren = [ x | (_,xs) <- Map.elems _lhsImergeMap, x <- xs ]                                     attrsIn = filter (\(fld,_) -> not (fld `elem` mergedChildren)) _lhsIattrs                                     inherited = Inh_HsTokensRoot@@ -379,9 +379,9 @@                                 in (errors_Syn_HsTokensRoot synthesized, output_Syn_HsTokensRoot synthesized)                                 {-# LINE 381 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule36 #-}-   {-# LINE 157 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 157 "src-ag/ResolveLocals.ag" #-}    rule36 = \ _newTks pos_ ->-                               {-# LINE 157 "./src-ag/ResolveLocals.ag" #-}+                               {-# LINE 157 "src-ag/ResolveLocals.ag" #-}                                Expression pos_ _newTks                                {-# LINE 387 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule37 #-}@@ -400,8 +400,8 @@ wrap_Grammar (T_Grammar act) (Inh_Grammar _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Grammar_vIn10 _lhsIoptions-        (T_Grammar_vOut10 _lhsOerrors _lhsOoutput) <- return (inv_Grammar_s11 sem arg)+        let arg10 = T_Grammar_vIn10 _lhsIoptions+        (T_Grammar_vOut10 _lhsOerrors _lhsOoutput) <- return (inv_Grammar_s11 sem arg10)         return (Syn_Grammar _lhsOerrors _lhsOoutput)    ) @@ -444,27 +444,27 @@          in __result_ )      in C_Grammar_s11 v10    {-# INLINE rule39 #-}-   {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 15 "src-ag/DistChildAttr.ag" #-}    rule39 = \ ((_nontsIinhMap') :: Map Identifier Attributes) ->-                             {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 15 "src-ag/DistChildAttr.ag" #-}                              _nontsIinhMap'                              {-# LINE 452 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule40 #-}-   {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 16 "src-ag/DistChildAttr.ag" #-}    rule40 = \ ((_nontsIsynMap') :: Map Identifier Attributes) ->-                             {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 16 "src-ag/DistChildAttr.ag" #-}                              _nontsIsynMap'                              {-# LINE 458 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule41 #-}-   {-# LINE 59 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 59 "src-ag/ResolveLocals.ag" #-}    rule41 = \ ((_nontsInonts) :: [(NontermIdent,[ConstructorIdent])]) ->-                             {-# LINE 59 "./src-ag/ResolveLocals.ag" #-}+                             {-# LINE 59 "src-ag/ResolveLocals.ag" #-}                              map fst (_nontsInonts)                              {-# LINE 464 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule42 #-}-   {-# LINE 119 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 119 "src-ag/ResolveLocals.ag" #-}    rule42 = \ mergeMap_ ->-                                 {-# LINE 119 "./src-ag/ResolveLocals.ag" #-}+                                 {-# LINE 119 "src-ag/ResolveLocals.ag" #-}                                  Map.map (Map.map (Map.map (\(nt,srcs,_) -> (nt,srcs)))) mergeMap_                                  {-# LINE 470 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule43 #-}@@ -489,8 +489,8 @@ wrap_Nonterminal (T_Nonterminal act) (Inh_Nonterminal _lhsIallnts _lhsIinhMap _lhsImergeMap _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminal_vIn13 _lhsIallnts _lhsIinhMap _lhsImergeMap _lhsIoptions _lhsIsynMap-        (T_Nonterminal_vOut13 _lhsOerrors _lhsOinhMap' _lhsOnonts _lhsOoutput _lhsOsynMap') <- return (inv_Nonterminal_s14 sem arg)+        let arg13 = T_Nonterminal_vIn13 _lhsIallnts _lhsIinhMap _lhsImergeMap _lhsIoptions _lhsIsynMap+        (T_Nonterminal_vOut13 _lhsOerrors _lhsOinhMap' _lhsOnonts _lhsOoutput _lhsOsynMap') <- return (inv_Nonterminal_s14 sem arg13)         return (Syn_Nonterminal _lhsOerrors _lhsOinhMap' _lhsOnonts _lhsOoutput _lhsOsynMap')    ) @@ -543,45 +543,45 @@          in __result_ )      in C_Nonterminal_s14 v13    {-# INLINE rule47 #-}-   {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 7 "src-ag/DistChildAttr.ag" #-}    rule47 = \ inh_ nt_ ->-                                 {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 7 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ inh_                                  {-# LINE 551 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule48 #-}-   {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 8 "src-ag/DistChildAttr.ag" #-}    rule48 = \ nt_ syn_ ->-                                 {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 8 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ syn_                                  {-# LINE 557 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule49 #-}-   {-# LINE 63 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 63 "src-ag/ResolveLocals.ag" #-}    rule49 = \ ((_prodsIcons) :: [ConstructorIdent]) nt_ ->-                                {-# LINE 63 "./src-ag/ResolveLocals.ag" #-}+                                {-# LINE 63 "src-ag/ResolveLocals.ag" #-}                                 [(nt_,_prodsIcons)]                                 {-# LINE 563 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule50 #-}-   {-# LINE 111 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 111 "src-ag/ResolveLocals.ag" #-}    rule50 = \ nt_ ->-                               {-# LINE 111 "./src-ag/ResolveLocals.ag" #-}+                               {-# LINE 111 "src-ag/ResolveLocals.ag" #-}                                nt_                                {-# LINE 569 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule51 #-}-   {-# LINE 114 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 114 "src-ag/ResolveLocals.ag" #-}    rule51 = \ inh_ ->-                               {-# LINE 114 "./src-ag/ResolveLocals.ag" #-}+                               {-# LINE 114 "src-ag/ResolveLocals.ag" #-}                                inh_                                {-# LINE 575 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule52 #-}-   {-# LINE 115 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 115 "src-ag/ResolveLocals.ag" #-}    rule52 = \ syn_ ->-                               {-# LINE 115 "./src-ag/ResolveLocals.ag" #-}+                               {-# LINE 115 "src-ag/ResolveLocals.ag" #-}                                syn_                                {-# LINE 581 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule53 #-}-   {-# LINE 127 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 127 "src-ag/ResolveLocals.ag" #-}    rule53 = \ ((_lhsImergeMap) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier])))) nt_ ->-                                                {-# LINE 127 "./src-ag/ResolveLocals.ag" #-}+                                                {-# LINE 127 "src-ag/ResolveLocals.ag" #-}                                                 Map.findWithDefault Map.empty nt_ _lhsImergeMap                                                 {-# LINE 587 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule54 #-}@@ -618,8 +618,8 @@ wrap_Nonterminals (T_Nonterminals act) (Inh_Nonterminals _lhsIallnts _lhsIinhMap _lhsImergeMap _lhsIoptions _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminals_vIn16 _lhsIallnts _lhsIinhMap _lhsImergeMap _lhsIoptions _lhsIsynMap-        (T_Nonterminals_vOut16 _lhsOerrors _lhsOinhMap' _lhsOnonts _lhsOoutput _lhsOsynMap') <- return (inv_Nonterminals_s17 sem arg)+        let arg16 = T_Nonterminals_vIn16 _lhsIallnts _lhsIinhMap _lhsImergeMap _lhsIoptions _lhsIsynMap+        (T_Nonterminals_vOut16 _lhsOerrors _lhsOinhMap' _lhsOnonts _lhsOoutput _lhsOsynMap') <- return (inv_Nonterminals_s17 sem arg16)         return (Syn_Nonterminals _lhsOerrors _lhsOinhMap' _lhsOnonts _lhsOoutput _lhsOsynMap')    ) @@ -771,8 +771,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern _lhsIcon _lhsIinh _lhsInt _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn19 _lhsIcon _lhsIinh _lhsInt _lhsIsyn-        (T_Pattern_vOut19 _lhsOcopy _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput) <- return (inv_Pattern_s20 sem arg)+        let arg19 = T_Pattern_vIn19 _lhsIcon _lhsIinh _lhsInt _lhsIsyn+        (T_Pattern_vOut19 _lhsOcopy _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput) <- return (inv_Pattern_s20 sem arg19)         return (Syn_Pattern _lhsOcopy _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput)    ) @@ -947,17 +947,17 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule106 #-}-   {-# LINE 95 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 95 "src-ag/ResolveLocals.ag" #-}    rule106 = \ attr_ field_ ->-                               {-# LINE 95 "./src-ag/ResolveLocals.ag" #-}+                               {-# LINE 95 "src-ag/ResolveLocals.ag" #-}                                if field_ == _LOC                                   then [attr_]                                   else []                                {-# LINE 957 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule107 #-}-   {-# LINE 98 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 98 "src-ag/ResolveLocals.ag" #-}    rule107 = \ attr_ field_ ->-                               {-# LINE 98 "./src-ag/ResolveLocals.ag" #-}+                               {-# LINE 98 "src-ag/ResolveLocals.ag" #-}                                if field_ == _INST                                   then [attr_]                                   else []@@ -1103,8 +1103,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns _lhsIcon _lhsIinh _lhsInt _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn22 _lhsIcon _lhsIinh _lhsInt _lhsIsyn-        (T_Patterns_vOut22 _lhsOcopy _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput) <- return (inv_Patterns_s23 sem arg)+        let arg22 = T_Patterns_vIn22 _lhsIcon _lhsIinh _lhsInt _lhsIsyn+        (T_Patterns_vOut22 _lhsOcopy _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput) <- return (inv_Patterns_s23 sem arg22)         return (Syn_Patterns _lhsOcopy _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput)    ) @@ -1256,8 +1256,8 @@ wrap_Production (T_Production act) (Inh_Production _lhsIallnts _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Production_vIn25 _lhsIallnts _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn _lhsIsynMap-        (T_Production_vOut25 _lhsOcons _lhsOerrors _lhsOoutput) <- return (inv_Production_s26 sem arg)+        let arg25 = T_Production_vIn25 _lhsIallnts _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn _lhsIsynMap+        (T_Production_vOut25 _lhsOcons _lhsOerrors _lhsOoutput) <- return (inv_Production_s26 sem arg25)         return (Syn_Production _lhsOcons _lhsOerrors _lhsOoutput)    ) @@ -1325,54 +1325,54 @@          in __result_ )      in C_Production_s26 v25    {-# INLINE rule157 #-}-   {-# LINE 66 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 66 "src-ag/ResolveLocals.ag" #-}    rule157 = \ con_ ->-                              {-# LINE 66 "./src-ag/ResolveLocals.ag" #-}+                              {-# LINE 66 "src-ag/ResolveLocals.ag" #-}                               [con_]                               {-# LINE 1333 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule158 #-}-   {-# LINE 73 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 73 "src-ag/ResolveLocals.ag" #-}    rule158 = \ ((_childrenIfields) :: [(Identifier,Type,ChildKind)]) ->-                                  {-# LINE 73 "./src-ag/ResolveLocals.ag" #-}+                                  {-# LINE 73 "src-ag/ResolveLocals.ag" #-}                                   _childrenIfields                                   {-# LINE 1339 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule159 #-}-   {-# LINE 74 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 74 "src-ag/ResolveLocals.ag" #-}    rule159 = \ ((_childrenIattributes) :: [(Identifier,Attributes,Attributes)]) _inhnames ((_rulesIinstVars) :: [Identifier]) ((_rulesIlocVars) :: [Identifier]) ->-                                   {-# LINE 74 "./src-ag/ResolveLocals.ag" #-}+                                   {-# LINE 74 "src-ag/ResolveLocals.ag" #-}                                    map ((,) _LOC)  _rulesIlocVars ++                                    map ((,) _INST) _rulesIinstVars ++                                    map ((,) _LHS)  _inhnames ++                                    concat [map ((,) nm) (Map.keys as) | (nm,_,as) <- _childrenIattributes]                                    {-# LINE 1348 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule160 #-}-   {-# LINE 78 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 78 "src-ag/ResolveLocals.ag" #-}    rule160 = \ ((_lhsIinh) :: Attributes) ->-                                   {-# LINE 78 "./src-ag/ResolveLocals.ag" #-}+                                   {-# LINE 78 "src-ag/ResolveLocals.ag" #-}                                    Map.keys _lhsIinh                                    {-# LINE 1354 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule161 #-}-   {-# LINE 79 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 79 "src-ag/ResolveLocals.ag" #-}    rule161 = \ ((_lhsIsyn) :: Attributes) ->-                                   {-# LINE 79 "./src-ag/ResolveLocals.ag" #-}+                                   {-# LINE 79 "src-ag/ResolveLocals.ag" #-}                                    Map.keys _lhsIsyn                                    {-# LINE 1360 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule162 #-}-   {-# LINE 107 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 107 "src-ag/ResolveLocals.ag" #-}    rule162 = \ con_ ->-                                  {-# LINE 107 "./src-ag/ResolveLocals.ag" #-}+                                  {-# LINE 107 "src-ag/ResolveLocals.ag" #-}                                   con_                                   {-# LINE 1366 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule163 #-}-   {-# LINE 109 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 109 "src-ag/ResolveLocals.ag" #-}    rule163 = \ con_ ->-                               {-# LINE 109 "./src-ag/ResolveLocals.ag" #-}+                               {-# LINE 109 "src-ag/ResolveLocals.ag" #-}                                con_                                {-# LINE 1372 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule164 #-}-   {-# LINE 128 "./src-ag/ResolveLocals.ag" #-}+   {-# LINE 128 "src-ag/ResolveLocals.ag" #-}    rule164 = \ ((_lhsImergeMap) :: Map ConstructorIdent (Map Identifier (Identifier,[Identifier]))) con_ ->-                                                {-# LINE 128 "./src-ag/ResolveLocals.ag" #-}+                                                {-# LINE 128 "src-ag/ResolveLocals.ag" #-}                                                 Map.findWithDefault Map.empty con_ _lhsImergeMap                                                 {-# LINE 1378 "dist/build/ResolveLocals.hs"#-}    {-# INLINE rule165 #-}@@ -1445,8 +1445,8 @@ wrap_Productions (T_Productions act) (Inh_Productions _lhsIallnts _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Productions_vIn28 _lhsIallnts _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn _lhsIsynMap-        (T_Productions_vOut28 _lhsOcons _lhsOerrors _lhsOoutput) <- return (inv_Productions_s29 sem arg)+        let arg28 = T_Productions_vIn28 _lhsIallnts _lhsIinh _lhsIinhMap _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn _lhsIsynMap+        (T_Productions_vOut28 _lhsOcons _lhsOerrors _lhsOoutput) <- return (inv_Productions_s29 sem arg28)         return (Syn_Productions _lhsOcons _lhsOerrors _lhsOoutput)    ) @@ -1602,8 +1602,8 @@ wrap_Rule (T_Rule act) (Inh_Rule _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rule_vIn31 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn-        (T_Rule_vOut31 _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput) <- return (inv_Rule_s32 sem arg)+        let arg31 = T_Rule_vIn31 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn+        (T_Rule_vOut31 _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput) <- return (inv_Rule_s32 sem arg31)         return (Syn_Rule _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput)    ) @@ -1715,8 +1715,8 @@ wrap_Rules (T_Rules act) (Inh_Rules _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rules_vIn34 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn-        (T_Rules_vOut34 _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput) <- return (inv_Rules_s35 sem arg)+        let arg34 = T_Rules_vIn34 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsImergeMap _lhsInt _lhsIoptions _lhsIsyn+        (T_Rules_vOut34 _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput) <- return (inv_Rules_s35 sem arg34)         return (Syn_Rules _lhsOerrors _lhsOinstVars _lhsOlocVars _lhsOoutput)    ) @@ -1890,8 +1890,8 @@ wrap_TypeSig (T_TypeSig act) (Inh_TypeSig ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSig_vIn37 -        (T_TypeSig_vOut37 _lhsOoutput) <- return (inv_TypeSig_s38 sem arg)+        let arg37 = T_TypeSig_vIn37 +        (T_TypeSig_vOut37 _lhsOoutput) <- return (inv_TypeSig_s38 sem arg37)         return (Syn_TypeSig _lhsOoutput)    ) @@ -1940,8 +1940,8 @@ wrap_TypeSigs (T_TypeSigs act) (Inh_TypeSigs ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSigs_vIn40 -        (T_TypeSigs_vOut40 _lhsOoutput) <- return (inv_TypeSigs_s41 sem arg)+        let arg40 = T_TypeSigs_vIn40 +        (T_TypeSigs_vOut40 _lhsOoutput) <- return (inv_TypeSigs_s41 sem arg40)         return (Syn_TypeSigs _lhsOoutput)    ) 
src-generated/SemHsTokens.hs view
@@ -2,13 +2,13 @@ {-# LANGUAGE ScopedTypeVariables #-}  module SemHsTokens where-{-# LINE 2 "./src-ag/HsToken.ag" #-}+{-# LINE 2 "src-ag/HsToken.ag" #-}  import CommonTypes import UU.Scanner.Position(Pos) {-# LINE 10 "dist/build/SemHsTokens.hs" #-} -{-# LINE 4 "./src-ag/SemHsTokens.ag" #-}+{-# LINE 4 "src-ag/SemHsTokens.ag" #-}  import qualified Data.Sequence as Seq import Data.Sequence(Seq,empty,singleton,(><))@@ -21,7 +21,7 @@ {-# LINE 22 "dist/build/SemHsTokens.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 58 "./src-ag/SemHsTokens.ag" #-}+{-# LINE 58 "src-ag/SemHsTokens.ag" #-}  isNTname allnts (Just (NT nt _ _)) = nt `elem` allnts isNTname allnts _                  = False@@ -35,8 +35,8 @@ wrap_HsToken (T_HsToken act) (Inh_HsToken _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIfieldnames _lhsInt _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsToken_vIn1 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIfieldnames _lhsInt _lhsIoptions-        (T_HsToken_vOut1 _lhsOerrors _lhsOoutput _lhsOtok _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals) <- return (inv_HsToken_s2 sem arg)+        let arg1 = T_HsToken_vIn1 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIfieldnames _lhsInt _lhsIoptions+        (T_HsToken_vOut1 _lhsOerrors _lhsOoutput _lhsOtok _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals) <- return (inv_HsToken_s2 sem arg1)         return (Syn_HsToken _lhsOerrors _lhsOoutput _lhsOtok _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals)    ) @@ -87,21 +87,21 @@          in __result_ )      in C_HsToken_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 66 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 66 "src-ag/SemHsTokens.ag" #-}    rule0 = \ pos_ rdesc_ var_ ->-                                {-# LINE 66 "./src-ag/SemHsTokens.ag" #-}+                                {-# LINE 66 "src-ag/SemHsTokens.ag" #-}                                 AGLocal var_ pos_ rdesc_                                 {-# LINE 95 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 67 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 67 "src-ag/SemHsTokens.ag" #-}    rule1 = \ pos_ rdesc_ var_ ->-                                {-# LINE 67 "./src-ag/SemHsTokens.ag" #-}+                                {-# LINE 67 "src-ag/SemHsTokens.ag" #-}                                 AGField _LOC var_ pos_ rdesc_                                 {-# LINE 101 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 69 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 69 "src-ag/SemHsTokens.ag" #-}    rule2 = \ ((_lhsIallfields) :: [(Identifier,Type,ChildKind)]) ((_lhsIallnts) :: [Identifier]) ((_lhsIattrs) :: [(Identifier,Identifier)]) ((_lhsIcon) :: Identifier) ((_lhsIfieldnames) :: [Identifier]) ((_lhsInt) :: Identifier) ((_lhsIoptions) :: Options) _tkAsField _tkAsLocal pos_ var_ ->-                       {-# LINE 69 "./src-ag/SemHsTokens.ag" #-}+                       {-# LINE 69 "src-ag/SemHsTokens.ag" #-}                        if var_ `elem` _lhsIfieldnames                        then if  isNTname _lhsIallnts (lookup var_ (map (\(n,t,_) -> (n,t)) _lhsIallfields))                             then (Seq.singleton(ChildAsLocal _lhsInt _lhsIcon var_), _tkAsLocal    ,(pos_,fieldname var_), []    )@@ -111,9 +111,9 @@                             else (Seq.singleton(UndefLocal _lhsInt _lhsIcon var_), _tkAsField    , (pos_,locname _lhsIoptions var_), []    )                        {-# LINE 113 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule3 #-}-   {-# LINE 104 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 104 "src-ag/SemHsTokens.ag" #-}    rule3 = \ ((_lhsIfieldnames) :: [Identifier]) var_ ->-                               {-# LINE 104 "./src-ag/SemHsTokens.ag" #-}+                               {-# LINE 104 "src-ag/SemHsTokens.ag" #-}                                if var_ `elem` _lhsIfieldnames                                 then Seq.singleton var_                                 else Seq.empty@@ -157,9 +157,9 @@          in __result_ )      in C_HsToken_s2 v1    {-# INLINE rule9 #-}-   {-# LINE 78 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 78 "src-ag/SemHsTokens.ag" #-}    rule9 = \ ((_lhsIattrs) :: [(Identifier,Identifier)]) ((_lhsIcon) :: Identifier) ((_lhsIfieldnames) :: [Identifier]) ((_lhsInt) :: Identifier) attr_ field_ ->-                             {-# LINE 78 "./src-ag/SemHsTokens.ag" #-}+                             {-# LINE 78 "src-ag/SemHsTokens.ag" #-}                              if (field_,attr_) `elem` _lhsIattrs                              then Seq.empty                              else if not(field_ `elem` (_LHS : _LOC: _lhsIfieldnames))@@ -167,25 +167,25 @@                                   else Seq.singleton (UndefAttr _lhsInt _lhsIcon field_ attr_ False)                              {-# LINE 169 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule10 #-}-   {-# LINE 93 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 93 "src-ag/SemHsTokens.ag" #-}    rule10 = \ attr_ field_ ->-                  {-# LINE 93 "./src-ag/SemHsTokens.ag" #-}+                  {-# LINE 93 "src-ag/SemHsTokens.ag" #-}                   if field_ == _LOC                   then ([], [attr_])                   else ([(field_,attr_)], [])                   {-# LINE 177 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule11 #-}-   {-# LINE 123 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 123 "src-ag/SemHsTokens.ag" #-}    rule11 = \ attr_ field_ rdesc_ ->-                        {-# LINE 123 "./src-ag/SemHsTokens.ag" #-}+                        {-# LINE 123 "src-ag/SemHsTokens.ag" #-}                         case rdesc_ of                           Just d  -> \x -> "(trace " ++ show (d ++ " -> " ++ show field_ ++ "." ++ show attr_) ++ " (" ++ x ++ "))"                           Nothing -> id                         {-# LINE 185 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule12 #-}-   {-# LINE 126 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 126 "src-ag/SemHsTokens.ag" #-}    rule12 = \ _addTrace ((_lhsIoptions) :: Options) attr_ field_ pos_ ->-                   {-# LINE 126 "./src-ag/SemHsTokens.ag" #-}+                   {-# LINE 126 "src-ag/SemHsTokens.ag" #-}                    (pos_, _addTrace     $ attrname _lhsIoptions True field_ attr_)                    {-# LINE 191 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule13 #-}@@ -221,9 +221,9 @@          in __result_ )      in C_HsToken_s2 v1    {-# INLINE rule16 #-}-   {-# LINE 128 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 128 "src-ag/SemHsTokens.ag" #-}    rule16 = \ pos_ value_ ->-                         {-# LINE 128 "./src-ag/SemHsTokens.ag" #-}+                         {-# LINE 128 "src-ag/SemHsTokens.ag" #-}                          (pos_, value_)                          {-# LINE 229 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule17 #-}@@ -268,9 +268,9 @@          in __result_ )      in C_HsToken_s2 v1    {-# INLINE rule23 #-}-   {-# LINE 130 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 130 "src-ag/SemHsTokens.ag" #-}    rule23 = \ pos_ value_ ->-                           {-# LINE 130 "./src-ag/SemHsTokens.ag" #-}+                           {-# LINE 130 "src-ag/SemHsTokens.ag" #-}                            (pos_, if null value_                                      then ""                                      else showCharShort (head value_)@@ -318,9 +318,9 @@          in __result_ )      in C_HsToken_s2 v1    {-# INLINE rule30 #-}-   {-# LINE 135 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 135 "src-ag/SemHsTokens.ag" #-}    rule30 = \ pos_ value_ ->-                           {-# LINE 135 "./src-ag/SemHsTokens.ag" #-}+                           {-# LINE 135 "src-ag/SemHsTokens.ag" #-}                            (pos_, showStrShort value_)                            {-# LINE 326 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule31 #-}@@ -365,16 +365,16 @@          in __result_ )      in C_HsToken_s2 v1    {-# INLINE rule37 #-}-   {-# LINE 51 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 51 "src-ag/SemHsTokens.ag" #-}    rule37 = \ mesg_ pos_ ->-                       {-# LINE 51 "./src-ag/SemHsTokens.ag" #-}+                       {-# LINE 51 "src-ag/SemHsTokens.ag" #-}                        let m = text mesg_                        in Seq.singleton (CustomError False pos_ m)                        {-# LINE 374 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule38 #-}-   {-# LINE 136 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 136 "src-ag/SemHsTokens.ag" #-}    rule38 = \ pos_ ->-                           {-# LINE 136 "./src-ag/SemHsTokens.ag" #-}+                           {-# LINE 136 "src-ag/SemHsTokens.ag" #-}                            (pos_, "")                            {-# LINE 380 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule39 #-}@@ -402,8 +402,8 @@ wrap_HsTokens (T_HsTokens act) (Inh_HsTokens _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIfieldnames _lhsInt _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsTokens_vIn4 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIfieldnames _lhsInt _lhsIoptions-        (T_HsTokens_vOut4 _lhsOerrors _lhsOoutput _lhsOtks _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals) <- return (inv_HsTokens_s5 sem arg)+        let arg4 = T_HsTokens_vIn4 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIfieldnames _lhsInt _lhsIoptions+        (T_HsTokens_vOut4 _lhsOerrors _lhsOoutput _lhsOtks _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals) <- return (inv_HsTokens_s5 sem arg4)         return (Syn_HsTokens _lhsOerrors _lhsOoutput _lhsOtks _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals)    ) @@ -465,9 +465,9 @@          in __result_ )      in C_HsTokens_s5 v4    {-# INLINE rule44 #-}-   {-# LINE 118 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 118 "src-ag/SemHsTokens.ag" #-}    rule44 = \ ((_hdItok) :: (Pos,String)) ((_tlItks) :: [(Pos,String)]) ->-                     {-# LINE 118 "./src-ag/SemHsTokens.ag" #-}+                     {-# LINE 118 "src-ag/SemHsTokens.ag" #-}                      _hdItok : _tlItks                      {-# LINE 473 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule45 #-}@@ -554,9 +554,9 @@          in __result_ )      in C_HsTokens_s5 v4    {-# INLINE rule65 #-}-   {-# LINE 119 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 119 "src-ag/SemHsTokens.ag" #-}    rule65 = \  (_ :: ()) ->-                     {-# LINE 119 "./src-ag/SemHsTokens.ag" #-}+                     {-# LINE 119 "src-ag/SemHsTokens.ag" #-}                      []                      {-# LINE 562 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule66 #-}@@ -587,8 +587,8 @@ wrap_HsTokensRoot (T_HsTokensRoot act) (Inh_HsTokensRoot _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsInt _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_HsTokensRoot_vIn7 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsInt _lhsIoptions-        (T_HsTokensRoot_vOut7 _lhsOerrors _lhsOoutput _lhsOtextLines _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals) <- return (inv_HsTokensRoot_s8 sem arg)+        let arg7 = T_HsTokensRoot_vIn7 _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsInt _lhsIoptions+        (T_HsTokensRoot_vOut7 _lhsOerrors _lhsOoutput _lhsOtextLines _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals) <- return (inv_HsTokensRoot_s8 sem arg7)         return (Syn_HsTokensRoot _lhsOerrors _lhsOoutput _lhsOtextLines _lhsOusedAttrs _lhsOusedFields _lhsOusedLocals)    ) @@ -640,21 +640,21 @@          in __result_ )      in C_HsTokensRoot_s8 v7    {-# INLINE rule72 #-}-   {-# LINE 39 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 39 "src-ag/SemHsTokens.ag" #-}    rule72 = \ ((_lhsIallfields) :: [(Identifier,Type,ChildKind)]) ->-                                       {-# LINE 39 "./src-ag/SemHsTokens.ag" #-}+                                       {-# LINE 39 "src-ag/SemHsTokens.ag" #-}                                        map (\(n,_,_) -> n) _lhsIallfields                                        {-# LINE 648 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule73 #-}-   {-# LINE 108 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 108 "src-ag/SemHsTokens.ag" #-}    rule73 = \ ((_tokensIusedFields) :: Seq Identifier) ->-                                    {-# LINE 108 "./src-ag/SemHsTokens.ag" #-}+                                    {-# LINE 108 "src-ag/SemHsTokens.ag" #-}                                     toList _tokensIusedFields                                     {-# LINE 654 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule74 #-}-   {-# LINE 115 "./src-ag/SemHsTokens.ag" #-}+   {-# LINE 115 "src-ag/SemHsTokens.ag" #-}    rule74 = \ ((_tokensItks) :: [(Pos,String)]) ->-                                   {-# LINE 115 "./src-ag/SemHsTokens.ag" #-}+                                   {-# LINE 115 "src-ag/SemHsTokens.ag" #-}                                    showTokens _tokensItks                                    {-# LINE 660 "dist/build/SemHsTokens.hs"#-}    {-# INLINE rule75 #-}
src-generated/TfmToVisage.hs view
@@ -2,20 +2,20 @@ {-# LANGUAGE ScopedTypeVariables #-}  module TfmToVisage where-{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken {-# LINE 10 "dist/build/TfmToVisage.hs" #-} -{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 17 "dist/build/TfmToVisage.hs" #-} -{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}+{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}  -- AbstractSyntax.ag imports import Data.Set(Set)@@ -27,7 +27,7 @@ import ErrorMessages {-# LINE 29 "dist/build/TfmToVisage.hs" #-} -{-# LINE 9 "./src-ag/TfmToVisage.ag" #-}+{-# LINE 9 "src-ag/TfmToVisage.ag" #-}  import AbstractSyntax import VisagePatterns@@ -37,7 +37,7 @@ {-# LINE 38 "dist/build/TfmToVisage.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 17 "./src-ag/TfmToVisage.ag" #-}+{-# LINE 17 "src-ag/TfmToVisage.ag" #-}  -- Maps a rule to a pair -- Later, I expect to map to a list of rules, because we might need to unfold.@@ -102,8 +102,8 @@ wrap_Child (T_Child act) (Inh_Child _lhsIinhMap _lhsIrulemap _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Child_vIn1 _lhsIinhMap _lhsIrulemap _lhsIsynMap-        (T_Child_vOut1 _lhsOvchild) <- return (inv_Child_s2 sem arg)+        let arg1 = T_Child_vIn1 _lhsIinhMap _lhsIrulemap _lhsIsynMap+        (T_Child_vOut1 _lhsOvchild) <- return (inv_Child_s2 sem arg1)         return (Syn_Child _lhsOvchild)    ) @@ -139,30 +139,30 @@          in __result_ )      in C_Child_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 19 "src-ag/DistChildAttr.ag" #-}    rule0 = \ name_ tp_ ->-                       {-# LINE 19 "./src-ag/DistChildAttr.ag" #-}+                       {-# LINE 19 "src-ag/DistChildAttr.ag" #-}                        case tp_ of                          NT nt _ _ -> nt                          Self      -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")                          Haskell t -> identifier ""                        {-# LINE 150 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 23 "src-ag/DistChildAttr.ag" #-}    rule1 = \ _chnt ((_lhsIinhMap) :: Map Identifier Attributes) ->-                      {-# LINE 23 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 23 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIinhMap                       {-# LINE 156 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 24 "src-ag/DistChildAttr.ag" #-}    rule2 = \ _chnt ((_lhsIsynMap) :: Map Identifier Attributes) ->-                      {-# LINE 24 "./src-ag/DistChildAttr.ag" #-}+                      {-# LINE 24 "src-ag/DistChildAttr.ag" #-}                       Map.findWithDefault Map.empty _chnt     _lhsIsynMap                       {-# LINE 162 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule3 #-}-   {-# LINE 121 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 121 "src-ag/TfmToVisage.ag" #-}    rule3 = \ _inh ((_lhsIrulemap) :: VisageRuleMap) _syn name_ tp_ ->-                         {-# LINE 121 "./src-ag/TfmToVisage.ag" #-}+                         {-# LINE 121 "src-ag/TfmToVisage.ag" #-}                          VChild name_ tp_ _inh     _syn     (getForField (getName name_) _lhsIrulemap)                          {-# LINE 168 "dist/build/TfmToVisage.hs"#-} @@ -175,8 +175,8 @@ wrap_Children (T_Children act) (Inh_Children _lhsIinhMap _lhsIrulemap _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Children_vIn4 _lhsIinhMap _lhsIrulemap _lhsIsynMap-        (T_Children_vOut4 _lhsOvchildren) <- return (inv_Children_s5 sem arg)+        let arg4 = T_Children_vIn4 _lhsIinhMap _lhsIrulemap _lhsIsynMap+        (T_Children_vOut4 _lhsOvchildren) <- return (inv_Children_s5 sem arg4)         return (Syn_Children _lhsOvchildren)    ) @@ -219,9 +219,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule4 #-}-   {-# LINE 117 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 117 "src-ag/TfmToVisage.ag" #-}    rule4 = \ ((_hdIvchild) :: VisageChild) ((_tlIvchildren) :: [VisageChild]) ->-                                  {-# LINE 117 "./src-ag/TfmToVisage.ag" #-}+                                  {-# LINE 117 "src-ag/TfmToVisage.ag" #-}                                   _hdIvchild : _tlIvchildren                                   {-# LINE 227 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule5 #-}@@ -255,9 +255,9 @@          in __result_ )      in C_Children_s5 v4    {-# INLINE rule11 #-}-   {-# LINE 118 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 118 "src-ag/TfmToVisage.ag" #-}    rule11 = \  (_ :: ()) ->-                                  {-# LINE 118 "./src-ag/TfmToVisage.ag" #-}+                                  {-# LINE 118 "src-ag/TfmToVisage.ag" #-}                                   []                                   {-# LINE 263 "dist/build/TfmToVisage.hs"#-} @@ -270,8 +270,8 @@ wrap_Expression (T_Expression act) (Inh_Expression ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Expression_vIn7 -        (T_Expression_vOut7 _lhsOself) <- return (inv_Expression_s8 sem arg)+        let arg7 = T_Expression_vIn7 +        (T_Expression_vOut7 _lhsOself) <- return (inv_Expression_s8 sem arg7)         return (Syn_Expression _lhsOself)    ) @@ -320,8 +320,8 @@ wrap_Grammar (T_Grammar act) (Inh_Grammar ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Grammar_vIn10 -        (T_Grammar_vOut10 _lhsOvisage) <- return (inv_Grammar_s11 sem arg)+        let arg10 = T_Grammar_vIn10 +        (T_Grammar_vOut10 _lhsOvisage) <- return (inv_Grammar_s11 sem arg10)         return (Syn_Grammar _lhsOvisage)    ) @@ -358,21 +358,21 @@          in __result_ )      in C_Grammar_s11 v10    {-# INLINE rule14 #-}-   {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 15 "src-ag/DistChildAttr.ag" #-}    rule14 = \ ((_nontsIinhMap') :: Map Identifier Attributes) ->-                             {-# LINE 15 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 15 "src-ag/DistChildAttr.ag" #-}                              _nontsIinhMap'                              {-# LINE 366 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule15 #-}-   {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 16 "src-ag/DistChildAttr.ag" #-}    rule15 = \ ((_nontsIsynMap') :: Map Identifier Attributes) ->-                             {-# LINE 16 "./src-ag/DistChildAttr.ag" #-}+                             {-# LINE 16 "src-ag/DistChildAttr.ag" #-}                              _nontsIsynMap'                              {-# LINE 372 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule16 #-}-   {-# LINE 90 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 90 "src-ag/TfmToVisage.ag" #-}    rule16 = \ ((_nontsIvnonts) :: [VisageNonterminal]) ->-                     {-# LINE 90 "./src-ag/TfmToVisage.ag" #-}+                     {-# LINE 90 "src-ag/TfmToVisage.ag" #-}                      VGrammar _nontsIvnonts                      {-# LINE 378 "dist/build/TfmToVisage.hs"#-} @@ -385,8 +385,8 @@ wrap_Nonterminal (T_Nonterminal act) (Inh_Nonterminal _lhsIinhMap _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminal_vIn13 _lhsIinhMap _lhsIsynMap-        (T_Nonterminal_vOut13 _lhsOinhMap' _lhsOsynMap' _lhsOvnont) <- return (inv_Nonterminal_s14 sem arg)+        let arg13 = T_Nonterminal_vIn13 _lhsIinhMap _lhsIsynMap+        (T_Nonterminal_vOut13 _lhsOinhMap' _lhsOsynMap' _lhsOvnont) <- return (inv_Nonterminal_s14 sem arg13)         return (Syn_Nonterminal _lhsOinhMap' _lhsOsynMap' _lhsOvnont)    ) @@ -427,21 +427,21 @@          in __result_ )      in C_Nonterminal_s14 v13    {-# INLINE rule17 #-}-   {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 7 "src-ag/DistChildAttr.ag" #-}    rule17 = \ inh_ nt_ ->-                                 {-# LINE 7 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 7 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ inh_                                  {-# LINE 435 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule18 #-}-   {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+   {-# LINE 8 "src-ag/DistChildAttr.ag" #-}    rule18 = \ nt_ syn_ ->-                                 {-# LINE 8 "./src-ag/DistChildAttr.ag" #-}+                                 {-# LINE 8 "src-ag/DistChildAttr.ag" #-}                                  Map.singleton nt_ syn_                                  {-# LINE 441 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule19 #-}-   {-# LINE 100 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 100 "src-ag/TfmToVisage.ag" #-}    rule19 = \ ((_prodsIvprods) :: [VisageProduction]) inh_ nt_ syn_ ->-                    {-# LINE 100 "./src-ag/TfmToVisage.ag" #-}+                    {-# LINE 100 "src-ag/TfmToVisage.ag" #-}                     VNonterminal nt_ inh_ syn_ _prodsIvprods                     {-# LINE 447 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule20 #-}@@ -460,8 +460,8 @@ wrap_Nonterminals (T_Nonterminals act) (Inh_Nonterminals _lhsIinhMap _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Nonterminals_vIn16 _lhsIinhMap _lhsIsynMap-        (T_Nonterminals_vOut16 _lhsOinhMap' _lhsOsynMap' _lhsOvnonts) <- return (inv_Nonterminals_s17 sem arg)+        let arg16 = T_Nonterminals_vIn16 _lhsIinhMap _lhsIsynMap+        (T_Nonterminals_vOut16 _lhsOinhMap' _lhsOsynMap' _lhsOvnonts) <- return (inv_Nonterminals_s17 sem arg16)         return (Syn_Nonterminals _lhsOinhMap' _lhsOsynMap' _lhsOvnonts)    ) @@ -506,9 +506,9 @@          in __result_ )      in C_Nonterminals_s17 v16    {-# INLINE rule22 #-}-   {-# LINE 94 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 94 "src-ag/TfmToVisage.ag" #-}    rule22 = \ ((_hdIvnont) :: VisageNonterminal) ((_tlIvnonts) :: [VisageNonterminal]) ->-                     {-# LINE 94 "./src-ag/TfmToVisage.ag" #-}+                     {-# LINE 94 "src-ag/TfmToVisage.ag" #-}                      _hdIvnont : _tlIvnonts                      {-# LINE 514 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule23 #-}@@ -546,9 +546,9 @@          in __result_ )      in C_Nonterminals_s17 v16    {-# INLINE rule29 #-}-   {-# LINE 96 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 96 "src-ag/TfmToVisage.ag" #-}    rule29 = \  (_ :: ()) ->-                     {-# LINE 96 "./src-ag/TfmToVisage.ag" #-}+                     {-# LINE 96 "src-ag/TfmToVisage.ag" #-}                      []                      {-# LINE 554 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule30 #-}@@ -567,8 +567,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn19 -        (T_Pattern_vOut19 _lhsOcopy _lhsOfieldattrs _lhsOself _lhsOvpat) <- return (inv_Pattern_s20 sem arg)+        let arg19 = T_Pattern_vIn19 +        (T_Pattern_vOut19 _lhsOcopy _lhsOfieldattrs _lhsOself _lhsOvpat) <- return (inv_Pattern_s20 sem arg19)         return (Syn_Pattern _lhsOcopy _lhsOfieldattrs _lhsOself _lhsOvpat)    ) @@ -615,9 +615,9 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule32 #-}-   {-# LINE 136 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 136 "src-ag/TfmToVisage.ag" #-}    rule32 = \ ((_patsIvpats) :: [VisagePattern]) name_ ->-                             {-# LINE 136 "./src-ag/TfmToVisage.ag" #-}+                             {-# LINE 136 "src-ag/TfmToVisage.ag" #-}                              VConstr name_ _patsIvpats                              {-# LINE 623 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule33 #-}@@ -658,9 +658,9 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule38 #-}-   {-# LINE 137 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 137 "src-ag/TfmToVisage.ag" #-}    rule38 = \ ((_patsIvpats) :: [VisagePattern]) pos_ ->-                             {-# LINE 137 "./src-ag/TfmToVisage.ag" #-}+                             {-# LINE 137 "src-ag/TfmToVisage.ag" #-}                              VProduct pos_ _patsIvpats                              {-# LINE 666 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule39 #-}@@ -701,17 +701,17 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule44 #-}-   {-# LINE 138 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 138 "src-ag/TfmToVisage.ag" #-}    rule44 = \ ((_patIvpat) :: VisagePattern) _self attr_ field_ ->-                             {-# LINE 138 "./src-ag/TfmToVisage.ag" #-}+                             {-# LINE 138 "src-ag/TfmToVisage.ag" #-}                              if (isVar _self)                              then VVar field_ attr_                              else VAlias field_ attr_ _patIvpat                              {-# LINE 711 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule45 #-}-   {-# LINE 147 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 147 "src-ag/TfmToVisage.ag" #-}    rule45 = \ attr_ field_ ->-                                   {-# LINE 147 "./src-ag/TfmToVisage.ag" #-}+                                   {-# LINE 147 "src-ag/TfmToVisage.ag" #-}                                    [(field_, attr_)]                                    {-# LINE 717 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule46 #-}@@ -787,9 +787,9 @@          in __result_ )      in C_Pattern_s20 v19    {-# INLINE rule56 #-}-   {-# LINE 141 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 141 "src-ag/TfmToVisage.ag" #-}    rule56 = \ pos_ ->-                             {-# LINE 141 "./src-ag/TfmToVisage.ag" #-}+                             {-# LINE 141 "src-ag/TfmToVisage.ag" #-}                              VUnderscore pos_                              {-# LINE 795 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule57 #-}@@ -817,8 +817,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn22 -        (T_Patterns_vOut22 _lhsOcopy _lhsOfieldattrs _lhsOself _lhsOvpats) <- return (inv_Patterns_s23 sem arg)+        let arg22 = T_Patterns_vIn22 +        (T_Patterns_vOut22 _lhsOcopy _lhsOfieldattrs _lhsOself _lhsOvpats) <- return (inv_Patterns_s23 sem arg22)         return (Syn_Patterns _lhsOcopy _lhsOfieldattrs _lhsOself _lhsOvpats)    ) @@ -863,9 +863,9 @@          in __result_ )      in C_Patterns_s23 v22    {-# INLINE rule62 #-}-   {-# LINE 132 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 132 "src-ag/TfmToVisage.ag" #-}    rule62 = \ ((_hdIvpat) :: VisagePattern) ((_tlIvpats) :: [VisagePattern]) ->-                              {-# LINE 132 "./src-ag/TfmToVisage.ag" #-}+                              {-# LINE 132 "src-ag/TfmToVisage.ag" #-}                               _hdIvpat : _tlIvpats                               {-# LINE 871 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule63 #-}@@ -904,9 +904,9 @@          in __result_ )      in C_Patterns_s23 v22    {-# INLINE rule68 #-}-   {-# LINE 133 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 133 "src-ag/TfmToVisage.ag" #-}    rule68 = \  (_ :: ()) ->-                              {-# LINE 133 "./src-ag/TfmToVisage.ag" #-}+                              {-# LINE 133 "src-ag/TfmToVisage.ag" #-}                               []                               {-# LINE 912 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule69 #-}@@ -934,8 +934,8 @@ wrap_Production (T_Production act) (Inh_Production _lhsIinhMap _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Production_vIn25 _lhsIinhMap _lhsIsynMap-        (T_Production_vOut25 _lhsOvprod) <- return (inv_Production_s26 sem arg)+        let arg25 = T_Production_vIn25 _lhsIinhMap _lhsIsynMap+        (T_Production_vOut25 _lhsOvprod) <- return (inv_Production_s26 sem arg25)         return (Syn_Production _lhsOvprod)    ) @@ -980,33 +980,33 @@          in __result_ )      in C_Production_s26 v25    {-# INLINE rule74 #-}-   {-# LINE 110 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 110 "src-ag/TfmToVisage.ag" #-}    rule74 = \ ((_childrenIvchildren) :: [VisageChild]) _lhsrules _locrules con_ ->-                           {-# LINE 110 "./src-ag/TfmToVisage.ag" #-}+                           {-# LINE 110 "src-ag/TfmToVisage.ag" #-}                            VProduction con_ _childrenIvchildren _lhsrules _locrules                            {-# LINE 988 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule75 #-}-   {-# LINE 111 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 111 "src-ag/TfmToVisage.ag" #-}    rule75 = \ ((_rulesIvrules) :: [VisageRule]) ->-                           {-# LINE 111 "./src-ag/TfmToVisage.ag" #-}+                           {-# LINE 111 "src-ag/TfmToVisage.ag" #-}                            splitVRules _rulesIvrules                            {-# LINE 994 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule76 #-}-   {-# LINE 112 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 112 "src-ag/TfmToVisage.ag" #-}    rule76 = \ _splitVRules ->-                           {-# LINE 112 "./src-ag/TfmToVisage.ag" #-}+                           {-# LINE 112 "src-ag/TfmToVisage.ag" #-}                            getForField "loc" _splitVRules                            {-# LINE 1000 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule77 #-}-   {-# LINE 113 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 113 "src-ag/TfmToVisage.ag" #-}    rule77 = \ _splitVRules ->-                           {-# LINE 113 "./src-ag/TfmToVisage.ag" #-}+                           {-# LINE 113 "src-ag/TfmToVisage.ag" #-}                            getForField "lhs" _splitVRules                            {-# LINE 1006 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule78 #-}-   {-# LINE 114 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 114 "src-ag/TfmToVisage.ag" #-}    rule78 = \ _splitVRules ->-                           {-# LINE 114 "./src-ag/TfmToVisage.ag" #-}+                           {-# LINE 114 "src-ag/TfmToVisage.ag" #-}                            _splitVRules                            {-# LINE 1012 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule79 #-}@@ -1025,8 +1025,8 @@ wrap_Productions (T_Productions act) (Inh_Productions _lhsIinhMap _lhsIsynMap) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Productions_vIn28 _lhsIinhMap _lhsIsynMap-        (T_Productions_vOut28 _lhsOvprods) <- return (inv_Productions_s29 sem arg)+        let arg28 = T_Productions_vIn28 _lhsIinhMap _lhsIsynMap+        (T_Productions_vOut28 _lhsOvprods) <- return (inv_Productions_s29 sem arg28)         return (Syn_Productions _lhsOvprods)    ) @@ -1067,9 +1067,9 @@          in __result_ )      in C_Productions_s29 v28    {-# INLINE rule81 #-}-   {-# LINE 104 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 104 "src-ag/TfmToVisage.ag" #-}    rule81 = \ ((_hdIvprod) :: VisageProduction) ((_tlIvprods) :: [VisageProduction]) ->-                     {-# LINE 104 "./src-ag/TfmToVisage.ag" #-}+                     {-# LINE 104 "src-ag/TfmToVisage.ag" #-}                      _hdIvprod : _tlIvprods                      {-# LINE 1075 "dist/build/TfmToVisage.hs"#-}    {-# INLINE rule82 #-}@@ -1097,9 +1097,9 @@          in __result_ )      in C_Productions_s29 v28    {-# INLINE rule86 #-}-   {-# LINE 106 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 106 "src-ag/TfmToVisage.ag" #-}    rule86 = \  (_ :: ()) ->-                     {-# LINE 106 "./src-ag/TfmToVisage.ag" #-}+                     {-# LINE 106 "src-ag/TfmToVisage.ag" #-}                      []                      {-# LINE 1105 "dist/build/TfmToVisage.hs"#-} @@ -1112,8 +1112,8 @@ wrap_Rule (T_Rule act) (Inh_Rule ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rule_vIn31 -        (T_Rule_vOut31 _lhsOvrule) <- return (inv_Rule_s32 sem arg)+        let arg31 = T_Rule_vIn31 +        (T_Rule_vOut31 _lhsOvrule) <- return (inv_Rule_s32 sem arg31)         return (Syn_Rule _lhsOvrule)    ) @@ -1150,9 +1150,9 @@          in __result_ )      in C_Rule_s32 v31    {-# INLINE rule87 #-}-   {-# LINE 129 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 129 "src-ag/TfmToVisage.ag" #-}    rule87 = \ ((_patternIfieldattrs) ::  [(Identifier,Identifier)] ) ((_patternIvpat) :: VisagePattern) ((_rhsIself) :: Expression) owrt_ ->-                         {-# LINE 129 "./src-ag/TfmToVisage.ag" #-}+                         {-# LINE 129 "src-ag/TfmToVisage.ag" #-}                          VRule _patternIfieldattrs undefined _patternIvpat _rhsIself owrt_                          {-# LINE 1158 "dist/build/TfmToVisage.hs"#-} @@ -1165,8 +1165,8 @@ wrap_Rules (T_Rules act) (Inh_Rules ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Rules_vIn34 -        (T_Rules_vOut34 _lhsOvrules) <- return (inv_Rules_s35 sem arg)+        let arg34 = T_Rules_vIn34 +        (T_Rules_vOut34 _lhsOvrules) <- return (inv_Rules_s35 sem arg34)         return (Syn_Rules _lhsOvrules)    ) @@ -1203,9 +1203,9 @@          in __result_ )      in C_Rules_s35 v34    {-# INLINE rule88 #-}-   {-# LINE 124 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 124 "src-ag/TfmToVisage.ag" #-}    rule88 = \ ((_hdIvrule) :: VisageRule) ((_tlIvrules) :: [VisageRule]) ->-                               {-# LINE 124 "./src-ag/TfmToVisage.ag" #-}+                               {-# LINE 124 "src-ag/TfmToVisage.ag" #-}                                _hdIvrule : _tlIvrules                                {-# LINE 1211 "dist/build/TfmToVisage.hs"#-} {-# NOINLINE sem_Rules_Nil #-}@@ -1221,9 +1221,9 @@          in __result_ )      in C_Rules_s35 v34    {-# INLINE rule89 #-}-   {-# LINE 125 "./src-ag/TfmToVisage.ag" #-}+   {-# LINE 125 "src-ag/TfmToVisage.ag" #-}    rule89 = \  (_ :: ()) ->-                               {-# LINE 125 "./src-ag/TfmToVisage.ag" #-}+                               {-# LINE 125 "src-ag/TfmToVisage.ag" #-}                                []                                {-# LINE 1229 "dist/build/TfmToVisage.hs"#-} @@ -1236,8 +1236,8 @@ wrap_TypeSig (T_TypeSig act) (Inh_TypeSig ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSig_vIn37 -        (T_TypeSig_vOut37 ) <- return (inv_TypeSig_s38 sem arg)+        let arg37 = T_TypeSig_vIn37 +        (T_TypeSig_vOut37 ) <- return (inv_TypeSig_s38 sem arg37)         return (Syn_TypeSig )    ) @@ -1277,8 +1277,8 @@ wrap_TypeSigs (T_TypeSigs act) (Inh_TypeSigs ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_TypeSigs_vIn40 -        (T_TypeSigs_vOut40 ) <- return (inv_TypeSigs_s41 sem arg)+        let arg40 = T_TypeSigs_vIn40 +        (T_TypeSigs_vOut40 ) <- return (inv_TypeSigs_s41 sem arg40)         return (Syn_TypeSigs )    ) 
src-generated/Transform.hs view
@@ -2,14 +2,14 @@ {-# LANGUAGE ScopedTypeVariables #-}  module Transform where-{-# LINE 2 "./src-ag/Patterns.ag" #-}+{-# LINE 2 "src-ag/Patterns.ag" #-}  -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 11 "dist/build/Transform.hs" #-} -{-# LINE 2 "./src-ag/ConcreteSyntax.ag" #-}+{-# LINE 2 "src-ag/ConcreteSyntax.ag" #-}  import UU.Scanner.Position (Pos) import Patterns   (Pattern)@@ -18,7 +18,7 @@ import Macro --marcos {-# LINE 20 "dist/build/Transform.hs" #-} -{-# LINE 8 "./src-ag/Transform.ag" #-}+{-# LINE 8 "src-ag/Transform.ag" #-}  import Control.Monad(mplus,mzero) import Data.List (partition, nub,intersperse, union)@@ -42,47 +42,47 @@ {-# LINE 43 "dist/build/Transform.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 104 "./src-ag/Transform.ag" #-}+{-# LINE 104 "src-ag/Transform.ag" #-} type DefinedSets = Map Identifier (Set NontermIdent)  {-# LINE 48 "dist/build/Transform.hs" #-} -{-# LINE 124 "./src-ag/Transform.ag" #-}+{-# LINE 124 "src-ag/Transform.ag" #-} type FieldMap  = [(Identifier, Type)]  {-# LINE 52 "dist/build/Transform.hs" #-} -{-# LINE 125 "./src-ag/Transform.ag" #-}+{-# LINE 125 "src-ag/Transform.ag" #-} type DataTypes = Map.Map NontermIdent (Map.Map ConstructorIdent FieldMap)  {-# LINE 56 "dist/build/Transform.hs" #-} -{-# LINE 148 "./src-ag/Transform.ag" #-}+{-# LINE 148 "src-ag/Transform.ag" #-} type AttrName   = (Identifier,Identifier)  {-# LINE 60 "dist/build/Transform.hs" #-} -{-# LINE 149 "./src-ag/Transform.ag" #-}+{-# LINE 149 "src-ag/Transform.ag" #-} type RuleInfo   = (Maybe Identifier, [AttrName]->Pattern, Expression, [AttrName], Bool, String, Bool, Bool)  {-# LINE 64 "dist/build/Transform.hs" #-} -{-# LINE 150 "./src-ag/Transform.ag" #-}+{-# LINE 150 "src-ag/Transform.ag" #-} type SigInfo    = (Identifier,Type)  {-# LINE 68 "dist/build/Transform.hs" #-} -{-# LINE 151 "./src-ag/Transform.ag" #-}+{-# LINE 151 "src-ag/Transform.ag" #-} type UniqueInfo = (Identifier,Identifier)  {-# LINE 72 "dist/build/Transform.hs" #-} -{-# LINE 152 "./src-ag/Transform.ag" #-}+{-# LINE 152 "src-ag/Transform.ag" #-} type AugmentInfo = (Identifier,Expression) {-# LINE 76 "dist/build/Transform.hs" #-} -{-# LINE 153 "./src-ag/Transform.ag" #-}+{-# LINE 153 "src-ag/Transform.ag" #-} type AroundInfo  = (Identifier,Expression) {-# LINE 80 "dist/build/Transform.hs" #-} -{-# LINE 154 "./src-ag/Transform.ag" #-}+{-# LINE 154 "src-ag/Transform.ag" #-} type MergeInfo   = (Identifier, Identifier, [Identifier], Expression) {-# LINE 84 "dist/build/Transform.hs" #-} -{-# LINE 203 "./src-ag/Transform.ag" #-}+{-# LINE 203 "src-ag/Transform.ag" #-}   checkDuplicate :: (Identifier -> Identifier -> Error)@@ -114,7 +114,7 @@  {-# LINE 116 "dist/build/Transform.hs" #-} -{-# LINE 354 "./src-ag/Transform.ag" #-}+{-# LINE 354 "src-ag/Transform.ag" #-}  type RulesAndErrors = ([Rule], Seq Error) type SigsAndErrors  = ([TypeSig], Seq Error)@@ -271,7 +271,7 @@ unionunionplusplus = Map.unionWith (Map.unionWith (++)) {-# LINE 273 "dist/build/Transform.hs" #-} -{-# LINE 511 "./src-ag/Transform.ag" #-}+{-# LINE 511 "src-ag/Transform.ag" #-}  mkUniqueRules :: Options -> Map NontermIdent (Map ConstructorIdent [RuleInfo]) -> DataTypes -> Map NontermIdent (Map ConstructorIdent [(Identifier, Type)]) -> Map NontermIdent (Attributes,Attributes) -> NontermIdent -> ConstructorIdent -> Map Identifier Identifier -> [Rule] mkUniqueRules opts allRules allFields allInsts allAttrDecls nt con usMap@@ -311,7 +311,7 @@     wrap ref inp = h "let __cont = " ++ [AGField _LHS ref noPos Nothing] ++ h " in seq __cont ( " ++ inp ++ h " )" {-# LINE 313 "dist/build/Transform.hs" #-} -{-# LINE 747 "./src-ag/Transform.ag" #-}+{-# LINE 747 "src-ag/Transform.ag" #-}  flattenDatas :: DataTypes -> Map NontermIdent (Set NontermIdent) flattenDatas ds = Map.map flatten ds@@ -336,7 +336,7 @@                      in  Set.intersection forward backward {-# LINE 338 "dist/build/Transform.hs" #-} -{-# LINE 874 "./src-ag/Transform.ag" #-}+{-# LINE 874 "src-ag/Transform.ag" #-}  extract :: String -> [String] extract s = case dropWhile isSeparator s of@@ -347,7 +347,7 @@ isSeparator x = x == '_' {-# LINE 349 "dist/build/Transform.hs" #-} -{-# LINE 900 "./src-ag/Transform.ag" #-}+{-# LINE 900 "src-ag/Transform.ag" #-}  pragmaMapUnion :: PragmaMap -> PragmaMap -> PragmaMap pragmaMapUnion = Map.unionWith (Map.unionWith Set.union)@@ -356,7 +356,7 @@ pragmaMapSingle nt con nms = Map.singleton nt (Map.singleton con nms) {-# LINE 358 "dist/build/Transform.hs" #-} -{-# LINE 932 "./src-ag/Transform.ag" #-}+{-# LINE 932 "src-ag/Transform.ag" #-}  orderMapUnion :: AttrOrderMap -> AttrOrderMap -> AttrOrderMap orderMapUnion = Map.unionWith (Map.unionWith Set.union)@@ -365,13 +365,13 @@ orderMapSingle nt con deps = Map.singleton nt (Map.singleton con deps) {-# LINE 367 "dist/build/Transform.hs" #-} -{-# LINE 958 "./src-ag/Transform.ag" #-}+{-# LINE 958 "src-ag/Transform.ag" #-}  mergeParams :: ParamMap -> ParamMap -> ParamMap mergeParams = Map.unionWith (++) {-# LINE 373 "dist/build/Transform.hs" #-} -{-# LINE 981 "./src-ag/Transform.ag" #-}+{-# LINE 981 "src-ag/Transform.ag" #-}  mergeCtx :: ContextMap -> ContextMap -> ContextMap mergeCtx@@ -379,26 +379,26 @@   where nubconcat a b = nub (a ++ b) {-# LINE 381 "dist/build/Transform.hs" #-} -{-# LINE 1000 "./src-ag/Transform.ag" #-}+{-# LINE 1000 "src-ag/Transform.ag" #-}  mergeQuant :: QuantMap -> QuantMap -> QuantMap mergeQuant = Map.unionWith (++) {-# LINE 387 "dist/build/Transform.hs" #-} -{-# LINE 1011 "./src-ag/Transform.ag" #-}+{-# LINE 1011 "src-ag/Transform.ag" #-}  mergeDerivings :: Derivings -> Derivings -> Derivings mergeDerivings m1 m2 = foldr (\(n,cs) m -> Map.insertWith Set.union n cs m) m2 (Map.toList m1) {-# LINE 393 "dist/build/Transform.hs" #-} -{-# LINE 1023 "./src-ag/Transform.ag" #-}+{-# LINE 1023 "src-ag/Transform.ag" #-}  merge ::(Ord k, Ord k1) => Map k (Map k1 a) -> Map k (Map k1 a) -> Map k (Map k1 a) merge x y = foldr f y (Map.toList x)  where f ~(k,v) m = Map.insertWith (Map.union) k v m {-# LINE 400 "dist/build/Transform.hs" #-} -{-# LINE 1066 "./src-ag/Transform.ag" #-}+{-# LINE 1066 "src-ag/Transform.ag" #-}  checkAttrs :: DataTypes -> [NontermIdent] -> [(Identifier, a)] -> [(Identifier, b)] -> Map NontermIdent (Map Identifier a, Map Identifier b) -> (Map NontermIdent (Map Identifier a, Map Identifier b), Seq Error) checkAttrs allFields nts inherited synthesized decls' = foldErrors check decls' nts where@@ -409,20 +409,20 @@                                in (Map.insert nt (inh',syn') decls,einh >< esyn) {-# LINE 411 "dist/build/Transform.hs" #-} -{-# LINE 1078 "./src-ag/Transform.ag" #-}+{-# LINE 1078 "src-ag/Transform.ag" #-}  addSelf :: Ord k1 => k1 -> Map k1 (Map k a, Attributes) -> Map k1 (Map k a, Attributes) addSelf name atMap = let (eInh,eSyn) = Map.findWithDefault(Map.empty,Map.empty) name atMap                      in  Map.insert name (eInh, Map.insert (Ident "self" noPos) Self eSyn)atMap {-# LINE 418 "dist/build/Transform.hs" #-} -{-# LINE 1216 "./src-ag/Transform.ag" #-}+{-# LINE 1216 "src-ag/Transform.ag" #-}  -- We want the last Just in the list flipmplus = flip mplus {-# LINE 424 "dist/build/Transform.hs" #-} -{-# LINE 1224 "./src-ag/Transform.ag" #-}+{-# LINE 1224 "src-ag/Transform.ag" #-}  makeType :: Set NontermIdent -> Type -> Type makeType nts tp@(NT x _ _)   | Set.member x nts = tp@@ -430,7 +430,7 @@ makeType _   tp                                 = tp {-# LINE 432 "dist/build/Transform.hs" #-} -{-# LINE 1230 "./src-ag/Transform.ag" #-}+{-# LINE 1230 "src-ag/Transform.ag" #-}  constructGrammar ::    Set NontermIdent                     -> ParamMap@@ -502,7 +502,7 @@    in Grammar tsyns uses derivings wrap nonts pragmaMap orderMap ntParams contextMap quantMap uniqueMap augmentsMap aroundsMap mergeMap {-# LINE 504 "dist/build/Transform.hs" #-} -{-# LINE 1301 "./src-ag/Transform.ag" #-}+{-# LINE 1301 "src-ag/Transform.ag" #-}  mapUnionWithSetUnion :: Map NontermIdent (Set ConstructorIdent) -> Map NontermIdent (Set ConstructorIdent) -> Map NontermIdent (Set ConstructorIdent) mapUnionWithSetUnion = Map.unionWith Set.union@@ -518,8 +518,8 @@ wrap_AG (T_AG act) (Inh_AG _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_AG_vIn1 _lhsIoptions-        (T_AG_vOut1 _lhsOagi _lhsOblocks _lhsOconstructorTypeMap _lhsOerrors _lhsOmoduleDecl _lhsOoutput _lhsOpragmas) <- return (inv_AG_s2 sem arg)+        let arg1 = T_AG_vIn1 _lhsIoptions+        (T_AG_vOut1 _lhsOagi _lhsOblocks _lhsOconstructorTypeMap _lhsOerrors _lhsOmoduleDecl _lhsOoutput _lhsOpragmas) <- return (inv_AG_s2 sem arg1)         return (Syn_AG _lhsOagi _lhsOblocks _lhsOconstructorTypeMap _lhsOerrors _lhsOmoduleDecl _lhsOoutput _lhsOpragmas)    ) @@ -620,9 +620,9 @@          in __result_ )      in C_AG_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 50 "./src-ag/Transform.ag" #-}+   {-# LINE 50 "src-ag/Transform.ag" #-}    rule0 = \ _allAttrDecls _allConParams _allConstraints _allFields _allMacros _allNonterminals _checkedArounds _checkedAugments _checkedInsts _checkedMerges _checkedRules _checkedSigs _checkedUniques ((_elemsIattrOrderCollect) :: AttrOrderMap) ((_elemsIctxCollect) :: ContextMap) ((_elemsIderivings) :: Derivings) ((_elemsIparamsCollect) :: ParamMap) ((_elemsIquantCollect) :: QuantMap) ((_elemsIsemPragmasCollect) :: PragmaMap) ((_elemsItypeSyns) :: TypeSyns) ((_elemsIuseMap) :: Map NontermIdent (Map Identifier (String,String,String))) ((_elemsIwrappers) :: Set NontermIdent) ((_lhsIoptions) :: Options) _prodOrder ->-                      {-# LINE 50 "./src-ag/Transform.ag" #-}+                      {-# LINE 50 "src-ag/Transform.ag" #-}                       constructGrammar _allNonterminals                                        _elemsIparamsCollect                                        _allConParams@@ -648,9 +648,9 @@                                        _allMacros                       {-# LINE 650 "dist/build/Transform.hs"#-}    {-# INLINE rule1 #-}-   {-# LINE 258 "./src-ag/Transform.ag" #-}+   {-# LINE 258 "src-ag/Transform.ag" #-}    rule1 = \ ((_elemsIcollectedFields) :: [(NontermIdent, ConstructorIdent, FieldMap)]) ->-                             {-# LINE 258 "./src-ag/Transform.ag" #-}+                             {-# LINE 258 "src-ag/Transform.ag" #-}                              let f (nt,con,_) = Map.insertWith g nt [con]                                  g [con] lst | con `elem` lst = lst                                              | otherwise      = con : lst@@ -658,44 +658,44 @@                              in  foldr f Map.empty _elemsIcollectedFields                              {-# LINE 660 "dist/build/Transform.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 263 "./src-ag/Transform.ag" #-}+   {-# LINE 263 "src-ag/Transform.ag" #-}    rule2 = \ ((_elemsIcollectedFields) :: [(NontermIdent, ConstructorIdent, FieldMap)]) ->-                             {-# LINE 263 "./src-ag/Transform.ag" #-}+                             {-# LINE 263 "src-ag/Transform.ag" #-}                              let f (nt,con,fm) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con fm)                              in  foldr f (Map.empty) _elemsIcollectedFields                              {-# LINE 667 "dist/build/Transform.hs"#-}    {-# INLINE rule3 #-}-   {-# LINE 266 "./src-ag/Transform.ag" #-}+   {-# LINE 266 "src-ag/Transform.ag" #-}    rule3 = \ ((_elemsIcollectedConstraints) :: [(NontermIdent, ConstructorIdent, [Type])]) ->-                                {-# LINE 266 "./src-ag/Transform.ag" #-}+                                {-# LINE 266 "src-ag/Transform.ag" #-}                                 let f (nt,con,fm) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con fm)                                 in  foldr f (Map.empty) _elemsIcollectedConstraints                                 {-# LINE 674 "dist/build/Transform.hs"#-}    {-# INLINE rule4 #-}-   {-# LINE 269 "./src-ag/Transform.ag" #-}+   {-# LINE 269 "src-ag/Transform.ag" #-}    rule4 = \ ((_elemsIcollectedConParams) :: [(NontermIdent, ConstructorIdent, Set Identifier)]) ->-                                {-# LINE 269 "./src-ag/Transform.ag" #-}+                                {-# LINE 269 "src-ag/Transform.ag" #-}                                 let f (nt,con,fm) = Map.insertWith (Map.unionWith Set.union) nt (Map.singleton con fm)                                 in  foldr f (Map.empty) _elemsIcollectedConParams                                 {-# LINE 681 "dist/build/Transform.hs"#-}    {-# INLINE rule5 #-}-   {-# LINE 272 "./src-ag/Transform.ag" #-}+   {-# LINE 272 "src-ag/Transform.ag" #-}    rule5 = \ ((_elemsIcollectedFields) :: [(NontermIdent, ConstructorIdent, FieldMap)]) ->-                             {-# LINE 272 "./src-ag/Transform.ag" #-}+                             {-# LINE 272 "src-ag/Transform.ag" #-}                              let f (nt,con,_) = Map.insertWith (++) nt [con]                              in  foldr f (Map.empty) _elemsIcollectedFields                              {-# LINE 688 "dist/build/Transform.hs"#-}    {-# INLINE rule6 #-}-   {-# LINE 275 "./src-ag/Transform.ag" #-}+   {-# LINE 275 "src-ag/Transform.ag" #-}    rule6 = \ ((_elemsIcollectedRules) :: [ (NontermIdent, ConstructorIdent, RuleInfo)]) ->-                             {-# LINE 275 "./src-ag/Transform.ag" #-}+                             {-# LINE 275 "src-ag/Transform.ag" #-}                              let f (nt,con,r) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con [r])                              in  foldr f (Map.empty) _elemsIcollectedRules                              {-# LINE 695 "dist/build/Transform.hs"#-}    {-# INLINE rule7 #-}-   {-# LINE 278 "./src-ag/Transform.ag" #-}+   {-# LINE 278 "src-ag/Transform.ag" #-}    rule7 = \ _allAttrDecls ((_elemsIcollectedSigs) :: [ (NontermIdent, ConstructorIdent, SigInfo) ]) ((_elemsIcollectedUniques) :: [ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]) ->-                             {-# LINE 278 "./src-ag/Transform.ag" #-}+                             {-# LINE 278 "src-ag/Transform.ag" #-}                              let f (nt,con,t) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con [t])                                  typeof nt r = Map.findWithDefault (Haskell "<unknown>") r $ fst $ Map.findWithDefault (Map.empty,Map.empty) nt _allAttrDecls                              in  foldr f (Map.empty) ( _elemsIcollectedSigs@@ -703,290 +703,290 @@                                                      )                              {-# LINE 705 "dist/build/Transform.hs"#-}    {-# INLINE rule8 #-}-   {-# LINE 284 "./src-ag/Transform.ag" #-}+   {-# LINE 284 "src-ag/Transform.ag" #-}    rule8 = \ ((_elemsIcollectedInsts) :: [ (NontermIdent, ConstructorIdent, [Identifier]) ]) ->-                             {-# LINE 284 "./src-ag/Transform.ag" #-}+                             {-# LINE 284 "src-ag/Transform.ag" #-}                              let f (nt,con,is) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con is)                              in  foldr f (Map.empty) _elemsIcollectedInsts                              {-# LINE 712 "dist/build/Transform.hs"#-}    {-# INLINE rule9 #-}-   {-# LINE 287 "./src-ag/Transform.ag" #-}+   {-# LINE 287 "src-ag/Transform.ag" #-}    rule9 = \ ((_elemsIcollectedUniques) :: [ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]) ->-                             {-# LINE 287 "./src-ag/Transform.ag" #-}+                             {-# LINE 287 "src-ag/Transform.ag" #-}                              let f (nt,con,us) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con us)                              in foldr f (Map.empty) _elemsIcollectedUniques                              {-# LINE 719 "dist/build/Transform.hs"#-}    {-# INLINE rule10 #-}-   {-# LINE 289 "./src-ag/Transform.ag" #-}+   {-# LINE 289 "src-ag/Transform.ag" #-}    rule10 = \ ((_elemsIcollectedAugments) :: [ (NontermIdent, ConstructorIdent, [AugmentInfo]) ]) ->-                             {-# LINE 289 "./src-ag/Transform.ag" #-}+                             {-# LINE 289 "src-ag/Transform.ag" #-}                              let f (nt,con,as) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con as)                              in foldr f Map.empty _elemsIcollectedAugments                              {-# LINE 726 "dist/build/Transform.hs"#-}    {-# INLINE rule11 #-}-   {-# LINE 291 "./src-ag/Transform.ag" #-}+   {-# LINE 291 "src-ag/Transform.ag" #-}    rule11 = \ ((_elemsIcollectedArounds) :: [ (NontermIdent, ConstructorIdent, [AroundInfo])  ]) ->-                              {-# LINE 291 "./src-ag/Transform.ag" #-}+                              {-# LINE 291 "src-ag/Transform.ag" #-}                               let f (nt,con,as) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con as)                               in foldr f Map.empty _elemsIcollectedArounds                               {-# LINE 733 "dist/build/Transform.hs"#-}    {-# INLINE rule12 #-}-   {-# LINE 293 "./src-ag/Transform.ag" #-}+   {-# LINE 293 "src-ag/Transform.ag" #-}    rule12 = \ ((_elemsIcollectedMerges) :: [ (NontermIdent, ConstructorIdent, [MergeInfo])   ]) ->-                              {-# LINE 293 "./src-ag/Transform.ag" #-}+                              {-# LINE 293 "src-ag/Transform.ag" #-}                               let f (nt,con,as) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con as)                                in foldr f Map.empty _elemsIcollectedMerges                               {-# LINE 740 "dist/build/Transform.hs"#-}    {-# INLINE rule13 #-}-   {-# LINE 296 "./src-ag/Transform.ag" #-}+   {-# LINE 296 "src-ag/Transform.ag" #-}    rule13 = \ _allAugments ->-                                {-# LINE 296 "./src-ag/Transform.ag" #-}+                                {-# LINE 296 "src-ag/Transform.ag" #-}                                 let gen _ = []                                 in Map.map (Map.map gen) _allAugments                                 {-# LINE 747 "dist/build/Transform.hs"#-}    {-# INLINE rule14 #-}-   {-# LINE 299 "./src-ag/Transform.ag" #-}+   {-# LINE 299 "src-ag/Transform.ag" #-}    rule14 = \ _allAttrDecls _allFields _allInsts _allMerges _allRules _allSigs ->-                                {-# LINE 299 "./src-ag/Transform.ag" #-}+                                {-# LINE 299 "src-ag/Transform.ag" #-}                                 Map.mapWithKey (Map.mapWithKey . (checkRules _allAttrDecls _allFields _allInsts _allSigs     _allMerges    )) _allRules                                 {-# LINE 753 "dist/build/Transform.hs"#-}    {-# INLINE rule15 #-}-   {-# LINE 300 "./src-ag/Transform.ag" #-}+   {-# LINE 300 "src-ag/Transform.ag" #-}    rule15 = \ _allRules ->-                                {-# LINE 300 "./src-ag/Transform.ag" #-}+                                {-# LINE 300 "src-ag/Transform.ag" #-}                                 Map.mapWithKey (Map.mapWithKey . checkRuleNames) _allRules                                 {-# LINE 759 "dist/build/Transform.hs"#-}    {-# INLINE rule16 #-}-   {-# LINE 301 "./src-ag/Transform.ag" #-}+   {-# LINE 301 "src-ag/Transform.ag" #-}    rule16 = \ _allSigs ->-                                {-# LINE 301 "./src-ag/Transform.ag" #-}+                                {-# LINE 301 "src-ag/Transform.ag" #-}                                 Map.mapWithKey (Map.mapWithKey . (checkSigs                                                 )) _allSigs                                 {-# LINE 765 "dist/build/Transform.hs"#-}    {-# INLINE rule17 #-}-   {-# LINE 302 "./src-ag/Transform.ag" #-}+   {-# LINE 302 "src-ag/Transform.ag" #-}    rule17 = \ _allFields _allInsts _allNonterminals _allSigs ->-                                {-# LINE 302 "./src-ag/Transform.ag" #-}+                                {-# LINE 302 "src-ag/Transform.ag" #-}                                 Map.mapWithKey (Map.mapWithKey . (checkInsts _allNonterminals     _allSigs     _allFields   )) _allInsts                                 {-# LINE 771 "dist/build/Transform.hs"#-}    {-# INLINE rule18 #-}-   {-# LINE 303 "./src-ag/Transform.ag" #-}+   {-# LINE 303 "src-ag/Transform.ag" #-}    rule18 = \ _allAttrDecls _allUniques ->-                                {-# LINE 303 "./src-ag/Transform.ag" #-}+                                {-# LINE 303 "src-ag/Transform.ag" #-}                                 Map.mapWithKey (Map.mapWithKey . (checkUniques _allAttrDecls                                )) _allUniques                                 {-# LINE 777 "dist/build/Transform.hs"#-}    {-# INLINE rule19 #-}-   {-# LINE 304 "./src-ag/Transform.ag" #-}+   {-# LINE 304 "src-ag/Transform.ag" #-}    rule19 = \ _allAttrDecls _allAugments ->-                                {-# LINE 304 "./src-ag/Transform.ag" #-}+                                {-# LINE 304 "src-ag/Transform.ag" #-}                                 Map.mapWithKey (Map.mapWithKey . (checkAugments _allAttrDecls                               )) _allAugments                                 {-# LINE 783 "dist/build/Transform.hs"#-}    {-# INLINE rule20 #-}-   {-# LINE 305 "./src-ag/Transform.ag" #-}+   {-# LINE 305 "src-ag/Transform.ag" #-}    rule20 = \ _allArounds _allFields ->-                                {-# LINE 305 "./src-ag/Transform.ag" #-}+                                {-# LINE 305 "src-ag/Transform.ag" #-}                                 Map.mapWithKey (Map.mapWithKey . (checkArounds _allFields    )) _allArounds                                 {-# LINE 789 "dist/build/Transform.hs"#-}    {-# INLINE rule21 #-}-   {-# LINE 306 "./src-ag/Transform.ag" #-}+   {-# LINE 306 "src-ag/Transform.ag" #-}    rule21 = \ _allFields _allInsts _allMerges _allNonterminals ->-                                {-# LINE 306 "./src-ag/Transform.ag" #-}+                                {-# LINE 306 "src-ag/Transform.ag" #-}                                 Map.mapWithKey (Map.mapWithKey . (checkMerges _allNonterminals     _allInsts     _allFields    )) _allMerges                                 {-# LINE 795 "dist/build/Transform.hs"#-}    {-# INLINE rule22 #-}-   {-# LINE 308 "./src-ag/Transform.ag" #-}+   {-# LINE 308 "src-ag/Transform.ag" #-}    rule22 = \ _allRulesErrs ->-                                 {-# LINE 308 "./src-ag/Transform.ag" #-}+                                 {-# LINE 308 "src-ag/Transform.ag" #-}                                  Map.map (Map.map fst) _allRulesErrs                                  {-# LINE 801 "dist/build/Transform.hs"#-}    {-# INLINE rule23 #-}-   {-# LINE 309 "./src-ag/Transform.ag" #-}+   {-# LINE 309 "src-ag/Transform.ag" #-}    rule23 = \ _allSigsErrs _augmentSigs ->-                                 {-# LINE 309 "./src-ag/Transform.ag" #-}+                                 {-# LINE 309 "src-ag/Transform.ag" #-}                                  Map.map (Map.map fst) _allSigsErrs     `unionunionplusplus` _augmentSigs                                  {-# LINE 807 "dist/build/Transform.hs"#-}    {-# INLINE rule24 #-}-   {-# LINE 310 "./src-ag/Transform.ag" #-}+   {-# LINE 310 "src-ag/Transform.ag" #-}    rule24 = \ _allInstsErrs ->-                                 {-# LINE 310 "./src-ag/Transform.ag" #-}+                                 {-# LINE 310 "src-ag/Transform.ag" #-}                                  Map.map (Map.map fst) _allInstsErrs                                  {-# LINE 813 "dist/build/Transform.hs"#-}    {-# INLINE rule25 #-}-   {-# LINE 311 "./src-ag/Transform.ag" #-}+   {-# LINE 311 "src-ag/Transform.ag" #-}    rule25 = \ _allUniquesErrs ->-                                 {-# LINE 311 "./src-ag/Transform.ag" #-}+                                 {-# LINE 311 "src-ag/Transform.ag" #-}                                  Map.map (Map.map fst) _allUniquesErrs                                  {-# LINE 819 "dist/build/Transform.hs"#-}    {-# INLINE rule26 #-}-   {-# LINE 312 "./src-ag/Transform.ag" #-}+   {-# LINE 312 "src-ag/Transform.ag" #-}    rule26 = \ _allAugmentErrs ->-                                 {-# LINE 312 "./src-ag/Transform.ag" #-}+                                 {-# LINE 312 "src-ag/Transform.ag" #-}                                  Map.map (Map.map fst) _allAugmentErrs                                  {-# LINE 825 "dist/build/Transform.hs"#-}    {-# INLINE rule27 #-}-   {-# LINE 313 "./src-ag/Transform.ag" #-}+   {-# LINE 313 "src-ag/Transform.ag" #-}    rule27 = \ _allAroundsErrs ->-                                 {-# LINE 313 "./src-ag/Transform.ag" #-}+                                 {-# LINE 313 "src-ag/Transform.ag" #-}                                  Map.map (Map.map fst) _allAroundsErrs                                  {-# LINE 831 "dist/build/Transform.hs"#-}    {-# INLINE rule28 #-}-   {-# LINE 314 "./src-ag/Transform.ag" #-}+   {-# LINE 314 "src-ag/Transform.ag" #-}    rule28 = \ _allAttrDecls _allFields _allRules _checkedInsts _checkedRulesPre _checkedUniques ((_lhsIoptions) :: Options) ->-                                 {-# LINE 314 "./src-ag/Transform.ag" #-}+                                 {-# LINE 314 "src-ag/Transform.ag" #-}                                  Map.unionWith (Map.unionWith (++)) _checkedRulesPre     (Map.mapWithKey (Map.mapWithKey . (mkUniqueRules _lhsIoptions _allRules     _allFields     _checkedInsts     _allAttrDecls    )) _checkedUniques    )                                  {-# LINE 837 "dist/build/Transform.hs"#-}    {-# INLINE rule29 #-}-   {-# LINE 315 "./src-ag/Transform.ag" #-}+   {-# LINE 315 "src-ag/Transform.ag" #-}    rule29 = \ _allMergesErrs ->-                                 {-# LINE 315 "./src-ag/Transform.ag" #-}+                                 {-# LINE 315 "src-ag/Transform.ag" #-}                                  Map.map (Map.map fst) _allMergesErrs                                  {-# LINE 843 "dist/build/Transform.hs"#-}    {-# INLINE rule30 #-}-   {-# LINE 317 "./src-ag/Transform.ag" #-}+   {-# LINE 317 "src-ag/Transform.ag" #-}    rule30 = \ ((_elemsItypeSyns) :: TypeSyns) ->-                             {-# LINE 317 "./src-ag/Transform.ag" #-}+                             {-# LINE 317 "src-ag/Transform.ag" #-}                              let f = checkForDuplicates (DupSynonym)                              in  Seq.fromList . f . map fst $ _elemsItypeSyns                              {-# LINE 850 "dist/build/Transform.hs"#-}    {-# INLINE rule31 #-}-   {-# LINE 320 "./src-ag/Transform.ag" #-}+   {-# LINE 320 "src-ag/Transform.ag" #-}    rule31 = \ _allFields ->-                             {-# LINE 320 "./src-ag/Transform.ag" #-}+                             {-# LINE 320 "src-ag/Transform.ag" #-}                              let g nt (con,fm) = checkForDuplicates (DupChild nt con) (map fst fm)                                  f (nt,cfm)    = concat . map (g nt) . Map.toList $ cfm                              in  Seq.fromList . concat . map f . Map.toList $ _allFields                              {-# LINE 858 "dist/build/Transform.hs"#-}    {-# INLINE rule32 #-}-   {-# LINE 324 "./src-ag/Transform.ag" #-}+   {-# LINE 324 "src-ag/Transform.ag" #-}    rule32 = \  (_ :: ()) ->-                             {-# LINE 324 "./src-ag/Transform.ag" #-}+                             {-# LINE 324 "src-ag/Transform.ag" #-}                              let                              in   Seq.empty                              {-# LINE 865 "dist/build/Transform.hs"#-}    {-# INLINE rule33 #-}-   {-# LINE 328 "./src-ag/Transform.ag" #-}+   {-# LINE 328 "src-ag/Transform.ag" #-}    rule33 = \ _allRulesErrs ->-                             {-# LINE 328 "./src-ag/Transform.ag" #-}+                             {-# LINE 328 "src-ag/Transform.ag" #-}                              let  f m s = Map.fold ((><) . snd) s m                              in Map.fold f Seq.empty _allRulesErrs                              {-# LINE 872 "dist/build/Transform.hs"#-}    {-# INLINE rule34 #-}-   {-# LINE 331 "./src-ag/Transform.ag" #-}+   {-# LINE 331 "src-ag/Transform.ag" #-}    rule34 = \ _allSigsErrs ->-                             {-# LINE 331 "./src-ag/Transform.ag" #-}+                             {-# LINE 331 "src-ag/Transform.ag" #-}                              let  f m s = Map.fold ((><) . snd) s m                              in Map.fold f Seq.empty _allSigsErrs                              {-# LINE 879 "dist/build/Transform.hs"#-}    {-# INLINE rule35 #-}-   {-# LINE 334 "./src-ag/Transform.ag" #-}+   {-# LINE 334 "src-ag/Transform.ag" #-}    rule35 = \ _allInstsErrs ->-                             {-# LINE 334 "./src-ag/Transform.ag" #-}+                             {-# LINE 334 "src-ag/Transform.ag" #-}                              let  f m s = Map.fold ((><) . snd) s m                              in Map.fold f Seq.empty _allInstsErrs                              {-# LINE 886 "dist/build/Transform.hs"#-}    {-# INLINE rule36 #-}-   {-# LINE 337 "./src-ag/Transform.ag" #-}+   {-# LINE 337 "src-ag/Transform.ag" #-}    rule36 = \ _allUniquesErrs ->-                             {-# LINE 337 "./src-ag/Transform.ag" #-}+                             {-# LINE 337 "src-ag/Transform.ag" #-}                              let  f m s = Map.fold ((><) . snd) s m                              in Map.fold f Seq.empty _allUniquesErrs                              {-# LINE 893 "dist/build/Transform.hs"#-}    {-# INLINE rule37 #-}-   {-# LINE 340 "./src-ag/Transform.ag" #-}+   {-# LINE 340 "src-ag/Transform.ag" #-}    rule37 = \ _allAugmentErrs ->-                             {-# LINE 340 "./src-ag/Transform.ag" #-}+                             {-# LINE 340 "src-ag/Transform.ag" #-}                              let  f m s = Map.fold ((><) . snd) s m                              in Map.fold f Seq.empty _allAugmentErrs                              {-# LINE 900 "dist/build/Transform.hs"#-}    {-# INLINE rule38 #-}-   {-# LINE 343 "./src-ag/Transform.ag" #-}+   {-# LINE 343 "src-ag/Transform.ag" #-}    rule38 = \ _allAroundsErrs ->-                             {-# LINE 343 "./src-ag/Transform.ag" #-}+                             {-# LINE 343 "src-ag/Transform.ag" #-}                              let  f m s = Map.fold ((><) . snd) s m                              in Map.fold f Seq.empty _allAroundsErrs                              {-# LINE 907 "dist/build/Transform.hs"#-}    {-# INLINE rule39 #-}-   {-# LINE 346 "./src-ag/Transform.ag" #-}+   {-# LINE 346 "src-ag/Transform.ag" #-}    rule39 = \ _allNamesErrs ->-                              {-# LINE 346 "./src-ag/Transform.ag" #-}+                              {-# LINE 346 "src-ag/Transform.ag" #-}                               let  f m s = Map.fold ((><)) s m                               in Map.fold f Seq.empty _allNamesErrs                               {-# LINE 914 "dist/build/Transform.hs"#-}    {-# INLINE rule40 #-}-   {-# LINE 349 "./src-ag/Transform.ag" #-}+   {-# LINE 349 "src-ag/Transform.ag" #-}    rule40 = \ _allMergesErrs ->-                              {-# LINE 349 "./src-ag/Transform.ag" #-}+                              {-# LINE 349 "src-ag/Transform.ag" #-}                               let f m s = Map.fold ((><) . snd) s m                               in Map.fold f Seq.empty _allMergesErrs                               {-# LINE 921 "dist/build/Transform.hs"#-}    {-# INLINE rule41 #-}-   {-# LINE 352 "./src-ag/Transform.ag" #-}+   {-# LINE 352 "src-ag/Transform.ag" #-}    rule41 = \ ((_elemsIerrors) :: Seq Error) _errs1 _errs10 _errs11 _errs2 _errs3 _errs4 _errs5 _errs6 _errs7 _errs8 _errs9 ->-                             {-# LINE 352 "./src-ag/Transform.ag" #-}+                             {-# LINE 352 "src-ag/Transform.ag" #-}                              _elemsIerrors >< _errs1 >< _errs2 >< _errs3 >< _errs4 >< _errs5 >< _errs6 >< _errs7 >< _errs8 >< _errs9 >< _errs10 >< _errs11                              {-# LINE 927 "dist/build/Transform.hs"#-}    {-# INLINE rule42 #-}-   {-# LINE 606 "./src-ag/Transform.ag" #-}+   {-# LINE 606 "src-ag/Transform.ag" #-}    rule42 = \ ((_elemsIcollectedNames) :: Set Identifier) ((_elemsIcollectedSetNames) :: Set Identifier) ->-                                 {-# LINE 606 "./src-ag/Transform.ag" #-}+                                 {-# LINE 606 "src-ag/Transform.ag" #-}                                  _elemsIcollectedNames `Set.difference` _elemsIcollectedSetNames                                  {-# LINE 933 "dist/build/Transform.hs"#-}    {-# INLINE rule43 #-}-   {-# LINE 626 "./src-ag/Transform.ag" #-}+   {-# LINE 626 "src-ag/Transform.ag" #-}    rule43 = \ ((_elemsIcollectedConstructorsMap) :: Map NontermIdent (Set ConstructorIdent)) ->-                                 {-# LINE 626 "./src-ag/Transform.ag" #-}+                                 {-# LINE 626 "src-ag/Transform.ag" #-}                                  _elemsIcollectedConstructorsMap                                  {-# LINE 939 "dist/build/Transform.hs"#-}    {-# INLINE rule44 #-}-   {-# LINE 709 "./src-ag/Transform.ag" #-}+   {-# LINE 709 "src-ag/Transform.ag" #-}    rule44 = \ _allNonterminals ->-                             {-# LINE 709 "./src-ag/Transform.ag" #-}+                             {-# LINE 709 "src-ag/Transform.ag" #-}                              Map.fromList (map (\x->(x,(Set.singleton x, Set.empty))) (Set.toList _allNonterminals    ))                              {-# LINE 945 "dist/build/Transform.hs"#-}    {-# INLINE rule45 #-}-   {-# LINE 710 "./src-ag/Transform.ag" #-}+   {-# LINE 710 "src-ag/Transform.ag" #-}    rule45 = \ ((_elemsIdefSets) :: Map Identifier (Set NontermIdent,Set Identifier)) ->-                             {-# LINE 710 "./src-ag/Transform.ag" #-}+                             {-# LINE 710 "src-ag/Transform.ag" #-}                              Map.map fst _elemsIdefSets                              {-# LINE 951 "dist/build/Transform.hs"#-}    {-# INLINE rule46 #-}-   {-# LINE 1030 "./src-ag/Transform.ag" #-}+   {-# LINE 1030 "src-ag/Transform.ag" #-}    rule46 = \  (_ :: ()) ->-                           {-# LINE 1030 "./src-ag/Transform.ag" #-}+                           {-# LINE 1030 "src-ag/Transform.ag" #-}                            Map.empty                            {-# LINE 957 "dist/build/Transform.hs"#-}    {-# INLINE rule47 #-}-   {-# LINE 1086 "./src-ag/Transform.ag" #-}+   {-# LINE 1086 "src-ag/Transform.ag" #-}    rule47 = \ _allNonterminals ((_elemsIattrDecls) :: Map NontermIdent (Attributes, Attributes)) ((_lhsIoptions) :: Options) ->-                             {-# LINE 1086 "./src-ag/Transform.ag" #-}+                             {-# LINE 1086 "src-ag/Transform.ag" #-}                              if withSelf _lhsIoptions                               then foldr addSelf _elemsIattrDecls (Set.toList _allNonterminals    )                               else               _elemsIattrDecls                              {-# LINE 965 "dist/build/Transform.hs"#-}    {-# INLINE rule48 #-}-   {-# LINE 1328 "./src-ag/Transform.ag" #-}+   {-# LINE 1328 "src-ag/Transform.ag" #-}    rule48 = \ ((_elemsIcollectedMacros) :: [(NontermIdent, ConstructorIdent, MaybeMacro)]) ->-                             {-# LINE 1328 "./src-ag/Transform.ag" #-}+                             {-# LINE 1328 "src-ag/Transform.ag" #-}                              let f (nt,con,m) = Map.insertWith (Map.union) nt (Map.singleton con m)                              in  foldr f (Map.empty) _elemsIcollectedMacros                              {-# LINE 972 "dist/build/Transform.hs"#-}    {-# INLINE rule49 #-}-   {-# LINE 1341 "./src-ag/Transform.ag" #-}+   {-# LINE 1341 "src-ag/Transform.ag" #-}    rule49 = \ _allAttrs _allFields _allNonterminals ->-                        {-# LINE 1341 "./src-ag/Transform.ag" #-}+                        {-# LINE 1341 "src-ag/Transform.ag" #-}                         (_allNonterminals    ,_allFields    ,_allAttrs    )                         {-# LINE 978 "dist/build/Transform.hs"#-}    {-# INLINE rule50 #-}-   {-# LINE 1343 "./src-ag/Transform.ag" #-}+   {-# LINE 1343 "src-ag/Transform.ag" #-}    rule50 = \ _allNonterminals ((_elemsIattrs) :: Map NontermIdent (Attributes, Attributes)) ((_lhsIoptions) :: Options) ->-                         {-# LINE 1343 "./src-ag/Transform.ag" #-}+                         {-# LINE 1343 "src-ag/Transform.ag" #-}                          if withSelf _lhsIoptions                               then foldr addSelf _elemsIattrs (Set.toList _allNonterminals    )                               else               _elemsIattrs                          {-# LINE 986 "dist/build/Transform.hs"#-}    {-# INLINE rule51 #-}-   {-# LINE 1351 "./src-ag/Transform.ag" #-}+   {-# LINE 1351 "src-ag/Transform.ag" #-}    rule51 = \  (_ :: ()) ->-                        {-# LINE 1351 "./src-ag/Transform.ag" #-}+                        {-# LINE 1351 "src-ag/Transform.ag" #-}                         Map.empty                         {-# LINE 992 "dist/build/Transform.hs"#-}    {-# INLINE rule52 #-}@@ -1026,8 +1026,8 @@ wrap_Alt (T_Alt act) (Inh_Alt _lhsIallConstructors _lhsIallNonterminals _lhsInts) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Alt_vIn4 _lhsIallConstructors _lhsIallNonterminals _lhsInts-        (T_Alt_vOut4 _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorNames _lhsOcollectedFields _lhsOcollectedMacros) <- return (inv_Alt_s5 sem arg)+        let arg4 = T_Alt_vIn4 _lhsIallConstructors _lhsIallNonterminals _lhsInts+        (T_Alt_vOut4 _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorNames _lhsOcollectedFields _lhsOcollectedMacros) <- return (inv_Alt_s5 sem arg4)         return (Syn_Alt _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorNames _lhsOcollectedFields _lhsOcollectedMacros)    ) @@ -1073,36 +1073,36 @@          in __result_ )      in C_Alt_s5 v4    {-# INLINE rule61 #-}-   {-# LINE 240 "./src-ag/Transform.ag" #-}+   {-# LINE 240 "src-ag/Transform.ag" #-}    rule61 = \ ((_fieldsIcollectedFields) :: [(Identifier, Type)]) ((_lhsIallConstructors) :: Map NontermIdent (Set ConstructorIdent)) ((_lhsInts) :: Set NontermIdent) ((_namesIconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) ->-                                        {-# LINE 240 "./src-ag/Transform.ag" #-}+                                        {-# LINE 240 "src-ag/Transform.ag" #-}                                         [ (nt, con, _fieldsIcollectedFields)                                         | nt  <- Set.toList _lhsInts                                         , con <- Set.toList (_namesIconstructors (Map.findWithDefault Set.empty nt _lhsIallConstructors))                                         ]                                         {-# LINE 1084 "dist/build/Transform.hs"#-}    {-# INLINE rule62 #-}-   {-# LINE 244 "./src-ag/Transform.ag" #-}+   {-# LINE 244 "src-ag/Transform.ag" #-}    rule62 = \ ((_fieldsIcollectedConstraints) :: [Type]) ((_lhsIallConstructors) :: Map NontermIdent (Set ConstructorIdent)) ((_lhsInts) :: Set NontermIdent) ((_namesIconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) ->-                                        {-# LINE 244 "./src-ag/Transform.ag" #-}+                                        {-# LINE 244 "src-ag/Transform.ag" #-}                                         [ (nt, con, _fieldsIcollectedConstraints)                                         | nt  <- Set.toList _lhsInts                                         , con <- Set.toList (_namesIconstructors (Map.findWithDefault Set.empty nt _lhsIallConstructors))                                         ]                                         {-# LINE 1093 "dist/build/Transform.hs"#-}    {-# INLINE rule63 #-}-   {-# LINE 248 "./src-ag/Transform.ag" #-}+   {-# LINE 248 "src-ag/Transform.ag" #-}    rule63 = \ ((_lhsIallConstructors) :: Map NontermIdent (Set ConstructorIdent)) ((_lhsInts) :: Set NontermIdent) ((_namesIconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) tyvars_ ->-                                        {-# LINE 248 "./src-ag/Transform.ag" #-}+                                        {-# LINE 248 "src-ag/Transform.ag" #-}                                         [ (nt, con, Set.fromList tyvars_)                                         | nt  <- Set.toList _lhsInts                                         , con <- Set.toList (_namesIconstructors (Map.findWithDefault Set.empty nt _lhsIallConstructors))                                         ]                                         {-# LINE 1102 "dist/build/Transform.hs"#-}    {-# INLINE rule64 #-}-   {-# LINE 1319 "./src-ag/Transform.ag" #-}+   {-# LINE 1319 "src-ag/Transform.ag" #-}    rule64 = \ ((_lhsIallConstructors) :: Map NontermIdent (Set ConstructorIdent)) ((_lhsInts) :: Set NontermIdent) ((_namesIconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) macro_ ->-                                        {-# LINE 1319 "./src-ag/Transform.ag" #-}+                                        {-# LINE 1319 "src-ag/Transform.ag" #-}                                         [ (nt, con, macro_)                                         | nt  <- Set.toList _lhsInts                                         , con <- Set.toList (_namesIconstructors (Map.findWithDefault Set.empty nt _lhsIallConstructors))@@ -1124,8 +1124,8 @@ wrap_Alts (T_Alts act) (Inh_Alts _lhsIallConstructors _lhsIallNonterminals _lhsInts) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Alts_vIn7 _lhsIallConstructors _lhsIallNonterminals _lhsInts-        (T_Alts_vOut7 _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorNames _lhsOcollectedFields _lhsOcollectedMacros) <- return (inv_Alts_s8 sem arg)+        let arg7 = T_Alts_vIn7 _lhsIallConstructors _lhsIallNonterminals _lhsInts+        (T_Alts_vOut7 _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorNames _lhsOcollectedFields _lhsOcollectedMacros) <- return (inv_Alts_s8 sem arg7)         return (Syn_Alts _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorNames _lhsOcollectedFields _lhsOcollectedMacros)    ) @@ -1253,8 +1253,8 @@ wrap_Attrs (T_Attrs act) (Inh_Attrs _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsInts _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Attrs_vIn10 _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsInts _lhsIoptions-        (T_Attrs_vOut10 _lhsOattrDecls _lhsOattrs _lhsOerrors _lhsOuseMap) <- return (inv_Attrs_s11 sem arg)+        let arg10 = T_Attrs_vIn10 _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsInts _lhsIoptions+        (T_Attrs_vOut10 _lhsOattrDecls _lhsOattrs _lhsOerrors _lhsOuseMap) <- return (inv_Attrs_s11 sem arg10)         return (Syn_Attrs _lhsOattrDecls _lhsOattrs _lhsOerrors _lhsOuseMap)    ) @@ -1296,15 +1296,15 @@          in __result_ )      in C_Attrs_s11 v10    {-# INLINE rule83 #-}-   {-# LINE 1039 "./src-ag/Transform.ag" #-}+   {-# LINE 1039 "src-ag/Transform.ag" #-}    rule83 = \ _inherited ((_lhsIallFields) :: DataTypes) ((_lhsIattrDecls) :: Map NontermIdent (Attributes, Attributes)) ((_lhsInts) :: Set NontermIdent) _synthesized ->-                                     {-# LINE 1039 "./src-ag/Transform.ag" #-}+                                     {-# LINE 1039 "src-ag/Transform.ag" #-}                                      checkAttrs _lhsIallFields (Set.toList _lhsInts) _inherited _synthesized _lhsIattrDecls                                      {-# LINE 1304 "dist/build/Transform.hs"#-}    {-# INLINE rule84 #-}-   {-# LINE 1041 "./src-ag/Transform.ag" #-}+   {-# LINE 1041 "src-ag/Transform.ag" #-}    rule84 = \ ((_lhsIallNonterminals) :: Set NontermIdent) chn_ inh_ syn_ ->-                                                 {-# LINE 1041 "./src-ag/Transform.ag" #-}+                                                 {-# LINE 1041 "src-ag/Transform.ag" #-}                                                  let splitAttrs xs = unzip [ ((n,makeType _lhsIallNonterminals t),(n,ud))                                                                            | (n,t,ud) <- xs                                                                            ]@@ -1315,15 +1315,15 @@                                                  in (inh++chn,chn++syn, Map.fromList (Prelude.filter isUse (uses1++uses2)))                                                  {-# LINE 1317 "dist/build/Transform.hs"#-}    {-# INLINE rule85 #-}-   {-# LINE 1049 "./src-ag/Transform.ag" #-}+   {-# LINE 1049 "src-ag/Transform.ag" #-}    rule85 = \ ((_lhsInts) :: Set NontermIdent) _useMap ->-                         {-# LINE 1049 "./src-ag/Transform.ag" #-}+                         {-# LINE 1049 "src-ag/Transform.ag" #-}                          Map.fromList (zip (Set.toList _lhsInts) (repeat _useMap))                          {-# LINE 1323 "dist/build/Transform.hs"#-}    {-# INLINE rule86 #-}-   {-# LINE 1051 "./src-ag/Transform.ag" #-}+   {-# LINE 1051 "src-ag/Transform.ag" #-}    rule86 = \ ((_lhsIoptions) :: Options) chn_ inh_ syn_ ->-                          {-# LINE 1051 "./src-ag/Transform.ag" #-}+                          {-# LINE 1051 "src-ag/Transform.ag" #-}                           if checkParseTy _lhsIoptions                           then let attrs  = inh_ ++ syn_ ++ chn_                                    items = map (\(ident,tp,_) -> (getPos ident, tp)) attrs@@ -1338,15 +1338,15 @@                           else Seq.empty                           {-# LINE 1340 "dist/build/Transform.hs"#-}    {-# INLINE rule87 #-}-   {-# LINE 1063 "./src-ag/Transform.ag" #-}+   {-# LINE 1063 "src-ag/Transform.ag" #-}    rule87 = \ _errors _errors1 ->-                         {-# LINE 1063 "./src-ag/Transform.ag" #-}+                         {-# LINE 1063 "src-ag/Transform.ag" #-}                          _errors     Seq.>< _errors1                          {-# LINE 1346 "dist/build/Transform.hs"#-}    {-# INLINE rule88 #-}-   {-# LINE 1355 "./src-ag/Transform.ag" #-}+   {-# LINE 1355 "src-ag/Transform.ag" #-}    rule88 = \ _inherited ((_lhsIattrs) :: Map NontermIdent (Attributes, Attributes)) ((_lhsInts) :: Set NontermIdent) _synthesized ->-                          {-# LINE 1355 "./src-ag/Transform.ag" #-}+                          {-# LINE 1355 "src-ag/Transform.ag" #-}                           let ins decls nt = if Map.member nt decls                                              then  Map.update (\(inh,syn) -> Just ( Map.union inh $ Map.fromList _inherited                                                                                        , Map.union syn $ Map.fromList _synthesized)) nt decls@@ -1366,8 +1366,8 @@ wrap_ConstructorSet (T_ConstructorSet act) (Inh_ConstructorSet ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_ConstructorSet_vIn13 -        (T_ConstructorSet_vOut13 _lhsOcollectedConstructorNames _lhsOconstructors _lhsOerrors) <- return (inv_ConstructorSet_s14 sem arg)+        let arg13 = T_ConstructorSet_vIn13 +        (T_ConstructorSet_vOut13 _lhsOcollectedConstructorNames _lhsOconstructors _lhsOerrors) <- return (inv_ConstructorSet_s14 sem arg13)         return (Syn_ConstructorSet _lhsOcollectedConstructorNames _lhsOconstructors _lhsOerrors)    ) @@ -1407,15 +1407,15 @@          in __result_ )      in C_ConstructorSet_s14 v13    {-# INLINE rule90 #-}-   {-# LINE 614 "./src-ag/Transform.ag" #-}+   {-# LINE 614 "src-ag/Transform.ag" #-}    rule90 = \ name_ ->-                                            {-# LINE 614 "./src-ag/Transform.ag" #-}+                                            {-# LINE 614 "src-ag/Transform.ag" #-}                                             Set.singleton name_                                             {-# LINE 1415 "dist/build/Transform.hs"#-}    {-# INLINE rule91 #-}-   {-# LINE 777 "./src-ag/Transform.ag" #-}+   {-# LINE 777 "src-ag/Transform.ag" #-}    rule91 = \ name_ ->-                                     {-# LINE 777 "./src-ag/Transform.ag" #-}+                                     {-# LINE 777 "src-ag/Transform.ag" #-}                                      \_  -> Set.singleton name_                                      {-# LINE 1421 "dist/build/Transform.hs"#-}    {-# INLINE rule92 #-}@@ -1442,9 +1442,9 @@          in __result_ )      in C_ConstructorSet_s14 v13    {-# INLINE rule93 #-}-   {-# LINE 778 "./src-ag/Transform.ag" #-}+   {-# LINE 778 "src-ag/Transform.ag" #-}    rule93 = \ ((_set1Iconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) ((_set2Iconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) ->-                                     {-# LINE 778 "./src-ag/Transform.ag" #-}+                                     {-# LINE 778 "src-ag/Transform.ag" #-}                                      \ds -> _set1Iconstructors ds `Set.union`      _set2Iconstructors ds                                      {-# LINE 1450 "dist/build/Transform.hs"#-}    {-# INLINE rule94 #-}@@ -1474,9 +1474,9 @@          in __result_ )      in C_ConstructorSet_s14 v13    {-# INLINE rule96 #-}-   {-# LINE 779 "./src-ag/Transform.ag" #-}+   {-# LINE 779 "src-ag/Transform.ag" #-}    rule96 = \ ((_set1Iconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) ((_set2Iconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) ->-                                     {-# LINE 779 "./src-ag/Transform.ag" #-}+                                     {-# LINE 779 "src-ag/Transform.ag" #-}                                      \ds -> _set1Iconstructors ds `Set.difference` _set2Iconstructors ds                                      {-# LINE 1482 "dist/build/Transform.hs"#-}    {-# INLINE rule97 #-}@@ -1502,9 +1502,9 @@          in __result_ )      in C_ConstructorSet_s14 v13    {-# INLINE rule99 #-}-   {-# LINE 780 "./src-ag/Transform.ag" #-}+   {-# LINE 780 "src-ag/Transform.ag" #-}    rule99 = \  (_ :: ()) ->-                                     {-# LINE 780 "./src-ag/Transform.ag" #-}+                                     {-# LINE 780 "src-ag/Transform.ag" #-}                                      \ds -> ds                                      {-# LINE 1510 "dist/build/Transform.hs"#-}    {-# INLINE rule100 #-}@@ -1523,8 +1523,8 @@ wrap_Elem (T_Elem act) (Inh_Elem _lhsIallAttrDecls _lhsIallAttrs _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsIdefSets _lhsIdefinedSets _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Elem_vIn16 _lhsIallAttrDecls _lhsIallAttrs _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsIdefSets _lhsIdefinedSets _lhsIoptions-        (T_Elem_vOut16 _lhsOattrDecls _lhsOattrOrderCollect _lhsOattrs _lhsOblocks _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedMacros _lhsOcollectedMerges _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOcollectedUniques _lhsOconstructorTypeMap _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOquantCollect _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers) <- return (inv_Elem_s17 sem arg)+        let arg16 = T_Elem_vIn16 _lhsIallAttrDecls _lhsIallAttrs _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsIdefSets _lhsIdefinedSets _lhsIoptions+        (T_Elem_vOut16 _lhsOattrDecls _lhsOattrOrderCollect _lhsOattrs _lhsOblocks _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedMacros _lhsOcollectedMerges _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOcollectedUniques _lhsOconstructorTypeMap _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOquantCollect _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers) <- return (inv_Elem_s17 sem arg16)         return (Syn_Elem _lhsOattrDecls _lhsOattrOrderCollect _lhsOattrs _lhsOblocks _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedMacros _lhsOcollectedMerges _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOcollectedUniques _lhsOconstructorTypeMap _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOquantCollect _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers)    ) @@ -1645,46 +1645,46 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule102 #-}-   {-# LINE 176 "./src-ag/Transform.ag" #-}+   {-# LINE 176 "src-ag/Transform.ag" #-}    rule102 = \ ((_namesInontSet) :: Set NontermIdent) ->-                      {-# LINE 176 "./src-ag/Transform.ag" #-}+                      {-# LINE 176 "src-ag/Transform.ag" #-}                       _namesInontSet                       {-# LINE 1653 "dist/build/Transform.hs"#-}    {-# INLINE rule103 #-}-   {-# LINE 620 "./src-ag/Transform.ag" #-}+   {-# LINE 620 "src-ag/Transform.ag" #-}    rule103 = \ ((_altsIcollectedConstructorNames) :: Set ConstructorIdent) ((_namesInontSet) :: Set NontermIdent) ->-                                           {-# LINE 620 "./src-ag/Transform.ag" #-}+                                           {-# LINE 620 "src-ag/Transform.ag" #-}                                            Map.fromList                                            [ (n, _altsIcollectedConstructorNames)                                            | n <- Set.toList _namesInontSet                                            ]                                            {-# LINE 1662 "dist/build/Transform.hs"#-}    {-# INLINE rule104 #-}-   {-# LINE 948 "./src-ag/Transform.ag" #-}+   {-# LINE 948 "src-ag/Transform.ag" #-}    rule104 = \ ((_namesInontSet) :: Set NontermIdent) params_ ->-                            {-# LINE 948 "./src-ag/Transform.ag" #-}+                            {-# LINE 948 "src-ag/Transform.ag" #-}                             if null params_                             then Map.empty                             else Map.fromList [(nt, params_) | nt <- Set.toList _namesInontSet]                             {-# LINE 1670 "dist/build/Transform.hs"#-}    {-# INLINE rule105 #-}-   {-# LINE 971 "./src-ag/Transform.ag" #-}+   {-# LINE 971 "src-ag/Transform.ag" #-}    rule105 = \ ((_namesInontSet) :: Set NontermIdent) ctx_ ->-                         {-# LINE 971 "./src-ag/Transform.ag" #-}+                         {-# LINE 971 "src-ag/Transform.ag" #-}                          if null ctx_                          then Map.empty                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]                          {-# LINE 1678 "dist/build/Transform.hs"#-}    {-# INLINE rule106 #-}-   {-# LINE 1033 "./src-ag/Transform.ag" #-}+   {-# LINE 1033 "src-ag/Transform.ag" #-}    rule106 = \ ((_namesInontSet) :: Set NontermIdent) ->-                       {-# LINE 1033 "./src-ag/Transform.ag" #-}+                       {-# LINE 1033 "src-ag/Transform.ag" #-}                        _namesInontSet                        {-# LINE 1684 "dist/build/Transform.hs"#-}    {-# INLINE rule107 #-}-   {-# LINE 1371 "./src-ag/Transform.ag" #-}+   {-# LINE 1371 "src-ag/Transform.ag" #-}    rule107 = \ ((_namesIcollectedNames) :: Set Identifier) contype_ ->-                                    {-# LINE 1371 "./src-ag/Transform.ag" #-}+                                    {-# LINE 1371 "src-ag/Transform.ag" #-}                                     Set.fold (\nm mp -> Map.insert nm contype_ mp) Map.empty _namesIcollectedNames                                     {-# LINE 1690 "dist/build/Transform.hs"#-}    {-# INLINE rule108 #-}@@ -1873,21 +1873,21 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule145 #-}-   {-# LINE 254 "./src-ag/Transform.ag" #-}+   {-# LINE 254 "src-ag/Transform.ag" #-}    rule145 = \ _expanded name_ ->-                                 {-# LINE 254 "./src-ag/Transform.ag" #-}+                                 {-# LINE 254 "src-ag/Transform.ag" #-}                                  map (\(x,y)->(name_, x, y)) _expanded                                  {-# LINE 1881 "dist/build/Transform.hs"#-}    {-# INLINE rule146 #-}-   {-# LINE 600 "./src-ag/Transform.ag" #-}+   {-# LINE 600 "src-ag/Transform.ag" #-}    rule146 = \ name_ ->-                                 {-# LINE 600 "./src-ag/Transform.ag" #-}+                                 {-# LINE 600 "src-ag/Transform.ag" #-}                                  Set.singleton name_                                  {-# LINE 1887 "dist/build/Transform.hs"#-}    {-# INLINE rule147 #-}-   {-# LINE 654 "./src-ag/Transform.ag" #-}+   {-# LINE 654 "src-ag/Transform.ag" #-}    rule147 = \ _argType name_ params_ pos_ ->-                                 {-# LINE 654 "./src-ag/Transform.ag" #-}+                                 {-# LINE 654 "src-ag/Transform.ag" #-}                                  case _argType of                                          List tp -> [(Ident "Cons" pos_, [(Ident "hd" pos_, tp)                                                                          ,(Ident "tl" pos_, NT name_ (map getName params_) False)@@ -1927,9 +1927,9 @@                                          Tuple xs -> [(Ident "Tuple" pos_, xs)]                                  {-# LINE 1929 "dist/build/Transform.hs"#-}    {-# INLINE rule148 #-}-   {-# LINE 691 "./src-ag/Transform.ag" #-}+   {-# LINE 691 "src-ag/Transform.ag" #-}    rule148 = \ ((_lhsIallNonterminals) :: Set NontermIdent) type_ ->-                                 {-# LINE 691 "./src-ag/Transform.ag" #-}+                                 {-# LINE 691 "src-ag/Transform.ag" #-}                                  case type_ of                                   Maybe tp       -> Maybe  (  makeType _lhsIallNonterminals tp)                                   Either tp1 tp2 -> Either (  makeType _lhsIallNonterminals tp1) (makeType _lhsIallNonterminals tp2)@@ -1941,23 +1941,23 @@                                   IntSet         -> IntSet                                  {-# LINE 1943 "dist/build/Transform.hs"#-}    {-# INLINE rule149 #-}-   {-# LINE 700 "./src-ag/Transform.ag" #-}+   {-# LINE 700 "src-ag/Transform.ag" #-}    rule149 = \ _argType name_ ->-                                 {-# LINE 700 "./src-ag/Transform.ag" #-}+                                 {-# LINE 700 "src-ag/Transform.ag" #-}                                  [(name_,_argType)]                                  {-# LINE 1949 "dist/build/Transform.hs"#-}    {-# INLINE rule150 #-}-   {-# LINE 954 "./src-ag/Transform.ag" #-}+   {-# LINE 954 "src-ag/Transform.ag" #-}    rule150 = \ name_ params_ ->-                            {-# LINE 954 "./src-ag/Transform.ag" #-}+                            {-# LINE 954 "src-ag/Transform.ag" #-}                             if null params_                             then Map.empty                             else Map.singleton name_ params_                             {-# LINE 1957 "dist/build/Transform.hs"#-}    {-# INLINE rule151 #-}-   {-# LINE 977 "./src-ag/Transform.ag" #-}+   {-# LINE 977 "src-ag/Transform.ag" #-}    rule151 = \ ctx_ name_ ->-                         {-# LINE 977 "./src-ag/Transform.ag" #-}+                         {-# LINE 977 "src-ag/Transform.ag" #-}                          if null ctx_                          then Map.empty                          else Map.singleton name_ ctx_@@ -2126,25 +2126,25 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule178 #-}-   {-# LINE 971 "./src-ag/Transform.ag" #-}+   {-# LINE 971 "src-ag/Transform.ag" #-}    rule178 = \ ((_namesInontSet) :: Set NontermIdent) ctx_ ->-                         {-# LINE 971 "./src-ag/Transform.ag" #-}+                         {-# LINE 971 "src-ag/Transform.ag" #-}                          if null ctx_                          then Map.empty                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]                          {-# LINE 2136 "dist/build/Transform.hs"#-}    {-# INLINE rule179 #-}-   {-# LINE 996 "./src-ag/Transform.ag" #-}+   {-# LINE 996 "src-ag/Transform.ag" #-}    rule179 = \ ((_namesInontSet) :: Set NontermIdent) quants_ ->-                           {-# LINE 996 "./src-ag/Transform.ag" #-}+                           {-# LINE 996 "src-ag/Transform.ag" #-}                            if null quants_                            then Map.empty                            else Map.fromList [(nt, quants_) | nt <- Set.toList _namesInontSet]                            {-# LINE 2144 "dist/build/Transform.hs"#-}    {-# INLINE rule180 #-}-   {-# LINE 1034 "./src-ag/Transform.ag" #-}+   {-# LINE 1034 "src-ag/Transform.ag" #-}    rule180 = \ ((_namesInontSet) :: Set NontermIdent) ->-                       {-# LINE 1034 "./src-ag/Transform.ag" #-}+                       {-# LINE 1034 "src-ag/Transform.ag" #-}                        _namesInontSet                        {-# LINE 2150 "dist/build/Transform.hs"#-}    {-# INLINE rule181 #-}@@ -2351,31 +2351,31 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule218 #-}-   {-# LINE 177 "./src-ag/Transform.ag" #-}+   {-# LINE 177 "src-ag/Transform.ag" #-}    rule218 = \ ((_namesInontSet) :: Set NontermIdent) ->-                      {-# LINE 177 "./src-ag/Transform.ag" #-}+                      {-# LINE 177 "src-ag/Transform.ag" #-}                       _namesInontSet                       {-# LINE 2359 "dist/build/Transform.hs"#-}    {-# INLINE rule219 #-}-   {-# LINE 971 "./src-ag/Transform.ag" #-}+   {-# LINE 971 "src-ag/Transform.ag" #-}    rule219 = \ ((_namesInontSet) :: Set NontermIdent) ctx_ ->-                         {-# LINE 971 "./src-ag/Transform.ag" #-}+                         {-# LINE 971 "src-ag/Transform.ag" #-}                          if null ctx_                          then Map.empty                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]                          {-# LINE 2367 "dist/build/Transform.hs"#-}    {-# INLINE rule220 #-}-   {-# LINE 996 "./src-ag/Transform.ag" #-}+   {-# LINE 996 "src-ag/Transform.ag" #-}    rule220 = \ ((_namesInontSet) :: Set NontermIdent) quants_ ->-                           {-# LINE 996 "./src-ag/Transform.ag" #-}+                           {-# LINE 996 "src-ag/Transform.ag" #-}                            if null quants_                            then Map.empty                            else Map.fromList [(nt, quants_) | nt <- Set.toList _namesInontSet]                            {-# LINE 2375 "dist/build/Transform.hs"#-}    {-# INLINE rule221 #-}-   {-# LINE 1035 "./src-ag/Transform.ag" #-}+   {-# LINE 1035 "src-ag/Transform.ag" #-}    rule221 = \ ((_namesInontSet) :: Set NontermIdent) ->-                       {-# LINE 1035 "./src-ag/Transform.ag" #-}+                       {-# LINE 1035 "src-ag/Transform.ag" #-}                        _namesInontSet                        {-# LINE 2381 "dist/build/Transform.hs"#-}    {-# INLINE rule222 #-}@@ -2576,29 +2576,29 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule263 #-}-   {-# LINE 186 "./src-ag/Transform.ag" #-}+   {-# LINE 186 "src-ag/Transform.ag" #-}    rule263 = \ kind_ mbNt_ ->-                            {-# LINE 186 "./src-ag/Transform.ag" #-}+                            {-# LINE 186 "src-ag/Transform.ag" #-}                             ( kind_                             , mbNt_                             )                             {-# LINE 2586 "dist/build/Transform.hs"#-}    {-# INLINE rule264 #-}-   {-# LINE 189 "./src-ag/Transform.ag" #-}+   {-# LINE 189 "src-ag/Transform.ag" #-}    rule264 = \ lines_ pos_ ->-                            {-# LINE 189 "./src-ag/Transform.ag" #-}+                            {-# LINE 189 "src-ag/Transform.ag" #-}                             [(lines_, pos_)]                             {-# LINE 2592 "dist/build/Transform.hs"#-}    {-# INLINE rule265 #-}-   {-# LINE 190 "./src-ag/Transform.ag" #-}+   {-# LINE 190 "src-ag/Transform.ag" #-}    rule265 = \ _blockInfo _blockValue ->-                            {-# LINE 190 "./src-ag/Transform.ag" #-}+                            {-# LINE 190 "src-ag/Transform.ag" #-}                             Map.singleton _blockInfo     _blockValue                             {-# LINE 2598 "dist/build/Transform.hs"#-}    {-# INLINE rule266 #-}-   {-# LINE 191 "./src-ag/Transform.ag" #-}+   {-# LINE 191 "src-ag/Transform.ag" #-}    rule266 = \ ((_lhsIoptions) :: Options) lines_ pos_ ->-                            {-# LINE 191 "./src-ag/Transform.ag" #-}+                            {-# LINE 191 "src-ag/Transform.ag" #-}                             if checkParseBlock _lhsIoptions                             then let ex  = Expression pos_ tks                                      tks = [tk]@@ -2772,15 +2772,15 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule296 #-}-   {-# LINE 597 "./src-ag/Transform.ag" #-}+   {-# LINE 597 "src-ag/Transform.ag" #-}    rule296 = \ name_ ->-                                   {-# LINE 597 "./src-ag/Transform.ag" #-}+                                   {-# LINE 597 "src-ag/Transform.ag" #-}                                    Set.singleton name_                                    {-# LINE 2780 "dist/build/Transform.hs"#-}    {-# INLINE rule297 #-}-   {-# LINE 714 "./src-ag/Transform.ag" #-}+   {-# LINE 714 "src-ag/Transform.ag" #-}    rule297 = \ ((_lhsIallNonterminals) :: Set NontermIdent) ((_lhsIdefSets) :: Map Identifier (Set NontermIdent,Set Identifier)) ((_setIcollectedNames) :: Set Identifier) ((_setInontSet) :: Set NontermIdent) merge_ name_ ->-                                {-# LINE 714 "./src-ag/Transform.ag" #-}+                                {-# LINE 714 "src-ag/Transform.ag" #-}                                 let allUsedNames = Set.unions [ maybe (Set.singleton n)                                                                       snd                                                                       (Map.lookup n _lhsIdefSets)@@ -2797,15 +2797,15 @@                                 in (res, e1 Seq.>< e2)                                 {-# LINE 2799 "dist/build/Transform.hs"#-}    {-# INLINE rule298 #-}-   {-# LINE 728 "./src-ag/Transform.ag" #-}+   {-# LINE 728 "src-ag/Transform.ag" #-}    rule298 = \ _defSets2 ->-                                {-# LINE 728 "./src-ag/Transform.ag" #-}+                                {-# LINE 728 "src-ag/Transform.ag" #-}                                 _defSets2                                 {-# LINE 2805 "dist/build/Transform.hs"#-}    {-# INLINE rule299 #-}-   {-# LINE 729 "./src-ag/Transform.ag" #-}+   {-# LINE 729 "src-ag/Transform.ag" #-}    rule299 = \ _errs ((_setIerrors) :: Seq Error) ->-                                {-# LINE 729 "./src-ag/Transform.ag" #-}+                                {-# LINE 729 "src-ag/Transform.ag" #-}                                 _errs >< _setIerrors                                 {-# LINE 2811 "dist/build/Transform.hs"#-}    {-# INLINE rule300 #-}@@ -2979,9 +2979,9 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule331 #-}-   {-# LINE 1017 "./src-ag/Transform.ag" #-}+   {-# LINE 1017 "src-ag/Transform.ag" #-}    rule331 = \ ((_setInontSet) :: Set NontermIdent) classes_ ->-                               {-# LINE 1017 "./src-ag/Transform.ag" #-}+                               {-# LINE 1017 "src-ag/Transform.ag" #-}                                Map.fromList [(nt,Set.fromList classes_) | nt <- Set.toList _setInontSet]                                {-# LINE 2987 "dist/build/Transform.hs"#-}    {-# INLINE rule332 #-}@@ -3161,9 +3161,9 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule365 #-}-   {-# LINE 789 "./src-ag/Transform.ag" #-}+   {-# LINE 789 "src-ag/Transform.ag" #-}    rule365 = \ ((_setInontSet) :: Set NontermIdent) ->-                             {-# LINE 789 "./src-ag/Transform.ag" #-}+                             {-# LINE 789 "src-ag/Transform.ag" #-}                              _setInontSet                              {-# LINE 3169 "dist/build/Transform.hs"#-}    {-# INLINE rule366 #-}@@ -3343,9 +3343,9 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule399 #-}-   {-# LINE 796 "./src-ag/Transform.ag" #-}+   {-# LINE 796 "src-ag/Transform.ag" #-}    rule399 = \ ((_setInontSet) :: Set NontermIdent) ->-                             {-# LINE 796 "./src-ag/Transform.ag" #-}+                             {-# LINE 796 "src-ag/Transform.ag" #-}                              \o -> o { nocatas = _setInontSet `Set.union` nocatas o }                              {-# LINE 3351 "dist/build/Transform.hs"#-}    {-# INLINE rule400 #-}@@ -3520,9 +3520,9 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule433 #-}-   {-# LINE 805 "./src-ag/Transform.ag" #-}+   {-# LINE 805 "src-ag/Transform.ag" #-}    rule433 = \ names_ ->-                            {-# LINE 805 "./src-ag/Transform.ag" #-}+                            {-# LINE 805 "src-ag/Transform.ag" #-}                             let mk n o = case getName n of                                            "gencatas"     -> o { folds       = True  }                                            "nogencatas"   -> o { folds       = False }@@ -3533,7 +3533,7 @@                                            "nogensems"    -> o { semfuns     = False }                                            "gentypesigs"  -> o { typeSigs    = True  }                                            "nogentypesigs"-> o { typeSigs    = False }-                                           "nocycle"      -> o { withCycle   = False }+                                           "nocycle"      -> o { withCycle   = False, loag = False }                                            "cycle"        -> o { withCycle   = True  }                                            "nostrictdata" -> o { strictData  = False }                                            "strictdata"   -> o { strictData  = True  }@@ -3542,7 +3542,7 @@                                            "strictercase" -> o { strictCases = True, stricterCases = True }                                            "nostrictwrap" -> o { strictWrap  = False }                                            "strictwrap"   -> o { strictWrap  = True  }-                                           "novisit"      -> o { visit       = False }+                                           "novisit"      -> o { visit       = False, loag = False }                                            "visit"        -> o { visit       = True  }                                            "nocase"       -> o { cases       = False }                                            "case"         -> o { cases       = True  }@@ -3753,9 +3753,9 @@          in __result_ )      in C_Elem_s17 v16    {-# INLINE rule464 #-}-   {-# LINE 1214 "./src-ag/Transform.ag" #-}+   {-# LINE 1214 "src-ag/Transform.ag" #-}    rule464 = \ exports_ imports_ name_ ->-                         {-# LINE 1214 "./src-ag/Transform.ag" #-}+                         {-# LINE 1214 "src-ag/Transform.ag" #-}                          Just (name_, exports_, imports_)                          {-# LINE 3761 "dist/build/Transform.hs"#-}    {-# INLINE rule465 #-}@@ -3858,8 +3858,8 @@ wrap_Elems (T_Elems act) (Inh_Elems _lhsIallAttrDecls _lhsIallAttrs _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsIdefSets _lhsIdefinedSets _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Elems_vIn19 _lhsIallAttrDecls _lhsIallAttrs _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsIdefSets _lhsIdefinedSets _lhsIoptions-        (T_Elems_vOut19 _lhsOattrDecls _lhsOattrOrderCollect _lhsOattrs _lhsOblocks _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedMacros _lhsOcollectedMerges _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOcollectedUniques _lhsOconstructorTypeMap _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOquantCollect _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers) <- return (inv_Elems_s20 sem arg)+        let arg19 = T_Elems_vIn19 _lhsIallAttrDecls _lhsIallAttrs _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIattrs _lhsIdefSets _lhsIdefinedSets _lhsIoptions+        (T_Elems_vOut19 _lhsOattrDecls _lhsOattrOrderCollect _lhsOattrs _lhsOblocks _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedMacros _lhsOcollectedMerges _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOcollectedUniques _lhsOconstructorTypeMap _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOquantCollect _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers) <- return (inv_Elems_s20 sem arg19)         return (Syn_Elems _lhsOattrDecls _lhsOattrOrderCollect _lhsOattrs _lhsOblocks _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedConParams _lhsOcollectedConstraints _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedMacros _lhsOcollectedMerges _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOcollectedUniques _lhsOconstructorTypeMap _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOquantCollect _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers)    ) @@ -4303,8 +4303,8 @@ wrap_Field (T_Field act) (Inh_Field _lhsIallNonterminals) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Field_vIn22 _lhsIallNonterminals-        (T_Field_vOut22 _lhsOcollectedConstraints _lhsOcollectedFields) <- return (inv_Field_s23 sem arg)+        let arg22 = T_Field_vIn22 _lhsIallNonterminals+        (T_Field_vOut22 _lhsOcollectedConstraints _lhsOcollectedFields) <- return (inv_Field_s23 sem arg22)         return (Syn_Field _lhsOcollectedConstraints _lhsOcollectedFields)    ) @@ -4340,9 +4340,9 @@          in __result_ )      in C_Field_s23 v22    {-# INLINE rule577 #-}-   {-# LINE 579 "./src-ag/Transform.ag" #-}+   {-# LINE 579 "src-ag/Transform.ag" #-}    rule577 = \ ((_lhsIallNonterminals) :: Set NontermIdent) name_ tp_ ->-                          {-# LINE 579 "./src-ag/Transform.ag" #-}+                          {-# LINE 579 "src-ag/Transform.ag" #-}                           [(name_, makeType _lhsIallNonterminals tp_)]                           {-# LINE 4348 "dist/build/Transform.hs"#-}    {-# INLINE rule578 #-}@@ -4363,9 +4363,9 @@          in __result_ )      in C_Field_s23 v22    {-# INLINE rule579 #-}-   {-# LINE 588 "./src-ag/Transform.ag" #-}+   {-# LINE 588 "src-ag/Transform.ag" #-}    rule579 = \ tps_ ->-                               {-# LINE 588 "./src-ag/Transform.ag" #-}+                               {-# LINE 588 "src-ag/Transform.ag" #-}                                tps_                                {-# LINE 4371 "dist/build/Transform.hs"#-}    {-# INLINE rule580 #-}@@ -4381,8 +4381,8 @@ wrap_Fields (T_Fields act) (Inh_Fields _lhsIallNonterminals) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Fields_vIn25 _lhsIallNonterminals-        (T_Fields_vOut25 _lhsOcollectedConstraints _lhsOcollectedFields) <- return (inv_Fields_s26 sem arg)+        let arg25 = T_Fields_vIn25 _lhsIallNonterminals+        (T_Fields_vOut25 _lhsOcollectedConstraints _lhsOcollectedFields) <- return (inv_Fields_s26 sem arg25)         return (Syn_Fields _lhsOcollectedConstraints _lhsOcollectedFields)    ) @@ -4464,8 +4464,8 @@ wrap_NontSet (T_NontSet act) (Inh_NontSet _lhsIallFields _lhsIallNonterminals _lhsIdefinedSets) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_NontSet_vIn28 _lhsIallFields _lhsIallNonterminals _lhsIdefinedSets-        (T_NontSet_vOut28 _lhsOcollectedNames _lhsOerrors _lhsOnontSet) <- return (inv_NontSet_s29 sem arg)+        let arg28 = T_NontSet_vIn28 _lhsIallFields _lhsIallNonterminals _lhsIdefinedSets+        (T_NontSet_vOut28 _lhsOcollectedNames _lhsOerrors _lhsOnontSet) <- return (inv_NontSet_s29 sem arg28)         return (Syn_NontSet _lhsOcollectedNames _lhsOerrors _lhsOnontSet)    ) @@ -4508,15 +4508,15 @@          in __result_ )      in C_NontSet_s29 v28    {-# INLINE rule587 #-}-   {-# LINE 603 "./src-ag/Transform.ag" #-}+   {-# LINE 603 "src-ag/Transform.ag" #-}    rule587 = \ name_ ->-                                    {-# LINE 603 "./src-ag/Transform.ag" #-}+                                    {-# LINE 603 "src-ag/Transform.ag" #-}                                     Set.singleton name_                                     {-# LINE 4516 "dist/build/Transform.hs"#-}    {-# INLINE rule588 #-}-   {-# LINE 733 "./src-ag/Transform.ag" #-}+   {-# LINE 733 "src-ag/Transform.ag" #-}    rule588 = \ ((_lhsIdefinedSets) :: DefinedSets) name_ ->-                                        {-# LINE 733 "./src-ag/Transform.ag" #-}+                                        {-# LINE 733 "src-ag/Transform.ag" #-}                                         case Map.lookup name_ _lhsIdefinedSets of                                                      Nothing  -> (Set.empty, Seq.singleton (UndefNont name_))                                                      Just set -> (set, Seq.empty)@@ -4544,9 +4544,9 @@          in __result_ )      in C_NontSet_s29 v28    {-# INLINE rule591 #-}-   {-# LINE 732 "./src-ag/Transform.ag" #-}+   {-# LINE 732 "src-ag/Transform.ag" #-}    rule591 = \ ((_lhsIallNonterminals) :: Set NontermIdent) ->-                               {-# LINE 732 "./src-ag/Transform.ag" #-}+                               {-# LINE 732 "src-ag/Transform.ag" #-}                                _lhsIallNonterminals                                {-# LINE 4552 "dist/build/Transform.hs"#-}    {-# INLINE rule592 #-}@@ -4582,9 +4582,9 @@          in __result_ )      in C_NontSet_s29 v28    {-# INLINE rule594 #-}-   {-# LINE 736 "./src-ag/Transform.ag" #-}+   {-# LINE 736 "src-ag/Transform.ag" #-}    rule594 = \ ((_set1InontSet) :: Set NontermIdent) ((_set2InontSet) :: Set NontermIdent) ->-                               {-# LINE 736 "./src-ag/Transform.ag" #-}+                               {-# LINE 736 "src-ag/Transform.ag" #-}                                Set.union         _set1InontSet _set2InontSet                                {-# LINE 4590 "dist/build/Transform.hs"#-}    {-# INLINE rule595 #-}@@ -4638,9 +4638,9 @@          in __result_ )      in C_NontSet_s29 v28    {-# INLINE rule603 #-}-   {-# LINE 737 "./src-ag/Transform.ag" #-}+   {-# LINE 737 "src-ag/Transform.ag" #-}    rule603 = \ ((_set1InontSet) :: Set NontermIdent) ((_set2InontSet) :: Set NontermIdent) ->-                               {-# LINE 737 "./src-ag/Transform.ag" #-}+                               {-# LINE 737 "src-ag/Transform.ag" #-}                                Set.intersection  _set1InontSet _set2InontSet                                {-# LINE 4646 "dist/build/Transform.hs"#-}    {-# INLINE rule604 #-}@@ -4694,9 +4694,9 @@          in __result_ )      in C_NontSet_s29 v28    {-# INLINE rule612 #-}-   {-# LINE 738 "./src-ag/Transform.ag" #-}+   {-# LINE 738 "src-ag/Transform.ag" #-}    rule612 = \ ((_set1InontSet) :: Set NontermIdent) ((_set2InontSet) :: Set NontermIdent) ->-                               {-# LINE 738 "./src-ag/Transform.ag" #-}+                               {-# LINE 738 "src-ag/Transform.ag" #-}                                Set.difference    _set1InontSet _set2InontSet                                {-# LINE 4702 "dist/build/Transform.hs"#-}    {-# INLINE rule613 #-}@@ -4740,16 +4740,16 @@          in __result_ )      in C_NontSet_s29 v28    {-# INLINE rule621 #-}-   {-# LINE 739 "./src-ag/Transform.ag" #-}+   {-# LINE 739 "src-ag/Transform.ag" #-}    rule621 = \ ((_lhsIallFields) :: DataTypes) from_ to_ ->-                               {-# LINE 739 "./src-ag/Transform.ag" #-}+                               {-# LINE 739 "src-ag/Transform.ag" #-}                                let table = flattenDatas _lhsIallFields                                in path table from_ to_                                {-# LINE 4749 "dist/build/Transform.hs"#-}    {-# INLINE rule622 #-}-   {-# LINE 741 "./src-ag/Transform.ag" #-}+   {-# LINE 741 "src-ag/Transform.ag" #-}    rule622 = \ ((_lhsIallNonterminals) :: Set NontermIdent) from_ to_ ->-                              {-# LINE 741 "./src-ag/Transform.ag" #-}+                              {-# LINE 741 "src-ag/Transform.ag" #-}                               let check name | Set.member name _lhsIallNonterminals                                                          = Seq.empty                                              | otherwise = Seq.singleton (UndefNont name)@@ -4768,8 +4768,8 @@ wrap_Pattern (T_Pattern act) (Inh_Pattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Pattern_vIn31 -        (T_Pattern_vOut31 _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder _lhsOstpos) <- return (inv_Pattern_s32 sem arg)+        let arg31 = T_Pattern_vIn31 +        (T_Pattern_vOut31 _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder _lhsOstpos) <- return (inv_Pattern_s32 sem arg31)         return (Syn_Pattern _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder _lhsOstpos)    ) @@ -4817,15 +4817,15 @@          in __result_ )      in C_Pattern_s32 v31    {-# INLINE rule624 #-}-   {-# LINE 1190 "./src-ag/Transform.ag" #-}+   {-# LINE 1190 "src-ag/Transform.ag" #-}    rule624 = \ ((_patsIpatunder) :: [AttrName]->Patterns) name_ ->-                               {-# LINE 1190 "./src-ag/Transform.ag" #-}+                               {-# LINE 1190 "src-ag/Transform.ag" #-}                                \us -> Constr name_ (_patsIpatunder us)                                {-# LINE 4825 "dist/build/Transform.hs"#-}    {-# INLINE rule625 #-}-   {-# LINE 1201 "./src-ag/Transform.ag" #-}+   {-# LINE 1201 "src-ag/Transform.ag" #-}    rule625 = \ name_ ->-                             {-# LINE 1201 "./src-ag/Transform.ag" #-}+                             {-# LINE 1201 "src-ag/Transform.ag" #-}                              getPos name_                              {-# LINE 4831 "dist/build/Transform.hs"#-}    {-# INLINE rule626 #-}@@ -4864,15 +4864,15 @@          in __result_ )      in C_Pattern_s32 v31    {-# INLINE rule630 #-}-   {-# LINE 1191 "./src-ag/Transform.ag" #-}+   {-# LINE 1191 "src-ag/Transform.ag" #-}    rule630 = \ ((_patsIpatunder) :: [AttrName]->Patterns) pos_ ->-                                {-# LINE 1191 "./src-ag/Transform.ag" #-}+                                {-# LINE 1191 "src-ag/Transform.ag" #-}                                 \us -> Product pos_ (_patsIpatunder us)                                 {-# LINE 4872 "dist/build/Transform.hs"#-}    {-# INLINE rule631 #-}-   {-# LINE 1202 "./src-ag/Transform.ag" #-}+   {-# LINE 1202 "src-ag/Transform.ag" #-}    rule631 = \ pos_ ->-                             {-# LINE 1202 "./src-ag/Transform.ag" #-}+                             {-# LINE 1202 "src-ag/Transform.ag" #-}                              pos_                              {-# LINE 4878 "dist/build/Transform.hs"#-}    {-# INLINE rule632 #-}@@ -4911,27 +4911,27 @@          in __result_ )      in C_Pattern_s32 v31    {-# INLINE rule636 #-}-   {-# LINE 1186 "./src-ag/Transform.ag" #-}+   {-# LINE 1186 "src-ag/Transform.ag" #-}    rule636 = \ ((_patIdefinedAttrs) :: [AttrName]) attr_ field_ ->-                               {-# LINE 1186 "./src-ag/Transform.ag" #-}+                               {-# LINE 1186 "src-ag/Transform.ag" #-}                                (field_, attr_) : _patIdefinedAttrs                                {-# LINE 4919 "dist/build/Transform.hs"#-}    {-# INLINE rule637 #-}-   {-# LINE 1187 "./src-ag/Transform.ag" #-}+   {-# LINE 1187 "src-ag/Transform.ag" #-}    rule637 = \ _copy attr_ field_ ->-                               {-# LINE 1187 "./src-ag/Transform.ag" #-}+                               {-# LINE 1187 "src-ag/Transform.ag" #-}                                \us -> if ((field_,attr_) `elem` us) then Underscore noPos else _copy                                {-# LINE 4925 "dist/build/Transform.hs"#-}    {-# INLINE rule638 #-}-   {-# LINE 1188 "./src-ag/Transform.ag" #-}+   {-# LINE 1188 "src-ag/Transform.ag" #-}    rule638 = \ ((_patIdefinedInsts) :: [Identifier]) attr_ field_ ->-                               {-# LINE 1188 "./src-ag/Transform.ag" #-}+                               {-# LINE 1188 "src-ag/Transform.ag" #-}                                (if field_ == _INST then [attr_] else []) ++ _patIdefinedInsts                                {-# LINE 4931 "dist/build/Transform.hs"#-}    {-# INLINE rule639 #-}-   {-# LINE 1203 "./src-ag/Transform.ag" #-}+   {-# LINE 1203 "src-ag/Transform.ag" #-}    rule639 = \ field_ ->-                             {-# LINE 1203 "./src-ag/Transform.ag" #-}+                             {-# LINE 1203 "src-ag/Transform.ag" #-}                              getPos field_                              {-# LINE 4937 "dist/build/Transform.hs"#-}    {-# INLINE rule640 #-}@@ -4964,9 +4964,9 @@          in __result_ )      in C_Pattern_s32 v31    {-# INLINE rule642 #-}-   {-# LINE 1192 "./src-ag/Transform.ag" #-}+   {-# LINE 1192 "src-ag/Transform.ag" #-}    rule642 = \ ((_patIpatunder) :: [AttrName]->Pattern) ->-                                 {-# LINE 1192 "./src-ag/Transform.ag" #-}+                                 {-# LINE 1192 "src-ag/Transform.ag" #-}                                  \us -> Irrefutable (_patIpatunder us)                                  {-# LINE 4972 "dist/build/Transform.hs"#-}    {-# INLINE rule643 #-}@@ -5006,15 +5006,15 @@          in __result_ )      in C_Pattern_s32 v31    {-# INLINE rule648 #-}-   {-# LINE 1189 "./src-ag/Transform.ag" #-}+   {-# LINE 1189 "src-ag/Transform.ag" #-}    rule648 = \ _copy ->-                                {-# LINE 1189 "./src-ag/Transform.ag" #-}+                                {-# LINE 1189 "src-ag/Transform.ag" #-}                                 \_ -> _copy                                 {-# LINE 5014 "dist/build/Transform.hs"#-}    {-# INLINE rule649 #-}-   {-# LINE 1204 "./src-ag/Transform.ag" #-}+   {-# LINE 1204 "src-ag/Transform.ag" #-}    rule649 = \ pos_ ->-                             {-# LINE 1204 "./src-ag/Transform.ag" #-}+                             {-# LINE 1204 "src-ag/Transform.ag" #-}                              pos_                              {-# LINE 5020 "dist/build/Transform.hs"#-}    {-# INLINE rule650 #-}@@ -5039,8 +5039,8 @@ wrap_Patterns (T_Patterns act) (Inh_Patterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Patterns_vIn34 -        (T_Patterns_vOut34 _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder) <- return (inv_Patterns_s35 sem arg)+        let arg34 = T_Patterns_vIn34 +        (T_Patterns_vOut34 _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder) <- return (inv_Patterns_s35 sem arg34)         return (Syn_Patterns _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder)    ) @@ -5084,9 +5084,9 @@          in __result_ )      in C_Patterns_s35 v34    {-# INLINE rule654 #-}-   {-# LINE 1196 "./src-ag/Transform.ag" #-}+   {-# LINE 1196 "src-ag/Transform.ag" #-}    rule654 = \ ((_hdIpatunder) :: [AttrName]->Pattern) ((_tlIpatunder) :: [AttrName]->Patterns) ->-                          {-# LINE 1196 "./src-ag/Transform.ag" #-}+                          {-# LINE 1196 "src-ag/Transform.ag" #-}                           \us -> (_hdIpatunder us) : (_tlIpatunder us)                           {-# LINE 5092 "dist/build/Transform.hs"#-}    {-# INLINE rule655 #-}@@ -5121,9 +5121,9 @@          in __result_ )      in C_Patterns_s35 v34    {-# INLINE rule659 #-}-   {-# LINE 1195 "./src-ag/Transform.ag" #-}+   {-# LINE 1195 "src-ag/Transform.ag" #-}    rule659 = \  (_ :: ()) ->-                         {-# LINE 1195 "./src-ag/Transform.ag" #-}+                         {-# LINE 1195 "src-ag/Transform.ag" #-}                          \_ ->  []                          {-# LINE 5129 "dist/build/Transform.hs"#-}    {-# INLINE rule660 #-}@@ -5148,8 +5148,8 @@ wrap_SemAlt (T_SemAlt act) (Inh_SemAlt _lhsIallAttrDecls _lhsIallAttrs _lhsIallFields _lhsInts _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_SemAlt_vIn37 _lhsIallAttrDecls _lhsIallAttrs _lhsIallFields _lhsInts _lhsIoptions-        (T_SemAlt_vOut37 _lhsOattrOrderCollect _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedInsts _lhsOcollectedMerges _lhsOcollectedRules _lhsOcollectedSigs _lhsOcollectedUniques _lhsOerrors _lhsOsemPragmasCollect) <- return (inv_SemAlt_s38 sem arg)+        let arg37 = T_SemAlt_vIn37 _lhsIallAttrDecls _lhsIallAttrs _lhsIallFields _lhsInts _lhsIoptions+        (T_SemAlt_vOut37 _lhsOattrOrderCollect _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedInsts _lhsOcollectedMerges _lhsOcollectedRules _lhsOcollectedSigs _lhsOcollectedUniques _lhsOerrors _lhsOsemPragmasCollect) <- return (inv_SemAlt_s38 sem arg37)         return (Syn_SemAlt _lhsOattrOrderCollect _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedInsts _lhsOcollectedMerges _lhsOcollectedRules _lhsOcollectedSigs _lhsOcollectedUniques _lhsOerrors _lhsOsemPragmasCollect)    ) @@ -5208,39 +5208,39 @@          in __result_ )      in C_SemAlt_s38 v37    {-# INLINE rule664 #-}-   {-# LINE 888 "./src-ag/Transform.ag" #-}+   {-# LINE 888 "src-ag/Transform.ag" #-}    rule664 = \ ((_rulesIpragmaNamesCollect) :: [Identifier]) ->-                                {-# LINE 888 "./src-ag/Transform.ag" #-}+                                {-# LINE 888 "src-ag/Transform.ag" #-}                                 Set.fromList _rulesIpragmaNamesCollect                                 {-# LINE 5216 "dist/build/Transform.hs"#-}    {-# INLINE rule665 #-}-   {-# LINE 889 "./src-ag/Transform.ag" #-}+   {-# LINE 889 "src-ag/Transform.ag" #-}    rule665 = \ _coninfo _pragmaNames ->-                                {-# LINE 889 "./src-ag/Transform.ag" #-}+                                {-# LINE 889 "src-ag/Transform.ag" #-}                                 foldr pragmaMapUnion Map.empty [ pragmaMapSingle nt con _pragmaNames                                                                | (nt, conset, _) <- _coninfo                                                                , con <- Set.toList conset                                                                ]                                 {-# LINE 5225 "dist/build/Transform.hs"#-}    {-# INLINE rule666 #-}-   {-# LINE 918 "./src-ag/Transform.ag" #-}+   {-# LINE 918 "src-ag/Transform.ag" #-}    rule666 = \ _coninfo ((_rulesIorderDepsCollect) :: Set Dependency) ->-            {-# LINE 918 "./src-ag/Transform.ag" #-}+            {-# LINE 918 "src-ag/Transform.ag" #-}             [ orderMapSingle nt con _rulesIorderDepsCollect             | (nt, conset, _) <- _coninfo             , con <- Set.toList conset             ]             {-# LINE 5234 "dist/build/Transform.hs"#-}    {-# INLINE rule667 #-}-   {-# LINE 923 "./src-ag/Transform.ag" #-}+   {-# LINE 923 "src-ag/Transform.ag" #-}    rule667 = \ _attrOrders ->-                               {-# LINE 923 "./src-ag/Transform.ag" #-}+                               {-# LINE 923 "src-ag/Transform.ag" #-}                                foldr orderMapUnion Map.empty _attrOrders                                {-# LINE 5240 "dist/build/Transform.hs"#-}    {-# INLINE rule668 #-}-   {-# LINE 1105 "./src-ag/Transform.ag" #-}+   {-# LINE 1105 "src-ag/Transform.ag" #-}    rule668 = \ ((_constructorSetIconstructors) :: (Set ConstructorIdent->Set ConstructorIdent)) ((_lhsIallFields) :: DataTypes) ((_lhsInts) :: Set NontermIdent) ->-                           {-# LINE 1105 "./src-ag/Transform.ag" #-}+                           {-# LINE 1105 "src-ag/Transform.ag" #-}                            [ (nt, conset, conkeys)                            | nt  <- Set.toList _lhsInts                            , let conmap = Map.findWithDefault Map.empty nt _lhsIallFields@@ -5249,9 +5249,9 @@                            ]                            {-# LINE 5251 "dist/build/Transform.hs"#-}    {-# INLINE rule669 #-}-   {-# LINE 1112 "./src-ag/Transform.ag" #-}+   {-# LINE 1112 "src-ag/Transform.ag" #-}    rule669 = \ _coninfo ((_rulesIerrors) :: Seq Error) ->-                          {-# LINE 1112 "./src-ag/Transform.ag" #-}+                          {-# LINE 1112 "src-ag/Transform.ag" #-}                           Seq.fromList                              [ UndefAlt nt con                              | (nt, conset, conkeys) <- _coninfo@@ -5260,9 +5260,9 @@                           Seq.>< _rulesIerrors                           {-# LINE 5262 "dist/build/Transform.hs"#-}    {-# INLINE rule670 #-}-   {-# LINE 1119 "./src-ag/Transform.ag" #-}+   {-# LINE 1119 "src-ag/Transform.ag" #-}    rule670 = \ _coninfo ((_rulesIruleInfos) :: [RuleInfo]) ->-                         {-# LINE 1119 "./src-ag/Transform.ag" #-}+                         {-# LINE 1119 "src-ag/Transform.ag" #-}                          [ (nt,con,r)                          | (nt, conset, _) <- _coninfo                          , con <- Set.toList conset@@ -5270,9 +5270,9 @@                          ]                          {-# LINE 5272 "dist/build/Transform.hs"#-}    {-# INLINE rule671 #-}-   {-# LINE 1125 "./src-ag/Transform.ag" #-}+   {-# LINE 1125 "src-ag/Transform.ag" #-}    rule671 = \ _coninfo ((_rulesIsigInfos) :: [SigInfo]) ->-                         {-# LINE 1125 "./src-ag/Transform.ag" #-}+                         {-# LINE 1125 "src-ag/Transform.ag" #-}                          [ (nt,con,ts)                          | (nt, conset, _) <- _coninfo                          , con <- Set.toList conset@@ -5280,45 +5280,45 @@                          ]                          {-# LINE 5282 "dist/build/Transform.hs"#-}    {-# INLINE rule672 #-}-   {-# LINE 1132 "./src-ag/Transform.ag" #-}+   {-# LINE 1132 "src-ag/Transform.ag" #-}    rule672 = \ _coninfo ((_rulesIdefinedInsts) :: [Identifier]) ->-                         {-# LINE 1132 "./src-ag/Transform.ag" #-}+                         {-# LINE 1132 "src-ag/Transform.ag" #-}                          [ (nt,con,_rulesIdefinedInsts)                          | (nt, conset, _) <- _coninfo                          , con <- Set.toList conset                          ]                          {-# LINE 5291 "dist/build/Transform.hs"#-}    {-# INLINE rule673 #-}-   {-# LINE 1138 "./src-ag/Transform.ag" #-}+   {-# LINE 1138 "src-ag/Transform.ag" #-}    rule673 = \ _coninfo ((_rulesIuniqueInfos) :: [UniqueInfo]) ->-                         {-# LINE 1138 "./src-ag/Transform.ag" #-}+                         {-# LINE 1138 "src-ag/Transform.ag" #-}                          [ (nt,con,_rulesIuniqueInfos)                          | (nt, conset, _) <- _coninfo                          , con <- Set.toList conset                          ]                          {-# LINE 5300 "dist/build/Transform.hs"#-}    {-# INLINE rule674 #-}-   {-# LINE 1144 "./src-ag/Transform.ag" #-}+   {-# LINE 1144 "src-ag/Transform.ag" #-}    rule674 = \ _coninfo ((_rulesIaugmentInfos) :: [AugmentInfo]) ->-                         {-# LINE 1144 "./src-ag/Transform.ag" #-}+                         {-# LINE 1144 "src-ag/Transform.ag" #-}                          [ (nt, con, _rulesIaugmentInfos)                          | (nt, conset, _) <- _coninfo                          , con <- Set.toList conset                          ]                          {-# LINE 5309 "dist/build/Transform.hs"#-}    {-# INLINE rule675 #-}-   {-# LINE 1150 "./src-ag/Transform.ag" #-}+   {-# LINE 1150 "src-ag/Transform.ag" #-}    rule675 = \ _coninfo ((_rulesIaroundInfos) :: [AroundInfo]) ->-                         {-# LINE 1150 "./src-ag/Transform.ag" #-}+                         {-# LINE 1150 "src-ag/Transform.ag" #-}                          [ (nt, con, _rulesIaroundInfos)                          | (nt, conset, _) <- _coninfo                          , con <- Set.toList conset                          ]                          {-# LINE 5318 "dist/build/Transform.hs"#-}    {-# INLINE rule676 #-}-   {-# LINE 1156 "./src-ag/Transform.ag" #-}+   {-# LINE 1156 "src-ag/Transform.ag" #-}    rule676 = \ _coninfo ((_rulesImergeInfos) :: [MergeInfo]) ->-                         {-# LINE 1156 "./src-ag/Transform.ag" #-}+                         {-# LINE 1156 "src-ag/Transform.ag" #-}                          [ (nt, con, _rulesImergeInfos)                          | (nt, conset, _) <- _coninfo                          , con <- Set.toList conset@@ -5337,8 +5337,8 @@ wrap_SemAlts (T_SemAlts act) (Inh_SemAlts _lhsIallAttrDecls _lhsIallAttrs _lhsIallFields _lhsInts _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_SemAlts_vIn40 _lhsIallAttrDecls _lhsIallAttrs _lhsIallFields _lhsInts _lhsIoptions-        (T_SemAlts_vOut40 _lhsOattrOrderCollect _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedInsts _lhsOcollectedMerges _lhsOcollectedRules _lhsOcollectedSigs _lhsOcollectedUniques _lhsOerrors _lhsOsemPragmasCollect) <- return (inv_SemAlts_s41 sem arg)+        let arg40 = T_SemAlts_vIn40 _lhsIallAttrDecls _lhsIallAttrs _lhsIallFields _lhsInts _lhsIoptions+        (T_SemAlts_vOut40 _lhsOattrOrderCollect _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedInsts _lhsOcollectedMerges _lhsOcollectedRules _lhsOcollectedSigs _lhsOcollectedUniques _lhsOerrors _lhsOsemPragmasCollect) <- return (inv_SemAlts_s41 sem arg40)         return (Syn_SemAlts _lhsOattrOrderCollect _lhsOcollectedArounds _lhsOcollectedAugments _lhsOcollectedInsts _lhsOcollectedMerges _lhsOcollectedRules _lhsOcollectedSigs _lhsOcollectedUniques _lhsOerrors _lhsOsemPragmasCollect)    ) @@ -5532,8 +5532,8 @@ wrap_SemDef (T_SemDef act) (Inh_SemDef _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_SemDef_vIn43 _lhsIoptions-        (T_SemDef_vOut43 _lhsOaroundInfos _lhsOaugmentInfos _lhsOdefinedInsts _lhsOerrors _lhsOmergeInfos _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos _lhsOuniqueInfos) <- return (inv_SemDef_s44 sem arg)+        let arg43 = T_SemDef_vIn43 _lhsIoptions+        (T_SemDef_vOut43 _lhsOaroundInfos _lhsOaugmentInfos _lhsOdefinedInsts _lhsOerrors _lhsOmergeInfos _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos _lhsOuniqueInfos) <- return (inv_SemDef_s44 sem arg43)         return (Syn_SemDef _lhsOaroundInfos _lhsOaugmentInfos _lhsOdefinedInsts _lhsOerrors _lhsOmergeInfos _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos _lhsOuniqueInfos)    ) @@ -5593,17 +5593,17 @@          in __result_ )      in C_SemDef_s44 v43    {-# INLINE rule708 #-}-   {-# LINE 556 "./src-ag/Transform.ag" #-}+   {-# LINE 556 "src-ag/Transform.ag" #-}    rule708 = \ ((_lhsIoptions) :: Options) rhs_ ->-                 {-# LINE 556 "./src-ag/Transform.ag" #-}+                 {-# LINE 556 "src-ag/Transform.ag" #-}                  if checkParseRhs _lhsIoptions                  then Seq.fromList $ checkRhs rhs_                  else Seq.empty                  {-# LINE 5603 "dist/build/Transform.hs"#-}    {-# INLINE rule709 #-}-   {-# LINE 1162 "./src-ag/Transform.ag" #-}+   {-# LINE 1162 "src-ag/Transform.ag" #-}    rule709 = \ ((_patternIdefinedAttrs) :: [AttrName]) ((_patternIpatunder) :: [AttrName]->Pattern) ((_patternIstpos) :: Pos) eager_ mbName_ owrt_ pure_ rhs_ ->-                           {-# LINE 1162 "./src-ag/Transform.ag" #-}+                           {-# LINE 1162 "src-ag/Transform.ag" #-}                            [ (mbName_, _patternIpatunder, rhs_, _patternIdefinedAttrs, owrt_, show _patternIstpos, pure_, eager_) ]                            {-# LINE 5609 "dist/build/Transform.hs"#-}    {-# INLINE rule710 #-}@@ -5661,9 +5661,9 @@          in __result_ )      in C_SemDef_s44 v43    {-# INLINE rule718 #-}-   {-# LINE 563 "./src-ag/Transform.ag" #-}+   {-# LINE 563 "src-ag/Transform.ag" #-}    rule718 = \ ((_lhsIoptions) :: Options) pos_ tp_ ->-                 {-# LINE 563 "./src-ag/Transform.ag" #-}+                 {-# LINE 563 "src-ag/Transform.ag" #-}                  if checkParseTy _lhsIoptions                  then case tp_ of                         Haskell s -> let ex  = Expression pos_ tks@@ -5674,9 +5674,9 @@                  else Seq.empty                  {-# LINE 5676 "dist/build/Transform.hs"#-}    {-# INLINE rule719 #-}-   {-# LINE 1165 "./src-ag/Transform.ag" #-}+   {-# LINE 1165 "src-ag/Transform.ag" #-}    rule719 = \ ident_ tp_ ->-                              {-# LINE 1165 "./src-ag/Transform.ag" #-}+                              {-# LINE 1165 "src-ag/Transform.ag" #-}                               [ (ident_, tp_) ]                               {-# LINE 5682 "dist/build/Transform.hs"#-}    {-# INLINE rule720 #-}@@ -5734,9 +5734,9 @@          in __result_ )      in C_SemDef_s44 v43    {-# INLINE rule728 #-}-   {-# LINE 1168 "./src-ag/Transform.ag" #-}+   {-# LINE 1168 "src-ag/Transform.ag" #-}    rule728 = \ ident_ ref_ ->-                                   {-# LINE 1168 "./src-ag/Transform.ag" #-}+                                   {-# LINE 1168 "src-ag/Transform.ag" #-}                                    [ (ident_, ref_) ]                                    {-# LINE 5742 "dist/build/Transform.hs"#-}    {-# INLINE rule729 #-}@@ -5797,9 +5797,9 @@          in __result_ )      in C_SemDef_s44 v43    {-# INLINE rule738 #-}-   {-# LINE 1171 "./src-ag/Transform.ag" #-}+   {-# LINE 1171 "src-ag/Transform.ag" #-}    rule738 = \ ident_ rhs_ ->-                                     {-# LINE 1171 "./src-ag/Transform.ag" #-}+                                     {-# LINE 1171 "src-ag/Transform.ag" #-}                                      [ (ident_, rhs_) ]                                      {-# LINE 5805 "dist/build/Transform.hs"#-}    {-# INLINE rule739 #-}@@ -5860,9 +5860,9 @@          in __result_ )      in C_SemDef_s44 v43    {-# INLINE rule748 #-}-   {-# LINE 1174 "./src-ag/Transform.ag" #-}+   {-# LINE 1174 "src-ag/Transform.ag" #-}    rule748 = \ ident_ rhs_ ->-                                    {-# LINE 1174 "./src-ag/Transform.ag" #-}+                                    {-# LINE 1174 "src-ag/Transform.ag" #-}                                     [ (ident_, rhs_) ]                                     {-# LINE 5868 "dist/build/Transform.hs"#-}    {-# INLINE rule749 #-}@@ -5923,17 +5923,17 @@          in __result_ )      in C_SemDef_s44 v43    {-# INLINE rule758 #-}-   {-# LINE 556 "./src-ag/Transform.ag" #-}+   {-# LINE 556 "src-ag/Transform.ag" #-}    rule758 = \ ((_lhsIoptions) :: Options) rhs_ ->-                 {-# LINE 556 "./src-ag/Transform.ag" #-}+                 {-# LINE 556 "src-ag/Transform.ag" #-}                  if checkParseRhs _lhsIoptions                  then Seq.fromList $ checkRhs rhs_                  else Seq.empty                  {-# LINE 5933 "dist/build/Transform.hs"#-}    {-# INLINE rule759 #-}-   {-# LINE 1177 "./src-ag/Transform.ag" #-}+   {-# LINE 1177 "src-ag/Transform.ag" #-}    rule759 = \ nt_ rhs_ sources_ target_ ->-                                   {-# LINE 1177 "./src-ag/Transform.ag" #-}+                                   {-# LINE 1177 "src-ag/Transform.ag" #-}                                    [ (target_, nt_, sources_, rhs_) ]                                    {-# LINE 5939 "dist/build/Transform.hs"#-}    {-# INLINE rule760 #-}@@ -5991,9 +5991,9 @@          in __result_ )      in C_SemDef_s44 v43    {-# INLINE rule768 #-}-   {-# LINE 898 "./src-ag/Transform.ag" #-}+   {-# LINE 898 "src-ag/Transform.ag" #-}    rule768 = \ names_ ->-                                 {-# LINE 898 "./src-ag/Transform.ag" #-}+                                 {-# LINE 898 "src-ag/Transform.ag" #-}                                  names_                                  {-# LINE 5999 "dist/build/Transform.hs"#-}    {-# INLINE rule769 #-}@@ -6055,15 +6055,15 @@          in __result_ )      in C_SemDef_s44 v43    {-# INLINE rule778 #-}-   {-# LINE 929 "./src-ag/Transform.ag" #-}+   {-# LINE 929 "src-ag/Transform.ag" #-}    rule778 = \ after_ before_ ->-                               {-# LINE 929 "./src-ag/Transform.ag" #-}+                               {-# LINE 929 "src-ag/Transform.ag" #-}                                [ Dependency b a | b <- before_, a <- after_ ]                                {-# LINE 6063 "dist/build/Transform.hs"#-}    {-# INLINE rule779 #-}-   {-# LINE 930 "./src-ag/Transform.ag" #-}+   {-# LINE 930 "src-ag/Transform.ag" #-}    rule779 = \ _dependency ->-                               {-# LINE 930 "./src-ag/Transform.ag" #-}+                               {-# LINE 930 "src-ag/Transform.ag" #-}                                Set.fromList _dependency                                {-# LINE 6069 "dist/build/Transform.hs"#-}    {-# INLINE rule780 #-}@@ -6103,8 +6103,8 @@ wrap_SemDefs (T_SemDefs act) (Inh_SemDefs _lhsIoptions) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_SemDefs_vIn46 _lhsIoptions-        (T_SemDefs_vOut46 _lhsOaroundInfos _lhsOaugmentInfos _lhsOdefinedInsts _lhsOerrors _lhsOmergeInfos _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos _lhsOuniqueInfos) <- return (inv_SemDefs_s47 sem arg)+        let arg46 = T_SemDefs_vIn46 _lhsIoptions+        (T_SemDefs_vOut46 _lhsOaroundInfos _lhsOaugmentInfos _lhsOdefinedInsts _lhsOerrors _lhsOmergeInfos _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos _lhsOuniqueInfos) <- return (inv_SemDefs_s47 sem arg46)         return (Syn_SemDefs _lhsOaroundInfos _lhsOaugmentInfos _lhsOdefinedInsts _lhsOerrors _lhsOmergeInfos _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos _lhsOuniqueInfos)    ) 
src-generated/Visage.hs view
@@ -2,19 +2,19 @@ {-# LANGUAGE ScopedTypeVariables #-}  module Visage where-{-# LINE 2 "./src-ag/Expression.ag" #-}+{-# LINE 2 "src-ag/Expression.ag" #-}  import UU.Scanner.Position(Pos) import HsToken {-# LINE 10 "dist/build/Visage.hs" #-} -{-# LINE 2 "./src-ag/VisagePatterns.ag" #-}+{-# LINE 2 "src-ag/VisagePatterns.ag" #-}  import UU.Scanner.Position(Pos) import CommonTypes {-# LINE 16 "dist/build/Visage.hs" #-} -{-# LINE 2 "./src-ag/VisageSyntax.ag" #-}+{-# LINE 2 "src-ag/VisageSyntax.ag" #-}  import CommonTypes import UU.Pretty@@ -23,7 +23,7 @@ import Expression {-# LINE 25 "dist/build/Visage.hs" #-} -{-# LINE 6 "./src-ag/Visage.ag" #-}+{-# LINE 6 "src-ag/Visage.ag" #-}  import UU.Scanner.Position(Pos(..)) import CommonTypes@@ -38,7 +38,7 @@ {-# LINE 39 "dist/build/Visage.hs" #-} import Control.Monad.Identity (Identity) import qualified Control.Monad.Identity-{-# LINE 19 "./src-ag/Visage.ag" #-}+{-# LINE 19 "src-ag/Visage.ag" #-}  convert :: String -> String convert [] = []@@ -73,8 +73,8 @@ wrap_Expression (T_Expression act) (Inh_Expression ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_Expression_vIn1 -        (T_Expression_vOut1 _lhsOaterm) <- return (inv_Expression_s2 sem arg)+        let arg1 = T_Expression_vIn1 +        (T_Expression_vOut1 _lhsOaterm) <- return (inv_Expression_s2 sem arg1)         return (Syn_Expression _lhsOaterm)    ) @@ -107,9 +107,9 @@          in __result_ )      in C_Expression_s2 v1    {-# INLINE rule0 #-}-   {-# LINE 103 "./src-ag/Visage.ag" #-}+   {-# LINE 103 "src-ag/Visage.ag" #-}    rule0 = \ pos_ tks_ ->-                              {-# LINE 103 "./src-ag/Visage.ag" #-}+                              {-# LINE 103 "src-ag/Visage.ag" #-}                               AAppl "Expression" [AString (sQ (showAGPos pos_)), AString (sQ (unlines . showTokens . tokensToStrings $ tks_))]                               {-# LINE 115 "dist/build/Visage.hs"#-} @@ -122,8 +122,8 @@ wrap_VisageChild (T_VisageChild act) (Inh_VisageChild ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageChild_vIn4 -        (T_VisageChild_vOut4 _lhsOaterm) <- return (inv_VisageChild_s5 sem arg)+        let arg4 = T_VisageChild_vIn4 +        (T_VisageChild_vOut4 _lhsOaterm) <- return (inv_VisageChild_s5 sem arg4)         return (Syn_VisageChild _lhsOaterm)    ) @@ -159,18 +159,18 @@          in __result_ )      in C_VisageChild_s5 v4    {-# INLINE rule1 #-}-   {-# LINE 85 "./src-ag/Visage.ag" #-}+   {-# LINE 85 "src-ag/Visage.ag" #-}    rule1 = \ ((_rulesIaterms) :: [ATerm]) inh_ name_ syn_ tp_ ->-                               {-# LINE 85 "./src-ag/Visage.ag" #-}+                               {-# LINE 85 "src-ag/Visage.ag" #-}                                AAppl "Child" [AString (sQ (getName name_)), AString (sQ (show tp_)),                                               AString (sQ (showMap inh_)),                                               AString (sQ (showMap syn_)),                                               AAppl "Rules" _rulesIaterms]                                {-# LINE 170 "dist/build/Visage.hs"#-}    {-# INLINE rule2 #-}-   {-# LINE 89 "./src-ag/Visage.ag" #-}+   {-# LINE 89 "src-ag/Visage.ag" #-}    rule2 = \  (_ :: ()) ->-                                 {-# LINE 89 "./src-ag/Visage.ag" #-}+                                 {-# LINE 89 "src-ag/Visage.ag" #-}                                  False                                  {-# LINE 176 "dist/build/Visage.hs"#-} @@ -183,8 +183,8 @@ wrap_VisageChildren (T_VisageChildren act) (Inh_VisageChildren ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageChildren_vIn7 -        (T_VisageChildren_vOut7 _lhsOaterms) <- return (inv_VisageChildren_s8 sem arg)+        let arg7 = T_VisageChildren_vIn7 +        (T_VisageChildren_vOut7 _lhsOaterms) <- return (inv_VisageChildren_s8 sem arg7)         return (Syn_VisageChildren _lhsOaterms)    ) @@ -221,9 +221,9 @@          in __result_ )      in C_VisageChildren_s8 v7    {-# INLINE rule3 #-}-   {-# LINE 80 "./src-ag/Visage.ag" #-}+   {-# LINE 80 "src-ag/Visage.ag" #-}    rule3 = \ ((_hdIaterm) :: ATerm) ((_tlIaterms) :: [ATerm]) ->-                               {-# LINE 80 "./src-ag/Visage.ag" #-}+                               {-# LINE 80 "src-ag/Visage.ag" #-}                                _hdIaterm : _tlIaterms                                {-# LINE 229 "dist/build/Visage.hs"#-} {-# NOINLINE sem_VisageChildren_Nil #-}@@ -239,9 +239,9 @@          in __result_ )      in C_VisageChildren_s8 v7    {-# INLINE rule4 #-}-   {-# LINE 81 "./src-ag/Visage.ag" #-}+   {-# LINE 81 "src-ag/Visage.ag" #-}    rule4 = \  (_ :: ()) ->-                               {-# LINE 81 "./src-ag/Visage.ag" #-}+                               {-# LINE 81 "src-ag/Visage.ag" #-}                                []                                {-# LINE 247 "dist/build/Visage.hs"#-} @@ -254,8 +254,8 @@ wrap_VisageGrammar (T_VisageGrammar act) (Inh_VisageGrammar ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageGrammar_vIn10 -        (T_VisageGrammar_vOut10 _lhsOaterm) <- return (inv_VisageGrammar_s11 sem arg)+        let arg10 = T_VisageGrammar_vIn10 +        (T_VisageGrammar_vOut10 _lhsOaterm) <- return (inv_VisageGrammar_s11 sem arg10)         return (Syn_VisageGrammar _lhsOaterm)    ) @@ -290,9 +290,9 @@          in __result_ )      in C_VisageGrammar_s11 v10    {-# INLINE rule5 #-}-   {-# LINE 54 "./src-ag/Visage.ag" #-}+   {-# LINE 54 "src-ag/Visage.ag" #-}    rule5 = \ ((_nontsIaterms) :: [ATerm]) ->-                               {-# LINE 54 "./src-ag/Visage.ag" #-}+                               {-# LINE 54 "src-ag/Visage.ag" #-}                                AAppl "Productions" _nontsIaterms                                {-# LINE 298 "dist/build/Visage.hs"#-} @@ -305,8 +305,8 @@ wrap_VisageNonterminal (T_VisageNonterminal act) (Inh_VisageNonterminal ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageNonterminal_vIn13 -        (T_VisageNonterminal_vOut13 _lhsOaterm) <- return (inv_VisageNonterminal_s14 sem arg)+        let arg13 = T_VisageNonterminal_vIn13 +        (T_VisageNonterminal_vOut13 _lhsOaterm) <- return (inv_VisageNonterminal_s14 sem arg13)         return (Syn_VisageNonterminal _lhsOaterm)    ) @@ -341,9 +341,9 @@          in __result_ )      in C_VisageNonterminal_s14 v13    {-# INLINE rule6 #-}-   {-# LINE 63 "./src-ag/Visage.ag" #-}+   {-# LINE 63 "src-ag/Visage.ag" #-}    rule6 = \ ((_altsIaterms) :: [ATerm]) inh_ nt_ syn_ ->-                                {-# LINE 63 "./src-ag/Visage.ag" #-}+                                {-# LINE 63 "src-ag/Visage.ag" #-}                                 AAppl "Production" [AString (sQ (getName nt_)), AString (sQ(showMap inh_)),                                                    AString (sQ(showMap syn_)), AAppl "Alternatives" _altsIaterms]                                 {-# LINE 350 "dist/build/Visage.hs"#-}@@ -357,8 +357,8 @@ wrap_VisageNonterminals (T_VisageNonterminals act) (Inh_VisageNonterminals ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageNonterminals_vIn16 -        (T_VisageNonterminals_vOut16 _lhsOaterms) <- return (inv_VisageNonterminals_s17 sem arg)+        let arg16 = T_VisageNonterminals_vIn16 +        (T_VisageNonterminals_vOut16 _lhsOaterms) <- return (inv_VisageNonterminals_s17 sem arg16)         return (Syn_VisageNonterminals _lhsOaterms)    ) @@ -395,9 +395,9 @@          in __result_ )      in C_VisageNonterminals_s17 v16    {-# INLINE rule7 #-}-   {-# LINE 58 "./src-ag/Visage.ag" #-}+   {-# LINE 58 "src-ag/Visage.ag" #-}    rule7 = \ ((_hdIaterm) :: ATerm) ((_tlIaterms) :: [ATerm]) ->-                               {-# LINE 58 "./src-ag/Visage.ag" #-}+                               {-# LINE 58 "src-ag/Visage.ag" #-}                                _hdIaterm : _tlIaterms                                {-# LINE 403 "dist/build/Visage.hs"#-} {-# NOINLINE sem_VisageNonterminals_Nil #-}@@ -413,9 +413,9 @@          in __result_ )      in C_VisageNonterminals_s17 v16    {-# INLINE rule8 #-}-   {-# LINE 59 "./src-ag/Visage.ag" #-}+   {-# LINE 59 "src-ag/Visage.ag" #-}    rule8 = \  (_ :: ()) ->-                               {-# LINE 59 "./src-ag/Visage.ag" #-}+                               {-# LINE 59 "src-ag/Visage.ag" #-}                                []                                {-# LINE 421 "dist/build/Visage.hs"#-} @@ -428,8 +428,8 @@ wrap_VisagePattern (T_VisagePattern act) (Inh_VisagePattern ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisagePattern_vIn19 -        (T_VisagePattern_vOut19 _lhsOaterm) <- return (inv_VisagePattern_s20 sem arg)+        let arg19 = T_VisagePattern_vIn19 +        (T_VisagePattern_vOut19 _lhsOaterm) <- return (inv_VisagePattern_s20 sem arg19)         return (Syn_VisagePattern _lhsOaterm)    ) @@ -468,9 +468,9 @@          in __result_ )      in C_VisagePattern_s20 v19    {-# INLINE rule9 #-}-   {-# LINE 112 "./src-ag/Visage.ag" #-}+   {-# LINE 112 "src-ag/Visage.ag" #-}    rule9 = \ ((_patsIaterms) :: [ATerm]) name_ ->-                               {-# LINE 112 "./src-ag/Visage.ag" #-}+                               {-# LINE 112 "src-ag/Visage.ag" #-}                                AAppl "Pattern" [AAppl "Constr" [AString (sQ (showAGPos (getPos name_))),                                                 AString (sQ (getName name_)),                                                 AAppl "Patterns" _patsIaterms]]@@ -490,9 +490,9 @@          in __result_ )      in C_VisagePattern_s20 v19    {-# INLINE rule10 #-}-   {-# LINE 115 "./src-ag/Visage.ag" #-}+   {-# LINE 115 "src-ag/Visage.ag" #-}    rule10 = \ ((_patsIaterms) :: [ATerm]) pos_ ->-                               {-# LINE 115 "./src-ag/Visage.ag" #-}+                               {-# LINE 115 "src-ag/Visage.ag" #-}                                AAppl "Pattern" [AAppl "Product" [AString (sQ (showAGPos pos_)),                                                                  AAppl "Patterns" _patsIaterms]]                                {-# LINE 499 "dist/build/Visage.hs"#-}@@ -509,9 +509,9 @@          in __result_ )      in C_VisagePattern_s20 v19    {-# INLINE rule11 #-}-   {-# LINE 117 "./src-ag/Visage.ag" #-}+   {-# LINE 117 "src-ag/Visage.ag" #-}    rule11 = \ attr_ field_ ->-                               {-# LINE 117 "./src-ag/Visage.ag" #-}+                               {-# LINE 117 "src-ag/Visage.ag" #-}                                AAppl "Pattern" [AAppl "Var" [AString (sQ (showAGPos (getPos field_))),                                                              AString (sQ (getName field_ ++ "." ++ getName attr_))]]                                {-# LINE 518 "dist/build/Visage.hs"#-}@@ -530,9 +530,9 @@          in __result_ )      in C_VisagePattern_s20 v19    {-# INLINE rule12 #-}-   {-# LINE 119 "./src-ag/Visage.ag" #-}+   {-# LINE 119 "src-ag/Visage.ag" #-}    rule12 = \ ((_patIaterm) :: ATerm) attr_ field_ ->-                               {-# LINE 119 "./src-ag/Visage.ag" #-}+                               {-# LINE 119 "src-ag/Visage.ag" #-}                                AAppl "Pattern" [AAppl "Alias" [AString (sQ (showAGPos (getPos field_))),                                                                AString (sQ (getName field_ ++ "." ++ getName attr_)), _patIaterm]]                                {-# LINE 539 "dist/build/Visage.hs"#-}@@ -549,9 +549,9 @@          in __result_ )      in C_VisagePattern_s20 v19    {-# INLINE rule13 #-}-   {-# LINE 121 "./src-ag/Visage.ag" #-}+   {-# LINE 121 "src-ag/Visage.ag" #-}    rule13 = \ pos_ ->-                               {-# LINE 121 "./src-ag/Visage.ag" #-}+                               {-# LINE 121 "src-ag/Visage.ag" #-}                                AAppl "Pattern" [AAppl "Underscore" [AString (sQ (showAGPos pos_))]]                                {-# LINE 557 "dist/build/Visage.hs"#-} @@ -564,8 +564,8 @@ wrap_VisagePatterns (T_VisagePatterns act) (Inh_VisagePatterns ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisagePatterns_vIn22 -        (T_VisagePatterns_vOut22 _lhsOaterms) <- return (inv_VisagePatterns_s23 sem arg)+        let arg22 = T_VisagePatterns_vIn22 +        (T_VisagePatterns_vOut22 _lhsOaterms) <- return (inv_VisagePatterns_s23 sem arg22)         return (Syn_VisagePatterns _lhsOaterms)    ) @@ -602,9 +602,9 @@          in __result_ )      in C_VisagePatterns_s23 v22    {-# INLINE rule14 #-}-   {-# LINE 107 "./src-ag/Visage.ag" #-}+   {-# LINE 107 "src-ag/Visage.ag" #-}    rule14 = \ ((_hdIaterm) :: ATerm) ((_tlIaterms) :: [ATerm]) ->-                               {-# LINE 107 "./src-ag/Visage.ag" #-}+                               {-# LINE 107 "src-ag/Visage.ag" #-}                                _hdIaterm : _tlIaterms                                {-# LINE 610 "dist/build/Visage.hs"#-} {-# NOINLINE sem_VisagePatterns_Nil #-}@@ -620,9 +620,9 @@          in __result_ )      in C_VisagePatterns_s23 v22    {-# INLINE rule15 #-}-   {-# LINE 108 "./src-ag/Visage.ag" #-}+   {-# LINE 108 "src-ag/Visage.ag" #-}    rule15 = \  (_ :: ()) ->-                               {-# LINE 108 "./src-ag/Visage.ag" #-}+                               {-# LINE 108 "src-ag/Visage.ag" #-}                                []                                {-# LINE 628 "dist/build/Visage.hs"#-} @@ -635,8 +635,8 @@ wrap_VisageProduction (T_VisageProduction act) (Inh_VisageProduction ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageProduction_vIn25 -        (T_VisageProduction_vOut25 _lhsOaterm) <- return (inv_VisageProduction_s26 sem arg)+        let arg25 = T_VisageProduction_vIn25 +        (T_VisageProduction_vOut25 _lhsOaterm) <- return (inv_VisageProduction_s26 sem arg25)         return (Syn_VisageProduction _lhsOaterm)    ) @@ -677,23 +677,23 @@          in __result_ )      in C_VisageProduction_s26 v25    {-# INLINE rule16 #-}-   {-# LINE 73 "./src-ag/Visage.ag" #-}+   {-# LINE 73 "src-ag/Visage.ag" #-}    rule16 = \ ((_childrenIaterms) :: [ATerm]) ((_locrulesIaterms) :: [ATerm]) ((_rulesIaterms) :: [ATerm]) con_ ->-                              {-# LINE 73 "./src-ag/Visage.ag" #-}+                              {-# LINE 73 "src-ag/Visage.ag" #-}                               AAppl "Alternative" [AString (sQ (getName con_)), AAppl "Children" _childrenIaterms,                                                     AAppl "Rules" _rulesIaterms,                                                     AAppl "LocRules" _locrulesIaterms]                               {-# LINE 687 "dist/build/Visage.hs"#-}    {-# INLINE rule17 #-}-   {-# LINE 76 "./src-ag/Visage.ag" #-}+   {-# LINE 76 "src-ag/Visage.ag" #-}    rule17 = \  (_ :: ()) ->-                                    {-# LINE 76 "./src-ag/Visage.ag" #-}+                                    {-# LINE 76 "src-ag/Visage.ag" #-}                                     True                                     {-# LINE 693 "dist/build/Visage.hs"#-}    {-# INLINE rule18 #-}-   {-# LINE 77 "./src-ag/Visage.ag" #-}+   {-# LINE 77 "src-ag/Visage.ag" #-}    rule18 = \  (_ :: ()) ->-                                    {-# LINE 77 "./src-ag/Visage.ag" #-}+                                    {-# LINE 77 "src-ag/Visage.ag" #-}                                     False                                     {-# LINE 699 "dist/build/Visage.hs"#-} @@ -706,8 +706,8 @@ wrap_VisageProductions (T_VisageProductions act) (Inh_VisageProductions ) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageProductions_vIn28 -        (T_VisageProductions_vOut28 _lhsOaterms) <- return (inv_VisageProductions_s29 sem arg)+        let arg28 = T_VisageProductions_vIn28 +        (T_VisageProductions_vOut28 _lhsOaterms) <- return (inv_VisageProductions_s29 sem arg28)         return (Syn_VisageProductions _lhsOaterms)    ) @@ -744,9 +744,9 @@          in __result_ )      in C_VisageProductions_s29 v28    {-# INLINE rule19 #-}-   {-# LINE 68 "./src-ag/Visage.ag" #-}+   {-# LINE 68 "src-ag/Visage.ag" #-}    rule19 = \ ((_hdIaterm) :: ATerm) ((_tlIaterms) :: [ATerm]) ->-                               {-# LINE 68 "./src-ag/Visage.ag" #-}+                               {-# LINE 68 "src-ag/Visage.ag" #-}                                _hdIaterm : _tlIaterms                                {-# LINE 752 "dist/build/Visage.hs"#-} {-# NOINLINE sem_VisageProductions_Nil #-}@@ -762,9 +762,9 @@          in __result_ )      in C_VisageProductions_s29 v28    {-# INLINE rule20 #-}-   {-# LINE 69 "./src-ag/Visage.ag" #-}+   {-# LINE 69 "src-ag/Visage.ag" #-}    rule20 = \  (_ :: ()) ->-                               {-# LINE 69 "./src-ag/Visage.ag" #-}+                               {-# LINE 69 "src-ag/Visage.ag" #-}                                []                                {-# LINE 770 "dist/build/Visage.hs"#-} @@ -777,8 +777,8 @@ wrap_VisageRule (T_VisageRule act) (Inh_VisageRule _lhsIisLoc) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageRule_vIn31 _lhsIisLoc-        (T_VisageRule_vOut31 _lhsOaterm) <- return (inv_VisageRule_s32 sem arg)+        let arg31 = T_VisageRule_vIn31 _lhsIisLoc+        (T_VisageRule_vOut31 _lhsOaterm) <- return (inv_VisageRule_s32 sem arg31)         return (Syn_VisageRule _lhsOaterm)    ) @@ -815,9 +815,9 @@          in __result_ )      in C_VisageRule_s32 v31    {-# INLINE rule21 #-}-   {-# LINE 97 "./src-ag/Visage.ag" #-}+   {-# LINE 97 "src-ag/Visage.ag" #-}    rule21 = \ ((_lhsIisLoc) :: Bool) ((_patIaterm) :: ATerm) ((_rhsIaterm) :: ATerm) attr_ owrt_ ->-                               {-# LINE 97 "./src-ag/Visage.ag" #-}+                               {-# LINE 97 "src-ag/Visage.ag" #-}                                AAppl (if _lhsIisLoc then "LocRule" else "Rule")                                      ([AString (sQ (getName attr_)), _patIaterm, _rhsIaterm] ++ if _lhsIisLoc then [AString (sQ (show owrt_))] else [])                                {-# LINE 824 "dist/build/Visage.hs"#-}@@ -831,8 +831,8 @@ wrap_VisageRules (T_VisageRules act) (Inh_VisageRules _lhsIisLoc) =    Control.Monad.Identity.runIdentity (      do sem <- act-        let arg = T_VisageRules_vIn34 _lhsIisLoc-        (T_VisageRules_vOut34 _lhsOaterms) <- return (inv_VisageRules_s35 sem arg)+        let arg34 = T_VisageRules_vIn34 _lhsIisLoc+        (T_VisageRules_vOut34 _lhsOaterms) <- return (inv_VisageRules_s35 sem arg34)         return (Syn_VisageRules _lhsOaterms)    ) @@ -871,9 +871,9 @@          in __result_ )      in C_VisageRules_s35 v34    {-# INLINE rule22 #-}-   {-# LINE 92 "./src-ag/Visage.ag" #-}+   {-# LINE 92 "src-ag/Visage.ag" #-}    rule22 = \ ((_hdIaterm) :: ATerm) ((_tlIaterms) :: [ATerm]) ->-                               {-# LINE 92 "./src-ag/Visage.ag" #-}+                               {-# LINE 92 "src-ag/Visage.ag" #-}                                _hdIaterm : _tlIaterms                                {-# LINE 879 "dist/build/Visage.hs"#-}    {-# INLINE rule23 #-}@@ -895,8 +895,8 @@          in __result_ )      in C_VisageRules_s35 v34    {-# INLINE rule25 #-}-   {-# LINE 93 "./src-ag/Visage.ag" #-}+   {-# LINE 93 "src-ag/Visage.ag" #-}    rule25 = \  (_ :: ()) ->-                               {-# LINE 93 "./src-ag/Visage.ag" #-}+                               {-# LINE 93 "src-ag/Visage.ag" #-}                                []                                {-# LINE 903 "dist/build/Visage.hs"#-}
src-generated/VisagePatterns.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/VisagePatterns.ag)+-- UUAGC 0.9.51 (src-ag/VisagePatterns.ag) module VisagePatterns where-{-# LINE 2 "./src-ag/VisagePatterns.ag" #-}+{-# LINE 2 "src-ag/VisagePatterns.ag" #-}  import UU.Scanner.Position(Pos) import CommonTypes
src-generated/VisageSyntax.hs view
@@ -1,8 +1,8 @@  --- UUAGC 0.9.50 (src-ag/VisageSyntax.ag)+-- UUAGC 0.9.51 (src-ag/VisageSyntax.ag) module VisageSyntax where-{-# LINE 2 "./src-ag/VisageSyntax.ag" #-}+{-# LINE 2 "src-ag/VisageSyntax.ag" #-}  import CommonTypes import UU.Pretty
src-options/Options.hs view
@@ -86,6 +86,8 @@   , MyOpt []        ["version"]       (NoArg versionOpt)          (boolOpt showVersion) "get version information"   , MyOpt ['O']     ["optimize"]      (NoArg optimizeOpt)         noOpt                 "optimize generated code (--visit --case)"   , MyOpt []        ["visit"]         (NoArg visitOpt)            (boolOpt visit)       "try generating visit functions"+  , MyOpt []        ["loag"]          (OptArg loagOpt "Bool")     (boolOpt loag)        "recognises all linear ordered attribute grammars by generting a SAT problem, uses --verbose to print out numbers of clauses and variables"+  , MyOpt []        ["aoag"]          (NoArg aoagOpt)             (boolOpt aoag)        "recognises all linear ordered attribute grammars by finding fake dependencies, uses --verbose to print out the selected fake dependencies"   , MyOpt []        ["seq"]           (NoArg seqOpt)              (boolOpt withSeq)     "force evaluation using function seq (visit functions only)"   , MyOpt []        ["unbox"]         (NoArg unboxOpt)            (boolOpt unbox)       "use unboxed tuples"   , MyOpt []        ["bangpats"]      (NoArg bangpatsOpt)         (boolOpt bangpats)    "use bang patterns (visit functions only)"@@ -185,6 +187,9 @@                       , showHelp :: Bool                       , showVersion :: Bool                       , visit :: Bool+                      , loag  :: Bool+                      , minvisits  :: Bool+                      , aoag  :: Bool                       , withSeq :: Bool                       , unbox :: Bool                       , bangpats :: Bool@@ -281,6 +286,9 @@                     , withSelf      = False                     , withCycle     = False                     , visit         = False+                    , loag          = False+                    , minvisits     = False+                    , aoag          = False                     , withSeq       = False                     , unbox         = False                     , bangpats      = False@@ -351,6 +359,19 @@                     , noInlinePragmas = False                     , aggressiveInlinePragmas = False                     }++loagOpt :: (Maybe String) -> Options -> Options+loagOpt mstr opts = +    case mstr of+        Nothing     -> opts'+        Just "0"    -> opts'+        Just _      -> opts' {minvisits = True}++ where  opts'=opts{loag = True, visit = True}++aoagOpt :: Options -> Options+aoagOpt opts = +    opts{loag = True, visit = True, aoag = True}  --Options -> String -> [String] moduleOpt :: Maybe String -> Options -> Options
src/Ag.hs view
@@ -4,7 +4,7 @@ import System.Environment            (getArgs, getProgName) import System.Console.GetOpt         (usageInfo) import Data.List                     (partition)-import Control.Monad                 (zipWithM_)+import Control.Monad                 (zipWithM_,when) import Data.Maybe import System.FilePath import System.IO@@ -25,6 +25,7 @@ import qualified DefaultRules        as Pass2  (sem_Grammar,  wrap_Grammar,  Syn_Grammar (..), Inh_Grammar (..)) import qualified ResolveLocals       as Pass2a (sem_Grammar,  wrap_Grammar,  Syn_Grammar (..), Inh_Grammar (..)) import qualified Order               as Pass3  (sem_Grammar,  wrap_Grammar,  Syn_Grammar (..), Inh_Grammar (..))+import qualified LOAG.Order          as Pass3b (sem_Grammar,  wrap_Grammar,  Syn_Grammar (..), Inh_Grammar (..)) import qualified KWOrder             as Pass3a (sem_Grammar,  wrap_Grammar,  Syn_Grammar (..), Inh_Grammar (..)) import qualified GenerateCode        as Pass4  (sem_CGrammar, wrap_CGrammar, Syn_CGrammar(..), Inh_CGrammar(..)) import qualified PrintVisitCode      as Pass4a (sem_CGrammar, wrap_CGrammar, Syn_CGrammar(..), Inh_CGrammar(..))@@ -110,7 +111,9 @@           output3   = Pass3.wrap_Grammar         (Pass3.sem_Grammar grammar2a                          ) Pass3.Inh_Grammar  {Pass3.options_Inh_Grammar  = flags'}           grammar3  = Pass3.output_Syn_Grammar   output3           output3a  = Pass3a.wrap_Grammar        (Pass3a.sem_Grammar grammar2a                         ) Pass3a.Inh_Grammar  {Pass3a.options_Inh_Grammar  = flags'}-          grammar3a = Pass3a.output_Syn_Grammar  output3a+          output3b  = Pass3b.wrap_Grammar        (Pass3b.sem_Grammar grammar2a                         ) Pass3b.Inh_Grammar  {Pass3b.options_Inh_Grammar  = flags'}+          grammar3a | loag flags' = Pass3b.output_Syn_Grammar output3b+                    | otherwise   = Pass3a.output_Syn_Grammar output3a           output4   = Pass4.wrap_CGrammar        (Pass4.sem_CGrammar(Pass3.output_Syn_Grammar  output3)) Pass4.Inh_CGrammar {Pass4.options_Inh_CGrammar = flags'}           output4a  = Pass4a.wrap_CGrammar       (Pass4a.sem_CGrammar(Pass3.output_Syn_Grammar output3)) Pass4a.Inh_CGrammar {Pass4a.options_Inh_CGrammar = flags'}           output4b  = Pass4b.wrap_ExecutionPlan  (Pass4b.sem_ExecutionPlan grammar3a) Pass4b.Inh_ExecutionPlan {Pass4b.options_Inh_ExecutionPlan = flags', Pass4b.inhmap_Inh_ExecutionPlan = Pass3a.inhmap_Syn_Grammar output3a, Pass4b.synmap_Inh_ExecutionPlan = Pass3a.synmap_Syn_Grammar output3a, Pass4b.pragmaBlocks_Inh_ExecutionPlan = pragmaBlocksTxt, Pass4b.importBlocks_Inh_ExecutionPlan = importBlocksTxt, Pass4b.textBlocks_Inh_ExecutionPlan = textBlocksDoc, Pass4b.moduleHeader_Inh_ExecutionPlan = mkModuleHeader $ Pass1.moduleDecl_Syn_AG output1, Pass4b.mainName_Inh_ExecutionPlan = mkMainName mainName $ Pass1.moduleDecl_Syn_AG output1, Pass4b.mainFile_Inh_ExecutionPlan = mainFile, Pass4b.textBlockMap_Inh_ExecutionPlan = textBlockMap, Pass4b.mainBlocksDoc_Inh_ExecutionPlan = mainBlocksDoc,Pass4b.localAttrTypes_Inh_ExecutionPlan = Pass3a.localSigMap_Syn_Grammar output3a}@@ -134,17 +137,19 @@                                Seq.>< Pass1a.errors_Syn_Grammar output1a                                Seq.>< Pass2.errors_Syn_Grammar  output2                                Seq.>< Pass2a.errors_Syn_Grammar output2a)-          furtherErrors    = if kennedyWarren flags'-                             then let errs3a = Pass3a.errors_Syn_Grammar output3a-                                  in if Seq.null errs3a-                                     then if ocaml flags'-                                          then toList ( Pass4c.errors_Syn_ExecutionPlan output4c )-                                          else if clean flags'-                                               then toList ( Pass4d.errors_Syn_ExecutionPlan output4d )-                                               else toList ( Pass4b.errors_Syn_ExecutionPlan output4b )-                                     else toList errs3a-                             else toList ( Pass3.errors_Syn_Grammar  output3-                                  Seq.>< Pass4.errors_Syn_CGrammar output4)+          furtherErrors    = if loag flags'+                             then toList (Pass3b.errors_Syn_Grammar output3b)+                             else if kennedyWarren flags'+                                  then let errs3a = Pass3a.errors_Syn_Grammar output3a+                                       in if Seq.null errs3a+                                          then if ocaml flags'+                                               then toList ( Pass4c.errors_Syn_ExecutionPlan output4c )+                                               else if clean flags'+                                                    then toList ( Pass4d.errors_Syn_ExecutionPlan output4d )+                                                    else toList ( Pass4b.errors_Syn_ExecutionPlan output4b )+                                          else toList errs3a+                                  else toList ( Pass3.errors_Syn_Grammar  output3+                                                Seq.>< Pass4.errors_Syn_CGrammar output4)            errorList        = if null parseErrorList                              then mainErrors@@ -226,6 +231,11 @@             then printStr $ "\nPlus " ++ show additionalWarnings ++ " more warning" ++ pluralS additionalWarnings ++ ".\n"             else return () +      -- show fake dependencies when found with --aoag+      when (aoag flags' && verbose flags' && +            isJust (Pass3b.ads_Syn_Grammar output3b)) $+        putStrLn (show $ fromJust $ Pass3b.ads_Syn_Grammar output3b)+       if not (null errorsToStopOn)  -- note: this may already run quite a part of the compilation...        then failWith 1        else@@ -240,7 +250,7 @@             if sepSemMods flags'             then do -- alternative module gen-                    if kennedyWarren flags'+                    if loag flags || kennedyWarren flags'                       then if ocaml flags'                             then error "sepsemmods is not implemented for the ocaml output generation"                            else Pass4b.genIO_Syn_ExecutionPlan output4b@@ -278,7 +288,7 @@                                                  , pp "-}"                                                  ]                                       else empty]-                         | kennedyWarren flags'+                         | loag flags' || kennedyWarren flags'                             = if ocaml flags'                               then vlist                                     [ text "(* generated by UUAG from" >#< mainFile >#< "*)"
src/KennedyWarren.hs view
@@ -40,7 +40,7 @@                  (ndiParams ndi)                  (ndiClassCtxs ndi)                  initst-                 (Just initv)+                 [initv]                  nextMap                  prevMap                  prods@@ -581,7 +581,7 @@ repeatM                  :: VG s () -> VG s () -} -kennedyWarrenVisitM :: Set NontermIdent -> [NontDependencyInformationM s] -> VG s [Maybe Int]+kennedyWarrenVisitM :: Set NontermIdent -> [NontDependencyInformationM s] -> VG s [[VisitIdentifier]] kennedyWarrenVisitM wr ndis = do   -- Create initial nodes and edges (edges only for wrapper nodes)   initvs <- forM ndis $ \ndi -> do@@ -591,8 +591,8 @@     if (Set.member (ndiNonterminal $ ndimOrig $ ndi) wr) && (not (Set.null inh) || not (Set.null syn))       then do         VGEdge initv <- createPending nd inh syn-        return $ Just initv-      else return Nothing+        return [initv]+      else return []   -- Handle all pending edges while there are any   repeatM $ do     pend  <- selectPending@@ -742,7 +742,7 @@ ------------------------------------------------------------ ---         Construction of the execution plan           --- -------------------------------------------------------------kennedyWarrenExecutionPlan :: Options -> [NontDependencyInformationM s] -> [Maybe Int] ->+kennedyWarrenExecutionPlan :: Options -> [NontDependencyInformationM s] -> [[VisitIdentifier]] ->                               Set NontermIdent -> TypeSyns -> Derivings -> VG s ExecutionPlan kennedyWarrenExecutionPlan opts ndis initvs wr typesyns derivings = do   -- Loop over all nonterminals
+ src/LOAG/AOAG.hs view
@@ -0,0 +1,289 @@+{-# LANGUAGE Rank2Types #-}++module LOAG.AOAG where++import LOAG.Common+import LOAG.Graphs+import LOAG.Rep+import LOAG.Result++import AbstractSyntax+import CommonTypes+import Control.Arrow ((&&&), (***))+import Control.Monad (forM, forM_, MonadPlus(..), when, unless)+import Control.Monad.ST+import Control.Monad.Error (ErrorT(..))+import Control.Monad.Trans (lift, MonadTrans(..))+import Control.Monad.State (MonadState(..))+import Data.Maybe (fromMaybe, catMaybes, fromJust, isNothing)+import Data.List (elemIndex, foldl', delete, (\\), insert, nub)+import Data.STRef+import Data.Tuple (swap)+import qualified Data.Set as S+import qualified Data.IntSet as IS+import qualified Data.IntMap as IM+import qualified Data.Map as M+import           Data.Array.MArray+import qualified Data.Array as A+import Data.Array.ST+import ErrorMessages as Err+import Pretty+import UU.Scanner.Position++data Settings = Settings  +                { -- current minimum ads size+                  prune_val  :: Int +                  -- whether to minimize the number of fake dependencies+                  -- could be very costly+                , min_ads :: Bool+                }+default_settings = Settings 999 False++type AOAG s a = ResultT (ST s) a+runAOAG :: (forall s. AOAG s a) -> Either Err.Error a+runAOAG l = +    case runST (runResult l) of+      Give res          -> Right res+      Cycle e c T1      -> Left $ t1err+      Cycle e c T2      -> Left $ t2err+      Cycle e c (T3 _)  -> Left $ t3err+      Limit             -> Left $ lerr+      NotLOAG           -> Left $ naoag+    where   t1err = Err.CustomError False noPos $ text "Type 1 cycle"+            t2err = Err.CustomError False noPos $ text "Type 2 cycle"+            t3err = Err.CustomError False noPos $ text "Type 3 cycle"+            lerr  = Err.CustomError False noPos $ text "Limit reached!"+            naoag = Err.CustomError False noPos $ text "Not arranged orderly..."+-- | Catch a type 3 cycle-error made by a given constructor+-- |  two alternatives are given to proceed+catchType3 :: (Monad m) => +                    ResultT m a             -- The monad to catch from+                 -- If the catch is made+                 -> (Edge -> Cycle -> [Edge] -> ResultT m a)+                 -> ResultT m a              +catchType3 mt3 alt = Result $ do+    let runM = runResult mt3+    mt3a <- runM+    case mt3a of+        Cycle e c (T3 comp) -> runResult (alt e c comp)+        otherwise           -> runM++type ADS = [Edge]+type AOAGRes =  LOAGRes+-- | Calculate a total order if the semantics given +--    originate from a linearly-ordered AG+schedule :: LOAGRep -> Grammar -> Ag -> [Edge] -> Either Error AOAGRes+schedule sem gram@(Grammar _ _ _ _ dats _ _ _ _ _ _ _ _ _) +                ag@(Ag bounds_s bounds_p de nts) ads +    = runAOAG $ aoag default_settings ads+ where+    -- get the maps from semantics and translate them to functions    +    nmp  = (nmp_LOAGRep_LOAGRep  sem)     +    ofld = (ofld_LOAGRep_LOAGRep sem)       +    genA = gen_LOAGRep_LOAGRep sem             +    inss = inss_LOAGRep_LOAGRep sem        + +    -- select candidates, using the edge that caused the cycle+    -- from the list of intra-thread dependencies +    -- (intra-visit dependencies without edges in ids)+    candidates :: Edge -> Cycle -> [Edge] -> [Edge]+    candidates _ c = foldr (\(f,t) acc -> +                                if f `IS.member` c &&t `IS.member` c+                                    then (t,f):acc else acc) []+    -- | Move occurrence to its corresponding attribute +    gen :: Vertex -> Vertex+    gen v = genA A.! v++    genEdge :: Edge -> Edge+    genEdge (f,t) = (gen f, gen t)++    -- | Decide for a given production edge whether the vertices +    --      belong to the same field+    siblings :: Edge -> Bool+    siblings (f, t) = ofld A.! f == ofld A.! t++    -- | Given an nonterminal-edge, instantiate it+    --   assumes that the occurrences of fields are added in the same order+    instEdge :: Edge -> [Edge]+    instEdge (f, t) = zip (inss A.! f) (inss A.! t)+ +    aoag :: Settings -> [Edge] -> AOAG s AOAGRes+    aoag cfg init_ads = run+        where+            run :: AOAG s AOAGRes+            run = induced ads >>= detect++            detect (dp,idp,ids@(idsf,idst)) = do+                -- Attribute -> TimeSlot+                schedA <- lift (mapArray (const Nothing) idsf)+                -- map TimeSlot -> [Attribute]+                schedS <- lift (newSTRef $ +                    foldr (\(Nonterminal nt _ _ _ _) -> M.insert (getName nt) +                                (IM.singleton 1 [])) M.empty dats)+                fr_ids <- freeze_graph ids+                threads <- lift (completing fr_ids (schedA, schedS) nts)+                let (ivd, comp) = fetchEdges fr_ids threads nts+                m_edp dp init_ads ivd comp (schedA, schedS) `catchType3` +                                find_ads dp idp ids (schedA, schedS)++            find_ads :: Graph s -> Graph s -> Graph s -> SchedRef s -> +                         Edge -> Cycle -> [Edge] -> AOAG s AOAGRes +            find_ads dp idp ids sched e cycle comp = do+                pruner <- lift (newSTRef 999) +                explore dp idp ids sched init_ads pruner e cycle comp+ +            explore :: Graph s -> Graph s -> Graph s -> SchedRef s -> +                        [Edge] -> STRef s Int -> Edge -> Cycle -> [Edge] ->+                            AOAG s AOAGRes+            explore dp idp ids sched@(schedA, schedS) ads pruner e c comp =+                explore' dp idp ids sched ads (candidates e c comp) pruner+             where+              explore' :: Graph s -> Graph s -> Graph s -> SchedRef s -> +                          [Edge] -> [Edge] -> STRef s Int -> +                            AOAG s AOAGRes+              explore' _  _   _   _  _   [] _ = Result $ return NotLOAG+              explore' dp idp ids sched@(schedA,schedS) ads (fd:cs) pruner +               = Result $ do+                  p_val <- readSTRef pruner+                  if length ads >= p_val -1+                   then return Limit+                   else do +                    idpf_clone <- mapArray id (fst idp)+                    idpt_clone <- mapArray id (snd idp)+                    let idp_c  =  (idpf_clone, idpt_clone)+                    idsf_clone <- mapArray id (fst ids)+                    idst_clone <- mapArray id (snd ids)+                    let ids_c  =  (idsf_clone, idst_clone)+                    schedA_c   <- mapArray id schedA+                    schedS_v   <- readSTRef schedS+                    schedS_c   <- newSTRef schedS_v+                    let sched_c = (schedA_c, schedS_c)+    +                    let runM = runResult $ reschedule dp idp ids sched +                                                (fd:ads) fd pruner+                    let backtrack = explore' dp idp_c ids_c sched_c ads cs +                                        pruner+                    maoag <- runM+                    case maoag of+                      Cycle e c T2        -> runResult backtrack+                      NotLOAG             -> runResult backtrack+                      Limit               -> runResult backtrack+                      Cycle e c (T3 comp) -> error "Uncaught type 3"+                      Cycle e c T1        -> error "Type 1 error"+                      Give (tdp1,inf1,ads1) -> +                            if LOAG.AOAG.min_ads cfg +                             then do+                              writeSTRef pruner (length ads1)+                              maoag' <- runResult backtrack+                              case maoag' of+                                Give (tdp2,inf2,ads2)+                                          -> return $ Give (tdp2,inf2,ads2)+                                otherwise -> return $ Give (tdp1,inf1,ads1)+                             else return $ Give (tdp1,inf1,ads1)++            -- step 1, 2 and 3+            induced :: [Edge] -> AOAG s (Graph s, Graph s, Graph s)+            induced ads = do+                dpf  <- lift (newArray bounds_p IS.empty)+                dpt  <- lift (newArray bounds_p IS.empty)+                idpf <- lift (newArray bounds_p IS.empty)+                idpt <- lift (newArray bounds_p IS.empty)+                idsf <- lift (newArray bounds_s IS.empty)+                idst <- lift (newArray bounds_s IS.empty)+                let ids = (idsf,idst)+                let idp = (idpf,idpt)+                let dp  = (dpf ,dpt)+                inducing dp idp ids (de ++ ads) ++            inducing :: Graph s -> Graph s -> Graph s -> [Edge] +                            -> AOAG s (Graph s, Graph s, Graph s)+            inducing dp idp ids es = do+                mapM_ (addD dp idp ids) es+                return (dp, idp, ids)+            addD :: Graph s -> Graph s -> Graph s -> Edge -> AOAG s [Edge]+            addD dp' idp' ids' e = do+                resd <- e `insErt` dp'+                resdp <- e `inserT` idp'+                case resdp of +                  Right es  -> do +                    addedExtras <- mapM (addN idp' ids') (e:es)+                    return $ concat addedExtras+                  Left c    -> throwCycle e c T2++            addI :: Graph s -> Graph s -> Edge -> AOAG s [Edge]+            addI idp' ids' e = do+                exists <- member e idp'+                if not exists then do+                    res <- e `inserT` idp'+                    case res of+                        Right es -> do+                            addedExtras <- mapM (addN idp' ids') es+                            return (concat addedExtras) +                        Left c   -> throwCycle e c T2+                 else return []+            addN :: Graph s -> Graph s -> Edge -> AOAG s [Edge]+            addN idp' ids' e = do+                    if (siblings e) then do+                        let s_edge = genEdge e+                        exists <- member s_edge ids'+                        if not exists then do+                            _ <- inserT s_edge ids'+                            addedEx <- mapM (addI idp' ids') (instEdge s_edge)+                            return (s_edge : concat addedEx)+                         else return []+                     else return []++            +            -- step 6, 7+            m_edp :: Graph s -> [Edge] -> [Edge] -> [Edge] -> SchedRef s ->+                        AOAG s AOAGRes +            m_edp (dpf, dpt) ads ivd comp sched = do+                edpf <- lift (mapArray id dpf)+                edpt <- lift (mapArray id dpt)+                mc   <- addEDs (edpf,edpt) (concatMap instEdge ivd) +                case mc of+                  Just (e, c) -> throwCycle e c (T3 $ concatMap instEdge comp)+                  Nothing     -> do +                        tdp  <- lift (freeze edpt)+                        infs <- lift (readSTRef (snd sched))+                        return $ (Just tdp,infs,ads)++            reschedule :: Graph s -> Graph s -> Graph s -> SchedRef s -> +                           [Edge] -> Edge -> STRef s Int +                            -> AOAG s AOAGRes+            reschedule dp idp ids sched@(_,threadRef) ads e pruner = do+                extra <- addN idp ids e+                forM_ extra $ swap_ivd ids sched+                fr_ids <- freeze_graph ids+                threads <- lift (readSTRef threadRef)+                let (ivd, comp) = fetchEdges fr_ids threads nts +                m_edp dp ads ivd comp sched `catchType3` +                    explore dp idp ids sched ads pruner+             where +              swap_ivd :: Graph s -> SchedRef s -> Edge -> AOAG s ()+              swap_ivd ids@(idsf, idst) sr@(schedA, schedS) (f,t) = do+                --the edge should point from higher to lower timeslot+                assigned <- lift (freeze schedA)+                let oldf = maybe (error "unassigned f") id $ assigned A.! f+                    oldt = maybe (error "unassigned t") id $ assigned A.! t+                    dirf = snd $ alab $ nmp M.! f+                    dirt = snd $ alab $ nmp M.! t+                    newf | oldf < oldt = oldt + (if dirf /= dirt then 1 else 0)+                         | otherwise   = oldf+                    nt   = show $ typeOf $ findWithErr nmp "m_edp" f++                -- the edge was pointing in wrong direction so we moved +                -- the attribute to a new interaction, now some of its+                -- predecessors/ancestors might need to be moved too+                unless (oldf == newf) $ do+                    lift (writeArray schedA f (Just newf))+                    lift (modifySTRef schedS +                            (M.adjust (IM.update (Just . delete f) oldf) nt))+                    lift (modifySTRef schedS +                        (M.adjust(IM.alter(Just. maybe [f] (insert f))newf)nt))+                    predsf <- lift (readArray idst f)+                    succsf <- lift (readArray idsf f)+                    mapM_ (swap_ivd ids sr) (+                        (map (flip (,) f) $ IS.toList predsf) ++ +                        (map ((,) f)      $ IS.toList succsf))+
+ src/LOAG/Chordal.hs view
@@ -0,0 +1,262 @@+{-# LANGUAGE CPP #-}++module LOAG.Chordal where++#ifdef WITH_LOAG++import LOAG.Common+import LOAG.Graphs+import LOAG.Optimise+import LOAG.Solver.MiniSat+import Options++import              Control.Monad (unless, forM, when, foldM)+import              Control.Monad.ST+import qualified    Data.Array as A+import              Data.Array.IO+import              Data.Array.ST as ST+import qualified    Data.IntMap as IM+import qualified    Data.IntSet as IS+import qualified    Data.Map as M+import              Data.Maybe (isNothing, catMaybes)+import qualified    Data.Set as S+import              Data.STRef++type Neigh     = (Vertex, EdgeType)+data EdgeType  = Sib    MyVar   -- Edge between siblings +               | Any    MyVar   -- Unknown+               | NSib   MyVar   -- Edge between non-siblings+    deriving (Show)++extract (Sib l) = l+extract (Any l) = l+extract (NSib l)= l++neg :: EdgeType -> EdgeType+neg (Sib p)  = Sib  $ varnot p+neg (NSib p) = NSib $ varnot p+neg (Any p)  = Any  $ varnot p+++type NtGraph   = IM.IntMap [(Vertex,MyVar)]+type ToChordal = IM.IntMap [Neigh]+type SatEdge = (Vertex, Neigh)++addClauses :: Sat -> [[EdgeType]] -> IO ()+addClauses sat = mapM_ (addClause sat . map extract) ++toChordal :: [(Edge,EdgeType)] -> IO ToChordal+toChordal es = +    let edges = concatMap (\((a,b),c) -> [(a,[(b,c)]),(b,[(a,neg c)])]) es+      in return $ IM.fromListWith (++) edges++toNtGraph :: [(Edge,MyVar)] -> IO NtGraph+toNtGraph es = +    let edges = concatMap (\((a,b),c) -> [(a,[(b,c)]),(b,[(a,varnot c)])]) es+      in return $ IM.fromListWith (++) edges+++remove :: Vertex -> [Neigh] -> ToChordal -> ToChordal+remove v ns g = foldr (IM.adjust remN . fst) (IM.delete v g) ns + where remN ns = filter ((/= v).fst) ns++adds :: ToChordal -> [SatEdge] -> ToChordal+adds g = foldl add g++add :: ToChordal -> SatEdge -> ToChordal+add g (v,n@(v2,c)) = IM.adjust (n:)          v+                   $ IM.adjust ((v,neg c):)  v2 g++removeNt :: Vertex -> [(Vertex,MyVar)] -> NtGraph -> NtGraph+removeNt v ns g = foldr (IM.adjust remN . fst) (IM.delete v g) ns + where remN ns = filter ((/= v).fst) ns++addsNt g = foldl addNt g++addNt g (v,n@(v2,c)) = IM.adjust (n:)          v+                     $ IM.adjust ((v,varnot c):)  v2 g++scheduleLOAG :: Ag -> (String -> IO ()) -> Options -> IO LOAGRes+scheduleLOAG ag@(Ag nbounds pbounds dps nts) putStrLn opts = do+    let optim | minvisits opts = [MinVisits] -- todo: allow specification of more optimisations+              | otherwise      = []+    putStrLn "--- Starting ---"+    sat <- newSolvable +    varMap <- noNtCycles sat nts putStrLn+    noPrCycles sat prs varMap putStrLn +    (v,p) <- satValues sat+    putStrLn $ "nr. of variables: " ++ show v +    putStrLn $ "nr. of clauses: "   ++ show p+    putStrLn "--- Solving ---"+    b <- satsolve sat []+    if not b then error "Not LOAG" +      else do   putStrLn "--- Constructing Interfaces ---"+                (ids,edp,interfaces) <- loagRes sat varMap dps+                let oldct = getVisCount nts interfaces+                when (minvisits opts) $ +                    putStrLn "--- Minimising #Visit"+                optimise sat varMap optim nbounds nts interfaces +                (ids',edp',interfaces') <- loagRes sat varMap dps+                let visC@newct = getVisCount nts interfaces'+                when (minvisits opts) $ do+                    putStrLn ("--- #Visits (max,sum,avg) " ++(show oldct)+                                ++" --> " ++(show newct))+                putStrLn "--- Code Generation ---"+                return (Just edp',interfaces',[])+ where  loagRes sat varMap dps = do    +            (ids,edp) <- mkGraphs sat varMap dps+            interfaces <- mkInterfaces ids+            return (ids,edp,interfaces)+        prs =  [ p | (Nt _ _ _ _ _ ps) <- nts, p <- ps]+        mkInterfaces ids = return $ runST $ do+                schedA <- newArray nbounds Nothing+                schedS <- newSTRef $ foldr (\(Nt nt _ _ _ _ _) -> +                                M.insert nt (IM.singleton 1 [])) +                                M.empty nts+                completing ids (schedA, schedS) nts++        mkGraphs :: Sat -> M.Map Edge MyVar -> [Edge] ->+                        IO (FrGraph,TDPRes)+        mkGraphs sat varMap dps = do+            idsf <- newArray nbounds IS.empty :: IO (IOArray Vertex Vertices)+            idst <- newArray nbounds IS.empty :: IO (IOArray Vertex Vertices)+            edp  <- newArray pbounds IS.empty :: IO (IOArray Vertex Vertices)+            let (ids) = (idsf,idst)+            sequence_ [ do  v <- value sat pred+                            case v of+                              Nothing -> error "no val"+                              Just True -> addEdges (i,s) (zip ios sos) ids edp+                              Just False-> addEdges (s,i) (zip sos ios) ids edp+                    | Nt _ _ _ inhs outs _ <- nts+                    , (i,ios,_) <- inhs+                    , (s,sos,_) <- outs+                    , let pred = varMap M.! (i,s)+                    ]+            forM dps $ \(f,t) -> do+                modifyArray edp t (f `IS.insert`)+            f_idsf <- freeze idsf+            f_idst <- freeze idst+            f_edp  <- freeze edp+            return ((f_idsf,f_idst),f_edp)+         where  addEdges (f,t) es (idsf,idst) edp = do+                    modifyArray idsf f (t `IS.insert`)+                    modifyArray idst t (f `IS.insert`)+                    forM es $ \(f,t) -> do --edp does not reflect flow+                        modifyArray edp t (f `IS.insert`)                ++noCyclesNt :: Sat -> NtGraph -> IO ()+noCyclesNt sat g  | IM.null g  = return ()+                  | otherwise = do+    news <- sequence [ noTriangleNt sat g p q | (p,q) <- pairs neighs]+    let g' = addsNt (removeNt node neighs g) (concat news)+    noCyclesNt sat g'+    where   +        node = snd $ minimum   [ (length xs, a) | (a,xs) <- IM.toList g ]+        Just neighs = IM.lookup node g++noTriangleNt :: Sat -> NtGraph -> (Vertex, MyVar) -> +                          (Vertex, MyVar) -> IO [(Vertex,(Vertex,MyVar))]+noTriangleNt sat g e1@(t1,c1) e2@(t2,c2) = +    case IM.lookup t1 g of+      Just ns -> +        case [ c | (t2',c) <- ns, t2' == t2 ] of+          [] -> do  c3 <- newLit sat+                    ruleOut c1 c2 c3+                    return [(t1,(t2,c3))]+          [c3] -> ruleOut c1 c2 c3 >> return []+          _   -> error "multiple edges between two nodes" +      Nothing -> error "pointer outside of graph"+ where +        ruleOut ea eb ab= do addClause sat [ea, ab, varnot eb]+                             addClause sat [varnot ea,varnot ab,eb]++noCyclesPr :: Sat -> ToChordal -> IO ()+noCyclesPr sat g  | IM.null g  = return ()+                  | otherwise = do+    news <- sequence [ noTriangle sat g p q | (p,q) <- validPairs neighs]+    let g' = adds (remove node neighs g) (concat news)+    noCyclesPr sat g'+    where   +        node = snd $ minimum   [ (weight xs, a) +                               | (a,xs) <- IM.toList g ]+        Just neighs = IM.lookup node g+        validPairs ns = [ (p,q)  | p <- sibs,  q <- nsibs ] +++                        [ (p,q)  | p <- nsibs, q <- anys  ] +++                        [ (p,q)  | p <- sibs,  q <- anys  ]+                      ++  (pairs anys)+         where sibs = [ n | n@(_,Sib _)  <- ns ]+               nsibs= [ n | n@(_,NSib _) <- ns ]+               anys = [ n | n@(_,Any _)  <- ns ]+        weight :: [Neigh] -> Int+        weight xs = ss*3 * (ds + cs) + (ds + cs)^2+         where+          ss = length [ x | x@(_,Sib _)  <- xs ]+          ds = length [ x | x@(_,NSib _) <- xs ]+          cs = length [ x | x@(_,Any _)  <- xs ]++noTriangle :: Sat -> ToChordal -> Neigh -> Neigh -> IO [SatEdge]+noTriangle sat g e1@(t1,c1) e2@(t2,c2) = +    case IM.lookup t1 g of+      Just ns -> +        case [ c | (t2',c) <- ns, t2' == t2 ] of+          [] -> do  p <- newLit sat+                    ruleOut c1 c2 (Any p)+                    return [(t1,(t2,(Any p)))]+          [c3] -> ruleOut c1 c2 c3 >> return [] +          _   -> error "multiple edges between two nodes" +      Nothing -> error "pointer outside of graph"+ where  ruleOut ea eb ab= addClauses sat [[ea, ab, neg eb],[neg ea,neg ab,eb]] +noNtCycles :: Sat -> [Nt] -> (String -> IO ()) -> IO VarMap +noNtCycles sat tps putStrLn = do+    putStrLn "--- Non-Terminals ---"+    maps <- mapM forNt tps+    return $ M.unions maps+ where  -- at non-terminal level, all cycles are between siblings+        -- that is why we force all the edges to be the same+        -- (not filtered by validPairs) +        forNt tp@(Nt tid dpf dpt inhs syns _) = do+            vars <- satValues sat+            putStrLn ("nt : " ++ tid ++ " ... " ++ +                        show vars ++ " ...")+            ass <- sequence $+                    [ return ((i,s),VarTrue) | ((i,s)) <- dpf ]+++                    [ return ((i,s),VarFalse)| ((s,i)) <- dpt ] +            let assM = M.fromList ass+            mvars<- sequence   +                    [ if new then do+                        p <- newLit sat+                        return $ Just ((i,s),p) else return Nothing+                    | (i,_,_) <- inhs+                    , (s,_,_) <- syns+                    , let mmv = maybe (M.lookup (s,i) assM) Just +                                      (M.lookup (i,s) assM)+                          new = isNothing mmv ]+            let vars = ass ++ catMaybes mvars+            g <- toNtGraph vars +            noCyclesNt sat g+            return $ M.fromList vars+++noPrCycles :: Sat -> [Pr] -> VarMap -> (String -> IO ()) -> IO ()+noPrCycles sat prods varMap putStrLn = do+    putStrLn "--- Productions ---"+    mapM_ forProd prods+ where  forProd (Pr prod es ses fs) | length fs ==1 = return () --taken care of+                                    | otherwise =  do +            vars <- satValues sat+            putStrLn ("prod: " ++ show prod ++ " ... " ++ +                           show vars ++ " ...") +            g <- toChordal (sibs ++ dps) +            noCyclesPr sat g+         where sibs= [ ((f,t),Sib c) | (e@(f,t),ge,_) <- ses+                     , let c = case M.lookup ge varMap of+                                      Just p  -> p+                                      Nothing -> error "no var found"]+               dps = [ (e,NSib VarTrue) | e <- es ]+++#else++scheduleLOAG = error "You need to install uuagc with the -fwith-loag flag in order to use the --loag option."++#endif
+ src/LOAG/Common.hs view
@@ -0,0 +1,295 @@++module LOAG.Common where++import qualified Data.Array as A+import qualified Data.Map as M+import qualified Data.IntMap as IM+import qualified Data.IntSet as IS+import qualified Data.Set as S+import qualified Data.Sequence as Seq+import Data.Maybe (isNothing)+import Data.STRef+import Data.Array.ST+import Data.List (intercalate, foldl', nub)+import CommonTypes+import Control.Arrow+import Control.Monad.ST+import Control.Monad (forM, when, forM_, forM_, foldM)++import LOAG.Graphs++data Ag = Ag    (Int,Int)   -- attribute  range+                (Int,Int)   -- occurrence range+                [Edge]      -- direct dependencies+                [Nt]        -- non-terminals+data Nt = Nt String +                [Edge] -- direct dps from inh -> syn+                [Edge] -- direct dps from syn -> inh +                -- inh attributes with direction and instances+                [(Vertex,[Vertex],Direction)]+                -- syn attributes with direction and instances+                [(Vertex,[Vertex],Direction)]+                [Pr]            -- productions of this Nt+    deriving (Show)+data Pr = Pr    PLabel+                [Edge]          -- direct dependencies between fields+                [(Edge,Edge,Bool)] -- all siblings pairs, with generalised version, and boolean that denotes whether if it is an edge of LHS+                [Fd]            -- the fields of this production, including lhs+    deriving (Show)+data Fd = Fd    String          -- field name+                String          -- type of the field+                [(Vertex,Vertex)]        -- inherited atts (gen, inst)+                [(Vertex,Vertex)]        -- synthesized atts (gen, inst)+    deriving (Show)++type Attrs = [Attr]+data Attr  = Attr String Direction MyType+    deriving (Show, Eq, Ord)+data Direction = Inh | AnyDir | Syn+    deriving (Show, Ord, Enum)+++foldM' :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m a+foldM' _ a [] = return a+foldM' f a (x:xs) = f a x >>= \fax -> fax `seq` foldM f fax xs++modifyArray r k f = do+    v <- readArray r k+    writeArray r k (f v)++setConcatMap f = S.foldr (S.union . f) S.empty+isLoc (MyOccurrence (_,f) _) = f == "loc" || f == "inst" -- transparent occr ? ++instance Eq Direction where+    Inh == Syn = False+    Syn == Inh = False+    _ == _     = True++data MyType = TyInt+            | TyBool+            | TyString+            | TyData String+            | TyLit String+            | TyArr MyType MyType+            | NoType  -- the empty set of values (no members)+            | AnyType -- the set of all values (union of all types)++type SchedRef s = (STArray s Vertex (Maybe Int),ThreadRef s)+type AttrAssRef s = STArray s Vertex (Maybe Int)+type ThreadRef s = STRef s InterfaceRes+-- production is identified by its name and its parent non-terminal+type PLabel = (MyType,String) +type FLabel = String -- field label+-- attribute is identified by its name and its direction+type ALabel = (String, Direction)+type AI_N   = M.Map MyType MyAttributes+type AS_N   = M.Map MyType MyAttributes+type A_N    = M.Map MyType MyAttributes+type A_P    = M.Map PLabel MyOccurrences+-- Get the (data)type of a certain child at a certain production+type FTY    = M.Map (PLabel, FLabel) MyType+-- Get the fields corresponding to a certain type+type TYFS   = M.Map MyType [(PLabel, FLabel)]+-- the definition of given occ uses these occs+type SF_P   = M.Map MyOccurrence (S.Set MyOccurrence) +type PMP    = M.Map Int MyOccurrence+type PMP_R  = M.Map MyOccurrence Int+type NMP    = M.Map Int MyAttribute+type NMP_R  = M.Map MyAttribute Int+type FMap   = M.Map (PLabel,FLabel) (S.Set MyOccurrence, S.Set MyOccurrence)+type FsInP  = M.Map PLabel [(PLabel, FLabel)]+type LOAGRes =  ( Maybe TDPRes +                , InterfaceRes+                , ADSRes)+type VisCount= (Int, Int, Float)+type ADSRes  = [Edge]+type TDPRes  = A.Array Vertex Vertices --M.Map PLabel TDPGraph+type TDPGraph = (IM.IntMap Vertices, IM.IntMap Vertices) +type InterfaceRes = M.Map String (IM.IntMap [Vertex])+type HOMap   = M.Map PLabel (S.Set FLabel) ++findWithErr :: (Ord k, Show k, Show a) => M.Map k a -> String -> k -> a+findWithErr m err k = maybe (error err) id $ M.lookup k m+findWithErr' m err k= maybe (error err) id $ IM.lookup k m++-- Defining the MyAttribute (attribute at non-terimal+-- and the MyOccurrences (attribute at a production)+type MyAttributes = [MyAttribute]+data MyAttribute  = MyAttribute {typeOf :: MyType, alab :: ALabel}+    deriving (Ord, Eq)+(<.>)         = MyAttribute+infixl 7 <.>+instance Show MyAttribute where+    show (MyAttribute t a) = show t ++ "<.>" ++ show a++type MyOccurrences = [MyOccurrence]+data MyOccurrence = MyOccurrence {argsOf :: (PLabel, FLabel), attr :: ALabel}+    deriving (Ord, Eq)+(>.<)         = MyOccurrence+infixl 8 >.<+instance Show MyOccurrence where+    show (MyOccurrence ((t,p),f) a) = +        intercalate "." [show t,p,f] ++ "."++ show a++dirOfOcc :: MyOccurrence -> Direction+dirOfOcc = snd . attr++handOut :: (PLabel, FLabel) -> MyAttribute -> MyOccurrence+handOut p = (p >.<) . alab++handAllOut :: (PLabel, FLabel) -> MyAttributes -> MyOccurrences+handAllOut p os = map (handOut p) os++map2F  :: (Ord a)        => M.Map a [b] -> a -> [b]+map2F m a = case M.lookup a m of+              Nothing -> []+              Just bs -> bs++map2F'  :: (Ord a)        => M.Map a (S.Set b) -> a -> (S.Set b)+map2F' m a = case M.lookup a m of+               Nothing -> S.empty+               Just bs -> bs++flipDir :: Direction -> Direction+flipDir Syn = Inh+flipDir Inh = Syn++-- creates all pairs of elements such that no equal elements end up in a pair+-- and considering only one direction+pairs :: [a] -> [(a,a)]+pairs [] = []+pairs (x:xs) = map ((,) x) xs ++ pairs xs++toMyTy :: Type -> MyType+toMyTy (Haskell str) = TyLit str+toMyTy (NT id _ _ )  = TyData $ getName id+toMyTy Self          = error "Type Self in phase 3"++fromMyTy :: MyType -> Type+fromMyTy (TyLit str) = (Haskell str)+fromMyTy (TyData id) = NT (identifier id) [] False++toMyAttr :: Direction -> MyType -> Attributes -> MyAttributes+toMyAttr d dty = M.foldrWithKey +                    (\ident ty as -> dty <.> (getName ident,d):as) []++completing :: FrGraph -> SchedRef s -> [Nt] -> ST s InterfaceRes+completing ids sched nts = do   +    ims <- forM nts $ completingN ids (fst sched)+    let threads = (M.fromList ims)+    writeSTRef (snd sched) threads+    return $ threads ++completingN :: FrGraph -> AttrAssRef s -> Nt -> +                    ST s ((String, IM.IntMap [Vertex]))+completingN ids@(idsf, idst) schedA+                (Nt nt_id _ _ inhs syns _) = do+    schedS <- newSTRef IM.empty+    let attrs = inhs ++ syns+        dty = TyData nt_id+        assign (attr,_,dAttr) = do+         let succs = idsf A.! attr+         assigned <- freeze schedA+         when (isNothing $ assigned A.! attr) $ do+           case IS.toList succs of +             [] ->wrap_up attr(if Syn==dAttr then 1 else 2)+             ss ->case selMax $ map (id&&&(assigned A.!)) ss of+                      Nothing -> return ()+                      Just (a,mx) -> do+                          let dA | even mx   = Inh+                                 | otherwise = Syn+                          wrap_up attr (if dA == dAttr +                                          then mx else mx+1)+        wrap_up attr k = do+         modifySTRef schedS (IM.insertWith (++) k [attr])+         writeArray schedA attr (Just k)+         forM_ attrs assign+        selMax :: [(Vertex, Maybe Int)] -> Maybe (Vertex, Int)+        selMax [(v,mi)] = fmap ((,) v) mi+        selMax (x:xs)  = case x of +                          (a', Nothing) -> Nothing+                          (a', Just i') -> +                            case selMax xs of +                             Nothing -> Nothing+                             Just (a,i)  -> +                                case compare i i' of+                                 LT -> Just (a',i')+                                 _  -> Just (a,i)+    --make sure all are assigned+    case attrs of+      [] -> return (nt_id, IM.fromList [(1,[]),(2,[])])+      as -> forM_ as assign >> readSTRef schedS >>= return . ((,) nt_id)++fetchEdges :: FrGraph -> InterfaceRes -> [Nt] -> ([Edge],[Edge])+fetchEdges ids threads nts =+    let ivdNs = map (fetchEdgesN ids threads) nts+    in (concat *** concat) $ unzip ivdNs++fetchEdgesN :: FrGraph -> InterfaceRes -> Nt+                    -> ([Edge],[Edge])+fetchEdgesN (idsf, idst) threads +        (Nt nt_id _ _ _ _ _) =+    let sched = findWithErr threads "schedule err" nt_id+        mx    = if IM.null sched then 0 else fst $ IM.findMax sched+        findK 0 = []+        findK k = (maybe [] id $ IM.lookup k sched) ++ findK (k-1)+        ivd =  [ (f,t) | k <- [2..mx]+                   , f <- maybe [] id $ IM.lookup k sched+                   , t <- findK (k-1)]+     in (ivd, [ (f, t) | (f, t) <- ivd+                          , not $ IS.member t (idsf A.! f) ])++instance Show MyType where+    show TyInt        = "Int"+    show TyBool       = "Bool"+    show TyString     = "String"+    show (TyData t)   = t+    show (TyLit t)    = show t+    show (TyArr a b)  = show a ++ " -> (" ++ show b ++ ")" +    show NoType       = error "Trying to show NoType"+    show AnyType      = "AnyType"++-- | Instance for Eq and Ord are required to make sure that AnyType+-- | Equals every other type in every other situation+instance Eq MyType where+    TyInt       == TyInt        = True+    TyBool      == TyBool       = True+    TyString    == TyString     = True+    TyData n    == TyData n'    = n == n'+    TyLit ty    == TyLit ty'    = ty == ty'+    TyArr l r   == TyArr l' r'  = l == l' && r == r'+    NoType      == _            = False+    _           == NoType       = False+    AnyType     == _            = True+    _           == AnyType      = True+    _           == _            = False++instance Ord MyType where+    NoType `compare` _          = LT+    _   `compare` NoType        = GT+    AnyType `compare` _         = EQ+    _   `compare` AnyType       = EQ+    TyInt `compare` TyInt       = EQ+    TyInt `compare` _           = LT+    TyBool `compare` TyInt      = GT+    TyBool `compare` TyBool     = EQ+    TyBool `compare` _          = LT+    TyString `compare` TyInt    = GT+    TyString `compare` TyBool   = GT+    TyString `compare` TyString = EQ+    TyString `compare` _        = LT+    TyData _ `compare` TyInt    = GT+    TyData _ `compare` TyBool   = GT+    TyData _ `compare` TyString = GT+    TyData a `compare` TyData b = compare a b+    TyData _ `compare` _        = LT+    TyLit  a `compare` TyLit b  = compare a b+    TyLit  _ `compare` TyArr _ _= LT    +    TyLit  _ `compare` _        = GT+    TyArr a a' `compare` TyArr b b' = +        case compare a b of+            LT -> LT+            GT -> GT+            EQ -> compare a' b'+    TyArr _ _ `compare` _       = GT+
+ src/LOAG/Graphs.hs view
@@ -0,0 +1,161 @@+module LOAG.Graphs where++import Control.Monad.Trans (lift, MonadTrans(..))+import Control.Monad (forM, forM_)+import Control.Monad.ST+import Control.Monad.State+import CommonTypes+import Data.STRef+import Data.Maybe (catMaybes, isNothing, fromJust)+import Data.Tuple (swap)+import qualified Data.Array as A+import           Data.Array.IArray (amap)+import qualified Data.IntMap as IM+import qualified Data.IntSet as IS+import qualified Data.Map as M+import qualified Data.Set as S+import Data.Array.MArray (mapArray)+import Data.Array.ST++type Schedule   = (A.Array Vertex (Maybe Int), A.Array Int [Vertex])+type Vertex     = Int+type Cycle      = IS.IntSet+type Vertices   = IS.IntSet+type Edge       = (Vertex, Vertex)+type Edges      = S.Set Edge+-- Maps that are suitable for Graphs (from 1 node to a set of nodes)+type Graph s    = (DirGraphRef s, DirGraphRef s)+-- | Frozen version of a graph+type FrGraph    = (DirGraph, DirGraph)+type DirGraph   = A.Array Vertex Vertices+type DirGraphRef s = STArray s Vertex Vertices++-- |----------------------------------------------------------------------+-- | Functions for changing the state within AOAG+-- |  possibly catching errors from creating cycles++addEDs :: (MonadTrans m, MonadState s (m (ST s))) => Graph s -> +            [Edge] -> (m (ST s)) (Maybe (Edge, Cycle))+addEDs _ [] = return Nothing+addEDs edp (e:es) = do+    res <- e `inserT` edp+    case res of+        Right _ -> addEDs edp es+        Left c  -> return $ Just (e,c)+       +-- | Draws an edge from one node to another, by adding the latter to the+--    node set of the first+insErt :: (MonadTrans m, MonadState s (m (ST s))) => Edge -> Graph s -> +            (m (ST s)) ()+insErt (f, t) g@(ft,tf) = do +    ts <- lift (readArray ft f)+    fs <- lift (readArray tf t)+    lift (writeArray ft f (t `IS.insert` ts))+    lift (writeArray tf t (f `IS.insert` fs))++removE :: (MonadTrans m, MonadState s (m (ST s))) => Edge -> Graph s -> +            (m (ST s)) ()+removE e@(f,t) g@(ft,tf) = do +    ts <- lift (readArray ft f)+    fs <- lift (readArray tf t)+    lift (writeArray ft f (t `IS.delete` ts))+    lift (writeArray tf t (f `IS.delete` fs))+++-- | Revert an edge in the graph+revErt :: (MonadTrans m, MonadState s (m (ST s))) => Edge -> Graph s -> +            (m (ST s)) ()+revErt e g = do+    present <- member e g+    when present $ removE e g >> insErt (swap e) g++-- | Assuming the given graph is already transitively closed, and+-- |    not cyclic, insert an +-- |    edge such that the graph maintains transitively closed.+-- |    returns the cycle if this results in a cycle or returns a pair+-- |    (graph, edges) if not. Where graph is the new Graph and +-- |    edges represent the edges that were required for transitively+-- |    closing the graph.+inserT :: (MonadTrans m, MonadState s (m (ST s))) => Edge -> Graph s -> +            (m (ST s)) (Either Cycle [Edge])+inserT e@(f, t) g@(gft,gtf)+    | f == t     = return $ Left $ IS.singleton f+    | otherwise  = do+        present <- member e g+        if present +         then (return $ Right [])+         else do+          pointsToF <- lift (readArray gtf f)+          pointsToT <- lift (readArray gtf t)+          tPointsTo <- lift (readArray gft t)+          let new2t = pointsToF IS.\\ pointsToT+          -- extras from f connects all new nodes pointing to f with t+          let extraF = IS.foldl' (\acc tf -> (tf,t) : acc) [] new2t+          -- extras of t connects all nodes that will be pointing to t+          -- in the new graph, with all the nodes t points to in the+          -- current graph+          all2tPointsTo <- lift (newSTRef [])+          forM_ (IS.toList tPointsTo) $ \ft -> do+            current  <- lift (readSTRef all2tPointsTo)+            existing <- lift (readArray gtf ft)+            let new4ft = map (flip (,) ft) $ IS.toList $ +                            (f `IS.insert` pointsToF) IS.\\ existing+            lift (writeSTRef all2tPointsTo $ current ++ new4ft)+                  +          extraT <- lift (readSTRef all2tPointsTo)            +        -- the extras consists of extras from f and extras from t+        -- both these extra sets dont contain edges if they are already +        -- present in the old graph+          let extra  = extraF ++ extraT+          mapM_ (`insErt` g) (e : extra) +        -- the new graph contains a cycle if there is a self-edge+        -- this cycle will contain both f and t+          cyclic <- member (f,f) g+          if cyclic+           then do+            cycle <- getCycle gft+            return $ Left cycle+           else return $ Right extra+        +       where+        -- given that there is a cycle,all elements of this cycle are being+        -- pointed at by f. However, not all elements that f points to are +        -- part of the cycle. Only those that point back to f.+        getCycle :: (MonadTrans m, MonadState s (m (ST s))) => +                        STArray s Vertex Vertices -> (m (ST s)) Cycle+        getCycle gft = do+            ts <- lift (readArray gft f)+            mnodes <- forM (IS.toList ts) $ \t' -> do+                fs' <- lift (readArray gft t')+                if f `IS.member` fs'+                 then return $ Just t'+                 else return $ Nothing+            return $ IS.fromList $ catMaybes mnodes++-- | Check if a certain edge is part of a graph which means that,+-- |  the receiving node must be in the node set of the sending+member :: (MonadTrans m, MonadState s (m (ST s))) => Edge -> Graph s -> +            (m (ST s)) Bool+member (f, t) (ft, tf) = do+    ts <- lift (readArray ft f)+    return $ IS.member t ts++-- | Check whether an edge is part of a frozen graph+fr_member :: FrGraph -> Edge -> Bool+fr_member (ft, tf) (f, t) = IS.member t (ft A.! f)++-- | Flatten a graph, meaning that we transform this graph to +-- |  a set of Edges by combining a sending node with all the+-- |  receiving nodes in its node set+flatten :: (MonadTrans m, MonadState s (m (ST s))) => Graph s -> (m (ST s)) Edges +flatten (gft, _) = do+    list <- lift (getAssocs gft)+    return $ S.fromList $ concatMap +                (\(f, ts) -> map ((,) f) $ IS.toList ts) list++freeze_graph :: (MonadTrans m, MonadState s (m (ST s))) => +                    Graph s -> (m (ST s)) FrGraph+freeze_graph (mf, mt) = do+    fr_f <- lift (freeze mf)+    fr_t <- lift (freeze mt)+    return (fr_f, fr_t)
+ src/LOAG/Optimise.hs view
@@ -0,0 +1,300 @@++module LOAG.Optimise where++import LOAG.Common+import LOAG.Graphs+import LOAG.Solver.MiniSat++import              Control.Arrow ((&&&))+import              Control.Monad (forM, forM_, when, foldM)+import              Control.Monad.ST+import              Data.Array.MArray+import              Data.Array.IO+import              Data.Function (on)+import qualified    Data.IntMap as IM+import qualified    Data.IntSet as IS+import qualified    Data.Map    as M+import              Data.Maybe  (fromJust, isJust)+import              Data.List   (intercalate, sort, sortBy)++type Opts = [Opt]+data Opt= Smaller    (Vertex) (Vertex) -- x < y +        | Greater    (Vertex) (Vertex) -- x > y+        | AllSmaller (Vertex) Direction          -- _ < x+        | AllGreater (Vertex) Direction          -- _ > x+        | MinVisits+  deriving (Ord, Eq)++instance Show Opt where+    show (Smaller f t)      = show f ++ " --> " ++ show t+    show (Greater f t)      = show f ++ " <-- " ++ show t+    show (AllSmaller f _)   = " _ --> " ++ show f+    show (AllGreater f _)   = " _ <-- " ++ show f+    show MinVisits          = " Minimising #visits "+++optimise :: Sat -> VarMap -> Opts -> (Int,Int) -> [Nt] -> InterfaceRes -> IO ()+optimise sat varMap opts nbounds nts interfaces = do +    let scheduler = newSchedule sat varMap nbounds+    mapM_ (singleOpt sat varMap scheduler nts interfaces) (sort opts)+    b <- satsolve sat []+    return ()++-- | Given a non-terminal and a current best schedule+--     return a new best schedule and whether the new schedule is truely new+type SchedulerNt = Nt -> IM.IntMap [Vertex] -> IO (Bool, IM.IntMap [Vertex])+type Scheduler   = IM.IntMap [Vertex] -> IO (Bool, IM.IntMap [Vertex])++singleOpt :: Sat -> VarMap -> SchedulerNt -> [Nt] -> InterfaceRes -> Opt -> +                IO ()+singleOpt sat varMap scheduler nts interfaces opt = do+    success <- +      case opt of +        Smaller f t     -> tryPair sat $ varOf f t +        Greater f t     -> tryPair sat $ varOf t f+        AllSmaller f d  -> trySingle sat False f d varMap+        AllGreater f d  -> trySingle sat True f d varMap+        MinVisits -> do mapM_ (minPaths sat varMap scheduler interfaces) $ +                          sortNfilter weigh nts+                        return True+    return ()+ where weigh (Nt _ _ _ is ss _) = size+        where size = length is + length ss+       varOf f t = case M.lookup (f,t) varMap of+                    Just v  -> v+                    Nothing -> case M.lookup (t,f) varMap of+                                Just v  -> varnot v+                                Nothing -> error "invalid optimisation.."++sortNfilter :: (a -> Int) -> [a] -> [a]+sortNfilter f = +    map fst . sortBy (on compare snd) . +                  filter (((/=) 0) . snd) . map (id &&& f)++minPaths :: Sat -> VarMap -> SchedulerNt -> InterfaceRes -> Nt -> IO Bool +minPaths sat varMap scheduler interfaces tp@(Nt nt _ _ is ss _) = do+    forM_ neckCs $ attemptGroup sat (scheduler tp) mym . map varnot+    return True + where  neckCs= map (\(_,es,b) -> map (uncurry (mvar b)) es) $ +                    bottlenecks mx mym+        mvar b f t | b       = varMap M.! (f,t)+                   | not b   = varnot $ varMap M.! (t,f)+        mym   = interfaces M.! nt+        mx    | IM.null mym = 0+              | otherwise   = fst $ IM.findMax mym++bottlenecks :: Int -> IM.IntMap [Vertex] -> +                [(((Int,[Vertex]),(Int,[Vertex])),[Edge],Bool)]+bottlenecks x shd = +    sortNfilter cost $ pairs x+ where  pairs x | x <= 1 = []+                | x >  1 = let pair = ((x,maybe [] id $ IM.lookup x shd)+                                      ,(x-1,maybe [] id$IM.lookup (x-1) shd))+                           in (pair,edges pair,even x) : pairs (x-1)+        cost (((p1,p1s),(p2,p2s)),es,_) = size +         where size = length es +        edges ((p1,p1s),(p2,p2s)) = [ (f,t) | f <- p1s, t <- p2s ] ++-- | get all combinations of partitions from different `directions'+--      ordered by distance (shortest paths first)+edgeCombs :: Int -> IM.IntMap [Vertex] -> [(Int,Int)]+edgeCombs x shd = +    sortBy (on compare cost) $+        concat $+        takeWhile (not . null) $+        map (\(n,es) -> filter ((>0) . snd) +            (map (\(f,t) -> (f+n,t+n)) es)) $+        zip [-0,-1..] $+        repeat (map ((,) x) [x-1,x-3..1])+ where cost (x1,x2) = length $ findK (x1 -1)+        where findK n | n < x2  = []+                      | n >= x2 = (shd IM.! n) ++ findK (n-2)++tryPair :: Sat -> MyVar -> IO Bool +tryPair sat p = do+    b  <- satsolve sat [p]+    if b then addClause sat [p]+         else return False++attemptGroup :: Sat -> Scheduler -> IM.IntMap [Vertex] -> [MyVar] -> +                        IO (IM.IntMap [Vertex])+attemptGroup sat scheduler interfaces = +    tryGroup sat scheduler interfaces . filter notSet + where  notSet (Var _)      = True+        notSet (VarNot v)   = notSet v+        notSet _            = False++tryGroup :: Sat -> Scheduler -> IM.IntMap [Vertex] -> [MyVar] -> +                IO (IM.IntMap [Vertex])+tryGroup _ _ interfaces []           = return interfaces+tryGroup sat scheduler interfaces ps = do+    xs  <- mapM (const (newLit sat)) ps+    mapM (\(a,r) -> addClause sat [varnot a, r]) $ zip xs ps+    b  <- satsolve sat xs+    let success = assertVars sat xs+        fail    = assertVars sat (map varnot (xs++ps)) >> satsolve sat []+    if b then do    (improved, sched) <- scheduler interfaces+                    if improved +                        then success >> return sched+                        else fail    >> return interfaces +         else fail >> return interfaces++assertVars :: Sat -> [MyVar] -> IO ()+assertVars sat vars = do    bs <- mapM (addClause sat . (:[])) vars+                            return ()+ +trySingle :: Sat -> Bool -> Vertex -> Direction -> VarMap -> IO Bool+trySingle sat des f dir varMap = do+        vars <- tryExtreme sat des literals+        assertVars sat vars+        return True+ where  literals = M.foldWithKey select [] varMap+        select k a b | fst k == f = a : b --inh+                     | snd k == f = varnot a : b --syn+                     | otherwise  = b++tryExtreme :: Sat -> Bool -> [MyVar] -> IO [MyVar]+tryExtreme sat des xs =+  do a <- newLit sat+     switch <- newLit sat+     let try xs =+           do --putStrLn ("currently, " ++ show (length xs) ++ " literals")+              let assertOne | des       = map varnot (a : xs)+                            | otherwise = varnot a : xs+              addClause sat assertOne --"if a, then one of xs must be ~des"+              b <- satsolve sat [a]+              if b then+                do xbs <- sequence [ do v <- value sat x+                                        return (x,v)+                                   | x <- xs+                                   ]+                   sequence_ [ do let desx | des        = x+                                           | otherwise  = varnot x+                                  addClause sat [varnot a, desx] +                                  addClause sat [varnot switch, desx]+                             | (x,b) <- xbs, b /= Just des ]+                   try [ x | (x,Just des) <- xbs ]+               else do  addClause sat [varnot a]+                        return [switch]+      in try xs++-- | Recalculate interface based on SAT and compare with a given one+newSchedule :: Sat -> VarMap -> (Int,Int) -> Nt -> IM.IntMap [Vertex] ->+                IO (Bool, IM.IntMap [Vertex])+newSchedule sat varMap nbounds tp@(Nt nt _ _ inhs outs _ ) sched = do+    idsf <- newArray nbounds IS.empty :: IO (IOArray Vertex Vertices)+    idst <- newArray nbounds IS.empty :: IO (IOArray Vertex Vertices)+    let ids = (idsf,idst)+    sequence_ [ do  v <- value sat pred+                    case v of+                      Nothing -> error "no val"+                      Just True -> addEdges (i,s) ids +                      Just False-> addEdges (s,i) ids+            | (i,ios,_) <- inhs+            , (s,sos,_) <- outs+            , let pred = varMap M.! (i,s)+            ]+    f_idsf <- freeze idsf+    f_idst <- freeze idst+    let (_,newinterface) = runST $ do   schedA <- newArray nbounds Nothing+                                        completingN (f_idsf,f_idst) schedA tp+        newmx | IM.null newinterface = 0+              | otherwise            = fst $ IM.findMax newinterface+        oldmx | IM.null sched        = 0+              | otherwise            = fst $ IM.findMax sched +        newsched | newmx < oldmx = newinterface+                 | otherwise     = sched+    return $ (newmx < oldmx, newsched)+ where  addEdges (f,t) (idsf,idst) = do+            modifyArray idsf f (t `IS.insert`)+            modifyArray idst t (f `IS.insert`)+ +-- | count the (max, avg, total) number of visits+getVisCount :: [Nt] -> InterfaceRes -> VisCount+getVisCount nts interfaces = +    (mx, tot, (fromIntegral tot) / (fromIntegral $ length nts))+ where  count (mx,tot) (Nt nt _ _ _ _ _) = (max mx k,tot + k)+         where m = interfaces M.! nt+               k | IM.null m = 0+                 | otherwise = ((fst $ IM.findMax m) + 1) `div` 2+        (mx, tot) = foldl count (0,0) nts+--- minimisation functions+-------------------------------------------------------------------------------++globalMinimum :: Sat -> Bool -> [MyVar] -> IO [MyVar]+globalMinimum sat des xs =+  do ys <- sort sat xs+     let mini (i,j) | i >= j = return []+         mini (i,j) = do    putStrLn ("trying " ++ show (i,j))+                            b <- satsolve sat [varnot (ys !! k)]+                            if b then mini (k+1,j)+                                 else mini (i,k)+          where+           k = (i+j) `div` 2+      in mini (0,length ys)+     xbs <- sequence [ do v <- value sat x+                          return (x,v)+                     | x <- xs+                     ]+     return [ x | (x,Just True) <- xbs ]+ where+  sort sat []  = do return []+  sort sat [x] = do return [x]+  sort sat xs  = do as <- sort sat (take k xs)+                    bs <- sort sat (drop k xs)+                    map fromJust `fmap` merge (map Just as) (map Just bs)+   where+    k = length xs `div` 2++  merge2 Nothing b = return (b, Nothing)+  merge2 a Nothing = return (a, Nothing)+  merge2 (Just x) (Just y) =+    do a <- newLit sat+       b <- newLit sat+       addClause sat [varnot x, b]         -- x => b+       addClause sat [varnot y, b]         -- y => b+       addClause sat [varnot x, varnot y, a]  -- x => ~y || a+       addClause sat [x, varnot a]         -- ~x => ~a+       addClause sat [y, varnot a]         -- ~y => ~a+       addClause sat [x, y, varnot b]      -- ~x => y || ~b+       return (Just a,Just b)+  +  merge []  bs  = return bs+  merge as  []  = return as+  merge [a] [b] = (\(a,b) -> [a,b]) `fmap` merge2 a b+  merge as  bs  = take (a+b) `fmap` merge' (as ++ xas) (bs ++ xbs)+   where+    a   = length as+    b   = length bs+    m   = a `max` b+    n   = if even m then m else m+1+    xas = replicate (n-a) Nothing+    xbs = replicate (n-b) Nothing+  +  -- pre: as and bs have the same, even length+  merge' as bs =+    do xs <- merge eas ebs+       ys <- merge oas obs+       let x:xys = weave xs ys+       xys' <- sequence [ merge2 a b | (a,b) <- pairs xys ]+       return (x : unpairs xys' ++ [last xys])+   where+    (eas,oas) = evenOdds as+    (ebs,obs) = evenOdds bs++  evenOdds []       = ([], [])+  evenOdds [x]      = ([x], [])+  evenOdds (x:y:xs) = (x:es,y:os)+   where+    (es,os) = evenOdds xs++  pairs (x:y:xs) = (x,y) : pairs xs+  pairs _        = []+  +  unpairs ((x,y):xys) = x : y : unpairs xys+  unpairs []          = []+  +  weave (x:xs) (y:ys) = x : y : weave xs ys+  weave xs     ys     = xs ++ ys++------------------------------------------------------------------------------
+ src/LOAG/Result.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE FlexibleInstances #-}++-- Module for containing results in LOAG tests+module LOAG.Result where++import Control.Applicative+import Control.Monad (liftM, ap, MonadPlus(..))+import Control.Monad.Trans (lift, MonadTrans(..))+import Control.Monad.State (MonadState(..))+import Control.Monad.ST+import ErrorMessages as Err++import LOAG.Graphs++type LOAG s a = ResultT (ST s) a++data Result a = Give  a     +                -- the edge that caused the cyclep of ctype +              | Cycle Edge Cycle CType+              | Limit+              | NotLOAG+    deriving (Show)            ++fromGive :: Result a -> a+fromGive (Give a) = a+fromGive _        = error "fromGive"++data CType = T1 | T2 +           | T3 [Edge] -- completing edges from which to select candidates+    deriving (Show)+-- | Inspired by ErrorT+newtype ResultT m a = Result { runResult :: m (Result a) }++instance Monad m => Functor (ResultT m) where+  fmap = liftM++instance Monad m => Applicative (ResultT m) where+  pure  = return+  (<*>) = ap++instance (Monad m) => Monad (ResultT m) where+    return               = Result . return . Give+    (>>=) rt f = Result $ do+        ma <- runResult rt+        case ma of +            Give a      -> runResult (f a)+            Cycle e c t -> return $ Cycle e c t +            Limit       -> return $ Limit+            NotLOAG     -> return $ NotLOAG++instance MonadTrans ResultT where+    lift m = Result $ m >>= return . Give+instance MonadState s (ResultT (ST s)) where+    get = get+    put = put++instance Monad m => Alternative (ResultT m) where+    (<|>) = mplus+    empty = mzero++instance (Monad m) => MonadPlus (ResultT m) where+    mzero = Result $ return NotLOAG+    mplus a b = Result $ do+        ma <- runResult a +        case ma of+            Give a  -> return $ Give a+            f       -> do   mb <- runResult b+                            case mb of +                              Give b  -> return $ Give b+                              _       -> return f++-- | Return an error (from detecting a cycle) in the ResultT monad+throwCycle :: (Monad m) => Edge -> Cycle -> CType -> ResultT m a+throwCycle e c t = Result $ return $ Cycle e c t++throwNotLOAG :: (Monad m) => ResultT m a+throwNotLOAG = Result $ return NotLOAG
+ src/LOAG/Solver/MiniSat.hs view
@@ -0,0 +1,94 @@++module LOAG.Solver.MiniSat ( +    newSolvable,-- IO SatContainer +    newLit,     -- Sat -> IO MyVar+    satValues,  -- Sat -> IO (Int, Int)+    addClause,  -- Sat -> [MyVar] -> IO ()+    satsolve,   -- Sat -> IO Bool+    value,      -- Sat -> IO (Maybe Bool)+    fixed,       -- Sat -> IO Bool+    MyVar(..),+    Sat,+    varnot,+    VarMap,+    Mini.conflict+    ) where++import LOAG.Graphs+import Control.Monad+import Data.Maybe+import qualified Data.Map as M+import qualified MiniSat as Mini++type Sat = Mini.Solver+type VarMap = M.Map Edge MyVar++data MyVar = Var Mini.Lit +           | VarTrue+           | VarFalse+           | VarNot MyVar+    deriving (Show, Eq)++varnot :: MyVar -> MyVar+varnot v@(Var i) = Var (Mini.neg i)+varnot (VarNot v)= v+varnot VarFalse  = VarTrue+varnot VarTrue   = VarFalse+++newSolvable :: IO Mini.Solver+newSolvable = do    sat <-  Mini.newSolver+                    Mini.eliminate sat True+                    return sat++newLit      :: Sat -> IO MyVar+newLit sat =+ do p <- Mini.newLit sat+    return (Var (Mini.neg p))++satValues   :: Sat -> IO (Int,Int)+satValues sat = +    do  v <- Mini.minisat_num_vars sat+        p <- Mini.minisat_num_clauses sat+        return (v,p)++addClause   :: Sat -> [MyVar] -> IO Bool+addClause sat [] = return True +addClause sat es = do+    if satisfied+      then return True+      else case fes of+             []  -> error "unsatisfiable"+             fes -> Mini.addClause sat $ map toMini fes+ where  +        satisfied = any (True ==?) es+        fes       = filter (not . (False ==?)) es+        b ==? v = case v of +                    VarTrue  -> b+                    VarFalse -> not b+                    _       -> False+        toMini :: MyVar -> Mini.Lit+        toMini (Var v)    = v+        toMini (VarNot v) = Mini.neg (toMini v)+        _                 = error "incorrect clause filtering"++satsolve :: Sat -> [MyVar] -> IO Bool+satsolve sat = Mini.solve sat . map extract++extract :: MyVar -> Mini.Lit+extract VarTrue     = error "cannot extract True"+extract VarFalse    = error "cannot extract False"+extract (VarNot v)  = Mini.neg (extract v)+extract (Var l)     = l++value :: Sat -> MyVar -> IO (Maybe Bool)+value _ VarTrue     = return $ Just True+value _ VarFalse    = return $ Just False+value sat (VarNot v)  = value sat v >>= return . fmap not+value sat (Var v)     = Mini.modelValue sat v++fixed :: Sat -> MyVar -> IO Bool+fixed _ VarTrue     = return $ True+fixed _ VarFalse    = return $ True +fixed sat (VarNot v)= fixed sat v+fixed sat (Var l)   = Mini.value sat l >>= return . isJust
uuagc.cabal view
@@ -1,7 +1,7 @@ cabal-version: >= 1.8 build-type: Custom name: uuagc-version: 0.9.50.2+version: 0.9.51 license: BSD3 license-file: LICENSE maintainer: Jeroen Bransen <J.Bransen@uu.nl>@@ -25,17 +25,26 @@    default: False    manual: True +flag with-loag+   description: Use MiniSat as external SAT-solver to schedule all Linear Ordered AGs+   default: False+   manual: True++ executable uuagc    build-depends: uuagc-cabal >= 1.0.2.0    build-depends: base >= 4, base < 5    -- Self dependency, depend on library below-   build-depends: uuagc == 0.9.50.2+   build-depends: uuagc == 0.9.51    main-is: Main.hs    hs-source-dirs: src-main  library    build-depends: uuagc-cabal >= 1.0.2.0    build-depends: base >= 4, base < 5, ghc-prim >= 0.2.0.0+   if flag(with-loag)+      build-depends: minisat+      cpp-options: -DWITH_LOAG    build-depends: containers >= 0.3, directory >= 1.0.1.1, array >= 0.3.0.1    build-depends: uulib >= 0.9.14, mtl >= 1.1.1.1    build-depends: haskell-src-exts >= 1.11.1@@ -100,3 +109,12 @@     , ExecutionPlan2Hs     , ExecutionPlan2Clean     , ExecutionPlan2Caml+    , LOAG.AOAG+    , LOAG.Chordal+    , LOAG.Common+    , LOAG.Graphs+    , LOAG.Order+    , LOAG.Rep+    , LOAG.Result+   if flag(with-loag)+      other-modules: LOAG.Solver.MiniSat, LOAG.Optimise
uuagc_options view
@@ -37,6 +37,14 @@ file: "src-ag/ExecutionPlan.ag" options: module, pretty, data, genlinepragmas, checkParseHaskell +file: "src-ag/LOAG/Order.ag"+options: module, pretty, checkParseHaskell, self, wrappers, signatures, catas, semfuns, genlinepragmas, kennedywarren ++file: "src-ag/LOAG/Prepare.ag"+options: module, pretty, checkParseHaskell, self, wrappers, signatures, catas, semfuns, genlinepragmas, kennedywarren ++file: "src-ag/LOAG/Rep.ag"+options: module, pretty, checkParseHaskell, self, datarecords, data, optimize  file: "src-ag/Macro.ag" options: module, pretty, data, genlinepragmas, checkParseHaskell