-- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/Expli)
module UHC.Light.Compiler.Core.Trf.ExplicitStackTrace(cmodTrfExplicitStackTrace) where

import UHC.Light.Compiler.Base.HsName.Builtin
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Opts
import UHC.Light.Compiler.Core
import UHC.Light.Compiler.Ty
import UHC.Light.Compiler.LamInfo
import UHC.Light.Compiler.AbstractCore
import Data.Maybe
import qualified Data.Map as Map











cmodTrfExplicitStackTrace :: EHCOpts -> LamMp -> CModule -> (CModule,LamMp)
cmodTrfExplicitStackTrace opts lamMp cmod
  =  let  t = wrap_CodeAGItf (sem_CodeAGItf (CodeAGItf_AGItf cmod))
                             (Inh_CodeAGItf
                               { opts_Inh_CodeAGItf = opts
                               , lamMp_Inh_CodeAGItf = lamMp
                               })
     in   ( cTrf_Syn_CodeAGItf t
          , debugLamMp_Syn_CodeAGItf t `Map.union`
            gathLamMp_Syn_CodeAGItf  t
            -- [ | (n,) <- debugLamMp_Syn_CodeAGItf t ]
          )



mbStackTrace :: EHCOpts -> Bool -> HsName -> StackTraceInfo
mbStackTrace opts isCand nm
  | isCand && ehcOptTargetFlavor opts == TargetFlavor_Debug
              = StackTraceInfo_HasStackTraceEquiv (hsnSuffix nm "-$explstacktraced")
  | otherwise = StackTraceInfo_None

-- CAlt --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         evalCtx              : EvalCtx
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CAlt 
         debugLamMp           : LamMp
   alternatives:
      alternative Alt:
         child pat            : CPat 
         child expr           : CExpr 
         visit 0:
            local whatAbove   : {WhatExpr}
            local lev         : _
            local cTrf        : _
-}
-- cata
sem_CAlt :: CAlt ->
            T_CAlt
sem_CAlt (CAlt_Alt _pat _expr) =
    (sem_CAlt_Alt (sem_CPat _pat) (sem_CExpr _expr))
-- semantic domain
type T_CAlt = EvalCtx ->
              LamMp ->
              Int ->
              (Maybe HsName) ->
              EHCOpts ->
              Int ->
              ( CAlt,LamMp,Int)
sem_CAlt_Alt :: T_CPat ->
                T_CExpr ->
                T_CAlt
sem_CAlt_Alt pat_ expr_ =
    (\ _lhsIevalCtx
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CAlt
              _lhsOuniq :: Int
              _patOlamMp :: LamMp
              _patOlev :: Int
              _patOmbInStackTraceCtxt :: (Maybe HsName)
              _patOopts :: EHCOpts
              _patOuniq :: Int
              _exprOevalCtx :: EvalCtx
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _patIcTrf :: CPat
              _patIdebugLamMp :: LamMp
              _patIfldNmL :: ([HsName])
              _patIuniq :: Int
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 45, column 17)
              _exprOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 45, column 17)
              _exprOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 87, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLevAlt.ag"(line 2, column 17)
              _lev =
                  _lhsIlev + 1
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _patIdebugLamMp `Map.union` _exprIdebugLamMp
              -- self rule
              _cTrf =
                  CAlt_Alt _patIcTrf _exprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _exprIuniq
              -- copy rule (down)
              _patOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _patOlev =
                  _lev
              -- copy rule (down)
              _patOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _patOopts =
                  _lhsIopts
              -- copy rule (down)
              _patOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _exprOlev =
                  _lev
              -- copy rule (down)
              _exprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _exprOuniq =
                  _patIuniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              ( _patIcTrf,_patIdebugLamMp,_patIfldNmL,_patIuniq) =
                  pat_ _patOlamMp _patOlev _patOmbInStackTraceCtxt _patOopts _patOuniq
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CAltL -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         evalCtx              : EvalCtx
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CAltL 
         debugLamMp           : LamMp
   alternatives:
      alternative Cons:
         child hd             : CAlt 
         child tl             : CAltL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CAltL :: CAltL ->
             T_CAltL
sem_CAltL list =
    (Prelude.foldr sem_CAltL_Cons sem_CAltL_Nil (Prelude.map sem_CAlt list))
-- semantic domain
type T_CAltL = EvalCtx ->
               LamMp ->
               Int ->
               (Maybe HsName) ->
               EHCOpts ->
               Int ->
               ( CAltL,LamMp,Int)
sem_CAltL_Cons :: T_CAlt ->
                  T_CAltL ->
                  T_CAltL
sem_CAltL_Cons hd_ tl_ =
    (\ _lhsIevalCtx
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CAltL
              _lhsOuniq :: Int
              _hdOevalCtx :: EvalCtx
              _hdOlamMp :: LamMp
              _hdOlev :: Int
              _hdOmbInStackTraceCtxt :: (Maybe HsName)
              _hdOopts :: EHCOpts
              _hdOuniq :: Int
              _tlOevalCtx :: EvalCtx
              _tlOlamMp :: LamMp
              _tlOlev :: Int
              _tlOmbInStackTraceCtxt :: (Maybe HsName)
              _tlOopts :: EHCOpts
              _tlOuniq :: Int
              _hdIcTrf :: CAlt
              _hdIdebugLamMp :: LamMp
              _hdIuniq :: Int
              _tlIcTrf :: CAltL
              _tlIdebugLamMp :: LamMp
              _tlIuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _hdIdebugLamMp `Map.union` _tlIdebugLamMp
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _tlIuniq
              -- copy rule (down)
              _hdOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _tlOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOuniq =
                  _hdIuniq
              ( _hdIcTrf,_hdIdebugLamMp,_hdIuniq) =
                  hd_ _hdOevalCtx _hdOlamMp _hdOlev _hdOmbInStackTraceCtxt _hdOopts _hdOuniq
              ( _tlIcTrf,_tlIdebugLamMp,_tlIuniq) =
                  tl_ _tlOevalCtx _tlOlamMp _tlOlev _tlOmbInStackTraceCtxt _tlOopts _tlOuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CAltL_Nil :: T_CAltL
sem_CAltL_Nil =
    (\ _lhsIevalCtx
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CAltL
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CBind -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         evalCtx              : EvalCtx
         isGlobal             : Bool
         lamMp                : LamMp
         letBindingsCateg     : CBindCateg
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         bindCTrfL            : [CBind]
         bindLamMp            : LamMp
         cTrf                 : CBind 
         debugLamMp           : LamMp
         nm                   : HsName
   alternatives:
      alternative Bind:
         child nm             : {HsName}
         child bindAspects    : CBoundL 
         visit 0:
            local cTrf        : {CBind}
-}
-- cata
sem_CBind :: CBind ->
             T_CBind
sem_CBind (CBind_Bind _nm _bindAspects) =
    (sem_CBind_Bind _nm (sem_CBoundL _bindAspects))
-- semantic domain
type T_CBind = EvalCtx ->
               Bool ->
               LamMp ->
               CBindCateg ->
               Int ->
               (Maybe HsName) ->
               EHCOpts ->
               Int ->
               ( ([CBind]),LamMp,CBind,LamMp,HsName,Int)
sem_CBind_Bind :: HsName ->
                  T_CBoundL ->
                  T_CBind
sem_CBind_Bind nm_ bindAspects_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _bindAspectsOnm :: HsName
              _lhsOnm :: HsName
              _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _cTrf :: CBind
              _lhsOcTrf :: CBind
              _lhsOuniq :: Int
              _bindAspectsOevalCtx :: EvalCtx
              _bindAspectsOisGlobal :: Bool
              _bindAspectsOlamMp :: LamMp
              _bindAspectsOletBindingsCateg :: CBindCateg
              _bindAspectsOlev :: Int
              _bindAspectsOmbInStackTraceCtxt :: (Maybe HsName)
              _bindAspectsOopts :: EHCOpts
              _bindAspectsOuniq :: Int
              _bindAspectsIbindCTrfL :: ([CBind])
              _bindAspectsIbindLamMp :: LamMp
              _bindAspectsIcTrf :: CBoundL
              _bindAspectsIdebugLamMp :: LamMp
              _bindAspectsIuniq :: Int
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 4, column 17)
              _bindAspectsOnm =
                  nm_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 12, column 17)
              _lhsOnm =
                  nm_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _bindAspectsIbindCTrfL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  _bindAspectsIbindLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _bindAspectsIdebugLamMp
              -- self rule
              _cTrf =
                  CBind_Bind nm_ _bindAspectsIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _bindAspectsIuniq
              -- copy rule (down)
              _bindAspectsOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _bindAspectsOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _bindAspectsOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bindAspectsOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _bindAspectsOlev =
                  _lhsIlev
              -- copy rule (down)
              _bindAspectsOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bindAspectsOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindAspectsOuniq =
                  _lhsIuniq
              ( _bindAspectsIbindCTrfL,_bindAspectsIbindLamMp,_bindAspectsIcTrf,_bindAspectsIdebugLamMp,_bindAspectsIuniq) =
                  bindAspects_ _bindAspectsOevalCtx _bindAspectsOisGlobal _bindAspectsOlamMp _bindAspectsOletBindingsCateg _bindAspectsOlev _bindAspectsOmbInStackTraceCtxt _bindAspectsOnm _bindAspectsOopts _bindAspectsOuniq
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOnm,_lhsOuniq)))
-- CBindAnn ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CBindAnn 
         debugLamMp           : LamMp
   alternatives:
      alternative Coe:
         child coe            : {RelevCoe}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CBindAnn :: CBindAnn ->
                T_CBindAnn
sem_CBindAnn (CBindAnn_Coe _coe) =
    (sem_CBindAnn_Coe _coe)
-- semantic domain
type T_CBindAnn = LamMp ->
                  Int ->
                  (Maybe HsName) ->
                  EHCOpts ->
                  Int ->
                  ( CBindAnn,LamMp,Int)
sem_CBindAnn_Coe :: RelevCoe ->
                    T_CBindAnn
sem_CBindAnn_Coe coe_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CBindAnn
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CBindAnn_Coe coe_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CBindAnnL ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CBindAnnL 
         debugLamMp           : LamMp
   alternatives:
      alternative Cons:
         child hd             : CBindAnn 
         child tl             : CBindAnnL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CBindAnnL :: CBindAnnL ->
                 T_CBindAnnL
sem_CBindAnnL list =
    (Prelude.foldr sem_CBindAnnL_Cons sem_CBindAnnL_Nil (Prelude.map sem_CBindAnn list))
-- semantic domain
type T_CBindAnnL = LamMp ->
                   Int ->
                   (Maybe HsName) ->
                   EHCOpts ->
                   Int ->
                   ( CBindAnnL,LamMp,Int)
sem_CBindAnnL_Cons :: T_CBindAnn ->
                      T_CBindAnnL ->
                      T_CBindAnnL
sem_CBindAnnL_Cons hd_ tl_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CBindAnnL
              _lhsOuniq :: Int
              _hdOlamMp :: LamMp
              _hdOlev :: Int
              _hdOmbInStackTraceCtxt :: (Maybe HsName)
              _hdOopts :: EHCOpts
              _hdOuniq :: Int
              _tlOlamMp :: LamMp
              _tlOlev :: Int
              _tlOmbInStackTraceCtxt :: (Maybe HsName)
              _tlOopts :: EHCOpts
              _tlOuniq :: Int
              _hdIcTrf :: CBindAnn
              _hdIdebugLamMp :: LamMp
              _hdIuniq :: Int
              _tlIcTrf :: CBindAnnL
              _tlIdebugLamMp :: LamMp
              _tlIuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _hdIdebugLamMp `Map.union` _tlIdebugLamMp
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _tlIuniq
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOuniq =
                  _hdIuniq
              ( _hdIcTrf,_hdIdebugLamMp,_hdIuniq) =
                  hd_ _hdOlamMp _hdOlev _hdOmbInStackTraceCtxt _hdOopts _hdOuniq
              ( _tlIcTrf,_tlIdebugLamMp,_tlIuniq) =
                  tl_ _tlOlamMp _tlOlev _tlOmbInStackTraceCtxt _tlOopts _tlOuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CBindAnnL_Nil :: T_CBindAnnL
sem_CBindAnnL_Nil =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CBindAnnL
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CBindL ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         evalCtx              : EvalCtx
         isGlobal             : Bool
         lamMp                : LamMp
         letBindingsCateg     : CBindCateg
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         bindCTrfL            : [CBind]
         bindLamMp            : LamMp
         cTrf                 : CBindL 
         debugLamMp           : LamMp
   alternatives:
      alternative Cons:
         child hd             : CBind 
         child tl             : CBindL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CBindL :: CBindL ->
              T_CBindL
sem_CBindL list =
    (Prelude.foldr sem_CBindL_Cons sem_CBindL_Nil (Prelude.map sem_CBind list))
-- semantic domain
type T_CBindL = EvalCtx ->
                Bool ->
                LamMp ->
                CBindCateg ->
                Int ->
                (Maybe HsName) ->
                EHCOpts ->
                Int ->
                ( ([CBind]),LamMp,CBindL,LamMp,Int)
sem_CBindL_Cons :: T_CBind ->
                   T_CBindL ->
                   T_CBindL
sem_CBindL_Cons hd_ tl_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CBindL
              _lhsOuniq :: Int
              _hdOevalCtx :: EvalCtx
              _hdOisGlobal :: Bool
              _hdOlamMp :: LamMp
              _hdOletBindingsCateg :: CBindCateg
              _hdOlev :: Int
              _hdOmbInStackTraceCtxt :: (Maybe HsName)
              _hdOopts :: EHCOpts
              _hdOuniq :: Int
              _tlOevalCtx :: EvalCtx
              _tlOisGlobal :: Bool
              _tlOlamMp :: LamMp
              _tlOletBindingsCateg :: CBindCateg
              _tlOlev :: Int
              _tlOmbInStackTraceCtxt :: (Maybe HsName)
              _tlOopts :: EHCOpts
              _tlOuniq :: Int
              _hdIbindCTrfL :: ([CBind])
              _hdIbindLamMp :: LamMp
              _hdIcTrf :: CBind
              _hdIdebugLamMp :: LamMp
              _hdInm :: HsName
              _hdIuniq :: Int
              _tlIbindCTrfL :: ([CBind])
              _tlIbindLamMp :: LamMp
              _tlIcTrf :: CBindL
              _tlIdebugLamMp :: LamMp
              _tlIuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _hdIbindCTrfL ++ _tlIbindCTrfL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  _hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _hdIdebugLamMp `Map.union` _tlIdebugLamMp
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _tlIuniq
              -- copy rule (down)
              _hdOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _hdOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _tlOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _tlOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOuniq =
                  _hdIuniq
              ( _hdIbindCTrfL,_hdIbindLamMp,_hdIcTrf,_hdIdebugLamMp,_hdInm,_hdIuniq) =
                  hd_ _hdOevalCtx _hdOisGlobal _hdOlamMp _hdOletBindingsCateg _hdOlev _hdOmbInStackTraceCtxt _hdOopts _hdOuniq
              ( _tlIbindCTrfL,_tlIbindLamMp,_tlIcTrf,_tlIdebugLamMp,_tlIuniq) =
                  tl_ _tlOevalCtx _tlOisGlobal _tlOlamMp _tlOletBindingsCateg _tlOlev _tlOmbInStackTraceCtxt _tlOopts _tlOuniq
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CBindL_Nil :: T_CBindL
sem_CBindL_Nil =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CBindL
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CBound ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         evalCtx              : EvalCtx
         isGlobal             : Bool
         isTopApp             : Bool
         isTopTup             : Bool
         lamMp                : LamMp
         letBindingsCateg     : CBindCateg
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         nm                   : HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         bindCTrfL            : [CBind]
         bindLamMp            : LamMp
         cTrf                 : CBound 
         debugLamMp           : LamMp
   alternatives:
      alternative Bind:
         child bindMeta       : CMetas 
         child expr           : CExpr 
         visit 0:
            local whatAbove   : {WhatExpr}
            local isTraceCandidate : _
            local _tup1       : _
            local mbStackTrace : _
            local uniq        : _
            local nmStackTrace : _
            local _tup2       : _
            local bindCTrfL   : _
            local mbInStackTraceCtxt : _
            local newLamMp    : _
            local cTrf        : {CBound}
      alternative Meta:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child cmetas         : CMetas 
         visit 0:
            local bindCTrfL   : _
            local cTrf        : {CBound}
      alternative RelevTy:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child relevTy        : {RelevTy}
         visit 0:
            local bindCTrfL   : _
            local cTrf        : {CBound}
      alternative Val:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child mlev           : {MetaLev}
         child lbl            : {CLbl}
         child expr           : CExpr 
         visit 0:
            local whatAbove   : {WhatExpr}
            local bindCTrfL   : _
            local cTrf        : {CBound}
      alternative Ty:
         child aspectKeyS     : {ACoreBindAspectKeyS}
         child ty             : {Ty}
         visit 0:
            local bindCTrfL   : _
            local cTrf        : {CBound}
      alternative FFE:
         child callconv       : {FFIWay}
         child expEnt         : {ForeignEnt}
         child expr           : CExpr 
         child ty             : {Ty}
         visit 0:
            local whatAbove   : {WhatExpr}
            local bindCTrfL   : _
            local cTrf        : {CBound}
-}
-- cata
sem_CBound :: CBound ->
              T_CBound
sem_CBound (CBound_Bind _bindMeta _expr) =
    (sem_CBound_Bind (sem_CMetas _bindMeta) (sem_CExpr _expr))
sem_CBound (CBound_Meta _aspectKeyS _cmetas) =
    (sem_CBound_Meta _aspectKeyS (sem_CMetas _cmetas))
sem_CBound (CBound_RelevTy _aspectKeyS _relevTy) =
    (sem_CBound_RelevTy _aspectKeyS _relevTy)
sem_CBound (CBound_Val _aspectKeyS _mlev _lbl _expr) =
    (sem_CBound_Val _aspectKeyS _mlev _lbl (sem_CExpr _expr))
sem_CBound (CBound_Ty _aspectKeyS _ty) =
    (sem_CBound_Ty _aspectKeyS _ty)
sem_CBound (CBound_FFE _callconv _expEnt _expr _ty) =
    (sem_CBound_FFE _callconv _expEnt (sem_CExpr _expr) _ty)
-- semantic domain
type T_CBound = EvalCtx ->
                Bool ->
                Bool ->
                Bool ->
                LamMp ->
                CBindCateg ->
                Int ->
                (Maybe HsName) ->
                HsName ->
                EHCOpts ->
                Int ->
                ( ([CBind]),LamMp,CBound,LamMp,Int)
sem_CBound_Bind :: T_CMetas ->
                   T_CExpr ->
                   T_CBound
sem_CBound_Bind bindMeta_ expr_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsInm
       _lhsIopts
       _lhsIuniq ->
         (let _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _lhsObindCTrfL :: ([CBind])
              _cTrf :: CBound
              _lhsOcTrf :: CBound
              _lhsOuniq :: Int
              _bindMetaOlamMp :: LamMp
              _bindMetaOlev :: Int
              _bindMetaOmbInStackTraceCtxt :: (Maybe HsName)
              _bindMetaOopts :: EHCOpts
              _bindMetaOuniq :: Int
              _exprOevalCtx :: EvalCtx
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _bindMetaIcTrf :: CMetas
              _bindMetaIdebugLamMp :: LamMp
              _bindMetaIuniq :: Int
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 37, column 17)
              _exprOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 37, column 17)
              _exprOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 80, column 17)
              _whatAbove =
                  ExprIsBind
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 79, column 17)
              _isTraceCandidate =
                  _lhsIisGlobal || _exprIisTraceCandidate
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 97, column 17)
              __tup1 =
                  let mbt = mbStackTrace _lhsIopts _isTraceCandidate _lhsInm
                  in  (mbt,Map.singleton _lhsInm (emptyLamInfo {laminfoStackTrace = mbt}))
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 97, column 17)
              (_mbStackTrace,_) =
                  __tup1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 97, column 17)
              (_,_lhsObindLamMp) =
                  __tup1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 107, column 17)
              _uniq =
                  _lhsIuniq + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 107, column 17)
              _nmStackTrace =
                  mkHNm $ "_$" ++ show _lhsIuniq ++ "_stacktrace"
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 113, column 17)
              __tup2 =
                  case _mbStackTrace of
                    StackTraceInfo_HasStackTraceEquiv dbNm | _isTraceCandidate
                      -> ( [ acoreBind1Cat CBindCateg_Plain dbNm (acoreLam1 _nmStackTrace _exprIcTrf)
                           , acoreBind1MetasTy _lhsInm _bindMetaIcTrf (acoreTyErr "ExplicitStackTrace.CBound.Bind")
                             $ acoreLam   _exprItraceCandidateLamArgs
                             $ acoreApp   (acoreVar dbNm)
                                          ( acoreVar (ehcOptBuiltin _lhsIopts ehbnDataListAltNil)
                                          : map acoreVar _exprItraceCandidateLamArgs
                                          )
                           ]
                         , Just _nmStackTrace
                         , Map.fromList
                             [ (dbNm, emptyLamInfo {laminfoStackTrace = StackTraceInfo_IsStackTraceEquiv _lhsInm})
                             ]
                         )
                    _ -> ([acoreBind1Asp1 _lhsInm _cTrf], _lhsImbInStackTraceCtxt, Map.empty)
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 113, column 17)
              (_bindCTrfL,_,_) =
                  __tup2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 113, column 17)
              (_,_mbInStackTraceCtxt,_) =
                  __tup2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 113, column 17)
              (_,_,_newLamMp) =
                  __tup2
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 152, column 17)
              _lhsOdebugLamMp =
                  _newLamMp `Map.union` _exprIdebugLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _bindCTrfL
              -- self rule
              _cTrf =
                  CBound_Bind _bindMetaIcTrf _exprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (from local)
              _lhsOuniq =
                  _uniq
              -- copy rule (down)
              _bindMetaOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bindMetaOlev =
                  _lhsIlev
              -- copy rule (from local)
              _bindMetaOmbInStackTraceCtxt =
                  _mbInStackTraceCtxt
              -- copy rule (down)
              _bindMetaOopts =
                  _lhsIopts
              -- copy rule (from local)
              _bindMetaOuniq =
                  _uniq
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (from local)
              _exprOmbInStackTraceCtxt =
                  _mbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (from local)
              _exprOuniq =
                  _uniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              ( _bindMetaIcTrf,_bindMetaIdebugLamMp,_bindMetaIuniq) =
                  bindMeta_ _bindMetaOlamMp _bindMetaOlev _bindMetaOmbInStackTraceCtxt _bindMetaOopts _bindMetaOuniq
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CBound_Meta :: ACoreBindAspectKeyS ->
                   T_CMetas ->
                   T_CBound
sem_CBound_Meta aspectKeyS_ cmetas_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsInm
       _lhsIopts
       _lhsIuniq ->
         (let _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _cTrf :: CBound
              _lhsOcTrf :: CBound
              _lhsOuniq :: Int
              _cmetasOlamMp :: LamMp
              _cmetasOlev :: Int
              _cmetasOmbInStackTraceCtxt :: (Maybe HsName)
              _cmetasOopts :: EHCOpts
              _cmetasOuniq :: Int
              _cmetasIcTrf :: CMetas
              _cmetasIdebugLamMp :: LamMp
              _cmetasIuniq :: Int
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 130, column 17)
              _bindCTrfL =
                  [acoreBind1Asp1 _lhsInm _cTrf]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _bindCTrfL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _cmetasIdebugLamMp
              -- self rule
              _cTrf =
                  CBound_Meta aspectKeyS_ _cmetasIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _cmetasIuniq
              -- copy rule (down)
              _cmetasOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _cmetasOlev =
                  _lhsIlev
              -- copy rule (down)
              _cmetasOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _cmetasOopts =
                  _lhsIopts
              -- copy rule (down)
              _cmetasOuniq =
                  _lhsIuniq
              ( _cmetasIcTrf,_cmetasIdebugLamMp,_cmetasIuniq) =
                  cmetas_ _cmetasOlamMp _cmetasOlev _cmetasOmbInStackTraceCtxt _cmetasOopts _cmetasOuniq
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CBound_RelevTy :: ACoreBindAspectKeyS ->
                      RelevTy ->
                      T_CBound
sem_CBound_RelevTy aspectKeyS_ relevTy_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsInm
       _lhsIopts
       _lhsIuniq ->
         (let _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _cTrf :: CBound
              _lhsOcTrf :: CBound
              _lhsOuniq :: Int
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 130, column 17)
              _bindCTrfL =
                  [acoreBind1Asp1 _lhsInm _cTrf]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _bindCTrfL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CBound_RelevTy aspectKeyS_ relevTy_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CBound_Val :: ACoreBindAspectKeyS ->
                  MetaLev ->
                  CLbl ->
                  T_CExpr ->
                  T_CBound
sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsInm
       _lhsIopts
       _lhsIuniq ->
         (let _whatAbove :: WhatExpr
              _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _cTrf :: CBound
              _lhsOcTrf :: CBound
              _lhsOuniq :: Int
              _exprOevalCtx :: EvalCtx
              _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 80, column 17)
              _whatAbove =
                  ExprIsBind
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 130, column 17)
              _bindCTrfL =
                  [acoreBind1Asp1 _lhsInm _cTrf]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _bindCTrfL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _exprIdebugLamMp
              -- self rule
              _cTrf =
                  CBound_Val aspectKeyS_ mlev_ lbl_ _exprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _exprIuniq
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOisTopApp =
                  _lhsIisTopApp
              -- copy rule (down)
              _exprOisTopTup =
                  _lhsIisTopTup
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CBound_Ty :: ACoreBindAspectKeyS ->
                 Ty ->
                 T_CBound
sem_CBound_Ty aspectKeyS_ ty_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsInm
       _lhsIopts
       _lhsIuniq ->
         (let _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _cTrf :: CBound
              _lhsOcTrf :: CBound
              _lhsOuniq :: Int
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 130, column 17)
              _bindCTrfL =
                  [acoreBind1Asp1 _lhsInm _cTrf]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _bindCTrfL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CBound_Ty aspectKeyS_ ty_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CBound_FFE :: FFIWay ->
                  ForeignEnt ->
                  T_CExpr ->
                  Ty ->
                  T_CBound
sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsInm
       _lhsIopts
       _lhsIuniq ->
         (let _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _cTrf :: CBound
              _lhsOcTrf :: CBound
              _lhsOuniq :: Int
              _exprOevalCtx :: EvalCtx
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 37, column 17)
              _exprOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 37, column 17)
              _exprOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 81, column 17)
              _whatAbove =
                  ExprIsLam 0
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 130, column 17)
              _bindCTrfL =
                  [acoreBind1Asp1 _lhsInm _cTrf]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _bindCTrfL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _exprIdebugLamMp
              -- self rule
              _cTrf =
                  CBound_FFE callconv_ expEnt_ _exprIcTrf ty_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _exprIuniq
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CBoundL -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         evalCtx              : EvalCtx
         isGlobal             : Bool
         lamMp                : LamMp
         letBindingsCateg     : CBindCateg
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         nm                   : HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         bindCTrfL            : [CBind]
         bindLamMp            : LamMp
         cTrf                 : CBoundL 
         debugLamMp           : LamMp
   alternatives:
      alternative Cons:
         child hd             : CBound 
         child tl             : CBoundL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CBoundL :: CBoundL ->
               T_CBoundL
sem_CBoundL list =
    (Prelude.foldr sem_CBoundL_Cons sem_CBoundL_Nil (Prelude.map sem_CBound list))
-- semantic domain
type T_CBoundL = EvalCtx ->
                 Bool ->
                 LamMp ->
                 CBindCateg ->
                 Int ->
                 (Maybe HsName) ->
                 HsName ->
                 EHCOpts ->
                 Int ->
                 ( ([CBind]),LamMp,CBoundL,LamMp,Int)
sem_CBoundL_Cons :: T_CBound ->
                    T_CBoundL ->
                    T_CBoundL
sem_CBoundL_Cons hd_ tl_ =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsInm
       _lhsIopts
       _lhsIuniq ->
         (let _hdOisTopApp :: Bool
              _hdOisTopTup :: Bool
              _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CBoundL
              _lhsOuniq :: Int
              _hdOevalCtx :: EvalCtx
              _hdOisGlobal :: Bool
              _hdOlamMp :: LamMp
              _hdOletBindingsCateg :: CBindCateg
              _hdOlev :: Int
              _hdOmbInStackTraceCtxt :: (Maybe HsName)
              _hdOnm :: HsName
              _hdOopts :: EHCOpts
              _hdOuniq :: Int
              _tlOevalCtx :: EvalCtx
              _tlOisGlobal :: Bool
              _tlOlamMp :: LamMp
              _tlOletBindingsCateg :: CBindCateg
              _tlOlev :: Int
              _tlOmbInStackTraceCtxt :: (Maybe HsName)
              _tlOnm :: HsName
              _tlOopts :: EHCOpts
              _tlOuniq :: Int
              _hdIbindCTrfL :: ([CBind])
              _hdIbindLamMp :: LamMp
              _hdIcTrf :: CBound
              _hdIdebugLamMp :: LamMp
              _hdIuniq :: Int
              _tlIbindCTrfL :: ([CBind])
              _tlIbindLamMp :: LamMp
              _tlIcTrf :: CBoundL
              _tlIdebugLamMp :: LamMp
              _tlIuniq :: Int
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 31, column 25)
              _hdOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 31, column 25)
              _hdOisTopTup =
                  True
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  _hdIbindCTrfL ++ _tlIbindCTrfL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  _hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _hdIdebugLamMp `Map.union` _tlIdebugLamMp
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _tlIuniq
              -- copy rule (down)
              _hdOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _hdOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _hdOnm =
                  _lhsInm
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _tlOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _tlOisGlobal =
                  _lhsIisGlobal
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOletBindingsCateg =
                  _lhsIletBindingsCateg
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _tlOnm =
                  _lhsInm
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOuniq =
                  _hdIuniq
              ( _hdIbindCTrfL,_hdIbindLamMp,_hdIcTrf,_hdIdebugLamMp,_hdIuniq) =
                  hd_ _hdOevalCtx _hdOisGlobal _hdOisTopApp _hdOisTopTup _hdOlamMp _hdOletBindingsCateg _hdOlev _hdOmbInStackTraceCtxt _hdOnm _hdOopts _hdOuniq
              ( _tlIbindCTrfL,_tlIbindLamMp,_tlIcTrf,_tlIdebugLamMp,_tlIuniq) =
                  tl_ _tlOevalCtx _tlOisGlobal _tlOlamMp _tlOletBindingsCateg _tlOlev _tlOmbInStackTraceCtxt _tlOnm _tlOopts _tlOuniq
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CBoundL_Nil :: T_CBoundL
sem_CBoundL_Nil =
    (\ _lhsIevalCtx
       _lhsIisGlobal
       _lhsIlamMp
       _lhsIletBindingsCateg
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsInm
       _lhsIopts
       _lhsIuniq ->
         (let _lhsObindCTrfL :: ([CBind])
              _lhsObindLamMp :: LamMp
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CBoundL
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 110, column 30)
              _lhsObindCTrfL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 11, column 30)
              _lhsObindLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsObindCTrfL,_lhsObindLamMp,_lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CDataCon ----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CDataCon 
   alternatives:
      alternative Con:
         child conNm          : {HsName}
         child tagNr          : {Int}
         child arity          : {Int}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CDataCon :: CDataCon ->
                T_CDataCon
sem_CDataCon (CDataCon_Con _conNm _tagNr _arity) =
    (sem_CDataCon_Con _conNm _tagNr _arity)
-- semantic domain
type T_CDataCon = ( CDataCon)
sem_CDataCon_Con :: HsName ->
                    Int ->
                    Int ->
                    T_CDataCon
sem_CDataCon_Con conNm_ tagNr_ arity_ =
    (let _lhsOcTrf :: CDataCon
         -- self rule
         _cTrf =
             CDataCon_Con conNm_ tagNr_ arity_
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CDataConL ---------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CDataConL 
   alternatives:
      alternative Cons:
         child hd             : CDataCon 
         child tl             : CDataConL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CDataConL :: CDataConL ->
                 T_CDataConL
sem_CDataConL list =
    (Prelude.foldr sem_CDataConL_Cons sem_CDataConL_Nil (Prelude.map sem_CDataCon list))
-- semantic domain
type T_CDataConL = ( CDataConL)
sem_CDataConL_Cons :: T_CDataCon ->
                      T_CDataConL ->
                      T_CDataConL
sem_CDataConL_Cons hd_ tl_ =
    (let _lhsOcTrf :: CDataConL
         _hdIcTrf :: CDataCon
         _tlIcTrf :: CDataConL
         -- self rule
         _cTrf =
             (:) _hdIcTrf _tlIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _hdIcTrf) =
             hd_
         ( _tlIcTrf) =
             tl_
     in  ( _lhsOcTrf))
sem_CDataConL_Nil :: T_CDataConL
sem_CDataConL_Nil =
    (let _lhsOcTrf :: CDataConL
         -- self rule
         _cTrf =
             []
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CDeclMeta ---------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CDeclMeta 
   alternatives:
      alternative Data:
         child tyNm           : {HsName}
         child dataCons       : CDataConL 
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CDeclMeta :: CDeclMeta ->
                 T_CDeclMeta
sem_CDeclMeta (CDeclMeta_Data _tyNm _dataCons) =
    (sem_CDeclMeta_Data _tyNm (sem_CDataConL _dataCons))
-- semantic domain
type T_CDeclMeta = ( CDeclMeta)
sem_CDeclMeta_Data :: HsName ->
                      T_CDataConL ->
                      T_CDeclMeta
sem_CDeclMeta_Data tyNm_ dataCons_ =
    (let _lhsOcTrf :: CDeclMeta
         _dataConsIcTrf :: CDataConL
         -- self rule
         _cTrf =
             CDeclMeta_Data tyNm_ _dataConsIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _dataConsIcTrf) =
             dataCons_
     in  ( _lhsOcTrf))
-- CDeclMetaL --------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CDeclMetaL 
   alternatives:
      alternative Cons:
         child hd             : CDeclMeta 
         child tl             : CDeclMetaL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CDeclMetaL :: CDeclMetaL ->
                  T_CDeclMetaL
sem_CDeclMetaL list =
    (Prelude.foldr sem_CDeclMetaL_Cons sem_CDeclMetaL_Nil (Prelude.map sem_CDeclMeta list))
-- semantic domain
type T_CDeclMetaL = ( CDeclMetaL)
sem_CDeclMetaL_Cons :: T_CDeclMeta ->
                       T_CDeclMetaL ->
                       T_CDeclMetaL
sem_CDeclMetaL_Cons hd_ tl_ =
    (let _lhsOcTrf :: CDeclMetaL
         _hdIcTrf :: CDeclMeta
         _tlIcTrf :: CDeclMetaL
         -- self rule
         _cTrf =
             (:) _hdIcTrf _tlIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _hdIcTrf) =
             hd_
         ( _tlIcTrf) =
             tl_
     in  ( _lhsOcTrf))
sem_CDeclMetaL_Nil :: T_CDeclMetaL
sem_CDeclMetaL_Nil =
    (let _lhsOcTrf :: CDeclMetaL
         -- self rule
         _cTrf =
             []
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CExpr -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         evalCtx              : EvalCtx
         isTopApp             : Bool
         isTopTup             : Bool
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
         whatAbove            : WhatExpr
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CExpr 
         debugLamMp           : LamMp
         gathLamMp            : LamMp
         isTraceCandidate     : Bool
         traceCandidateLamArgs : [HsName]
         traceCandidateLamBody : CExpr 
         whatBelow            : WhatExpr
   alternatives:
      alternative Var:
         child ref            : {ACoreBindRef}
         visit 0:
            local nm          : {HsName}
            local nmAsp       : {HsName}
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative Int:
         child int            : {Int}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative Char:
         child char           : {Char}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative String:
         child str            : {String}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative Integer:
         child integer        : {Integer}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative Tup:
         child tag            : {CTag}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative Let:
         child categ          : {CBindCateg}
         child binds          : CBindL 
         child body           : CExpr 
         visit 0:
            local letBindingsCateg : _
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local isTopLet    : _
            local evalCtx     : _
            local isGlobal    : _
            local cTrf        : _
      alternative App:
         child func           : CExpr 
         child arg            : CBound 
         visit 0:
            local letBindingsCateg : _
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local isTopApp'   : _
            local isGlobal    : _
            local cTrf        : _
      alternative Lam:
         child bind           : CBind 
         child body           : CExpr 
         visit 0:
            local argNm       : _
            local letBindingsCateg : _
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local isTopLam    : _
            local lev         : _
            local isGlobal    : _
            local cTrf        : _
      alternative Case:
         child expr           : CExpr 
         child alts           : CAltL 
         child dflt           : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative CaseAltFail:
         child failReason     : {CaseAltFailReason}
         child errorExpr      : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative TupDel:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative TupIns:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         child fldExpr        : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative TupUpd:
         child expr           : CExpr 
         child tag            : {CTag}
         child nm             : {HsName}
         child offset         : CExpr 
         child fldExpr        : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative FFI:
         child callconv       : {FFIWay}
         child safety         : {String}
         child impEnt         : {ForeignEnt}
         child ty             : {Ty}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative Dbg:
         child info           : {String}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative Hole:
         child uid            : {UID}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative HoleLet:
         child bindsUid       : {UID}
         child body           : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative CoeArg:
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative ImplsApp:
         child func           : CExpr 
         child uid            : {ImplsVarId}
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative ImplsLam:
         child uid            : {ImplsVarId}
         child body           : CExpr 
         visit 0:
            local isTopApp    : {Bool}
            local isTopTup    : _
            local whatBelow   : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
      alternative Ann:
         child ann            : CExprAnn 
         child expr           : CExpr 
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CExpr :: CExpr ->
             T_CExpr
sem_CExpr (CExpr_Var _ref) =
    (sem_CExpr_Var _ref)
sem_CExpr (CExpr_Int _int) =
    (sem_CExpr_Int _int)
sem_CExpr (CExpr_Char _char) =
    (sem_CExpr_Char _char)
sem_CExpr (CExpr_String _str) =
    (sem_CExpr_String _str)
sem_CExpr (CExpr_Integer _integer) =
    (sem_CExpr_Integer _integer)
sem_CExpr (CExpr_Tup _tag) =
    (sem_CExpr_Tup _tag)
sem_CExpr (CExpr_Let _categ _binds _body) =
    (sem_CExpr_Let _categ (sem_CBindL _binds) (sem_CExpr _body))
sem_CExpr (CExpr_App _func _arg) =
    (sem_CExpr_App (sem_CExpr _func) (sem_CBound _arg))
sem_CExpr (CExpr_Lam _bind _body) =
    (sem_CExpr_Lam (sem_CBind _bind) (sem_CExpr _body))
sem_CExpr (CExpr_Case _expr _alts _dflt) =
    (sem_CExpr_Case (sem_CExpr _expr) (sem_CAltL _alts) (sem_CExpr _dflt))
sem_CExpr (CExpr_CaseAltFail _failReason _errorExpr) =
    (sem_CExpr_CaseAltFail _failReason (sem_CExpr _errorExpr))
sem_CExpr (CExpr_TupDel _expr _tag _nm _offset) =
    (sem_CExpr_TupDel (sem_CExpr _expr) _tag _nm (sem_CExpr _offset))
sem_CExpr (CExpr_TupIns _expr _tag _nm _offset _fldExpr) =
    (sem_CExpr_TupIns (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
sem_CExpr (CExpr_TupUpd _expr _tag _nm _offset _fldExpr) =
    (sem_CExpr_TupUpd (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
sem_CExpr (CExpr_FFI _callconv _safety _impEnt _ty) =
    (sem_CExpr_FFI _callconv _safety _impEnt _ty)
sem_CExpr (CExpr_Dbg _info) =
    (sem_CExpr_Dbg _info)
sem_CExpr (CExpr_Hole _uid) =
    (sem_CExpr_Hole _uid)
sem_CExpr (CExpr_HoleLet _bindsUid _body) =
    (sem_CExpr_HoleLet _bindsUid (sem_CExpr _body))
sem_CExpr (CExpr_CoeArg) =
    (sem_CExpr_CoeArg)
sem_CExpr (CExpr_ImplsApp _func _uid) =
    (sem_CExpr_ImplsApp (sem_CExpr _func) _uid)
sem_CExpr (CExpr_ImplsLam _uid _body) =
    (sem_CExpr_ImplsLam _uid (sem_CExpr _body))
sem_CExpr (CExpr_Ann _ann _expr) =
    (sem_CExpr_Ann (sem_CExprAnn _ann) (sem_CExpr _expr))
-- semantic domain
type T_CExpr = EvalCtx ->
               Bool ->
               Bool ->
               LamMp ->
               Int ->
               (Maybe HsName) ->
               EHCOpts ->
               Int ->
               WhatExpr ->
               ( CExpr,LamMp,LamMp,Bool,([HsName]),CExpr,Int,WhatExpr)
sem_CExpr_Var :: ACoreBindRef ->
                 T_CExpr
sem_CExpr_Var ref_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _nm :: HsName
              _nmAsp :: HsName
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOcTrf :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 15, column 17)
              _nm =
                  acbrefNm ref_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 15, column 17)
              _nmAsp =
                  mkHNm ref_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 52, column 17)
              _whatBelow =
                  ExprIsVar _nm
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 137, column 17)
              _lhsOcTrf =
                  case Map.lookup _nm _lhsIlamMp of
                    Just (LamInfo {laminfoStackTrace=StackTraceInfo_HasStackTraceEquiv dbNm})
                      -> case _lhsImbInStackTraceCtxt of
                           Just stTrNm
                             -> acore1App (acoreVar dbNm)
                                          (acoreApp (acoreVar hsnStackTracePush) [acoreBuiltinString _lhsIopts (show _nm), acoreVar stTrNm])
                           _ -> _cTrf
                    _ -> _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_Var ref_
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Int :: Int ->
                 T_CExpr
sem_CExpr_Int int_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 53, column 17)
              _whatBelow =
                  ExprIsInt int_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_Int int_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Char :: Char ->
                  T_CExpr
sem_CExpr_Char char_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 59, column 25)
              _whatBelow =
                  ExprIsOtherWHNF
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_Char char_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_String :: String ->
                    T_CExpr
sem_CExpr_String str_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 59, column 25)
              _whatBelow =
                  ExprIsOtherWHNF
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_String str_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Integer :: Integer ->
                     T_CExpr
sem_CExpr_Integer integer_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 59, column 25)
              _whatBelow =
                  ExprIsOtherWHNF
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_Integer integer_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Tup :: CTag ->
                 T_CExpr
sem_CExpr_Tup tag_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 55, column 25)
              _whatBelow =
                  ExprIsTup tag_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_Tup tag_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Let :: CBindCateg ->
                 T_CBindL ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Let categ_ binds_ body_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _bindsOlev :: Int
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOcTrf :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _bindsOevalCtx :: EvalCtx
              _bindsOisGlobal :: Bool
              _bindsOlamMp :: LamMp
              _bindsOletBindingsCateg :: CBindCateg
              _bindsOmbInStackTraceCtxt :: (Maybe HsName)
              _bindsOopts :: EHCOpts
              _bindsOuniq :: Int
              _bodyOevalCtx :: EvalCtx
              _bodyOisTopApp :: Bool
              _bodyOisTopTup :: Bool
              _bodyOlamMp :: LamMp
              _bodyOlev :: Int
              _bodyOmbInStackTraceCtxt :: (Maybe HsName)
              _bodyOopts :: EHCOpts
              _bodyOuniq :: Int
              _bodyOwhatAbove :: WhatExpr
              _bindsIbindCTrfL :: ([CBind])
              _bindsIbindLamMp :: LamMp
              _bindsIcTrf :: CBindL
              _bindsIdebugLamMp :: LamMp
              _bindsIuniq :: Int
              _bodyIcTrf :: CExpr
              _bodyIdebugLamMp :: LamMp
              _bodyIgathLamMp :: LamMp
              _bodyIisTraceCandidate :: Bool
              _bodyItraceCandidateLamArgs :: ([HsName])
              _bodyItraceCandidateLamBody :: CExpr
              _bodyIuniq :: Int
              _bodyIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 7, column 17)
              _lhsOgathLamMp =
                  _bindsIbindLamMp `Map.union` _bodyIgathLamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 4, column 17)
              _letBindingsCateg =
                  categ_
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 75, column 17)
              _isTopLet =
                  _lhsIwhatAbove == ExprIsBind
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 106, column 17)
              _evalCtx =
                  if categ_ == CBindCateg_Strict
                  then EvalCtx_Eval
                  else EvalCtx_Thunk
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLevLet.ag"(line 2, column 17)
              _bindsOlev =
                  _lhsIlev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 10, column 17)
              _isGlobal =
                  _lhsIlev == cLevModule
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 136, column 17)
              _lhsOcTrf =
                  CExpr_Let categ_ _bindsIbindCTrfL _bodyIcTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _bindsIdebugLamMp `Map.union` _bodyIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_Let categ_ _bindsIcTrf _bodyIcTrf
              -- copy rule (up)
              _lhsOuniq =
                  _bodyIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (from local)
              _bindsOevalCtx =
                  _evalCtx
              -- copy rule (from local)
              _bindsOisGlobal =
                  _isGlobal
              -- copy rule (down)
              _bindsOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _bindsOletBindingsCateg =
                  _letBindingsCateg
              -- copy rule (down)
              _bindsOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bindsOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _bodyOevalCtx =
                  _evalCtx
              -- copy rule (from local)
              _bodyOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _bodyOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _bodyOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bodyOlev =
                  _lhsIlev
              -- copy rule (down)
              _bodyOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bodyOopts =
                  _lhsIopts
              -- copy rule (chain)
              _bodyOuniq =
                  _bindsIuniq
              -- copy rule (from local)
              _bodyOwhatAbove =
                  _whatAbove
              ( _bindsIbindCTrfL,_bindsIbindLamMp,_bindsIcTrf,_bindsIdebugLamMp,_bindsIuniq) =
                  binds_ _bindsOevalCtx _bindsOisGlobal _bindsOlamMp _bindsOletBindingsCateg _bindsOlev _bindsOmbInStackTraceCtxt _bindsOopts _bindsOuniq
              ( _bodyIcTrf,_bodyIdebugLamMp,_bodyIgathLamMp,_bodyIisTraceCandidate,_bodyItraceCandidateLamArgs,_bodyItraceCandidateLamBody,_bodyIuniq,_bodyIwhatBelow) =
                  body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlamMp _bodyOlev _bodyOmbInStackTraceCtxt _bodyOopts _bodyOuniq _bodyOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_App :: T_CExpr ->
                 T_CBound ->
                 T_CExpr
sem_CExpr_App func_ arg_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _argOnm :: HsName
              _funcOisTopApp :: Bool
              _argOisTopApp :: Bool
              _whatAbove :: WhatExpr
              _argOevalCtx :: EvalCtx
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _funcOevalCtx :: EvalCtx
              _funcOisTopTup :: Bool
              _funcOlamMp :: LamMp
              _funcOlev :: Int
              _funcOmbInStackTraceCtxt :: (Maybe HsName)
              _funcOopts :: EHCOpts
              _funcOuniq :: Int
              _funcOwhatAbove :: WhatExpr
              _argOisGlobal :: Bool
              _argOisTopTup :: Bool
              _argOlamMp :: LamMp
              _argOletBindingsCateg :: CBindCateg
              _argOlev :: Int
              _argOmbInStackTraceCtxt :: (Maybe HsName)
              _argOopts :: EHCOpts
              _argOuniq :: Int
              _funcIcTrf :: CExpr
              _funcIdebugLamMp :: LamMp
              _funcIgathLamMp :: LamMp
              _funcIisTraceCandidate :: Bool
              _funcItraceCandidateLamArgs :: ([HsName])
              _funcItraceCandidateLamBody :: CExpr
              _funcIuniq :: Int
              _funcIwhatBelow :: WhatExpr
              _argIbindCTrfL :: ([CBind])
              _argIbindLamMp :: LamMp
              _argIcTrf :: CBound
              _argIdebugLamMp :: LamMp
              _argIuniq :: Int
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 7, column 17)
              _argOnm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 6, column 33)
              _letBindingsCateg =
                  acoreBindcategPlain
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 14, column 17)
              _funcOisTopApp =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 15, column 17)
              _argOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 54, column 17)
              _whatBelow =
                  maybe (ExprIsApp 1 _funcIwhatBelow) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _funcIwhatBelow
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 70, column 17)
              _whatAbove =
                  maybe (ExprIsApp 1 ExprIsOther) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _lhsIwhatAbove
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 77, column 17)
              _isTopApp' =
                  isNothing $ whatExprMbApp _lhsIwhatAbove
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 112, column 17)
              _argOevalCtx =
                  EvalCtx_Thunk
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
              _isGlobal =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _funcIdebugLamMp `Map.union` _argIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_App _funcIcTrf _argIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _argIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _funcOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _funcOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _funcOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _funcOlev =
                  _lhsIlev
              -- copy rule (down)
              _funcOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _funcOopts =
                  _lhsIopts
              -- copy rule (down)
              _funcOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _funcOwhatAbove =
                  _whatAbove
              -- copy rule (from local)
              _argOisGlobal =
                  _isGlobal
              -- copy rule (from local)
              _argOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _argOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _argOletBindingsCateg =
                  _letBindingsCateg
              -- copy rule (down)
              _argOlev =
                  _lhsIlev
              -- copy rule (down)
              _argOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _argOopts =
                  _lhsIopts
              -- copy rule (chain)
              _argOuniq =
                  _funcIuniq
              ( _funcIcTrf,_funcIdebugLamMp,_funcIgathLamMp,_funcIisTraceCandidate,_funcItraceCandidateLamArgs,_funcItraceCandidateLamBody,_funcIuniq,_funcIwhatBelow) =
                  func_ _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlamMp _funcOlev _funcOmbInStackTraceCtxt _funcOopts _funcOuniq _funcOwhatAbove
              ( _argIbindCTrfL,_argIbindLamMp,_argIcTrf,_argIdebugLamMp,_argIuniq) =
                  arg_ _argOevalCtx _argOisGlobal _argOisTopApp _argOisTopTup _argOlamMp _argOletBindingsCateg _argOlev _argOmbInStackTraceCtxt _argOnm _argOopts _argOuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Lam :: T_CBind ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Lam bind_ body_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _bodyOlamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _bindOevalCtx :: EvalCtx
              _bindOisGlobal :: Bool
              _bindOlamMp :: LamMp
              _bindOletBindingsCateg :: CBindCateg
              _bindOlev :: Int
              _bindOmbInStackTraceCtxt :: (Maybe HsName)
              _bindOopts :: EHCOpts
              _bindOuniq :: Int
              _bodyOevalCtx :: EvalCtx
              _bodyOisTopApp :: Bool
              _bodyOisTopTup :: Bool
              _bodyOlev :: Int
              _bodyOmbInStackTraceCtxt :: (Maybe HsName)
              _bodyOopts :: EHCOpts
              _bodyOuniq :: Int
              _bodyOwhatAbove :: WhatExpr
              _bindIbindCTrfL :: ([CBind])
              _bindIbindLamMp :: LamMp
              _bindIcTrf :: CBind
              _bindIdebugLamMp :: LamMp
              _bindInm :: HsName
              _bindIuniq :: Int
              _bodyIcTrf :: CExpr
              _bodyIdebugLamMp :: LamMp
              _bodyIgathLamMp :: LamMp
              _bodyIisTraceCandidate :: Bool
              _bodyItraceCandidateLamArgs :: ([HsName])
              _bodyItraceCandidateLamBody :: CExpr
              _bodyIuniq :: Int
              _bodyIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLamInfo.ag"(line 7, column 17)
              _bodyOlamMp =
                  Map.delete _argNm _lhsIlamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 19, column 17)
              _argNm =
                  _bindInm
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 6, column 33)
              _letBindingsCateg =
                  acoreBindcategPlain
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 51, column 17)
              _whatBelow =
                  maybe (ExprIsLam 1) (\a -> ExprIsLam $ a + 1) $ whatExprMbLam _bodyIwhatBelow
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 69, column 17)
              _whatAbove =
                  maybe (ExprIsLam 1) (\a -> ExprIsLam $ a + 1) $ whatExprMbLam _lhsIwhatAbove
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 76, column 17)
              _isTopLam =
                  not $ whatExprIsLam _lhsIwhatAbove
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLevLamPer1Lam.ag"(line 2, column 17)
              _lev =
                  _lhsIlev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 12, column 33)
              _isGlobal =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 65, column 17)
              _lhsOisTraceCandidate =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 65, column 17)
              _lhsOtraceCandidateLamArgs =
                  _argNm : _bodyItraceCandidateLamArgs
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 65, column 17)
              _lhsOtraceCandidateLamBody =
                  _bodyItraceCandidateLamBody
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _bindIdebugLamMp `Map.union` _bodyIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_Lam _bindIcTrf _bodyIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _bodyIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _bindOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _bindOisGlobal =
                  _isGlobal
              -- copy rule (down)
              _bindOlamMp =
                  _lhsIlamMp
              -- copy rule (from local)
              _bindOletBindingsCateg =
                  _letBindingsCateg
              -- copy rule (from local)
              _bindOlev =
                  _lev
              -- copy rule (down)
              _bindOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bindOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _bodyOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _bodyOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _bodyOisTopTup =
                  _isTopTup
              -- copy rule (from local)
              _bodyOlev =
                  _lev
              -- copy rule (down)
              _bodyOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bodyOopts =
                  _lhsIopts
              -- copy rule (chain)
              _bodyOuniq =
                  _bindIuniq
              -- copy rule (from local)
              _bodyOwhatAbove =
                  _whatAbove
              ( _bindIbindCTrfL,_bindIbindLamMp,_bindIcTrf,_bindIdebugLamMp,_bindInm,_bindIuniq) =
                  bind_ _bindOevalCtx _bindOisGlobal _bindOlamMp _bindOletBindingsCateg _bindOlev _bindOmbInStackTraceCtxt _bindOopts _bindOuniq
              ( _bodyIcTrf,_bodyIdebugLamMp,_bodyIgathLamMp,_bodyIisTraceCandidate,_bodyItraceCandidateLamArgs,_bodyItraceCandidateLamBody,_bodyIuniq,_bodyIwhatBelow) =
                  body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlamMp _bodyOlev _bodyOmbInStackTraceCtxt _bodyOopts _bodyOuniq _bodyOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Case :: T_CExpr ->
                  T_CAltL ->
                  T_CExpr ->
                  T_CExpr
sem_CExpr_Case expr_ alts_ dflt_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _exprOevalCtx :: EvalCtx
              _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _altsOevalCtx :: EvalCtx
              _altsOlamMp :: LamMp
              _altsOlev :: Int
              _altsOmbInStackTraceCtxt :: (Maybe HsName)
              _altsOopts :: EHCOpts
              _altsOuniq :: Int
              _dfltOevalCtx :: EvalCtx
              _dfltOisTopApp :: Bool
              _dfltOisTopTup :: Bool
              _dfltOlamMp :: LamMp
              _dfltOlev :: Int
              _dfltOmbInStackTraceCtxt :: (Maybe HsName)
              _dfltOopts :: EHCOpts
              _dfltOuniq :: Int
              _dfltOwhatAbove :: WhatExpr
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              _altsIcTrf :: CAltL
              _altsIdebugLamMp :: LamMp
              _altsIuniq :: Int
              _dfltIcTrf :: CExpr
              _dfltIdebugLamMp :: LamMp
              _dfltIgathLamMp :: LamMp
              _dfltIisTraceCandidate :: Bool
              _dfltItraceCandidateLamArgs :: ([HsName])
              _dfltItraceCandidateLamBody :: CExpr
              _dfltIuniq :: Int
              _dfltIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _exprIdebugLamMp `Map.union` _altsIdebugLamMp `Map.union` _dfltIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_Case _exprIcTrf _altsIcTrf _dfltIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _dfltIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _exprOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _exprOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _altsOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _altsOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _altsOlev =
                  _lhsIlev
              -- copy rule (down)
              _altsOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _altsOopts =
                  _lhsIopts
              -- copy rule (chain)
              _altsOuniq =
                  _exprIuniq
              -- copy rule (down)
              _dfltOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _dfltOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _dfltOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _dfltOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _dfltOlev =
                  _lhsIlev
              -- copy rule (down)
              _dfltOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _dfltOopts =
                  _lhsIopts
              -- copy rule (chain)
              _dfltOuniq =
                  _altsIuniq
              -- copy rule (from local)
              _dfltOwhatAbove =
                  _whatAbove
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
              ( _altsIcTrf,_altsIdebugLamMp,_altsIuniq) =
                  alts_ _altsOevalCtx _altsOlamMp _altsOlev _altsOmbInStackTraceCtxt _altsOopts _altsOuniq
              ( _dfltIcTrf,_dfltIdebugLamMp,_dfltIgathLamMp,_dfltIisTraceCandidate,_dfltItraceCandidateLamArgs,_dfltItraceCandidateLamBody,_dfltIuniq,_dfltIwhatBelow) =
                  dflt_ _dfltOevalCtx _dfltOisTopApp _dfltOisTopTup _dfltOlamMp _dfltOlev _dfltOmbInStackTraceCtxt _dfltOopts _dfltOuniq _dfltOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_CaseAltFail :: CaseAltFailReason ->
                         T_CExpr ->
                         T_CExpr
sem_CExpr_CaseAltFail failReason_ errorExpr_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOgathLamMp :: LamMp
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _errorExprOevalCtx :: EvalCtx
              _errorExprOisTopApp :: Bool
              _errorExprOisTopTup :: Bool
              _errorExprOlamMp :: LamMp
              _errorExprOlev :: Int
              _errorExprOmbInStackTraceCtxt :: (Maybe HsName)
              _errorExprOopts :: EHCOpts
              _errorExprOuniq :: Int
              _errorExprOwhatAbove :: WhatExpr
              _errorExprIcTrf :: CExpr
              _errorExprIdebugLamMp :: LamMp
              _errorExprIgathLamMp :: LamMp
              _errorExprIisTraceCandidate :: Bool
              _errorExprItraceCandidateLamArgs :: ([HsName])
              _errorExprItraceCandidateLamBody :: CExpr
              _errorExprIuniq :: Int
              _errorExprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _errorExprIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_CaseAltFail failReason_ _errorExprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOgathLamMp =
                  _errorExprIgathLamMp
              -- copy rule (up)
              _lhsOuniq =
                  _errorExprIuniq
              -- copy rule (up)
              _lhsOwhatBelow =
                  _errorExprIwhatBelow
              -- copy rule (down)
              _errorExprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _errorExprOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _errorExprOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _errorExprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _errorExprOlev =
                  _lhsIlev
              -- copy rule (down)
              _errorExprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _errorExprOopts =
                  _lhsIopts
              -- copy rule (down)
              _errorExprOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _errorExprOwhatAbove =
                  _whatAbove
              ( _errorExprIcTrf,_errorExprIdebugLamMp,_errorExprIgathLamMp,_errorExprIisTraceCandidate,_errorExprItraceCandidateLamArgs,_errorExprItraceCandidateLamBody,_errorExprIuniq,_errorExprIwhatBelow) =
                  errorExpr_ _errorExprOevalCtx _errorExprOisTopApp _errorExprOisTopTup _errorExprOlamMp _errorExprOlev _errorExprOmbInStackTraceCtxt _errorExprOopts _errorExprOuniq _errorExprOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_TupDel :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _exprOevalCtx :: EvalCtx
              _exprOisTopApp :: Bool
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _offsetOevalCtx :: EvalCtx
              _offsetOisTopApp :: Bool
              _offsetOisTopTup :: Bool
              _offsetOlamMp :: LamMp
              _offsetOlev :: Int
              _offsetOmbInStackTraceCtxt :: (Maybe HsName)
              _offsetOopts :: EHCOpts
              _offsetOuniq :: Int
              _offsetOwhatAbove :: WhatExpr
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              _offsetIcTrf :: CExpr
              _offsetIdebugLamMp :: LamMp
              _offsetIgathLamMp :: LamMp
              _offsetIisTraceCandidate :: Bool
              _offsetItraceCandidateLamArgs :: ([HsName])
              _offsetItraceCandidateLamBody :: CExpr
              _offsetIuniq :: Int
              _offsetIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 18, column 17)
              _exprOisTopTup =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 19, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _exprIdebugLamMp `Map.union` _offsetIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_TupDel _exprIcTrf tag_ nm_ _offsetIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _offsetIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _exprOisTopApp =
                  _isTopApp
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _offsetOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _offsetOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _offsetOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _offsetOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _offsetOlev =
                  _lhsIlev
              -- copy rule (down)
              _offsetOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _offsetOopts =
                  _lhsIopts
              -- copy rule (chain)
              _offsetOuniq =
                  _exprIuniq
              -- copy rule (from local)
              _offsetOwhatAbove =
                  _whatAbove
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
              ( _offsetIcTrf,_offsetIdebugLamMp,_offsetIgathLamMp,_offsetIisTraceCandidate,_offsetItraceCandidateLamArgs,_offsetItraceCandidateLamBody,_offsetIuniq,_offsetIwhatBelow) =
                  offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlamMp _offsetOlev _offsetOmbInStackTraceCtxt _offsetOopts _offsetOuniq _offsetOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_TupIns :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _exprOevalCtx :: EvalCtx
              _exprOisTopApp :: Bool
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _offsetOevalCtx :: EvalCtx
              _offsetOisTopApp :: Bool
              _offsetOisTopTup :: Bool
              _offsetOlamMp :: LamMp
              _offsetOlev :: Int
              _offsetOmbInStackTraceCtxt :: (Maybe HsName)
              _offsetOopts :: EHCOpts
              _offsetOuniq :: Int
              _offsetOwhatAbove :: WhatExpr
              _fldExprOevalCtx :: EvalCtx
              _fldExprOisTopApp :: Bool
              _fldExprOisTopTup :: Bool
              _fldExprOlamMp :: LamMp
              _fldExprOlev :: Int
              _fldExprOmbInStackTraceCtxt :: (Maybe HsName)
              _fldExprOopts :: EHCOpts
              _fldExprOuniq :: Int
              _fldExprOwhatAbove :: WhatExpr
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              _offsetIcTrf :: CExpr
              _offsetIdebugLamMp :: LamMp
              _offsetIgathLamMp :: LamMp
              _offsetIisTraceCandidate :: Bool
              _offsetItraceCandidateLamArgs :: ([HsName])
              _offsetItraceCandidateLamBody :: CExpr
              _offsetIuniq :: Int
              _offsetIwhatBelow :: WhatExpr
              _fldExprIcTrf :: CExpr
              _fldExprIdebugLamMp :: LamMp
              _fldExprIgathLamMp :: LamMp
              _fldExprIisTraceCandidate :: Bool
              _fldExprItraceCandidateLamArgs :: ([HsName])
              _fldExprItraceCandidateLamBody :: CExpr
              _fldExprIuniq :: Int
              _fldExprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 18, column 17)
              _exprOisTopTup =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 19, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _exprIdebugLamMp `Map.union` _offsetIdebugLamMp `Map.union` _fldExprIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_TupIns _exprIcTrf tag_ nm_ _offsetIcTrf _fldExprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _fldExprIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _exprOisTopApp =
                  _isTopApp
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _offsetOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _offsetOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _offsetOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _offsetOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _offsetOlev =
                  _lhsIlev
              -- copy rule (down)
              _offsetOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _offsetOopts =
                  _lhsIopts
              -- copy rule (chain)
              _offsetOuniq =
                  _exprIuniq
              -- copy rule (from local)
              _offsetOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _fldExprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _fldExprOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _fldExprOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _fldExprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _fldExprOlev =
                  _lhsIlev
              -- copy rule (down)
              _fldExprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _fldExprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _fldExprOuniq =
                  _offsetIuniq
              -- copy rule (from local)
              _fldExprOwhatAbove =
                  _whatAbove
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
              ( _offsetIcTrf,_offsetIdebugLamMp,_offsetIgathLamMp,_offsetIisTraceCandidate,_offsetItraceCandidateLamArgs,_offsetItraceCandidateLamBody,_offsetIuniq,_offsetIwhatBelow) =
                  offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlamMp _offsetOlev _offsetOmbInStackTraceCtxt _offsetOopts _offsetOuniq _offsetOwhatAbove
              ( _fldExprIcTrf,_fldExprIdebugLamMp,_fldExprIgathLamMp,_fldExprIisTraceCandidate,_fldExprItraceCandidateLamArgs,_fldExprItraceCandidateLamBody,_fldExprIuniq,_fldExprIwhatBelow) =
                  fldExpr_ _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlamMp _fldExprOlev _fldExprOmbInStackTraceCtxt _fldExprOopts _fldExprOuniq _fldExprOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_TupUpd :: T_CExpr ->
                    CTag ->
                    HsName ->
                    T_CExpr ->
                    T_CExpr ->
                    T_CExpr
sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _exprOevalCtx :: EvalCtx
              _exprOisTopApp :: Bool
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _offsetOevalCtx :: EvalCtx
              _offsetOisTopApp :: Bool
              _offsetOisTopTup :: Bool
              _offsetOlamMp :: LamMp
              _offsetOlev :: Int
              _offsetOmbInStackTraceCtxt :: (Maybe HsName)
              _offsetOopts :: EHCOpts
              _offsetOuniq :: Int
              _offsetOwhatAbove :: WhatExpr
              _fldExprOevalCtx :: EvalCtx
              _fldExprOisTopApp :: Bool
              _fldExprOisTopTup :: Bool
              _fldExprOlamMp :: LamMp
              _fldExprOlev :: Int
              _fldExprOmbInStackTraceCtxt :: (Maybe HsName)
              _fldExprOopts :: EHCOpts
              _fldExprOuniq :: Int
              _fldExprOwhatAbove :: WhatExpr
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              _offsetIcTrf :: CExpr
              _offsetIdebugLamMp :: LamMp
              _offsetIgathLamMp :: LamMp
              _offsetIisTraceCandidate :: Bool
              _offsetItraceCandidateLamArgs :: ([HsName])
              _offsetItraceCandidateLamBody :: CExpr
              _offsetIuniq :: Int
              _offsetIwhatBelow :: WhatExpr
              _fldExprIcTrf :: CExpr
              _fldExprIdebugLamMp :: LamMp
              _fldExprIgathLamMp :: LamMp
              _fldExprIisTraceCandidate :: Bool
              _fldExprItraceCandidateLamArgs :: ([HsName])
              _fldExprItraceCandidateLamBody :: CExpr
              _fldExprIuniq :: Int
              _fldExprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 18, column 17)
              _exprOisTopTup =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 19, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _exprIdebugLamMp `Map.union` _offsetIdebugLamMp `Map.union` _fldExprIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_TupUpd _exprIcTrf tag_ nm_ _offsetIcTrf _fldExprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _fldExprIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _exprOisTopApp =
                  _isTopApp
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _offsetOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _offsetOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _offsetOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _offsetOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _offsetOlev =
                  _lhsIlev
              -- copy rule (down)
              _offsetOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _offsetOopts =
                  _lhsIopts
              -- copy rule (chain)
              _offsetOuniq =
                  _exprIuniq
              -- copy rule (from local)
              _offsetOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _fldExprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _fldExprOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _fldExprOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _fldExprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _fldExprOlev =
                  _lhsIlev
              -- copy rule (down)
              _fldExprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _fldExprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _fldExprOuniq =
                  _offsetIuniq
              -- copy rule (from local)
              _fldExprOwhatAbove =
                  _whatAbove
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
              ( _offsetIcTrf,_offsetIdebugLamMp,_offsetIgathLamMp,_offsetIisTraceCandidate,_offsetItraceCandidateLamArgs,_offsetItraceCandidateLamBody,_offsetIuniq,_offsetIwhatBelow) =
                  offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlamMp _offsetOlev _offsetOmbInStackTraceCtxt _offsetOopts _offsetOuniq _offsetOwhatAbove
              ( _fldExprIcTrf,_fldExprIdebugLamMp,_fldExprIgathLamMp,_fldExprIisTraceCandidate,_fldExprItraceCandidateLamArgs,_fldExprItraceCandidateLamBody,_fldExprIuniq,_fldExprIwhatBelow) =
                  fldExpr_ _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlamMp _fldExprOlev _fldExprOmbInStackTraceCtxt _fldExprOopts _fldExprOuniq _fldExprOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_FFI :: FFIWay ->
                 String ->
                 ForeignEnt ->
                 Ty ->
                 T_CExpr
sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 56, column 25)
              _whatBelow =
                  ExprIsFFI
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_FFI callconv_ safety_ impEnt_ ty_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Dbg :: String ->
                 T_CExpr
sem_CExpr_Dbg info_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_Dbg info_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Hole :: UID ->
                  T_CExpr
sem_CExpr_Hole uid_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_Hole uid_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_HoleLet :: UID ->
                     T_CExpr ->
                     T_CExpr
sem_CExpr_HoleLet bindsUid_ body_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _bodyOevalCtx :: EvalCtx
              _bodyOisTopApp :: Bool
              _bodyOisTopTup :: Bool
              _bodyOlamMp :: LamMp
              _bodyOlev :: Int
              _bodyOmbInStackTraceCtxt :: (Maybe HsName)
              _bodyOopts :: EHCOpts
              _bodyOuniq :: Int
              _bodyOwhatAbove :: WhatExpr
              _bodyIcTrf :: CExpr
              _bodyIdebugLamMp :: LamMp
              _bodyIgathLamMp :: LamMp
              _bodyIisTraceCandidate :: Bool
              _bodyItraceCandidateLamArgs :: ([HsName])
              _bodyItraceCandidateLamBody :: CExpr
              _bodyIuniq :: Int
              _bodyIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _bodyIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_HoleLet bindsUid_ _bodyIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _bodyIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _bodyOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _bodyOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _bodyOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _bodyOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bodyOlev =
                  _lhsIlev
              -- copy rule (down)
              _bodyOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bodyOopts =
                  _lhsIopts
              -- copy rule (down)
              _bodyOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _bodyOwhatAbove =
                  _whatAbove
              ( _bodyIcTrf,_bodyIdebugLamMp,_bodyIgathLamMp,_bodyIisTraceCandidate,_bodyItraceCandidateLamArgs,_bodyItraceCandidateLamBody,_bodyIuniq,_bodyIwhatBelow) =
                  body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlamMp _bodyOlev _bodyOmbInStackTraceCtxt _bodyOopts _bodyOuniq _bodyOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_CoeArg :: T_CExpr
sem_CExpr_CoeArg =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExpr_CoeArg
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_ImplsApp :: T_CExpr ->
                      ImplsVarId ->
                      T_CExpr
sem_CExpr_ImplsApp func_ uid_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _funcOevalCtx :: EvalCtx
              _funcOisTopApp :: Bool
              _funcOisTopTup :: Bool
              _funcOlamMp :: LamMp
              _funcOlev :: Int
              _funcOmbInStackTraceCtxt :: (Maybe HsName)
              _funcOopts :: EHCOpts
              _funcOuniq :: Int
              _funcOwhatAbove :: WhatExpr
              _funcIcTrf :: CExpr
              _funcIdebugLamMp :: LamMp
              _funcIgathLamMp :: LamMp
              _funcIisTraceCandidate :: Bool
              _funcItraceCandidateLamArgs :: ([HsName])
              _funcItraceCandidateLamBody :: CExpr
              _funcIuniq :: Int
              _funcIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _funcIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_ImplsApp _funcIcTrf uid_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _funcIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _funcOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _funcOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _funcOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _funcOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _funcOlev =
                  _lhsIlev
              -- copy rule (down)
              _funcOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _funcOopts =
                  _lhsIopts
              -- copy rule (down)
              _funcOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _funcOwhatAbove =
                  _whatAbove
              ( _funcIcTrf,_funcIdebugLamMp,_funcIgathLamMp,_funcIisTraceCandidate,_funcItraceCandidateLamArgs,_funcItraceCandidateLamBody,_funcIuniq,_funcIwhatBelow) =
                  func_ _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlamMp _funcOlev _funcOmbInStackTraceCtxt _funcOopts _funcOuniq _funcOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_ImplsLam :: ImplsVarId ->
                      T_CExpr ->
                      T_CExpr
sem_CExpr_ImplsLam uid_ body_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOgathLamMp :: LamMp
              _isTopApp :: Bool
              _whatAbove :: WhatExpr
              _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _bodyOevalCtx :: EvalCtx
              _bodyOisTopApp :: Bool
              _bodyOisTopTup :: Bool
              _bodyOlamMp :: LamMp
              _bodyOlev :: Int
              _bodyOmbInStackTraceCtxt :: (Maybe HsName)
              _bodyOopts :: EHCOpts
              _bodyOuniq :: Int
              _bodyOwhatAbove :: WhatExpr
              _bodyIcTrf :: CExpr
              _bodyIdebugLamMp :: LamMp
              _bodyIgathLamMp :: LamMp
              _bodyIisTraceCandidate :: Bool
              _bodyItraceCandidateLamArgs :: ([HsName])
              _bodyItraceCandidateLamBody :: CExpr
              _bodyIuniq :: Int
              _bodyIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 9, column 33)
              _lhsOgathLamMp =
                  Map.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 16, column 17)
              _isTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 21, column 17)
              _isTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 64, column 17)
              _whatBelow =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 72, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _bodyIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_ImplsLam uid_ _bodyIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _bodyIuniq
              -- copy rule (from local)
              _lhsOwhatBelow =
                  _whatBelow
              -- copy rule (down)
              _bodyOevalCtx =
                  _lhsIevalCtx
              -- copy rule (from local)
              _bodyOisTopApp =
                  _isTopApp
              -- copy rule (from local)
              _bodyOisTopTup =
                  _isTopTup
              -- copy rule (down)
              _bodyOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bodyOlev =
                  _lhsIlev
              -- copy rule (down)
              _bodyOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bodyOopts =
                  _lhsIopts
              -- copy rule (down)
              _bodyOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _bodyOwhatAbove =
                  _whatAbove
              ( _bodyIcTrf,_bodyIdebugLamMp,_bodyIgathLamMp,_bodyIisTraceCandidate,_bodyItraceCandidateLamArgs,_bodyItraceCandidateLamBody,_bodyIuniq,_bodyIwhatBelow) =
                  body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlamMp _bodyOlev _bodyOmbInStackTraceCtxt _bodyOopts _bodyOuniq _bodyOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
sem_CExpr_Ann :: T_CExprAnn ->
                 T_CExpr ->
                 T_CExpr
sem_CExpr_Ann ann_ expr_ =
    (\ _lhsIevalCtx
       _lhsIisTopApp
       _lhsIisTopTup
       _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq
       _lhsIwhatAbove ->
         (let _lhsOisTraceCandidate :: Bool
              _lhsOtraceCandidateLamArgs :: ([HsName])
              _lhsOtraceCandidateLamBody :: CExpr
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExpr
              _lhsOgathLamMp :: LamMp
              _lhsOuniq :: Int
              _lhsOwhatBelow :: WhatExpr
              _annOlamMp :: LamMp
              _annOlev :: Int
              _annOmbInStackTraceCtxt :: (Maybe HsName)
              _annOopts :: EHCOpts
              _annOuniq :: Int
              _exprOevalCtx :: EvalCtx
              _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _annIcTrf :: CExprAnn
              _annIdebugLamMp :: LamMp
              _annIuniq :: Int
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOisTraceCandidate =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamArgs =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 71, column 17)
              _lhsOtraceCandidateLamBody =
                  _cTrf
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _annIdebugLamMp `Map.union` _exprIdebugLamMp
              -- self rule
              _cTrf =
                  CExpr_Ann _annIcTrf _exprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOgathLamMp =
                  _exprIgathLamMp
              -- copy rule (up)
              _lhsOuniq =
                  _exprIuniq
              -- copy rule (up)
              _lhsOwhatBelow =
                  _exprIwhatBelow
              -- copy rule (down)
              _annOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _annOlev =
                  _lhsIlev
              -- copy rule (down)
              _annOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _annOopts =
                  _lhsIopts
              -- copy rule (down)
              _annOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _exprOevalCtx =
                  _lhsIevalCtx
              -- copy rule (down)
              _exprOisTopApp =
                  _lhsIisTopApp
              -- copy rule (down)
              _exprOisTopTup =
                  _lhsIisTopTup
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (down)
              _exprOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (chain)
              _exprOuniq =
                  _annIuniq
              -- copy rule (down)
              _exprOwhatAbove =
                  _lhsIwhatAbove
              ( _annIcTrf,_annIdebugLamMp,_annIuniq) =
                  ann_ _annOlamMp _annOlev _annOmbInStackTraceCtxt _annOopts _annOuniq
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOisTraceCandidate,_lhsOtraceCandidateLamArgs,_lhsOtraceCandidateLamBody,_lhsOuniq,_lhsOwhatBelow)))
-- CExprAnn ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CExprAnn 
         debugLamMp           : LamMp
   alternatives:
      alternative Ty:
         child ty             : {Ty}
         visit 0:
            local cTrf        : _
      alternative Coe:
         child coe            : {RelevCoe}
         visit 0:
            local cTrf        : _
      alternative Debug:
         child info           : {String}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CExprAnn :: CExprAnn ->
                T_CExprAnn
sem_CExprAnn (CExprAnn_Ty _ty) =
    (sem_CExprAnn_Ty _ty)
sem_CExprAnn (CExprAnn_Coe _coe) =
    (sem_CExprAnn_Coe _coe)
sem_CExprAnn (CExprAnn_Debug _info) =
    (sem_CExprAnn_Debug _info)
-- semantic domain
type T_CExprAnn = LamMp ->
                  Int ->
                  (Maybe HsName) ->
                  EHCOpts ->
                  Int ->
                  ( CExprAnn,LamMp,Int)
sem_CExprAnn_Ty :: Ty ->
                   T_CExprAnn
sem_CExprAnn_Ty ty_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExprAnn
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExprAnn_Ty ty_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CExprAnn_Coe :: RelevCoe ->
                    T_CExprAnn
sem_CExprAnn_Coe coe_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExprAnn
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExprAnn_Coe coe_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CExprAnn_Debug :: String ->
                      T_CExprAnn
sem_CExprAnn_Debug info_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CExprAnn
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CExprAnn_Debug info_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CImport -----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CImport 
   alternatives:
      alternative Import:
         child nm             : {HsName}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CImport :: CImport ->
               T_CImport
sem_CImport (CImport_Import _nm) =
    (sem_CImport_Import _nm)
-- semantic domain
type T_CImport = ( CImport)
sem_CImport_Import :: HsName ->
                      T_CImport
sem_CImport_Import nm_ =
    (let _lhsOcTrf :: CImport
         -- self rule
         _cTrf =
             CImport_Import nm_
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CImportL ----------------------------------------------------
{-
   visit 0:
      synthesized attribute:
         cTrf                 : CImportL 
   alternatives:
      alternative Cons:
         child hd             : CImport 
         child tl             : CImportL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CImportL :: CImportL ->
                T_CImportL
sem_CImportL list =
    (Prelude.foldr sem_CImportL_Cons sem_CImportL_Nil (Prelude.map sem_CImport list))
-- semantic domain
type T_CImportL = ( CImportL)
sem_CImportL_Cons :: T_CImport ->
                     T_CImportL ->
                     T_CImportL
sem_CImportL_Cons hd_ tl_ =
    (let _lhsOcTrf :: CImportL
         _hdIcTrf :: CImport
         _tlIcTrf :: CImportL
         -- self rule
         _cTrf =
             (:) _hdIcTrf _tlIcTrf
         -- self rule
         _lhsOcTrf =
             _cTrf
         ( _hdIcTrf) =
             hd_
         ( _tlIcTrf) =
             tl_
     in  ( _lhsOcTrf))
sem_CImportL_Nil :: T_CImportL
sem_CImportL_Nil =
    (let _lhsOcTrf :: CImportL
         -- self rule
         _cTrf =
             []
         -- self rule
         _lhsOcTrf =
             _cTrf
     in  ( _lhsOcTrf))
-- CMetaBind ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CMetaBind 
         debugLamMp           : LamMp
   alternatives:
      alternative Plain:
         visit 0:
            local cTrf        : _
      alternative Function0:
         visit 0:
            local cTrf        : _
      alternative Function1:
         visit 0:
            local cTrf        : _
      alternative Apply0:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CMetaBind :: CMetaBind ->
                 T_CMetaBind
sem_CMetaBind (CMetaBind_Plain) =
    (sem_CMetaBind_Plain)
sem_CMetaBind (CMetaBind_Function0) =
    (sem_CMetaBind_Function0)
sem_CMetaBind (CMetaBind_Function1) =
    (sem_CMetaBind_Function1)
sem_CMetaBind (CMetaBind_Apply0) =
    (sem_CMetaBind_Apply0)
-- semantic domain
type T_CMetaBind = LamMp ->
                   Int ->
                   (Maybe HsName) ->
                   EHCOpts ->
                   Int ->
                   ( CMetaBind,LamMp,Int)
sem_CMetaBind_Plain :: T_CMetaBind
sem_CMetaBind_Plain =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaBind
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaBind_Plain
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CMetaBind_Function0 :: T_CMetaBind
sem_CMetaBind_Function0 =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaBind
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaBind_Function0
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CMetaBind_Function1 :: T_CMetaBind
sem_CMetaBind_Function1 =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaBind
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaBind_Function1
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CMetaBind_Apply0 :: T_CMetaBind
sem_CMetaBind_Apply0 =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaBind
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaBind_Apply0
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CMetaVal ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CMetaVal 
         debugLamMp           : LamMp
   alternatives:
      alternative Val:
         visit 0:
            local cTrf        : _
      alternative Dict:
         visit 0:
            local cTrf        : _
      alternative DictClass:
         child tracks         : {[Track]}
         visit 0:
            local cTrf        : _
      alternative DictInstance:
         child tracks         : {[Track]}
         visit 0:
            local cTrf        : _
      alternative Track:
         child track          : {Track}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CMetaVal :: CMetaVal ->
                T_CMetaVal
sem_CMetaVal (CMetaVal_Val) =
    (sem_CMetaVal_Val)
sem_CMetaVal (CMetaVal_Dict) =
    (sem_CMetaVal_Dict)
sem_CMetaVal (CMetaVal_DictClass _tracks) =
    (sem_CMetaVal_DictClass _tracks)
sem_CMetaVal (CMetaVal_DictInstance _tracks) =
    (sem_CMetaVal_DictInstance _tracks)
sem_CMetaVal (CMetaVal_Track _track) =
    (sem_CMetaVal_Track _track)
-- semantic domain
type T_CMetaVal = LamMp ->
                  Int ->
                  (Maybe HsName) ->
                  EHCOpts ->
                  Int ->
                  ( CMetaVal,LamMp,Int)
sem_CMetaVal_Val :: T_CMetaVal
sem_CMetaVal_Val =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaVal
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaVal_Val
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CMetaVal_Dict :: T_CMetaVal
sem_CMetaVal_Dict =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaVal
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaVal_Dict
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CMetaVal_DictClass :: ([Track]) ->
                          T_CMetaVal
sem_CMetaVal_DictClass tracks_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaVal
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaVal_DictClass tracks_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CMetaVal_DictInstance :: ([Track]) ->
                             T_CMetaVal
sem_CMetaVal_DictInstance tracks_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaVal
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaVal_DictInstance tracks_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CMetaVal_Track :: Track ->
                      T_CMetaVal
sem_CMetaVal_Track track_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetaVal
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CMetaVal_Track track_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CMetas ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CMetas 
         debugLamMp           : LamMp
   alternatives:
      alternative Tuple:
         child x1             : CMetaBind 
         child x2             : CMetaVal 
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CMetas :: CMetas ->
              T_CMetas
sem_CMetas ( x1,x2) =
    (sem_CMetas_Tuple (sem_CMetaBind x1) (sem_CMetaVal x2))
-- semantic domain
type T_CMetas = LamMp ->
                Int ->
                (Maybe HsName) ->
                EHCOpts ->
                Int ->
                ( CMetas,LamMp,Int)
sem_CMetas_Tuple :: T_CMetaBind ->
                    T_CMetaVal ->
                    T_CMetas
sem_CMetas_Tuple x1_ x2_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CMetas
              _lhsOuniq :: Int
              _x1OlamMp :: LamMp
              _x1Olev :: Int
              _x1OmbInStackTraceCtxt :: (Maybe HsName)
              _x1Oopts :: EHCOpts
              _x1Ouniq :: Int
              _x2OlamMp :: LamMp
              _x2Olev :: Int
              _x2OmbInStackTraceCtxt :: (Maybe HsName)
              _x2Oopts :: EHCOpts
              _x2Ouniq :: Int
              _x1IcTrf :: CMetaBind
              _x1IdebugLamMp :: LamMp
              _x1Iuniq :: Int
              _x2IcTrf :: CMetaVal
              _x2IdebugLamMp :: LamMp
              _x2Iuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _x1IdebugLamMp `Map.union` _x2IdebugLamMp
              -- self rule
              _cTrf =
                  (_x1IcTrf,_x2IcTrf)
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _x2Iuniq
              -- copy rule (down)
              _x1OlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _x1Olev =
                  _lhsIlev
              -- copy rule (down)
              _x1OmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _x1Oopts =
                  _lhsIopts
              -- copy rule (down)
              _x1Ouniq =
                  _lhsIuniq
              -- copy rule (down)
              _x2OlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _x2Olev =
                  _lhsIlev
              -- copy rule (down)
              _x2OmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _x2Oopts =
                  _lhsIopts
              -- copy rule (chain)
              _x2Ouniq =
                  _x1Iuniq
              ( _x1IcTrf,_x1IdebugLamMp,_x1Iuniq) =
                  x1_ _x1OlamMp _x1Olev _x1OmbInStackTraceCtxt _x1Oopts _x1Ouniq
              ( _x2IcTrf,_x2IdebugLamMp,_x2Iuniq) =
                  x2_ _x2OlamMp _x2Olev _x2OmbInStackTraceCtxt _x2Oopts _x2Ouniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CModule -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CModule 
         debugLamMp           : LamMp
         gathLamMp            : LamMp
   alternatives:
      alternative Mod:
         child moduleNm       : {HsName}
         child imports        : CImportL 
         child declMetas      : CDeclMetaL 
         child expr           : CExpr 
         visit 0:
            local whatAbove   : {WhatExpr}
            local mbInStackTraceCtxt : _
            local cTrf        : _
-}
-- cata
sem_CModule :: CModule ->
               T_CModule
sem_CModule (CModule_Mod _moduleNm _imports _declMetas _expr) =
    (sem_CModule_Mod _moduleNm (sem_CImportL _imports) (sem_CDeclMetaL _declMetas) (sem_CExpr _expr))
-- semantic domain
type T_CModule = LamMp ->
                 Int ->
                 EHCOpts ->
                 Int ->
                 ( CModule,LamMp,LamMp,Int)
sem_CModule_Mod :: HsName ->
                   T_CImportL ->
                   T_CDeclMetaL ->
                   T_CExpr ->
                   T_CModule
sem_CModule_Mod moduleNm_ imports_ declMetas_ expr_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsIopts
       _lhsIuniq ->
         (let _exprOisTopApp :: Bool
              _exprOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _exprOevalCtx :: EvalCtx
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CModule
              _lhsOgathLamMp :: LamMp
              _lhsOuniq :: Int
              _exprOlamMp :: LamMp
              _exprOlev :: Int
              _exprOmbInStackTraceCtxt :: (Maybe HsName)
              _exprOopts :: EHCOpts
              _exprOuniq :: Int
              _exprOwhatAbove :: WhatExpr
              _importsIcTrf :: CImportL
              _declMetasIcTrf :: CDeclMetaL
              _exprIcTrf :: CExpr
              _exprIdebugLamMp :: LamMp
              _exprIgathLamMp :: LamMp
              _exprIisTraceCandidate :: Bool
              _exprItraceCandidateLamArgs :: ([HsName])
              _exprItraceCandidateLamBody :: CExpr
              _exprIuniq :: Int
              _exprIwhatBelow :: WhatExpr
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 27, column 17)
              _exprOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 27, column 17)
              _exprOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 90, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 99, column 17)
              _exprOevalCtx =
                  EvalCtx_Eval
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 85, column 17)
              _mbInStackTraceCtxt =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _exprIdebugLamMp
              -- self rule
              _cTrf =
                  CModule_Mod moduleNm_ _importsIcTrf _declMetasIcTrf _exprIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOgathLamMp =
                  _exprIgathLamMp
              -- copy rule (up)
              _lhsOuniq =
                  _exprIuniq
              -- copy rule (down)
              _exprOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _exprOlev =
                  _lhsIlev
              -- copy rule (from local)
              _exprOmbInStackTraceCtxt =
                  _mbInStackTraceCtxt
              -- copy rule (down)
              _exprOopts =
                  _lhsIopts
              -- copy rule (down)
              _exprOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _exprOwhatAbove =
                  _whatAbove
              ( _importsIcTrf) =
                  imports_
              ( _declMetasIcTrf) =
                  declMetas_
              ( _exprIcTrf,_exprIdebugLamMp,_exprIgathLamMp,_exprIisTraceCandidate,_exprItraceCandidateLamArgs,_exprItraceCandidateLamBody,_exprIuniq,_exprIwhatBelow) =
                  expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmbInStackTraceCtxt _exprOopts _exprOuniq _exprOwhatAbove
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp,_lhsOuniq)))
-- CPat --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CPat 
         debugLamMp           : LamMp
         fldNmL               : [HsName]
   alternatives:
      alternative Var:
         child pnm            : {HsName}
         visit 0:
            local cTrf        : _
      alternative Con:
         child tag            : {CTag}
         child rest           : CPatRest 
         child binds          : CPatFldL 
         visit 0:
            local cTrf        : _
      alternative Int:
         child int            : {Int}
         visit 0:
            local cTrf        : _
      alternative Char:
         child char           : {Char}
         visit 0:
            local cTrf        : _
      alternative BoolExpr:
         child cexpr          : {CExpr}
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CPat :: CPat ->
            T_CPat
sem_CPat (CPat_Var _pnm) =
    (sem_CPat_Var _pnm)
sem_CPat (CPat_Con _tag _rest _binds) =
    (sem_CPat_Con _tag (sem_CPatRest _rest) (sem_CPatFldL _binds))
sem_CPat (CPat_Int _int) =
    (sem_CPat_Int _int)
sem_CPat (CPat_Char _char) =
    (sem_CPat_Char _char)
sem_CPat (CPat_BoolExpr _cexpr) =
    (sem_CPat_BoolExpr _cexpr)
-- semantic domain
type T_CPat = LamMp ->
              Int ->
              (Maybe HsName) ->
              EHCOpts ->
              Int ->
              ( CPat,LamMp,([HsName]),Int)
sem_CPat_Var :: HsName ->
                T_CPat
sem_CPat_Var pnm_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOfldNmL :: ([HsName])
              _lhsOcTrf :: CPat
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- self rule
              _cTrf =
                  CPat_Var pnm_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOfldNmL,_lhsOuniq)))
sem_CPat_Con :: CTag ->
                T_CPatRest ->
                T_CPatFldL ->
                T_CPat
sem_CPat_Con tag_ rest_ binds_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOfldNmL :: ([HsName])
              _lhsOcTrf :: CPat
              _lhsOuniq :: Int
              _restOlamMp :: LamMp
              _restOlev :: Int
              _restOmbInStackTraceCtxt :: (Maybe HsName)
              _restOopts :: EHCOpts
              _restOuniq :: Int
              _bindsOlamMp :: LamMp
              _bindsOlev :: Int
              _bindsOmbInStackTraceCtxt :: (Maybe HsName)
              _bindsOopts :: EHCOpts
              _bindsOuniq :: Int
              _restIcTrf :: CPatRest
              _restIdebugLamMp :: LamMp
              _restIuniq :: Int
              _bindsIcTrf :: CPatFldL
              _bindsIdebugLamMp :: LamMp
              _bindsIfldNmL :: ([HsName])
              _bindsIuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _restIdebugLamMp `Map.union` _bindsIdebugLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  _bindsIfldNmL
              -- self rule
              _cTrf =
                  CPat_Con tag_ _restIcTrf _bindsIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _bindsIuniq
              -- copy rule (down)
              _restOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _restOlev =
                  _lhsIlev
              -- copy rule (down)
              _restOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _restOopts =
                  _lhsIopts
              -- copy rule (down)
              _restOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _bindsOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bindsOlev =
                  _lhsIlev
              -- copy rule (down)
              _bindsOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bindsOopts =
                  _lhsIopts
              -- copy rule (chain)
              _bindsOuniq =
                  _restIuniq
              ( _restIcTrf,_restIdebugLamMp,_restIuniq) =
                  rest_ _restOlamMp _restOlev _restOmbInStackTraceCtxt _restOopts _restOuniq
              ( _bindsIcTrf,_bindsIdebugLamMp,_bindsIfldNmL,_bindsIuniq) =
                  binds_ _bindsOlamMp _bindsOlev _bindsOmbInStackTraceCtxt _bindsOopts _bindsOuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOfldNmL,_lhsOuniq)))
sem_CPat_Int :: Int ->
                T_CPat
sem_CPat_Int int_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOfldNmL :: ([HsName])
              _lhsOcTrf :: CPat
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- self rule
              _cTrf =
                  CPat_Int int_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOfldNmL,_lhsOuniq)))
sem_CPat_Char :: Char ->
                 T_CPat
sem_CPat_Char char_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOfldNmL :: ([HsName])
              _lhsOcTrf :: CPat
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- self rule
              _cTrf =
                  CPat_Char char_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOfldNmL,_lhsOuniq)))
sem_CPat_BoolExpr :: CExpr ->
                     T_CPat
sem_CPat_BoolExpr cexpr_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOfldNmL :: ([HsName])
              _lhsOcTrf :: CPat
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- self rule
              _cTrf =
                  CPat_BoolExpr cexpr_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOfldNmL,_lhsOuniq)))
-- CPatFld -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CPatFld 
         debugLamMp           : LamMp
         fldNmL               : [HsName]
   alternatives:
      alternative Fld:
         child lbl            : {HsName}
         child offset         : CExpr 
         child bind           : CBind 
         child fldAnns        : CBindAnnL 
         visit 0:
            local fldNm       : _
            local whatAbove   : {WhatExpr}
            local cTrf        : _
-}
-- cata
sem_CPatFld :: CPatFld ->
               T_CPatFld
sem_CPatFld (CPatFld_Fld _lbl _offset _bind _fldAnns) =
    (sem_CPatFld_Fld _lbl (sem_CExpr _offset) (sem_CBind _bind) (sem_CBindAnnL _fldAnns))
-- semantic domain
type T_CPatFld = LamMp ->
                 Int ->
                 (Maybe HsName) ->
                 EHCOpts ->
                 Int ->
                 ( CPatFld,LamMp,([HsName]),Int)
sem_CPatFld_Fld :: HsName ->
                   T_CExpr ->
                   T_CBind ->
                   T_CBindAnnL ->
                   T_CPatFld
sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOfldNmL :: ([HsName])
              _bindOletBindingsCateg :: CBindCateg
              _offsetOisTopApp :: Bool
              _offsetOisTopTup :: Bool
              _whatAbove :: WhatExpr
              _offsetOevalCtx :: EvalCtx
              _bindOevalCtx :: EvalCtx
              _bindOisGlobal :: Bool
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CPatFld
              _lhsOuniq :: Int
              _offsetOlamMp :: LamMp
              _offsetOlev :: Int
              _offsetOmbInStackTraceCtxt :: (Maybe HsName)
              _offsetOopts :: EHCOpts
              _offsetOuniq :: Int
              _offsetOwhatAbove :: WhatExpr
              _bindOlamMp :: LamMp
              _bindOlev :: Int
              _bindOmbInStackTraceCtxt :: (Maybe HsName)
              _bindOopts :: EHCOpts
              _bindOuniq :: Int
              _fldAnnsOlamMp :: LamMp
              _fldAnnsOlev :: Int
              _fldAnnsOmbInStackTraceCtxt :: (Maybe HsName)
              _fldAnnsOopts :: EHCOpts
              _fldAnnsOuniq :: Int
              _offsetIcTrf :: CExpr
              _offsetIdebugLamMp :: LamMp
              _offsetIgathLamMp :: LamMp
              _offsetIisTraceCandidate :: Bool
              _offsetItraceCandidateLamArgs :: ([HsName])
              _offsetItraceCandidateLamBody :: CExpr
              _offsetIuniq :: Int
              _offsetIwhatBelow :: WhatExpr
              _bindIbindCTrfL :: ([CBind])
              _bindIbindLamMp :: LamMp
              _bindIcTrf :: CBind
              _bindIdebugLamMp :: LamMp
              _bindInm :: HsName
              _bindIuniq :: Int
              _fldAnnsIcTrf :: CBindAnnL
              _fldAnnsIdebugLamMp :: LamMp
              _fldAnnsIuniq :: Int
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 23, column 17)
              _fldNm =
                  _bindInm
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 28, column 17)
              _lhsOfldNmL =
                  [_fldNm]
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 9, column 17)
              _bindOletBindingsCateg =
                  acoreBindcategPlain
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 41, column 17)
              _offsetOisTopApp =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 41, column 17)
              _offsetOisTopTup =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 84, column 17)
              _whatAbove =
                  ExprIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 102, column 17)
              _offsetOevalCtx =
                  EvalCtx_Eval
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonCtxtPred.ag"(line 103, column 33)
              _bindOevalCtx =
                  EvalCtx_None
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 15, column 17)
              _bindOisGlobal =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _offsetIdebugLamMp `Map.union` _bindIdebugLamMp `Map.union` _fldAnnsIdebugLamMp
              -- self rule
              _cTrf =
                  CPatFld_Fld lbl_ _offsetIcTrf _bindIcTrf _fldAnnsIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _fldAnnsIuniq
              -- copy rule (down)
              _offsetOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _offsetOlev =
                  _lhsIlev
              -- copy rule (down)
              _offsetOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _offsetOopts =
                  _lhsIopts
              -- copy rule (down)
              _offsetOuniq =
                  _lhsIuniq
              -- copy rule (from local)
              _offsetOwhatAbove =
                  _whatAbove
              -- copy rule (down)
              _bindOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _bindOlev =
                  _lhsIlev
              -- copy rule (down)
              _bindOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _bindOopts =
                  _lhsIopts
              -- copy rule (chain)
              _bindOuniq =
                  _offsetIuniq
              -- copy rule (down)
              _fldAnnsOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _fldAnnsOlev =
                  _lhsIlev
              -- copy rule (down)
              _fldAnnsOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _fldAnnsOopts =
                  _lhsIopts
              -- copy rule (chain)
              _fldAnnsOuniq =
                  _bindIuniq
              ( _offsetIcTrf,_offsetIdebugLamMp,_offsetIgathLamMp,_offsetIisTraceCandidate,_offsetItraceCandidateLamArgs,_offsetItraceCandidateLamBody,_offsetIuniq,_offsetIwhatBelow) =
                  offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlamMp _offsetOlev _offsetOmbInStackTraceCtxt _offsetOopts _offsetOuniq _offsetOwhatAbove
              ( _bindIbindCTrfL,_bindIbindLamMp,_bindIcTrf,_bindIdebugLamMp,_bindInm,_bindIuniq) =
                  bind_ _bindOevalCtx _bindOisGlobal _bindOlamMp _bindOletBindingsCateg _bindOlev _bindOmbInStackTraceCtxt _bindOopts _bindOuniq
              ( _fldAnnsIcTrf,_fldAnnsIdebugLamMp,_fldAnnsIuniq) =
                  fldAnns_ _fldAnnsOlamMp _fldAnnsOlev _fldAnnsOmbInStackTraceCtxt _fldAnnsOopts _fldAnnsOuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOfldNmL,_lhsOuniq)))
-- CPatFldL ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CPatFldL 
         debugLamMp           : LamMp
         fldNmL               : [HsName]
   alternatives:
      alternative Cons:
         child hd             : CPatFld 
         child tl             : CPatFldL 
         visit 0:
            local cTrf        : _
      alternative Nil:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CPatFldL :: CPatFldL ->
                T_CPatFldL
sem_CPatFldL list =
    (Prelude.foldr sem_CPatFldL_Cons sem_CPatFldL_Nil (Prelude.map sem_CPatFld list))
-- semantic domain
type T_CPatFldL = LamMp ->
                  Int ->
                  (Maybe HsName) ->
                  EHCOpts ->
                  Int ->
                  ( CPatFldL,LamMp,([HsName]),Int)
sem_CPatFldL_Cons :: T_CPatFld ->
                     T_CPatFldL ->
                     T_CPatFldL
sem_CPatFldL_Cons hd_ tl_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOfldNmL :: ([HsName])
              _lhsOcTrf :: CPatFldL
              _lhsOuniq :: Int
              _hdOlamMp :: LamMp
              _hdOlev :: Int
              _hdOmbInStackTraceCtxt :: (Maybe HsName)
              _hdOopts :: EHCOpts
              _hdOuniq :: Int
              _tlOlamMp :: LamMp
              _tlOlev :: Int
              _tlOmbInStackTraceCtxt :: (Maybe HsName)
              _tlOopts :: EHCOpts
              _tlOuniq :: Int
              _hdIcTrf :: CPatFld
              _hdIdebugLamMp :: LamMp
              _hdIfldNmL :: ([HsName])
              _hdIuniq :: Int
              _tlIcTrf :: CPatFldL
              _tlIdebugLamMp :: LamMp
              _tlIfldNmL :: ([HsName])
              _tlIuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _hdIdebugLamMp `Map.union` _tlIdebugLamMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  _hdIfldNmL ++ _tlIfldNmL
              -- self rule
              _cTrf =
                  (:) _hdIcTrf _tlIcTrf
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (up)
              _lhsOuniq =
                  _tlIuniq
              -- copy rule (down)
              _hdOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _hdOlev =
                  _lhsIlev
              -- copy rule (down)
              _hdOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOuniq =
                  _lhsIuniq
              -- copy rule (down)
              _tlOlamMp =
                  _lhsIlamMp
              -- copy rule (down)
              _tlOlev =
                  _lhsIlev
              -- copy rule (down)
              _tlOmbInStackTraceCtxt =
                  _lhsImbInStackTraceCtxt
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (chain)
              _tlOuniq =
                  _hdIuniq
              ( _hdIcTrf,_hdIdebugLamMp,_hdIfldNmL,_hdIuniq) =
                  hd_ _hdOlamMp _hdOlev _hdOmbInStackTraceCtxt _hdOopts _hdOuniq
              ( _tlIcTrf,_tlIdebugLamMp,_tlIfldNmL,_tlIuniq) =
                  tl_ _tlOlamMp _tlOlev _tlOmbInStackTraceCtxt _tlOopts _tlOuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOfldNmL,_lhsOuniq)))
sem_CPatFldL_Nil :: T_CPatFldL
sem_CPatFldL_Nil =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOfldNmL :: ([HsName])
              _lhsOcTrf :: CPatFldL
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonBindNm.ag"(line 25, column 41)
              _lhsOfldNmL =
                  []
              -- self rule
              _cTrf =
                  []
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOfldNmL,_lhsOuniq)))
-- CPatRest ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         lev                  : Int
         mbInStackTraceCtxt   : Maybe HsName
         opts                 : EHCOpts
      chained attribute:
         uniq                 : Int
      synthesized attributes:
         cTrf                 : CPatRest 
         debugLamMp           : LamMp
   alternatives:
      alternative Var:
         child nm             : {HsName}
         visit 0:
            local cTrf        : _
      alternative Empty:
         visit 0:
            local cTrf        : _
-}
-- cata
sem_CPatRest :: CPatRest ->
                T_CPatRest
sem_CPatRest (CPatRest_Var _nm) =
    (sem_CPatRest_Var _nm)
sem_CPatRest (CPatRest_Empty) =
    (sem_CPatRest_Empty)
-- semantic domain
type T_CPatRest = LamMp ->
                  Int ->
                  (Maybe HsName) ->
                  EHCOpts ->
                  Int ->
                  ( CPatRest,LamMp,Int)
sem_CPatRest_Var :: HsName ->
                    T_CPatRest
sem_CPatRest_Var nm_ =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CPatRest
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CPatRest_Var nm_
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
sem_CPatRest_Empty :: T_CPatRest
sem_CPatRest_Empty =
    (\ _lhsIlamMp
       _lhsIlev
       _lhsImbInStackTraceCtxt
       _lhsIopts
       _lhsIuniq ->
         (let _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CPatRest
              _lhsOuniq :: Int
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  Map.empty
              -- self rule
              _cTrf =
                  CPatRest_Empty
              -- self rule
              _lhsOcTrf =
                  _cTrf
              -- copy rule (chain)
              _lhsOuniq =
                  _lhsIuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOuniq)))
-- CodeAGItf ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         lamMp                : LamMp
         opts                 : EHCOpts
      synthesized attributes:
         cTrf                 : CModule 
         debugLamMp           : LamMp
         gathLamMp            : LamMp
   alternatives:
      alternative AGItf:
         child module         : CModule 
         visit 0:
            local gathLamMp   : _
            local howUnionGathLamInfo : _
            local howMergeLamInfo : _
            local uniq        : _
-}
-- cata
sem_CodeAGItf :: CodeAGItf ->
                 T_CodeAGItf
sem_CodeAGItf (CodeAGItf_AGItf _module) =
    (sem_CodeAGItf_AGItf (sem_CModule _module))
-- semantic domain
type T_CodeAGItf = LamMp ->
                   EHCOpts ->
                   ( CModule,LamMp,LamMp)
data Inh_CodeAGItf = Inh_CodeAGItf {lamMp_Inh_CodeAGItf :: !(LamMp),opts_Inh_CodeAGItf :: !(EHCOpts)}
data Syn_CodeAGItf = Syn_CodeAGItf {cTrf_Syn_CodeAGItf :: !(CModule),debugLamMp_Syn_CodeAGItf :: !(LamMp),gathLamMp_Syn_CodeAGItf :: !(LamMp)}
wrap_CodeAGItf :: T_CodeAGItf ->
                  Inh_CodeAGItf ->
                  Syn_CodeAGItf
wrap_CodeAGItf sem (Inh_CodeAGItf _lhsIlamMp _lhsIopts) =
    (let ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp) = sem _lhsIlamMp _lhsIopts
     in  (Syn_CodeAGItf _lhsOcTrf _lhsOdebugLamMp _lhsOgathLamMp))
sem_CodeAGItf_AGItf :: T_CModule ->
                       T_CodeAGItf
sem_CodeAGItf_AGItf module_ =
    (\ _lhsIlamMp
       _lhsIopts ->
         (let _moduleOlamMp :: LamMp
              _moduleOlev :: Int
              _lhsOdebugLamMp :: LamMp
              _lhsOcTrf :: CModule
              _lhsOgathLamMp :: LamMp
              _moduleOopts :: EHCOpts
              _moduleOuniq :: Int
              _moduleIcTrf :: CModule
              _moduleIdebugLamMp :: LamMp
              _moduleIgathLamMp :: LamMp
              _moduleIuniq :: Int
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 15, column 17)
              _gathLamMp =
                  lamMpMergeInto _howMergeLamInfo const _moduleIgathLamMp _lhsIlamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonGathLamInfo.ag"(line 16, column 17)
              _moduleOlamMp =
                  _howUnionGathLamInfo _lhsIlamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/CommonLev.ag"(line 4, column 17)
              _moduleOlev =
                  cLevModule
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 53, column 17)
              _howUnionGathLamInfo =
                  Map.union _gathLamMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 57, column 17)
              _howMergeLamInfo =
                  (\(LamInfo {laminfoStackTrace=t}) i -> i {laminfoStackTrace=t})
              -- "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 104, column 17)
              _uniq =
                  0
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/Core/Trf/ExplicitStackTrace.ag"(line 149, column 22)
              _lhsOdebugLamMp =
                  _moduleIdebugLamMp
              -- copy rule (up)
              _lhsOcTrf =
                  _moduleIcTrf
              -- copy rule (from local)
              _lhsOgathLamMp =
                  _gathLamMp
              -- copy rule (down)
              _moduleOopts =
                  _lhsIopts
              -- copy rule (from local)
              _moduleOuniq =
                  _uniq
              ( _moduleIcTrf,_moduleIdebugLamMp,_moduleIgathLamMp,_moduleIuniq) =
                  module_ _moduleOlamMp _moduleOlev _moduleOopts _moduleOuniq
          in  ( _lhsOcTrf,_lhsOdebugLamMp,_lhsOgathLamMp)))