packages feed

uhc-light-1.1.7.0: src/UHC/Light/Compiler/HS/MainAG.hs


-- UUAGC 0.9.50.2 (build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag)
module UHC.Light.Compiler.HS.MainAG(Inh_AGItf (..), Syn_AGItf (..), sem_AGItf, wrap_AGItf
, tyGam2IdDefOccGam, kiGam2IdDefOccGam
, clGam2IdDefOccGam) where

import Data.Char
import Data.Maybe
import Data.List as List
import qualified Data.Map as Map
import UHC.Util.Pretty
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Base.TermLike
import UHC.Light.Compiler.Base.HsName.Builtin
import UHC.Light.Compiler.Opts
import UHC.Light.Compiler.Gam.Full
import UHC.Light.Compiler.Error
import UHC.Light.Compiler.Error.Pretty
import UHC.Light.Compiler.HS
import UHC.Light.Compiler.NameAspect
import UHC.Util.DependencyGraph
import qualified UHC.Util.FastSeq as Seq
import UHC.Util.Utils
import qualified UHC.Light.Compiler.EH as EH
import qualified Data.Set as Set
import UHC.Light.Compiler.Ty (tyQu_Forall,tyQu_Exists)
import UHC.Light.Compiler.Base.Target
import UHC.Light.Compiler.Gam.ClGam
import qualified UHC.Util.Rel as Rel
import UHC.Light.Compiler.Module.ImportExport
import UHC.Light.Compiler.Foreign
import UHC.Light.Compiler.Foreign.Parser
import Data.Ratio
import UHC.Light.Compiler.Scanner.Common(floatDenot2NomDenom,intDenot2Integer)
import UHC.Light.Compiler.Base.Debug as Debug
import qualified UHC.Light.Compiler.Base.Pragma as Pragma


doccForUse ::Maybe IdDefOcc -> IdIsDef
doccForUse md
  = case md of
      Just d  -> IdIsDef (doccLev d)
      Nothing -> IdIsNotDef



mkBuiltinIdDefOcc :: HsName -> IdOccKind -> (IdOcc,IdDefOcc)
mkBuiltinIdDefOcc n k
  = (o,emptyIdDefOcc {doccOcc = o, doccLev = nmLevBuiltin, doccRange = builtinRange})
  where o = IdOcc n k

tyGam2IdDefOccGam :: TyGam -> IdDefOccGam
tyGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Type)

kiGam2IdDefOccGam :: KiGam -> IdDefOccGam
kiGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Kind)

clGam2IdDefOccGam :: ClGam -> IdDefOccGam
clGam2IdDefOccGam = gamMap (\(n,_) -> mkBuiltinIdDefOcc n IdOcc_Class)



data IdIsDef
  = IdIsDef             { idIsDefLev :: NmLev }
  | IdIsNotDef
  | IdIsInWrongModule   IdOcc
  deriving (Show)

idIsDef :: IdIsDef -> Bool
idIsDef (IdIsDef _) = True
idIsDef _           = False

instance PP IdIsDef where
  pp (IdIsDef _)            = pp "Def'd"
  pp IdIsNotDef             = pp "Undef'd"
  pp (IdIsInWrongModule o)  = "Wrong" >#< o



data IdUseOcc
  = IdUseOcc
      { uoccOcc     :: IdOcc
      , uoccAsp     :: IdAspect
      , uoccRange   :: Range
      , uoccIsDef   :: IdIsDef
      }
  deriving (Show)

instance PP IdUseOcc where
  pp o = uoccOcc o >|< "/" >|< uoccIsDef o

type IdUseOccGam = Gam    IdOcc  IdUseOcc
type IdUseOccAsc = AssocL IdOcc [IdUseOcc]



splitIdUseOccGam :: Int -> IdUseOccGam -> (IdUseOccGam, IdUseOccAsc, IdUseOccAsc, IdUseOccGam)
splitIdUseOccGam level g
  = (assocDupLToGam o,h,i,assocDupLToGam e)
  where (o,h,i,e)
          = foldr
              (\x@(k,occs) (o,h,i,e)
                 -> case partition (idIsDef . uoccIsDef) occs of
                      (occ:_,[]) -> case compare (idIsDefLev $ uoccIsDef $ occ) level of
                                      LT -> (x:o,  h,  i,  e)
                                      EQ -> (  o,x:h,  i,  e)
                                      GT -> (  o,  h,x:i,  e)
                      (_,(_:_))  ->         (  o,  h,  i,x:e)
              )
              ([],[],[],[])
              (gamToAssocDupL g)



mkDefOccGam'' :: NmLev -> Range -> (x -> IdOcc -> IdAspect) -> AssocL x IdOcc -> IdDefOccGam
mkDefOccGam'' l r mka os
  = assocLToGamWithDups [ (o,mkIdDefOcc o (mka x o) l r) | (x,o) <- os ]

mkDefOccGam' :: NmLev -> Range -> (IdOcc -> IdAspect) -> [IdOcc] -> IdDefOccGam
mkDefOccGam' l r mka os
  = mkDefOccGam'' l r (\_ -> mka) (zip (repeat undefined) os)
{-# INLINE mkDefOccGam' #-}

mkDefOccGam :: NmLev -> Range -> IdAspect -> [IdOcc] -> IdDefOccGam
mkDefOccGam l r a os
  = mkDefOccGam' l r (const a) os
{-# INLINE mkDefOccGam #-}



varL2IdDefOccGam :: IdOccKind -> IdAspect -> NmLev -> Range -> [HsName] -> IdDefOccGam
varL2IdDefOccGam k a l r ns
  = mkDefOccGam l r a [ IdOcc n k | n <- ns ]

tvarL2IdDefOccGam :: NmLev -> Range -> [HsName] -> IdDefOccGam
tvarL2IdDefOccGam
  = varL2IdDefOccGam IdOcc_Type IdAsp_Type_Var

varS2IdDefOccGam :: IdOccKind -> IdAspect -> NmLev -> Range -> HsNameS -> IdDefOccGam
varS2IdDefOccGam k a l r ns
  = varL2IdDefOccGam k a l r (Set.toList ns)

tvarS2IdDefOccGam :: NmLev -> Range -> HsNameS -> IdDefOccGam
tvarS2IdDefOccGam
  = varS2IdDefOccGam IdOcc_Type IdAsp_Type_Var



kvarL2IdDefOccGam :: NmLev -> Range -> [HsName] -> IdDefOccGam
kvarL2IdDefOccGam
  = varL2IdDefOccGam IdOcc_Kind IdAsp_Kind_Var

kvarS2IdDefOccGam :: NmLev -> Range -> HsNameS -> IdDefOccGam
kvarS2IdDefOccGam
  = varS2IdDefOccGam IdOcc_Kind IdAsp_Kind_Var



-- | Get the names used by the literals
-- Note: don't change the order in returned lists, only append new values, as position is assumed to be fixed
litNames :: EHCOpts -> Literal -> Bool -> Int -> [([HsName],IdOccKind,IdAspect)]
litNames opts lit isPat sign
  = case lit of
      Literal_String r s   -> mk' (if isPat then IdAsp_Val_Con else IdAsp_Val_Var) [hsnDataListAltCons,hsnDataListAltNil]
                              ++ (if ehcOptOverloadedStrings opts then mk [hsnDataStringFromString] else [])
      Literal_Int    _ _ _
        | sign < 0         -> mk [hsnFromInteger,hsnNegate]
        | otherwise        -> mk [hsnFromInteger]
      Literal_Float  _ _
        | sign < 0         -> mk [hsnMkRatio,hsnFromRational,hsnNegate]
        | otherwise        -> mk [hsnMkRatio,hsnFromRational]
      _                    -> []
  where mk' a ns = [(ns,IdOcc_Val,a)]
        mk = mk' IdAsp_Val_Var



mkUseOccGam :: EHCOpts -> IdDefOccGam -> [HsName] -> IdOccKind -> IdAspect -> Range -> (HsName,[HsName],IdUseOccGam,[Err])
mkUseOccGam opts idGam names kind asp rng = mkUseOccGam' opts idGam [(names,kind,asp)] rng



mkUseOccGam' :: EHCOpts -> IdDefOccGam -> [([HsName],IdOccKind,IdAspect)] -> Range -> (HsName,[HsName],IdUseOccGam,[Err])
mkUseOccGam' _ _ [] _
  = (hsnUnknown,[],emptyGam,[])
mkUseOccGam' opts idGam names rng
  = (if null ns then hsnUnknown else n, ns, gamUnions g, concat e)
  where (ns@(~(n:_)),g,e) = unzip3 [ mkUse idGam n kind asp rng | (ns,kind,asp) <- names, n <- ns ]
        mkUse idGam name kind asp rng
          = (nmOfDef,idUseOccGam,errs)
          where idOccUse    = IdOcc name kind
                mbDef       = -- (\v -> tr "XX" (idOccUse >#< ">>>>>" >#< v) v) $
                              case gamLookup idOccUse idGam of
                                Nothing | hsnIsInPrelude name
                                            -> if ehcOptUseAssumePrelude opts
                                               then Just (emptyIdDefOcc {doccOcc = idOccUse})
                                               else gamLookup (idOccUse {ioccNm = hsnQualified $ ioccNm idOccUse}) idGam
                                md          -> md
                nmOfDef     = case mbDef of
                                Just d -> ioccNm $ doccOcc d
                                _      -> name
                occOfDef    = idOccUse {ioccNm = nmOfDef}
                idUseOccGam = gamSingleton occOfDef (IdUseOcc occOfDef asp rng (doccForUse mbDef))
                errs        = case mbDef of
                                Just d | Set.size (doccNmAlts d) > 1
                                  -> [rngLift rng Err_AmbiguousNameRef "name" k name (Set.toList $ doccNmAlts d)]
                                  where k = (show $ ioccKind $ doccOcc d) ++ " (" ++ (showPP $ pp $ doccAsp d) ++ ")"
                                _ -> []



type IdDpdMp = Map.Map IdOcc [IdOcc]

idDpdMpSingleton :: IdOcc -> IdOcc -> IdDpdMp
idDpdMpSingleton f t = Map.singleton f [t]

idDpdMpUnions :: [IdDpdMp] -> IdDpdMp
idDpdMpUnions = Map.unionsWith (++)

idDpdMpUnion :: IdDpdMp -> IdDpdMp -> IdDpdMp
idDpdMpUnion = Map.unionWith (++)

idToOccL2DpdMp :: [IdOcc] -> AssocL IdOcc x -> IdDpdMp
idToOccL2DpdMp fs l
  = if null ts then Map.empty else idDpdMpUnions [ Map.singleton f ts | f <- fs ]
  where ts = assocLKeys l

idToOccGam2DpdMp :: [IdOcc] -> Gam IdOcc x -> IdDpdMp
idToOccGam2DpdMp fs l
  = idToOccL2DpdMp fs (gamToAssocL l)

idFrOccGam2DpdMp :: Gam IdOcc x -> [IdOcc] -> IdDpdMp
idFrOccGam2DpdMp g ts
  = if null ts then Map.empty else idDpdMpUnions [ Map.singleton f ts | (f,_) <- gamToAssocL g ]



idDpdMp2SccOrder :: IdDefOccGam -> IdDpdMp -> [[IdOcc]]
idDpdMp2SccOrder gam mp
  = dgSCCToList gr
  where dflt = idDpdMpUnions [ idDpdMpSingleton o o | o <- gamKeys gam ] `Map.difference` mp
        gr = mkDpdGrFromEdgesMp (idDpdMpUnions [mp,dflt])



mkIdDefEH :: IdDefOcc -> [EH.Decl]
mkIdDefEH def
  = case doccAsp def of
      IdAsp_Val_Pat decl
        -> [decl]
      IdAsp_Val_Sig decl
        -> [decl]
      IdAsp_Val_Fun lhs rhs _
        -> [decl]
        where (h,t) = hdAndTl lhs
              decl  = rngLift (doccRange def) EH.Decl_Val h (foldr (rngLift (doccRange def) EH.Expr_Lam) rhs t)
      IdAsp_Type_Def decl
        -> [decl]
      IdAsp_Type_Sig decl
        -> [decl]
      IdAsp_Val_Foreign decl
        -> [decl]
      IdAsp_Class_Def decl declInst
        -> [decl,declInst]
      IdAsp_Inst_Def decl _
        -> [decl]
      IdAsp_Dflt_Def decl ignore | not ignore
        -> [decl]
      IdAsp_Val_Fusion decl
        -> [decl]
      IdAsp_Fusion_Conv decl
        -> [decl]
      _ -> []



mergeFunDefL :: Range -> [IdDefOcc] -> ([IdDefOcc],[Err])
mergeFunDefL _ ds
  = case ds of
      [_] -> (ds,[])
      (od : _ : _) | iaspIsFun (doccAsp od)
          -> ([d],e)
          where (IdAsp_Val_Fun (patf:pats1) _ uniq) = doccAsp od
                xSz   = length pats1
                xNmL  = [ mkHNm ("x" ++ show i) | i <- [1..xSz] ]
                xPatL = map (rngLift r EH.PatExpr_Var) xNmL
                b = EH.mkCase'
                      r (appRngProdOpt r $ map (rngLift r EH.Expr_Var) $ xNmL)
                      (Just $ Set.fromList $ map (iaspUniq . doccAsp) ds)
                      Set.empty
                      (length xNmL > 1)
                    $ zipWith (EH.mkAlt r)
                       [ appRngProdOpt r $ tail $ iaspPatL $ doccAsp d | d <- ds ]
                       [ iaspBody $ doccAsp $ d | d <- ds ]
                d = mkIdDefOcc (doccOcc od) (IdAsp_Val_Fun (patf:xPatL) b uniq) 0 r
                e | length patLens > 1 = [rngLift r Err_FunPatternLengths (ioccNm $ doccOcc od)]
                  | otherwise          = []
                  where patLens = Set.toList $ Set.fromList [ length $ iaspPatL $ doccAsp d | d <- ds ]
                r = rangeUnions [ doccRange d | d <- ds ]
      _   -> ([],[])



splitOff :: [IdDefOcc] -> [[IdDefOcc]]
splitOff
  = foldr (\df dfs -> zipWith (++) (s df) dfs) (repeat [])
  where s d = case doccAsp d of
                (IdAsp_Inst_Def  _ _) -> [[],[d]]
                _                     -> [[d],[]]



idOcc2Defs :: IdDefOccGam -> IdOcc -> [IdDefOcc]
idOcc2Defs idDefOccGam occ = maybe [] id $ gamLookupDup occ idDefOccGam

mkIdOccEH :: Range -> [IdDefOcc] -> ([EH.Decl],[Err])
mkIdOccEH r defs
  = case defs of
      (_:_)
        -> (concatMap mkIdDefEH (otherDefs ++ funDef),errL)
        where (funDefs,otherDefs) = partition (iaspIsFun . doccAsp) defs
              (funDef,errL) = mergeFunDefL r funDefs
      _ -> ([],[])



idDefOccs2Decls :: Range -> [[IdDefOcc]] -> ([[EH.Decl]],[Err])
idDefOccs2Decls r docss
  = ([concat ds], concat es)
  where (ds,es) = unzip $ map (mkIdOccEH r) $ docss



mkIdOccSccEH :: Range -> Bool -> IdDefOccGam -> Maybe [[IdOcc]] -> (EH.Expr -> EH.Expr,[[EH.Decl]],[Err])
mkIdOccSccEH r isStrict g moss
  = (m . mkLet (concat sds), d ++ sds, e ++ ses)
  where (m,d,e) = foldr mkl (id,[],[]) doss
        mkl dos (mke,d,e)
          = ((\e -> foldr mkLet e dss) . mke,dss ++ d, es ++ e)
          where (dss,es) = idDefOccs2Decls r dos
        mkLet ds = EH.mkLet' isStrict r (Just ds)
        (sds,ses) = idDefOccs2Decls r $ concat $ spls
        (doss:spls:_)
          = collapse
              [ collapse [ splitOff $ idOcc2Defs g $ l | l <- ll ]
              | ll <- maybe [gamKeys g] id moss
              ]
        collapse :: [[a]] -> [[a]]
        collapse = foldr (zipWith (:)) (repeat [])



type PatchEhNmInInstance = HsName -> HsName



idDupCheckInfo :: AssocL IdOccKind (AssocL String (IdAspect -> Bool))
idDupCheckInfo
  = [ ( IdOcc_Val
      , [ ( "type signature"    , iaspIsValSig )
        , ( "value"             , (\a -> iaspIsValVar a
                                         || iaspIsFun a
                                         || iaspIsValFld a
                                         || iaspIsValForeign a
          )                       )
        , ( "operator fixity"   , iaspIsValFix )
        , ( "data constructor"  , iaspIsValCon )
        ]
      )
    , ( IdOcc_Type
      , [ ( "type variable"     , iaspIsTypeVar )
        , ( "type"              , iaspIsTypeDef )
        , ( "kind signature"    , iaspIsTypeSig )
        ]
      )
    , ( IdOcc_Class
      , [ ( "class"             , iaspIsClassDef )
        ]
      )
    ]



idDefOccGamCheckDupNames :: IdDefOccGam -> [Err]
idDefOccGamCheckDupNames g
  = case dups of
      [] -> []
      es -> map mk es
         where mk (info,ds@((_,Just ((r,_):_)):_)) = rngLift r Err_NamesDupIntrod info ds
  where dups
          = Map.toList
            $  Map.unionsWith (++)
            $  [ Map.singleton info [(n,Just [(doccRange d, Just $ pp $ doccAsp d) | d <- defs])]
               | (IdOcc {ioccKind=k, ioccNm=n},ds) <- gamToAssocDupL g
               , check <- maybeToList $ lookup k idDupCheckInfo
               , (info,defs) <- filter (\(_,x) -> length x > 1)
                                $ assocLMapElt (\c -> filter (\d -> c (doccAsp d)) $ collapse ds) check
               ]
        -- Functions and data fields are allowed to have duplicate entries, so they are collapsed into 1.
        -- For data fields under the provision that the type to which they belong is the same, but the constructor not (another weird language complexity check)
        collapse ds
          =    take 1 funs
            ++ (map head $ filter (\l -> length l > 0) $ map concat flds1PerCon)
            ++ (concat $ concat fldsManyPerCon)
            ++ others2
          where (funs,others1) = partition (iaspIsFun . doccAsp) ds
                (flds,others2) = partition (iaspIsValFld . doccAsp) others1
                fldsGrouped = map (groupOn (iaspConNm . doccAsp)) $ groupOn (iaspDataNm . doccAsp) flds
                (flds1PerCon,fldsManyPerCon) = unzip $ map (partition (\l -> length l == 1)) $ fldsGrouped



ppInstNm :: Bool -> Maybe HsName -> PP_Doc
ppInstNm useimplicitly maybeinstancename
  = maybe empty (\n -> " " >|< n >#< (if useimplicitly then "<:" else "::")) maybeinstancename



data OpChain leaf
  = OpChain_Op   leaf PP_Doc Fixity Int Range (OpChain leaf) (OpChain leaf)
  | OpChain_Leaf leaf

opChainReArrange :: OpChain e -> (OpChain e,[Err])
opChainReArrange opChain
  = case opChain of
      OpChain_Op op1 pp1 f1 p1 pos1 l1 r1
        -> case opChainReArrange r1 of
             (OpChain_Op op2 pp2 f2 p2 pos2 l2 r2,rerr)
               | p1  > p2 -> (lvariant,lerr)
               | p1  < p2 -> (rvariant,rerr)
               | p1 == p2 -> case (f1,f2,lvariant,rvariant) of
                               (Fixity_Infixr,Fixity_Infixr,_,r) -> (r,rerr)
                               (Fixity_Infixl,Fixity_Infixl,l,_) -> (l,lerr)
                               (Fixity_Infix ,_            ,l,_) -> (l,[rngLift pos2 Err_Fixity pp1 pp2] ++ lerr)
               where (lrearr,lerr) = opChainReArrange (OpChain_Op op1 pp1 f1 p1 pos1 l1 l2)
                     lvariant = OpChain_Op op2 pp2 f2 p2 pos2 lrearr r2
                     rvariant = OpChain_Op op1 pp1 f1 p1 pos1 l1 (OpChain_Op op2 pp2 f2 p2 pos2 l2 r2)
             (r1l@(OpChain_Leaf _),rerr) -> (OpChain_Op op1 pp1 f1 p1 pos1 l1 r1l,rerr)
      _ -> (opChain,[])

unOpChain :: AppLike a boundmeta => OpChain a -> a
unOpChain opChain
  = un opChain
  where un ch
          = case ch of
              OpChain_Op op _ _ _ rng l r
                -> appRngParApp rng [op,un l,un r]
              OpChain_Leaf leaf
                -> leaf



ehSection :: AppLike eh bound
  => UID -> Range
  -> RngLiftArg (HsName -> eh)
  -> RngLiftArg (HsName -> ehp)
  -> RngLiftArg (ehp -> eh -> eh)
  -> Maybe eh -> eh -> Maybe eh
  -> eh
ehSection uniq range semvar sempatvar semlam left op right
  = case (left,right) of
      -- (Just l ,Just r ) -> appRngParApp range [op,l,r]
      (Nothing,Just r ) -> rngLift range semlam np (appRngParApp range [op,ne,r])
      (Just l ,Nothing) -> appRngParApp range [op,l]
      (Nothing,Nothing) -> op
  where n  = mkHNmHidden $ mkHNm ("x_" ++ show uniq)
        ne = rngLift range semvar n
        np = rngLift range sempatvar n



ehTupleConstructor
  :: AppLike eh bound
     => Range -> Int -> RngLiftArg (HsName -> eh) -> RngLiftArg (HsName -> ehp) -> RngLiftArg (ehp -> eh -> eh)
     -> ([ehp] -> eh -> eh) -> RngLiftArg (r -> eh) -> RngLiftArg (r -> Maybe HsName -> eh -> r) -> RngLiftArg r
     -> eh
ehTupleConstructor range arity semvar sempatvar semlam
        semtop semrecd semrecdext semrecdempty
  = foldr (rngLift range semlam) recd ps
  where ns     = take arity hsnLclSupply
        ps     = map (rngLift range sempatvar) ns
        recd   = mkt (map (rngLift range semvar) ns)
        mkt ns = semtop ps
                 $ rngLift range semrecd
                 $ foldl (\r e -> rngLift range semrecdext r Nothing e)
                         (rngLift range semrecdempty)
                         ns



ehTyExprArg :: EH.TyExpr -> EH.TyExpr
ehTyExprArg = snd . panicJust "HS.ToEH.ehTyExprArg" . appMbApp1 . fst . appUnTop





ehPlainDataField :: Range -> EH.TyExpr -> EH.DataField
ehPlainDataField r
  = rngLift r EH.DataField_Field Nothing



ehExpLitInt :: Range -> Int -> String -> Int -> [HsName] -> (EH.Expr,Maybe SrcConst)
ehExpLitInt r b s sign litrefnames
  | sign < 0  = mk (\e -> ehExpVarApp r (litrefnames !! 1) [e], negate)
  | otherwise = mk (id                                        , id    )
  where i = intDenot2Integer b s
        mk (neg,negconst)
          = (neg $ ehExpVarApp r (litrefnames !! 0) [rngLift r EH.Expr_IIConst i], Just $ SrcConst_Int $ negconst i)

ehExpLitFloat :: Range -> String -> Int -> [HsName] -> (EH.Expr,Maybe SrcConst)
ehExpLitFloat r s sign litrefnames
  | sign < 0  = mk (\e -> ehExpVarApp r (litrefnames !! 2) [e], \(n,d) -> (negate n, d))
  | otherwise = mk (id                                        , id                     )
  where nd@(n,d) = floatDenot2NomDenom s
        mk (neg,negconst)
          = ( neg $ ehExpVarApp r (litrefnames !! 1)
                  $ [rngLift r EH.Expr_Parens $ ehExpVarApp r (litrefnames !! 0) [rngLift r EH.Expr_IIConst n,rngLift r EH.Expr_IIConst d]]
            , Just $ uncurry SrcConst_Ratio $ negconst nd
            )



ehExpLitString :: EHCOpts -> Range -> String -> [HsName] -> (EH.Expr,Maybe SrcConst)
ehExpLitString opts r str litrefnames
  | ehcOptOverloadedStrings opts = (ehExpVarApp r (litrefnames !! 2) [s], Nothing)
  | otherwise                    = (s                                   , Nothing)
  where s = rngLift r EH.Expr_SConst str



ehExpApp' :: (EH.Expr -> a -> EH.Expr) -> Range -> EH.Expr -> [a] -> EH.Expr
ehExpApp' app r f as
  = rngLift r EH.Expr_AppTop
    $ foldl app (ehExpUnTop f) as

ehExpConApp :: Range -> HsName -> [EH.Expr] -> EH.Expr
ehExpConApp r n as
  = appRngParApp r (rngLift r EH.Expr_Con n : as)

ehExpVarApp :: Range -> HsName -> [EH.Expr] -> EH.Expr
ehExpVarApp r n as
  = appRngParApp r (rngLift r EH.Expr_Var n : as)

ehExpUnTop :: EH.Expr -> EH.Expr
ehExpUnTop (EH.Expr_AppTop _ e) = e
ehExpUnTop e                    = e



ehExpProd :: Range -> [EH.Expr] -> EH.Expr
ehExpProd r as
  = ehExpConApp r (hsnProd a) as
  where a = length as



-- original with mono restriction
ehGenerator :: Range -> EH.PatExpr -> (EH.Expr -> EH.Expr) -> EH.Expr -> EH.Expr -> EH.Expr
ehGenerator r p mkRes fail e
  = EH.mkLet r
      (Just
         [ {- -} rngLift r EH.Decl_TySig ok ([mono] `appArr` appTopApp1 mono mono)
         ,
           rngLift r EH.Decl_Val
             (rngLift r EH.PatExpr_Var ok)
             (rngLift r EH.Expr_Lam
               (rngLift r EH.PatExpr_Var x)
               (EH.mkCase r
                 (rngLift r EH.Expr_Var x)
                 [(p,e),(rngLift r EH.PatExpr_Var hsnWild,fail)]
             ) )
{-
         , rngLift r EH.Decl_TySig res mono
         , rngLift r EH.Decl_Val
             (rngLift r EH.PatExpr_Var res)
             (mkRes (rngLift r EH.Expr_Var ok))
-}
         ])
      (mkRes (rngLift r EH.Expr_Var ok))
      -- (rngLift r EH.Expr_Var res)
  where ok   = mkHNmHidden "ok"
        res  = mkHNmHidden "ok_app"
        x    = mkHNmHidden "x"
        mono = rngLift r EH.TyExpr_Mono



ehRowRecExprUpd :: Range -> nm -> (EH.RecExpr -> nm -> EH.Expr -> EH.RecExpr) -> EH.Expr -> EH.Expr -> EH.Expr
ehRowRecExprUpd rng nm mk updE recE
  = case recE of
      EH.Expr_Rec _ r
        -> mkUpd  r
      _ -> mkUpd (r2e recE)
  where r2e     = rngLift rng EH.RecExpr_Expr
        mkUpd r = rngLift rng EH.Expr_Rec (mk r nm updE)

ehRowRecPatExprUpd :: Range -> nm -> (EH.RecPatExpr -> nm -> EH.PatExpr -> EH.RecPatExpr) -> EH.PatExpr -> EH.PatExpr -> EH.PatExpr
ehRowRecPatExprUpd rng nm mk updE recE
  = case recE of
      EH.PatExpr_Rec _ r
        -> mkUpd  r
      _ -> mkUpd (r2e recE)
  where r2e     = rngLift rng EH.RecPatExpr_Expr
        mkUpd r = rngLift rng EH.PatExpr_Rec (mk r nm updE)



ehRowRowTyExprUpd :: Range -> nm -> (EH.RowTyExpr -> nm -> EH.TyExpr -> EH.RowTyExpr) -> EH.TyExpr -> EH.TyExpr -> EH.TyExpr
ehRowRowTyExprUpd rng nm mk updE recE
  = case recE of
      EH.TyExpr_Row _ r
        -> mkUpd  r
      EH.TyExpr_Var _ v
        -> mkUpd (rngLift rng EH.RowTyExpr_Var v)
      _ -> mkUpd (rngLift rng EH.RowTyExpr_Empty)
  where mkUpd r = rngLift rng EH.TyExpr_Row (mk r nm updE)



-- | enforce monomorphism
ehMkEnforceMono :: Range -> Bool -> EH.Expr -> EH.Expr
ehMkEnforceMono r True e = rngLift r EH.Expr_TypeAs False (rngLift r EH.TyExpr_Mono) e
ehMkEnforceMono _ _    e =                                                     e



ehPatConApp r n as
  = rngLift r EH.PatExpr_AppTop
    $ foldl (rngLift r EH.PatExpr_App) (rngLift r EH.PatExpr_Con n) as



ehPatProd :: Range -> [EH.PatExpr] -> EH.PatExpr
ehPatProd r as
  = ehPatConApp r (hsnProd a) as
  where a = length as



































data TypeConFixedMeaning
  = TyConIsOther
  | TyConIsPrArrow
  | TyConIsEqTilde
  deriving Eq



extrTopInstanceNm :: [HsName] -> (Maybe HsName,[HsName])
extrTopInstanceNm nms
  = case nms of
      (n:t) -> (Just n,t)
      _     -> (Nothing,[])

-- AGItf -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         gUniq                : UID
         idGam                : IdDefOccGam
         isTopMod             : Bool
         modEntToOrig         : ModEntRngMp
         modInScope           : ModEntDomMp
         moduleNm             : HsName
         opts                 : EHCOpts
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.AGItf
         errSq                : ErrSq
         fileHeaderPragmas    : Set.Set Pragma.Pragma
         gathFixityGam        : FixityGam
         gathIdGam            : IdDefOccGam
         mainValExists        : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
   alternatives:
      alternative AGItf:
         child module         : Module 
         visit 0:
            local patchEhNmInInstance : _
            local nmLev       : _
            local ppExtra     : _
            local isMainMod   : _
-}
-- cata
sem_AGItf :: AGItf ->
             T_AGItf
sem_AGItf (AGItf_AGItf _module) =
    (sem_AGItf_AGItf (sem_Module _module))
-- semantic domain
type T_AGItf = FixityGam ->
               UID ->
               IdDefOccGam ->
               Bool ->
               ModEntRngMp ->
               ModEntDomMp ->
               HsName ->
               EHCOpts ->
               ([HsName]) ->
               ( (EH.AGItf),ErrSq,(Set.Set Pragma.Pragma),FixityGam,IdDefOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc))
data Inh_AGItf = Inh_AGItf {fixityGam_Inh_AGItf :: !(FixityGam),gUniq_Inh_AGItf :: !(UID),idGam_Inh_AGItf :: !(IdDefOccGam),isTopMod_Inh_AGItf :: !(Bool),modEntToOrig_Inh_AGItf :: !(ModEntRngMp),modInScope_Inh_AGItf :: !(ModEntDomMp),moduleNm_Inh_AGItf :: !(HsName),opts_Inh_AGItf :: !(EHCOpts),topInstanceNmL_Inh_AGItf :: !(([HsName]))}
data Syn_AGItf = Syn_AGItf {eh_Syn_AGItf :: !((EH.AGItf)),errSq_Syn_AGItf :: !(ErrSq),fileHeaderPragmas_Syn_AGItf :: !((Set.Set Pragma.Pragma)),gathFixityGam_Syn_AGItf :: !(FixityGam),gathIdGam_Syn_AGItf :: !(IdDefOccGam),mainValExists_Syn_AGItf :: !(Bool),pp_Syn_AGItf :: !(PP_Doc),ppWrap_Syn_AGItf :: !((PP_Doc -> PP_Doc))}
wrap_AGItf :: T_AGItf ->
              Inh_AGItf ->
              Syn_AGItf
wrap_AGItf sem (Inh_AGItf _lhsIfixityGam _lhsIgUniq _lhsIidGam _lhsIisTopMod _lhsImodEntToOrig _lhsImodInScope _lhsImoduleNm _lhsIopts _lhsItopInstanceNmL) =
    (let ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap) = sem _lhsIfixityGam _lhsIgUniq _lhsIidGam _lhsIisTopMod _lhsImodEntToOrig _lhsImodInScope _lhsImoduleNm _lhsIopts _lhsItopInstanceNmL
     in  (Syn_AGItf _lhsOeh _lhsOerrSq _lhsOfileHeaderPragmas _lhsOgathFixityGam _lhsOgathIdGam _lhsOmainValExists _lhsOpp _lhsOppWrap))
sem_AGItf_AGItf :: T_Module ->
                   T_AGItf
sem_AGItf_AGItf module_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisTopMod
       _lhsImodEntToOrig
       _lhsImodInScope
       _lhsImoduleNm
       _lhsIopts
       _lhsItopInstanceNmL ->
         (let _lhsOpp :: PP_Doc
              _lhsOeh :: (EH.AGItf)
              _lhsOerrSq :: ErrSq
              _lhsOfileHeaderPragmas :: (Set.Set Pragma.Pragma)
              _lhsOgathFixityGam :: FixityGam
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgathIdGam :: IdDefOccGam
              _lhsOmainValExists :: Bool
              _moduleOfixityGam :: FixityGam
              _moduleOgUniq :: UID
              _moduleOidGam :: IdDefOccGam
              _moduleOisMainMod :: Bool
              _moduleOisTopMod :: Bool
              _moduleOmodEntToOrig :: ModEntRngMp
              _moduleOmodInScope :: ModEntDomMp
              _moduleOmoduleNm :: HsName
              _moduleOnmLev :: NmLev
              _moduleOopts :: EHCOpts
              _moduleOpatchEhNmInInstance :: PatchEhNmInInstance
              _moduleOtopInstanceNmL :: ([HsName])
              _moduleIeh :: (EH.Expr)
              _moduleIerrSq :: ErrSq
              _moduleIfileHeaderPragmas :: (Set.Set Pragma.Pragma)
              _moduleIgUniq :: UID
              _moduleIgathFixityGam :: FixityGam
              _moduleIgathIdGam :: IdDefOccGam
              _moduleIidUseOccGam :: IdUseOccGam
              _moduleImainValExists :: Bool
              _moduleIpp :: PP_Doc
              _moduleIppWrap :: (PP_Doc -> PP_Doc)
              _moduleItopInstanceNmL :: ([HsName])
              _moduleIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1066, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 13, column 9)
              _nmLev =
                  nmLevModule
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 14, column 17)
              _lhsOpp =
                  _ppExtra >-< _moduleIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 15, column 17)
              _ppExtra =
                  empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 5, column 9)
              _lhsOeh =
                  EH.AGItf_AGItf _moduleIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 248, column 9)
              _isMainMod =
                  _moduleImainValExists
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _moduleIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 2, column 43)
              _lhsOfileHeaderPragmas =
                  _moduleIfileHeaderPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _moduleIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _moduleIppWrap
              -- copy rule (up)
              _lhsOgathIdGam =
                  _moduleIgathIdGam
              -- copy rule (up)
              _lhsOmainValExists =
                  _moduleImainValExists
              -- copy rule (down)
              _moduleOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _moduleOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _moduleOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _moduleOisMainMod =
                  _isMainMod
              -- copy rule (down)
              _moduleOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _moduleOmodEntToOrig =
                  _lhsImodEntToOrig
              -- copy rule (down)
              _moduleOmodInScope =
                  _lhsImodInScope
              -- copy rule (down)
              _moduleOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _moduleOnmLev =
                  _nmLev
              -- copy rule (down)
              _moduleOopts =
                  _lhsIopts
              -- copy rule (from local)
              _moduleOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _moduleOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _moduleIeh,_moduleIerrSq,_moduleIfileHeaderPragmas,_moduleIgUniq,_moduleIgathFixityGam,_moduleIgathIdGam,_moduleIidUseOccGam,_moduleImainValExists,_moduleIpp,_moduleIppWrap,_moduleItopInstanceNmL,_moduleIundefOccGam) =
                  module_ _moduleOfixityGam _moduleOgUniq _moduleOidGam _moduleOisMainMod _moduleOisTopMod _moduleOmodEntToOrig _moduleOmodInScope _moduleOmoduleNm _moduleOnmLev _moduleOopts _moduleOpatchEhNmInInstance _moduleOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap)))
-- Alternative -------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.CaseAlt]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Alternative:
         child range          : {Range}
         child pattern        : Pattern 
         child righthandside  : RightHandSide 
         visit 0:
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
      alternative Empty:
         child range          : {Range}
-}
-- cata
sem_Alternative :: Alternative ->
                   T_Alternative
sem_Alternative (Alternative_Alternative _range _pattern _righthandside) =
    (sem_Alternative_Alternative _range (sem_Pattern _pattern) (sem_RightHandSide _righthandside))
sem_Alternative (Alternative_Empty _range) =
    (sem_Alternative_Empty _range)
-- semantic domain
type T_Alternative = UID ->
                     FixityGam ->
                     UID ->
                     (Map.Map HsName [(HsName,HsName)]) ->
                     IdDefOccGam ->
                     HsName ->
                     NmLev ->
                     EHCOpts ->
                     PatchEhNmInInstance ->
                     (Set.Set Pragma.Pragma) ->
                     ([HsName]) ->
                     ( ([EH.CaseAlt]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Alternative_Alternative :: Range ->
                               T_Pattern ->
                               T_RightHandSide ->
                               T_Alternative
sem_Alternative_Alternative range_ pattern_ righthandside_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _righthandsideOidGam :: IdDefOccGam
              _righthandsideOsepPP :: PP_Doc
              _lhsOeh :: ([EH.CaseAlt])
              _righthandsideOmustBeMono :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _righthandsideOcaseId :: UID
              _righthandsideOfixityGam :: FixityGam
              _righthandsideOgUniq :: UID
              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _righthandsideOmoduleNm :: HsName
              _righthandsideOnmLev :: NmLev
              _righthandsideOopts :: EHCOpts
              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
              _righthandsideOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              _righthandsideIeh :: (EH.Expr)
              _righthandsideIerrSq :: ErrSq
              _righthandsideIgUniq :: UID
              _righthandsideIidUseOccGam :: IdUseOccGam
              _righthandsideIpp :: PP_Doc
              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _righthandsideItopInstanceNmL :: ([HsName])
              _righthandsideIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 392, column 9)
              _righthandsideOidGam =
                  gamUnion _patternIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 73, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 121, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _patternIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 93, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, _patternIerrSq, _righthandsideIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 275, column 9)
              _pp =
                  _patternIpp >#< _righthandsideIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 276, column 9)
              _righthandsideOsepPP =
                  pp "->"
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 625, column 9)
              _lhsOeh =
                  [EH.mkAlt range_ _patternIeh _righthandsideIeh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 278, column 9)
              _righthandsideOmustBeMono =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam `gamAddGam` _righthandsideIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap . _righthandsideIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam `gamUnion` _righthandsideIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _righthandsideIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _righthandsideItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _patternOnmLev =
                  _nmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _righthandsideOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _righthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _righthandsideOgUniq =
                  _patternIgUniq
              -- copy rule (down)
              _righthandsideOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _righthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _righthandsideOnmLev =
                  _nmLev
              -- copy rule (down)
              _righthandsideOopts =
                  _lhsIopts
              -- copy rule (down)
              _righthandsideOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _righthandsideOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _righthandsideOtopInstanceNmL =
                  _patternItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideIundefOccGam) =
                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Alternative_Empty :: Range ->
                         T_Alternative
sem_Alternative_Empty range_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.CaseAlt])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 627, column 9)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Alternatives ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.CaseAlt]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Alternative 
         child tl             : Alternatives 
      alternative Nil:
-}
-- cata
sem_Alternatives :: Alternatives ->
                    T_Alternatives
sem_Alternatives list =
    (Prelude.foldr sem_Alternatives_Cons sem_Alternatives_Nil (Prelude.map sem_Alternative list))
-- semantic domain
type T_Alternatives = UID ->
                      FixityGam ->
                      UID ->
                      (Map.Map HsName [(HsName,HsName)]) ->
                      IdDefOccGam ->
                      HsName ->
                      NmLev ->
                      EHCOpts ->
                      PatchEhNmInInstance ->
                      (Set.Set Pragma.Pragma) ->
                      ([HsName]) ->
                      ( ([EH.CaseAlt]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Alternatives_Cons :: T_Alternative ->
                         T_Alternatives ->
                         T_Alternatives
sem_Alternatives_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.CaseAlt])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: ([EH.CaseAlt])
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.CaseAlt])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 619, column 28)
              _lhsOeh =
                  _hdIeh ++ _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Alternatives_Nil :: T_Alternatives
sem_Alternatives_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.CaseAlt])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 619, column 28)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Body --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         modEntToOrig         : ModEntRngMp
         modInScope           : ModEntDomMp
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.Expr
         errSq                : ErrSq
         extraModImpL         : [ModImp]
         gathFixityGam        : FixityGam
         gathIdGam            : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         mainValExists        : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Body:
         child range          : {Range}
         child importdeclarations : ImportDeclarations 
         child declarations   : Declarations 
         visit 0:
            local idDefOccGamMain : _
            local idGam       : _
            local mainrefname : _
            local mainrefnames : _
            local idUseOccGamMain : _
            local errIdUse    : _
            local idUseHereOccL : _
            local undefOccGamMain : _
            local idDpdMp     : _
            local mainValExists : _
            local sccOrder    : _
            local mkSccLet    : _
            local errReorder  : _
            local modAsMp     : _
            local refmainname : _
            local idOccDefMain : _
            local extraModImpL : _
            local errDupIntro : _
            local ppExtra     : _
            local ehMainDecl  : _
            local ehMainSig   : _
            local caseId      : _
            local pragmas     : _
-}
-- cata
sem_Body :: Body ->
            T_Body
sem_Body (Body_Body _range _importdeclarations _declarations) =
    (sem_Body_Body _range (sem_ImportDeclarations _importdeclarations) (sem_Declarations _declarations))
-- semantic domain
type T_Body = FixityGam ->
              UID ->
              IdDefOccGam ->
              Bool ->
              Bool ->
              ModEntRngMp ->
              ModEntDomMp ->
              HsName ->
              NmLev ->
              EHCOpts ->
              PatchEhNmInInstance ->
              (Set.Set Pragma.Pragma) ->
              ([HsName]) ->
              ( (EH.Expr),ErrSq,([ModImp]),UID,FixityGam,IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Body_Body :: Range ->
                 T_ImportDeclarations ->
                 T_Declarations ->
                 T_Body
sem_Body_Body range_ importdeclarations_ declarations_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImodEntToOrig
       _lhsImodInScope
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOundefOccGam :: IdUseOccGam
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _declarationsOfixityGam :: FixityGam
              _lhsOeh :: (EH.Expr)
              _lhsOgathIdGam :: IdDefOccGam
              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOextraModImpL :: ([ModImp])
              _lhsOgUniq :: UID
              _lhsOmainValExists :: Bool
              _lhsOtopInstanceNmL :: ([HsName])
              _importdeclarationsOfixityGam :: FixityGam
              _importdeclarationsOgUniq :: UID
              _importdeclarationsOidGam :: IdDefOccGam
              _importdeclarationsOisMainMod :: Bool
              _importdeclarationsOisTopMod :: Bool
              _importdeclarationsOmoduleNm :: HsName
              _importdeclarationsOnmLev :: NmLev
              _importdeclarationsOopts :: EHCOpts
              _importdeclarationsOpatchEhNmInInstance :: PatchEhNmInInstance
              _importdeclarationsOtopInstanceNmL :: ([HsName])
              _declarationsOcaseId :: UID
              _declarationsOgUniq :: UID
              _declarationsOidGam :: IdDefOccGam
              _declarationsOmoduleNm :: HsName
              _declarationsOnmLev :: NmLev
              _declarationsOopts :: EHCOpts
              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
              _declarationsOtopInstanceNmL :: ([HsName])
              _importdeclarationsIerrSq :: ErrSq
              _importdeclarationsIgUniq :: UID
              _importdeclarationsIgathFixityGam :: FixityGam
              _importdeclarationsIidUseOccGam :: IdUseOccGam
              _importdeclarationsImodAsMp :: (Map.Map HsName HsName)
              _importdeclarationsIpp :: PP_Doc
              _importdeclarationsIppWrap :: (PP_Doc -> PP_Doc)
              _importdeclarationsItopInstanceNmL :: ([HsName])
              _importdeclarationsIundefOccGam :: IdUseOccGam
              _declarationsIeh :: ([EH.Decl])
              _declarationsIerrSq :: ErrSq
              _declarationsIgUniq :: UID
              _declarationsIgathFixityGam :: FixityGam
              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
              _declarationsIidDefOccGam :: IdDefOccGam
              _declarationsIidDpdMp :: IdDpdMp
              _declarationsIidOccDefs :: ([IdOcc])
              _declarationsIidTySigDefOccGam :: IdDefOccGam
              _declarationsIidUseOccGam :: IdUseOccGam
              _declarationsIneedsError :: Bool
              _declarationsIpp :: PP_Doc
              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
              _declarationsItopInstanceNmL :: ([HsName])
              _declarationsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 252, column 9)
              _idDefOccGamMain =
                  gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain (IdAsp_Val_Pat _ehMainDecl) _lhsInmLev range_)
                  `gamUnion` gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain IdAsp_Val_Var _lhsInmLev range_)
                  `gamUnion` gamSingleton _idOccDefMain (mkIdDefOcc _idOccDefMain (IdAsp_Val_Sig _ehMainSig) _lhsInmLev range_)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 293, column 9)
              _idGam =
                  let
                      lkn :: (IdOcc -> Bool) -> HsName -> Maybe (HsName,[ModEnt])
                      lkn isq n = case Map.lookup n
                                       _lhsImodInScope of
                                    Just es | not (null es')
                                      -> Just (n,es')
                                      where es' = [ e | e <- es, isq (mentIdOcc e) ]
                                    _ -> Nothing
                      lks :: Bool -> IdOcc -> [(HsName,[ModEnt])]
                      lks allowRename o
                                = ns1 ++ catMaybes ns2
                                where (mq,n)    = hsnSplitQualify (ioccNm o)
                                      (ns1,isq) = case mq of
                                                    Just q  -> ( qres
                                                               , (\o' -> maybe False (           `elem` qquals      ) (hsnQualifier (ioccNm o'))
                                                                 )
                                                               )
                                                            where (qres,qquals)
                                                                     = maybe ([],[q])
                                                                             (\x@(_,es) -> ( [x]
                                                                                           , q : extra es
                                                                             )             )
                                                                             (lkn (const True) (hsnPrefixQual (as q) n))
                                                    Nothing -> ( [], const True )
                                      ns2       = [lkn isq n]
                                      extra | allowRename = \es -> catMaybes $ map (hsnQualifier . ioccNm . mentIdOcc) es
                                            | otherwise   = const []
                      as :: HsName -> HsName
                      as n = Map.findWithDefault n n _modAsMp
                      mkg sel g
                         = foldr idDefOccGamUnion emptyGam
                             [
                                    gamSingleton (o {ioccNm = n}) (d {doccNmAlts = Set.fromList ns})
                             | (o,d) <- gamToAssocL g
                             , (n,es) <- sel o
                             , let ns = [ ioccNm eo | e <- es, let eo = mentIdOcc e, ioccKind eo == ioccKind o ]
                             ]
                      gnew = mkg (lks False)
                             _lhsIidGam
                  in
                      mkg (lks False) _declarationsIidDefOccGam `idDefOccGamUnion` gnew
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 650, column 29)
              (_mainrefname,_mainrefnames,_idUseOccGamMain,_errIdUse) =
                  mkUseOccGam _lhsIopts _idGam
                    (  [hsnMain]
                    ++ [hsnIO]
                    ++ [hsnEhcRunMain]
                    ++ (if _declarationsIneedsError then [hsnError] else [])
                    )
                    IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 839, column 29)
              (_,_idUseHereOccL,_,_undefOccGamMain) =
                  splitIdUseOccGam _lhsInmLev _idUseOccGamMain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 844, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDefMain] ((IdOcc _mainrefname IdOcc_Val,undefined) : _idUseHereOccL)
                  `idDpdMpUnion`
                  idFrOccGam2DpdMp _idDefOccGamMain [_idOccDefMain]
                  `idDpdMpUnion`
                  _declarationsIidDpdMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 849, column 9)
              _lhsOundefOccGam =
                  let g = if _lhsIisMainMod then _undefOccGamMain else emptyGam
                  in  gamUnions [g,_declarationsIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 863, column 9)
              _mainValExists =
                  case gamLookupDup (IdOcc _refmainname IdOcc_Val) _declarationsIidDefOccGam of
                    Nothing   -> False
                    Just occs -> chk iaspIsValVar
                                  where chk f = not $ null $ filter (f . doccAsp) occs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 886, column 9)
              _sccOrder =
                  idDpdMp2SccOrder (_idDefOccGamMain `gamUnion` _declarationsIidDefOccGam) _idDpdMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1014, column 29)
              (_mkSccLet,_,_errReorder) =
                  let g = if _lhsIisMainMod then _idDefOccGamMain else emptyGam
                  in  mkIdOccSccEH range_ False (g `gamUnion` _declarationsIidDefOccGam) (Just _sccOrder)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1054, column 9)
              _modAsMp =
                  _importdeclarationsImodAsMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 8, column 9)
              _refmainname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm hsnMain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 188, column 9)
              _idOccDefMain =
                  IdOcc hsnMain IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 271, column 9)
              _extraModImpL =
                  if   ehcOptOverloadedStrings _lhsIopts
                  then [ModImp True hsnModDataString hsnModDataString False [ModEntSpec (hsnQualified hsnDataStringFromString) range_ Nothing] range_]
                  else []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 97, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 9, column 9)
              _lhsOerrSq =
                  Seq.firstNotEmpty [Seq.fromList _errDupIntro, Seq.fromList _errIdUse,Seq.fromList _errReorder, _declarationsIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 7, column 9)
              _lhsOpp =
                  _importdeclarationsIpp >-<
                  _declarationsIpp >-< _ppExtra
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 10, column 9)
              _ppExtra =
                  empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 22, column 9)
              _declarationsOfixityGam =
                  _declarationsIgathFixityGam `gamUnion` _lhsIfixityGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 51, column 9)
              _lhsOeh =
                  _mkSccLet (if _lhsIisMainMod then rngLift range_ EH.Expr_Var hsnMain
                                               else rngLift range_ EH.Expr_IConst 0
                            )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 57, column 9)
              _ehMainDecl =
                  rngLift range_ EH.Decl_Val
                      (rngLift range_ EH.PatExpr_Var hsnMain)
                      (appRngParApp range_ [rngLift range_ EH.Expr_Var (_mainrefnames !! 2),rngLift range_ EH.Expr_Var _mainrefname])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 57, column 9)
              _ehMainSig =
                  rngLift range_ EH.Decl_TySig
                      hsnMain
                      (appRngParApp range_ [rngLift range_ EH.TyExpr_Con (_mainrefnames !! 1),rngLift range_ EH.TyExpr_Wild])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 881, column 9)
              _caseId =
                  uidStart
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 89, column 9)
              _lhsOgathIdGam =
                  _declarationsIidDefOccGam
                  `gamUnion`
                  assocLToGam [ (o {ioccNm = hsnSetQual _lhsImoduleNm (ioccNm o)},d)
                              | (o,d) <- gamToAssocL _lhsIidGam
                              , n <- Map.findWithDefault [] o _lhsImodEntToOrig
                              ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 309, column 9)
              _pragmas =
                  _declarationsIgathPragmas `Set.union` _lhsIpragmas
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 315, column 9)
              _declarationsOgenerDerivMp =
                  let nm n = hsnSetLevQual _lhsInmLev _lhsImoduleNm n
                  in  Map.unionsWith (++)
                          [ Map.singleton (nm clNm) [(nm fldNm,nm dfltNm)]
                          | (Pragma.Pragma_Derivable clNm fldNm dfltNm) <- Set.toList _pragmas
                          ]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _importdeclarationsIgathFixityGam `gamAddGam` _declarationsIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _importdeclarationsIidUseOccGam `gamAddGam` _declarationsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _importdeclarationsIppWrap . _declarationsIppWrap
              -- copy rule (from local)
              _lhsOextraModImpL =
                  _extraModImpL
              -- copy rule (up)
              _lhsOgUniq =
                  _declarationsIgUniq
              -- copy rule (from local)
              _lhsOmainValExists =
                  _mainValExists
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _declarationsItopInstanceNmL
              -- copy rule (down)
              _importdeclarationsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _importdeclarationsOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _importdeclarationsOidGam =
                  _idGam
              -- copy rule (down)
              _importdeclarationsOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _importdeclarationsOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _importdeclarationsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _importdeclarationsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _importdeclarationsOopts =
                  _lhsIopts
              -- copy rule (down)
              _importdeclarationsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _importdeclarationsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _declarationsOcaseId =
                  _caseId
              -- copy rule (chain)
              _declarationsOgUniq =
                  _importdeclarationsIgUniq
              -- copy rule (from local)
              _declarationsOidGam =
                  _idGam
              -- copy rule (down)
              _declarationsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _declarationsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _declarationsOopts =
                  _lhsIopts
              -- copy rule (down)
              _declarationsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (from local)
              _declarationsOpragmas =
                  _pragmas
              -- copy rule (chain)
              _declarationsOtopInstanceNmL =
                  _importdeclarationsItopInstanceNmL
              ( _importdeclarationsIerrSq,_importdeclarationsIgUniq,_importdeclarationsIgathFixityGam,_importdeclarationsIidUseOccGam,_importdeclarationsImodAsMp,_importdeclarationsIpp,_importdeclarationsIppWrap,_importdeclarationsItopInstanceNmL,_importdeclarationsIundefOccGam) =
                  importdeclarations_ _importdeclarationsOfixityGam _importdeclarationsOgUniq _importdeclarationsOidGam _importdeclarationsOisMainMod _importdeclarationsOisTopMod _importdeclarationsOmoduleNm _importdeclarationsOnmLev _importdeclarationsOopts _importdeclarationsOpatchEhNmInInstance _importdeclarationsOtopInstanceNmL
              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidOccDefs,_declarationsIidTySigDefOccGam,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsIundefOccGam) =
                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOextraModImpL,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOidUseOccGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Constructor -------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         conAndFldrefnames    : AssocL Name Names
         conrefnames          : Names
         eh                   : EH.DataConstr
         errSq                : ErrSq
         freeTvarS            : HsNameS
         hasFlds              : Bool
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Constructor:
         child range          : {Range}
         child constructor    : {Name}
         child types          : Types 
         visit 0:
            local conrefname  : _
            local nmLev       : _
            local pp          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Infix:
         child range          : {Range}
         child leftType       : Type 
         child constructorOperator : {Name}
         child rightType      : Type 
         visit 0:
            local conrefname  : _
            local nmLev       : _
            local pp          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Record:
         child range          : {Range}
         child constructor    : {Name}
         child fieldDeclarations : FieldDeclarations 
         visit 0:
            local conrefname  : _
            local conAndFldrefnames : _
            local pp          : _
      alternative Contexted:
         child range          : {Range}
         child context        : ContextItems 
         child constructor    : Constructor 
         visit 0:
            local pp          : _
      alternative GADTFunction:
         child range          : {Range}
         child constructor    : {Name}
         child type           : Type 
         visit 0:
            local conrefname  : _
            local nmLev       : _
            local pp          : _
            local ehArgs      : _
            local ehRes       : _
            local isAsPred    : _
            local doGenVarWild : _
-}
-- cata
sem_Constructor :: Constructor ->
                   T_Constructor
sem_Constructor (Constructor_Constructor _range _constructor _types) =
    (sem_Constructor_Constructor _range _constructor (sem_Types _types))
sem_Constructor (Constructor_Infix _range _leftType _constructorOperator _rightType) =
    (sem_Constructor_Infix _range (sem_Type _leftType) _constructorOperator (sem_Type _rightType))
sem_Constructor (Constructor_Record _range _constructor _fieldDeclarations) =
    (sem_Constructor_Record _range _constructor (sem_FieldDeclarations _fieldDeclarations))
sem_Constructor (Constructor_Contexted _range _context _constructor) =
    (sem_Constructor_Contexted _range (sem_ContextItems _context) (sem_Constructor _constructor))
sem_Constructor (Constructor_GADTFunction _range _constructor _type) =
    (sem_Constructor_GADTFunction _range _constructor (sem_Type _type))
-- semantic domain
type T_Constructor = FixityGam ->
                     UID ->
                     IdDefOccGam ->
                     HsName ->
                     NmLev ->
                     EHCOpts ->
                     PatchEhNmInInstance ->
                     ([HsName]) ->
                     ( (AssocL Name Names),Names,(EH.DataConstr),ErrSq,HsNameS,UID,Bool,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Constructor_Constructor :: Range ->
                               Name ->
                               T_Types ->
                               T_Constructor
sem_Constructor_Constructor range_ constructor_ types_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconrefnames :: Names
              _lhsOeh :: (EH.DataConstr)
              _lhsOconAndFldrefnames :: (AssocL Name Names)
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOhasFlds :: Bool
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typesOfixityGam :: FixityGam
              _typesOgUniq :: UID
              _typesOidGam :: IdDefOccGam
              _typesOisAsPred :: Bool
              _typesOnmLev :: NmLev
              _typesOopts :: EHCOpts
              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
              _typesOtopInstanceNmL :: ([HsName])
              _typesIeh :: ([EH.TyExpr])
              _typesIerrSq :: ErrSq
              _typesIfreeTvarS :: HsNameS
              _typesIgUniq :: UID
              _typesIidUseOccGam :: IdUseOccGam
              _typesIpp :: PP_Doc
              _typesIppL :: ([PP_Doc])
              _typesIppWrap :: (PP_Doc -> PP_Doc)
              _typesItopInstanceNmL :: ([HsName])
              _typesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
              _conrefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 71, column 9)
              _lhsOconrefnames =
                  [_conrefname]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 178, column 9)
              _pp =
                  constructor_ >#< ppSpaces _typesIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 307, column 9)
              _lhsOeh =
                  rngLift range_ EH.DataConstr_Constr _conrefname
                          Nothing
                          (map (ehPlainDataField emptyRange) _typesIeh)
                          Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 174, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 227, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
              _lhsOconAndFldrefnames =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typesIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typesIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
              _lhsOhasFlds =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typesIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typesIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typesIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _typesIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typesItopInstanceNmL
              -- copy rule (down)
              _typesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typesOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typesOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typesOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typesOnmLev =
                  _nmLev
              -- copy rule (down)
              _typesOopts =
                  _lhsIopts
              -- copy rule (down)
              _typesOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typesOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesIundefOccGam) =
                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL
          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Constructor_Infix :: Range ->
                         T_Type ->
                         Name ->
                         T_Type ->
                         T_Constructor
sem_Constructor_Infix range_ leftType_ constructorOperator_ rightType_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconrefnames :: Names
              _lhsOeh :: (EH.DataConstr)
              _lhsOconAndFldrefnames :: (AssocL Name Names)
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOhasFlds :: Bool
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _leftTypeOdoGenVarWild :: Bool
              _leftTypeOfixityGam :: FixityGam
              _leftTypeOgUniq :: UID
              _leftTypeOidGam :: IdDefOccGam
              _leftTypeOisAsPred :: Bool
              _leftTypeOnmLev :: NmLev
              _leftTypeOopts :: EHCOpts
              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftTypeOtopInstanceNmL :: ([HsName])
              _rightTypeOdoGenVarWild :: Bool
              _rightTypeOfixityGam :: FixityGam
              _rightTypeOgUniq :: UID
              _rightTypeOidGam :: IdDefOccGam
              _rightTypeOisAsPred :: Bool
              _rightTypeOnmLev :: NmLev
              _rightTypeOopts :: EHCOpts
              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightTypeOtopInstanceNmL :: ([HsName])
              _leftTypeIconNm :: Name
              _leftTypeIeh :: (EH.TyExpr)
              _leftTypeIehMbAsPr :: (Maybe EH.PrExpr)
              _leftTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _leftTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _leftTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _leftTypeIerrSq :: ErrSq
              _leftTypeIfreeTvarS :: HsNameS
              _leftTypeIgUniq :: UID
              _leftTypeIidUseOccGam :: IdUseOccGam
              _leftTypeImbRefConNm :: (Maybe Name)
              _leftTypeIopChain :: (OpChain EH.TyExpr)
              _leftTypeIoperatorName :: MaybeName
              _leftTypeIpp :: PP_Doc
              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
              _leftTypeItopInstanceNmL :: ([HsName])
              _leftTypeItyConIs :: TypeConFixedMeaning
              _leftTypeIundefOccGam :: IdUseOccGam
              _rightTypeIconNm :: Name
              _rightTypeIeh :: (EH.TyExpr)
              _rightTypeIehMbAsPr :: (Maybe EH.PrExpr)
              _rightTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _rightTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _rightTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _rightTypeIerrSq :: ErrSq
              _rightTypeIfreeTvarS :: HsNameS
              _rightTypeIgUniq :: UID
              _rightTypeIidUseOccGam :: IdUseOccGam
              _rightTypeImbRefConNm :: (Maybe Name)
              _rightTypeIopChain :: (OpChain EH.TyExpr)
              _rightTypeIoperatorName :: MaybeName
              _rightTypeIpp :: PP_Doc
              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
              _rightTypeItopInstanceNmL :: ([HsName])
              _rightTypeItyConIs :: TypeConFixedMeaning
              _rightTypeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 66, column 9)
              _conrefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructorOperator_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 73, column 9)
              _lhsOconrefnames =
                  [_conrefname]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 180, column 9)
              _pp =
                  _leftTypeIpp >#< constructorOperator_ >#< _rightTypeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 319, column 9)
              _lhsOeh =
                  rngLift range_ EH.DataConstr_Constr _conrefname
                          (let fgi = fixityGamLookup _conrefname _lhsIfixityGam
                            in Just (fgiPrio fgi, fgiFixity fgi)
                          )
                          (map (ehPlainDataField emptyRange) [_leftTypeIeh,_rightTypeIeh])
                          Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 174, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 227, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
              _lhsOconAndFldrefnames =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _leftTypeIerrSq `Seq.union` _rightTypeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _leftTypeIfreeTvarS `Set.union` _rightTypeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
              _lhsOhasFlds =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _leftTypeIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftTypeIppWrap . _rightTypeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftTypeIundefOccGam `gamUnion` _rightTypeIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _rightTypeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightTypeItopInstanceNmL
              -- copy rule (from local)
              _leftTypeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _leftTypeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _leftTypeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _leftTypeOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _leftTypeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _leftTypeOnmLev =
                  _nmLev
              -- copy rule (down)
              _leftTypeOopts =
                  _lhsIopts
              -- copy rule (down)
              _leftTypeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _leftTypeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _rightTypeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _rightTypeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rightTypeOgUniq =
                  _leftTypeIgUniq
              -- copy rule (down)
              _rightTypeOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _rightTypeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _rightTypeOnmLev =
                  _nmLev
              -- copy rule (down)
              _rightTypeOopts =
                  _lhsIopts
              -- copy rule (down)
              _rightTypeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rightTypeOtopInstanceNmL =
                  _leftTypeItopInstanceNmL
              ( _leftTypeIconNm,_leftTypeIeh,_leftTypeIehMbAsPr,_leftTypeIehMbAsPrL,_leftTypeIehMbAsTyPr,_leftTypeIehMbAsTyPrL,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeImbRefConNm,_leftTypeIopChain,_leftTypeIoperatorName,_leftTypeIpp,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeItyConIs,_leftTypeIundefOccGam) =
                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOisAsPred _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL
              ( _rightTypeIconNm,_rightTypeIeh,_rightTypeIehMbAsPr,_rightTypeIehMbAsPrL,_rightTypeIehMbAsTyPr,_rightTypeIehMbAsTyPrL,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeImbRefConNm,_rightTypeIopChain,_rightTypeIoperatorName,_rightTypeIpp,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeItyConIs,_rightTypeIundefOccGam) =
                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOisAsPred _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL
          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Constructor_Record :: Range ->
                          Name ->
                          T_FieldDeclarations ->
                          T_Constructor
sem_Constructor_Record range_ constructor_ fieldDeclarations_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconrefnames :: Names
              _lhsOeh :: (EH.DataConstr)
              _lhsOhasFlds :: Bool
              _lhsOconAndFldrefnames :: (AssocL Name Names)
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _fieldDeclarationsOfixityGam :: FixityGam
              _fieldDeclarationsOgUniq :: UID
              _fieldDeclarationsOidGam :: IdDefOccGam
              _fieldDeclarationsOmoduleNm :: HsName
              _fieldDeclarationsOnmLev :: NmLev
              _fieldDeclarationsOopts :: EHCOpts
              _fieldDeclarationsOpatchEhNmInInstance :: PatchEhNmInInstance
              _fieldDeclarationsOtopInstanceNmL :: ([HsName])
              _fieldDeclarationsIeh :: ([EH.DataField])
              _fieldDeclarationsIerrSq :: ErrSq
              _fieldDeclarationsIfldrefnames :: Names
              _fieldDeclarationsIfreeTvarS :: HsNameS
              _fieldDeclarationsIgUniq :: UID
              _fieldDeclarationsIidUseOccGam :: IdUseOccGam
              _fieldDeclarationsIpp :: PP_Doc
              _fieldDeclarationsIppL :: ([PP_Doc])
              _fieldDeclarationsIppWrap :: (PP_Doc -> PP_Doc)
              _fieldDeclarationsItopInstanceNmL :: ([HsName])
              _fieldDeclarationsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
              _conrefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 76, column 9)
              _lhsOconrefnames =
                  [_conrefname]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 87, column 9)
              _conAndFldrefnames =
                  [(_conrefname,_fieldDeclarationsIfldrefnames)]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 182, column 9)
              _pp =
                  constructor_ >#< ppCurlysCommas' _fieldDeclarationsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 327, column 9)
              _lhsOeh =
                  rngLift range_ EH.DataConstr_Constr _conrefname
                          Nothing
                          _fieldDeclarationsIeh
                          Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 241, column 9)
              _lhsOhasFlds =
                  True
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
              _lhsOconAndFldrefnames =
                  _conAndFldrefnames
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _fieldDeclarationsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _fieldDeclarationsIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _fieldDeclarationsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _fieldDeclarationsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _fieldDeclarationsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _fieldDeclarationsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _fieldDeclarationsItopInstanceNmL
              -- copy rule (down)
              _fieldDeclarationsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _fieldDeclarationsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _fieldDeclarationsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _fieldDeclarationsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _fieldDeclarationsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _fieldDeclarationsOopts =
                  _lhsIopts
              -- copy rule (down)
              _fieldDeclarationsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _fieldDeclarationsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _fieldDeclarationsIeh,_fieldDeclarationsIerrSq,_fieldDeclarationsIfldrefnames,_fieldDeclarationsIfreeTvarS,_fieldDeclarationsIgUniq,_fieldDeclarationsIidUseOccGam,_fieldDeclarationsIpp,_fieldDeclarationsIppL,_fieldDeclarationsIppWrap,_fieldDeclarationsItopInstanceNmL,_fieldDeclarationsIundefOccGam) =
                  fieldDeclarations_ _fieldDeclarationsOfixityGam _fieldDeclarationsOgUniq _fieldDeclarationsOidGam _fieldDeclarationsOmoduleNm _fieldDeclarationsOnmLev _fieldDeclarationsOopts _fieldDeclarationsOpatchEhNmInInstance _fieldDeclarationsOtopInstanceNmL
          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Constructor_Contexted :: Range ->
                             T_ContextItems ->
                             T_Constructor ->
                             T_Constructor
sem_Constructor_Contexted range_ context_ constructor_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.DataConstr)
              _lhsOconAndFldrefnames :: (AssocL Name Names)
              _lhsOconrefnames :: Names
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOhasFlds :: Bool
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _contextOfixityGam :: FixityGam
              _contextOgUniq :: UID
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _constructorOfixityGam :: FixityGam
              _constructorOgUniq :: UID
              _constructorOidGam :: IdDefOccGam
              _constructorOmoduleNm :: HsName
              _constructorOnmLev :: NmLev
              _constructorOopts :: EHCOpts
              _constructorOpatchEhNmInInstance :: PatchEhNmInInstance
              _constructorOtopInstanceNmL :: ([HsName])
              _contextIeh :: ([EH.PrExpr])
              _contextIehTy :: ([EH.TyExpr])
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              _constructorIconAndFldrefnames :: (AssocL Name Names)
              _constructorIconrefnames :: Names
              _constructorIeh :: (EH.DataConstr)
              _constructorIerrSq :: ErrSq
              _constructorIfreeTvarS :: HsNameS
              _constructorIgUniq :: UID
              _constructorIhasFlds :: Bool
              _constructorIidUseOccGam :: IdUseOccGam
              _constructorIpp :: PP_Doc
              _constructorIppWrap :: (PP_Doc -> PP_Doc)
              _constructorItopInstanceNmL :: ([HsName])
              _constructorIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 184, column 17)
              _pp =
                  _contextIpp >#< "=>" >#< _constructorIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 332, column 17)
              _lhsOeh =
                  _constructorIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
              _lhsOconAndFldrefnames =
                  _constructorIconAndFldrefnames
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
              _lhsOconrefnames =
                  _constructorIconrefnames
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _contextIerrSq `Seq.union` _constructorIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _contextIfreeTvarS `Set.union` _constructorIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
              _lhsOhasFlds =
                  _constructorIhasFlds
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _contextIidUseOccGam `gamAddGam` _constructorIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _contextIppWrap . _constructorIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _contextIundefOccGam `gamUnion` _constructorIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _constructorIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _constructorItopInstanceNmL
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _contextOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _contextOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _contextOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (down)
              _contextOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _contextOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _constructorOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _constructorOgUniq =
                  _contextIgUniq
              -- copy rule (down)
              _constructorOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _constructorOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _constructorOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _constructorOopts =
                  _lhsIopts
              -- copy rule (down)
              _constructorOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _constructorOtopInstanceNmL =
                  _contextItopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
              ( _constructorIconAndFldrefnames,_constructorIconrefnames,_constructorIeh,_constructorIerrSq,_constructorIfreeTvarS,_constructorIgUniq,_constructorIhasFlds,_constructorIidUseOccGam,_constructorIpp,_constructorIppWrap,_constructorItopInstanceNmL,_constructorIundefOccGam) =
                  constructor_ _constructorOfixityGam _constructorOgUniq _constructorOidGam _constructorOmoduleNm _constructorOnmLev _constructorOopts _constructorOpatchEhNmInInstance _constructorOtopInstanceNmL
          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Constructor_GADTFunction :: Range ->
                                Name ->
                                T_Type ->
                                T_Constructor
sem_Constructor_GADTFunction range_ constructor_ type_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconrefnames :: Names
              _lhsOeh :: (EH.DataConstr)
              _lhsOconAndFldrefnames :: (AssocL Name Names)
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOhasFlds :: Bool
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 64, column 9)
              _conrefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm constructor_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 71, column 9)
              _lhsOconrefnames =
                  [_conrefname]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 38, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 186, column 17)
              _pp =
                  constructor_ >#< "::" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 312, column 41)
              (_ehArgs,_ehRes) =
                  appUnArr _typeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 314, column 9)
              _lhsOeh =
                  rngLift range_ EH.DataConstr_Constr _conrefname
                          Nothing
                          (map (ehPlainDataField emptyRange) _ehArgs)
                          (Just _ehRes)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 174, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 227, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
              _lhsOconAndFldrefnames =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
              _lhsOhasFlds =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typeOnmLev =
                  _nmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Constructors ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         conAndFldrefnames    : AssocL Name Names
         conrefnames          : Names
         eh                   : [EH.DataConstr]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         hasFlds              : Bool
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Constructor 
         child tl             : Constructors 
      alternative Nil:
-}
-- cata
sem_Constructors :: Constructors ->
                    T_Constructors
sem_Constructors list =
    (Prelude.foldr sem_Constructors_Cons sem_Constructors_Nil (Prelude.map sem_Constructor list))
-- semantic domain
type T_Constructors = FixityGam ->
                      UID ->
                      IdDefOccGam ->
                      HsName ->
                      NmLev ->
                      EHCOpts ->
                      PatchEhNmInInstance ->
                      ([HsName]) ->
                      ( (AssocL Name Names),Names,([EH.DataConstr]),ErrSq,HsNameS,UID,Bool,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Constructors_Cons :: T_Constructor ->
                         T_Constructors ->
                         T_Constructors
sem_Constructors_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconAndFldrefnames :: (AssocL Name Names)
              _lhsOconrefnames :: Names
              _lhsOeh :: ([EH.DataConstr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOhasFlds :: Bool
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIconAndFldrefnames :: (AssocL Name Names)
              _hdIconrefnames :: Names
              _hdIeh :: (EH.DataConstr)
              _hdIerrSq :: ErrSq
              _hdIfreeTvarS :: HsNameS
              _hdIgUniq :: UID
              _hdIhasFlds :: Bool
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIconAndFldrefnames :: (AssocL Name Names)
              _tlIconrefnames :: Names
              _tlIeh :: ([EH.DataConstr])
              _tlIerrSq :: ErrSq
              _tlIfreeTvarS :: HsNameS
              _tlIgUniq :: UID
              _tlIhasFlds :: Bool
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
              _lhsOconAndFldrefnames =
                  _hdIconAndFldrefnames ++ _tlIconAndFldrefnames
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
              _lhsOconrefnames =
                  _hdIconrefnames ++ _tlIconrefnames
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 295, column 28)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
              _lhsOhasFlds =
                  _hdIhasFlds || _tlIhasFlds
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIconAndFldrefnames,_hdIconrefnames,_hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIhasFlds,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIconAndFldrefnames,_tlIconrefnames,_tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIhasFlds,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Constructors_Nil :: T_Constructors
sem_Constructors_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconAndFldrefnames :: (AssocL Name Names)
              _lhsOconrefnames :: Names
              _lhsOeh :: ([EH.DataConstr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOhasFlds :: Bool
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 79, column 45)
              _lhsOconAndFldrefnames =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 60, column 39)
              _lhsOconrefnames =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 295, column 28)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 237, column 35)
              _lhsOhasFlds =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconAndFldrefnames,_lhsOconrefnames,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOhasFlds,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ContextItem -------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.PrExpr
         ehTy                 : EH.TyExpr
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Class:
         child range          : {Range}
         child name           : {Name}
         child types          : Types 
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehTy        : _
            local isAsPred    : _
      alternative Forall:
         child range          : {Range}
         child typevariables  : {Names}
         child context        : ContextItem 
         visit 0:
            local idDefOccGamInside : _
            local idGam       : _
            local nmLev       : _
            local pp          : _
            local eh          : _
            local ehTy        : _
      alternative Arrow:
         child range          : {Range}
         child argument       : ContextItem 
         child result         : ContextItem 
         visit 0:
            local pp          : _
            local eh          : _
            local ehTy        : _
      alternative Implicits:
         child range          : {Range}
         visit 0:
            local pp          : _
            local eh          : _
            local ehTy        : _
      alternative NoImplicits:
         child range          : {Range}
         visit 0:
            local pp          : _
            local eh          : _
            local ehTy        : _
      alternative RowLacksLabel:
         child range          : {Range}
         child rowvariable    : {Name}
         child name           : {Name}
         visit 0:
            local pp          : _
            local eh          : _
            local ehTy        : _
      alternative Equal:
         child range          : {Range}
         child type1          : Type 
         child type2          : Type 
         visit 0:
            local pp          : _
            local eh          : _
            local ehTy        : _
            local isAsPred    : _
            local doGenVarWild : _
-}
-- cata
sem_ContextItem :: ContextItem ->
                   T_ContextItem
sem_ContextItem (ContextItem_Class _range _name _types) =
    (sem_ContextItem_Class _range _name (sem_Types _types))
sem_ContextItem (ContextItem_Forall _range _typevariables _context) =
    (sem_ContextItem_Forall _range _typevariables (sem_ContextItem _context))
sem_ContextItem (ContextItem_Arrow _range _argument _result) =
    (sem_ContextItem_Arrow _range (sem_ContextItem _argument) (sem_ContextItem _result))
sem_ContextItem (ContextItem_Implicits _range) =
    (sem_ContextItem_Implicits _range)
sem_ContextItem (ContextItem_NoImplicits _range) =
    (sem_ContextItem_NoImplicits _range)
sem_ContextItem (ContextItem_RowLacksLabel _range _rowvariable _name) =
    (sem_ContextItem_RowLacksLabel _range _rowvariable _name)
sem_ContextItem (ContextItem_Equal _range _type1 _type2) =
    (sem_ContextItem_Equal _range (sem_Type _type1) (sem_Type _type2))
-- semantic domain
type T_ContextItem = FixityGam ->
                     UID ->
                     IdDefOccGam ->
                     NmLev ->
                     EHCOpts ->
                     PatchEhNmInInstance ->
                     ([HsName]) ->
                     ( (EH.PrExpr),(EH.TyExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ContextItem_Class :: Range ->
                         Name ->
                         T_Types ->
                         T_ContextItem
sem_ContextItem_Class range_ name_ types_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PrExpr)
              _lhsOehTy :: (EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typesOfixityGam :: FixityGam
              _typesOgUniq :: UID
              _typesOidGam :: IdDefOccGam
              _typesOisAsPred :: Bool
              _typesOnmLev :: NmLev
              _typesOopts :: EHCOpts
              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
              _typesOtopInstanceNmL :: ([HsName])
              _typesIeh :: ([EH.TyExpr])
              _typesIerrSq :: ErrSq
              _typesIfreeTvarS :: HsNameS
              _typesIgUniq :: UID
              _typesIidUseOccGam :: IdUseOccGam
              _typesIpp :: PP_Doc
              _typesIppL :: ([PP_Doc])
              _typesIppWrap :: (PP_Doc -> PP_Doc)
              _typesItopInstanceNmL :: ([HsName])
              _typesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 617, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 619, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_typesIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 125, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _typesIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 162, column 9)
              _pp =
                  name_ >#< ppSpaces _typesIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 275, column 9)
              _eh =
                  rngLift range_ EH.PrExpr_Class _refname _typesIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
              _ehTy =
                  rngLift range_ EH.TyExpr_Pred _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 193, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typesIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typesIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typesIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehTy =
                  _ehTy
              -- copy rule (up)
              _lhsOgUniq =
                  _typesIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typesItopInstanceNmL
              -- copy rule (down)
              _typesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typesOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typesOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typesOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typesOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typesOopts =
                  _lhsIopts
              -- copy rule (down)
              _typesOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typesOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesIundefOccGam) =
                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextItem_Forall :: Range ->
                          Names ->
                          T_ContextItem ->
                          T_ContextItem
sem_ContextItem_Forall range_ typevariables_ context_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOfreeTvarS :: HsNameS
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PrExpr)
              _lhsOehTy :: (EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _contextOfixityGam :: FixityGam
              _contextOgUniq :: UID
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _contextIeh :: (EH.PrExpr)
              _contextIehTy :: (EH.TyExpr)
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 259, column 9)
              _idDefOccGamInside =
                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 416, column 9)
              _idGam =
                  gamUnion _idDefOccGamInside _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 46, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 172, column 9)
              _pp =
                  "forall" >#< ppSpaces typevariables_ >#< "." >#< _contextIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 283, column 9)
              _eh =
                  foldr (rngLift range_ EH.PrExpr_Forall) _contextIeh typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
              _ehTy =
                  rngLift range_ EH.TyExpr_Pred _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 128, column 9)
              _lhsOfreeTvarS =
                  _contextIfreeTvarS `Set.difference` Set.fromList typevariables_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _contextIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _contextIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _contextIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _contextIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehTy =
                  _ehTy
              -- copy rule (up)
              _lhsOgUniq =
                  _contextIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _contextItopInstanceNmL
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _contextOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _contextOidGam =
                  _idGam
              -- copy rule (from local)
              _contextOnmLev =
                  _nmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (down)
              _contextOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _contextOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextItem_Arrow :: Range ->
                         T_ContextItem ->
                         T_ContextItem ->
                         T_ContextItem
sem_ContextItem_Arrow range_ argument_ result_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PrExpr)
              _lhsOehTy :: (EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _argumentOfixityGam :: FixityGam
              _argumentOgUniq :: UID
              _argumentOidGam :: IdDefOccGam
              _argumentOnmLev :: NmLev
              _argumentOopts :: EHCOpts
              _argumentOpatchEhNmInInstance :: PatchEhNmInInstance
              _argumentOtopInstanceNmL :: ([HsName])
              _resultOfixityGam :: FixityGam
              _resultOgUniq :: UID
              _resultOidGam :: IdDefOccGam
              _resultOnmLev :: NmLev
              _resultOopts :: EHCOpts
              _resultOpatchEhNmInInstance :: PatchEhNmInInstance
              _resultOtopInstanceNmL :: ([HsName])
              _argumentIeh :: (EH.PrExpr)
              _argumentIehTy :: (EH.TyExpr)
              _argumentIerrSq :: ErrSq
              _argumentIfreeTvarS :: HsNameS
              _argumentIgUniq :: UID
              _argumentIidUseOccGam :: IdUseOccGam
              _argumentIpp :: PP_Doc
              _argumentIppWrap :: (PP_Doc -> PP_Doc)
              _argumentItopInstanceNmL :: ([HsName])
              _argumentIundefOccGam :: IdUseOccGam
              _resultIeh :: (EH.PrExpr)
              _resultIehTy :: (EH.TyExpr)
              _resultIerrSq :: ErrSq
              _resultIfreeTvarS :: HsNameS
              _resultIgUniq :: UID
              _resultIidUseOccGam :: IdUseOccGam
              _resultIpp :: PP_Doc
              _resultIppWrap :: (PP_Doc -> PP_Doc)
              _resultItopInstanceNmL :: ([HsName])
              _resultIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 170, column 9)
              _pp =
                  _argumentIpp >#< "->" >#< _resultIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 281, column 9)
              _eh =
                  rngLift range_ EH.PrExpr_Arrow _argumentIeh _resultIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
              _ehTy =
                  rngLift range_ EH.TyExpr_Pred _eh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _argumentIerrSq `Seq.union` _resultIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _argumentIfreeTvarS `Set.union` _resultIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _argumentIidUseOccGam `gamAddGam` _resultIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _argumentIppWrap . _resultIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _argumentIundefOccGam `gamUnion` _resultIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehTy =
                  _ehTy
              -- copy rule (up)
              _lhsOgUniq =
                  _resultIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _resultItopInstanceNmL
              -- copy rule (down)
              _argumentOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _argumentOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _argumentOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _argumentOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _argumentOopts =
                  _lhsIopts
              -- copy rule (down)
              _argumentOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _argumentOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _resultOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _resultOgUniq =
                  _argumentIgUniq
              -- copy rule (down)
              _resultOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _resultOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _resultOopts =
                  _lhsIopts
              -- copy rule (down)
              _resultOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _resultOtopInstanceNmL =
                  _argumentItopInstanceNmL
              ( _argumentIeh,_argumentIehTy,_argumentIerrSq,_argumentIfreeTvarS,_argumentIgUniq,_argumentIidUseOccGam,_argumentIpp,_argumentIppWrap,_argumentItopInstanceNmL,_argumentIundefOccGam) =
                  argument_ _argumentOfixityGam _argumentOgUniq _argumentOidGam _argumentOnmLev _argumentOopts _argumentOpatchEhNmInInstance _argumentOtopInstanceNmL
              ( _resultIeh,_resultIehTy,_resultIerrSq,_resultIfreeTvarS,_resultIgUniq,_resultIidUseOccGam,_resultIpp,_resultIppWrap,_resultItopInstanceNmL,_resultIundefOccGam) =
                  result_ _resultOfixityGam _resultOgUniq _resultOidGam _resultOnmLev _resultOopts _resultOpatchEhNmInInstance _resultOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextItem_Implicits :: Range ->
                             T_ContextItem
sem_ContextItem_Implicits range_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PrExpr)
              _lhsOehTy :: (EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 164, column 9)
              _pp =
                  pp "..."
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 277, column 9)
              _eh =
                  undefined
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 291, column 9)
              _ehTy =
                  rngLift range_ EH.TyExpr_Impls
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehTy =
                  _ehTy
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextItem_NoImplicits :: Range ->
                               T_ContextItem
sem_ContextItem_NoImplicits range_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PrExpr)
              _lhsOehTy :: (EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 166, column 9)
              _pp =
                  empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 277, column 9)
              _eh =
                  undefined
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 293, column 9)
              _ehTy =
                  rngLift range_ EH.TyExpr_NoImpls
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehTy =
                  _ehTy
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextItem_RowLacksLabel :: Range ->
                                 Name ->
                                 Name ->
                                 T_ContextItem
sem_ContextItem_RowLacksLabel range_ rowvariable_ name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOfreeTvarS :: HsNameS
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PrExpr)
              _lhsOehTy :: (EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 168, column 9)
              _pp =
                  name_ >|< "\\" >|< rowvariable_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 279, column 9)
              _eh =
                  rngLift range_ EH.PrExpr_Lacks (rngLift range_ EH.RowTyExpr_Var rowvariable_) name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
              _ehTy =
                  rngLift range_ EH.TyExpr_Pred _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 130, column 9)
              _lhsOfreeTvarS =
                  Set.singleton rowvariable_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehTy =
                  _ehTy
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextItem_Equal :: Range ->
                         T_Type ->
                         T_Type ->
                         T_ContextItem
sem_ContextItem_Equal range_ type1_ type2_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PrExpr)
              _lhsOehTy :: (EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _type1OdoGenVarWild :: Bool
              _type1OfixityGam :: FixityGam
              _type1OgUniq :: UID
              _type1OidGam :: IdDefOccGam
              _type1OisAsPred :: Bool
              _type1OnmLev :: NmLev
              _type1Oopts :: EHCOpts
              _type1OpatchEhNmInInstance :: PatchEhNmInInstance
              _type1OtopInstanceNmL :: ([HsName])
              _type2OdoGenVarWild :: Bool
              _type2OfixityGam :: FixityGam
              _type2OgUniq :: UID
              _type2OidGam :: IdDefOccGam
              _type2OisAsPred :: Bool
              _type2OnmLev :: NmLev
              _type2Oopts :: EHCOpts
              _type2OpatchEhNmInInstance :: PatchEhNmInInstance
              _type2OtopInstanceNmL :: ([HsName])
              _type1IconNm :: Name
              _type1Ieh :: (EH.TyExpr)
              _type1IehMbAsPr :: (Maybe EH.PrExpr)
              _type1IehMbAsPrL :: ([Maybe EH.PrExpr])
              _type1IehMbAsTyPr :: (Maybe EH.TyExpr)
              _type1IehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _type1IerrSq :: ErrSq
              _type1IfreeTvarS :: HsNameS
              _type1IgUniq :: UID
              _type1IidUseOccGam :: IdUseOccGam
              _type1ImbRefConNm :: (Maybe Name)
              _type1IopChain :: (OpChain EH.TyExpr)
              _type1IoperatorName :: MaybeName
              _type1Ipp :: PP_Doc
              _type1IppWrap :: (PP_Doc -> PP_Doc)
              _type1ItopInstanceNmL :: ([HsName])
              _type1ItyConIs :: TypeConFixedMeaning
              _type1IundefOccGam :: IdUseOccGam
              _type2IconNm :: Name
              _type2Ieh :: (EH.TyExpr)
              _type2IehMbAsPr :: (Maybe EH.PrExpr)
              _type2IehMbAsPrL :: ([Maybe EH.PrExpr])
              _type2IehMbAsTyPr :: (Maybe EH.TyExpr)
              _type2IehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _type2IerrSq :: ErrSq
              _type2IfreeTvarS :: HsNameS
              _type2IgUniq :: UID
              _type2IidUseOccGam :: IdUseOccGam
              _type2ImbRefConNm :: (Maybe Name)
              _type2IopChain :: (OpChain EH.TyExpr)
              _type2IoperatorName :: MaybeName
              _type2Ipp :: PP_Doc
              _type2IppWrap :: (PP_Doc -> PP_Doc)
              _type2ItopInstanceNmL :: ([HsName])
              _type2ItyConIs :: TypeConFixedMeaning
              _type2IundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 174, column 9)
              _pp =
                  _type1Ipp >#< hsnEqTilde >#< _type2Ipp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 285, column 9)
              _eh =
                  rngLift range_ EH.PrExpr_Eq _type1Ieh _type2Ieh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 289, column 9)
              _ehTy =
                  rngLift range_ EH.TyExpr_Pred _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 193, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 235, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _type1IerrSq `Seq.union` _type2IerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _type1IfreeTvarS `Set.union` _type2IfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _type1IidUseOccGam `gamAddGam` _type2IidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _type1IppWrap . _type2IppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _type1IundefOccGam `gamUnion` _type2IundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehTy =
                  _ehTy
              -- copy rule (up)
              _lhsOgUniq =
                  _type2IgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _type2ItopInstanceNmL
              -- copy rule (from local)
              _type1OdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _type1OfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _type1OgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _type1OidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _type1OisAsPred =
                  _isAsPred
              -- copy rule (down)
              _type1OnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _type1Oopts =
                  _lhsIopts
              -- copy rule (down)
              _type1OpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _type1OtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _type2OdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _type2OfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _type2OgUniq =
                  _type1IgUniq
              -- copy rule (down)
              _type2OidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _type2OisAsPred =
                  _isAsPred
              -- copy rule (down)
              _type2OnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _type2Oopts =
                  _lhsIopts
              -- copy rule (down)
              _type2OpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _type2OtopInstanceNmL =
                  _type1ItopInstanceNmL
              ( _type1IconNm,_type1Ieh,_type1IehMbAsPr,_type1IehMbAsPrL,_type1IehMbAsTyPr,_type1IehMbAsTyPrL,_type1IerrSq,_type1IfreeTvarS,_type1IgUniq,_type1IidUseOccGam,_type1ImbRefConNm,_type1IopChain,_type1IoperatorName,_type1Ipp,_type1IppWrap,_type1ItopInstanceNmL,_type1ItyConIs,_type1IundefOccGam) =
                  type1_ _type1OdoGenVarWild _type1OfixityGam _type1OgUniq _type1OidGam _type1OisAsPred _type1OnmLev _type1Oopts _type1OpatchEhNmInInstance _type1OtopInstanceNmL
              ( _type2IconNm,_type2Ieh,_type2IehMbAsPr,_type2IehMbAsPrL,_type2IehMbAsTyPr,_type2IehMbAsTyPrL,_type2IerrSq,_type2IfreeTvarS,_type2IgUniq,_type2IidUseOccGam,_type2ImbRefConNm,_type2IopChain,_type2IoperatorName,_type2Ipp,_type2IppWrap,_type2ItopInstanceNmL,_type2ItyConIs,_type2IundefOccGam) =
                  type2_ _type2OdoGenVarWild _type2OfixityGam _type2OgUniq _type2OidGam _type2OisAsPred _type2OnmLev _type2Oopts _type2OpatchEhNmInInstance _type2OtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ContextItems ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.PrExpr]
         ehTy                 : [EH.TyExpr]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : ContextItem 
         child tl             : ContextItems 
      alternative Nil:
-}
-- cata
sem_ContextItems :: ContextItems ->
                    T_ContextItems
sem_ContextItems list =
    (Prelude.foldr sem_ContextItems_Cons sem_ContextItems_Nil (Prelude.map sem_ContextItem list))
-- semantic domain
type T_ContextItems = FixityGam ->
                      UID ->
                      IdDefOccGam ->
                      NmLev ->
                      EHCOpts ->
                      PatchEhNmInInstance ->
                      ([HsName]) ->
                      ( ([EH.PrExpr]),([EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ContextItems_Cons :: T_ContextItem ->
                         T_ContextItems ->
                         T_ContextItems
sem_ContextItems_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.PrExpr])
              _lhsOehTy :: ([EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.PrExpr)
              _hdIehTy :: (EH.TyExpr)
              _hdIerrSq :: ErrSq
              _hdIfreeTvarS :: HsNameS
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.PrExpr])
              _tlIehTy :: ([EH.TyExpr])
              _tlIerrSq :: ErrSq
              _tlIfreeTvarS :: HsNameS
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 269, column 28)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 269, column 62)
              _lhsOehTy =
                  _hdIehTy : _tlIehTy
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIehTy,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIehTy,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextItems_Nil :: T_ContextItems
sem_ContextItems_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.PrExpr])
              _lhsOehTy :: ([EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 269, column 28)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 269, column 62)
              _lhsOehTy =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOehTy,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ContextedExpression -----------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : (EH.Expr,EH.PrExpr)
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Contexted:
         child range          : {Range}
         child expression     : Expression 
         child context        : ContextItem 
         visit 0:
            local pp          : _
-}
-- cata
sem_ContextedExpression :: ContextedExpression ->
                           T_ContextedExpression
sem_ContextedExpression (ContextedExpression_Contexted _range _expression _context) =
    (sem_ContextedExpression_Contexted _range (sem_Expression _expression) (sem_ContextItem _context))
-- semantic domain
type T_ContextedExpression = UID ->
                             FixityGam ->
                             UID ->
                             (Map.Map HsName [(HsName,HsName)]) ->
                             IdDefOccGam ->
                             HsName ->
                             NmLev ->
                             EHCOpts ->
                             PatchEhNmInInstance ->
                             (Set.Set Pragma.Pragma) ->
                             ([HsName]) ->
                             ( ((EH.Expr,EH.PrExpr)),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ContextedExpression_Contexted :: Range ->
                                     T_Expression ->
                                     T_ContextItem ->
                                     T_ContextedExpression
sem_ContextedExpression_Contexted range_ expression_ context_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ((EH.Expr,EH.PrExpr))
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _contextOfixityGam :: FixityGam
              _contextOgUniq :: UID
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              _contextIeh :: (EH.PrExpr)
              _contextIehTy :: (EH.TyExpr)
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 259, column 9)
              _pp =
                  _expressionIpp >#< "<:" >#< _contextIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 550, column 9)
              _lhsOeh =
                  (_expressionIeh,_contextIeh)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq `Seq.union` _contextIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam `gamAddGam` _contextIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap . _contextIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam `gamUnion` _contextIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _contextIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _contextItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _contextOgUniq =
                  _expressionIgUniq
              -- copy rule (down)
              _contextOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _contextOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (down)
              _contextOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _contextOtopInstanceNmL =
                  _expressionItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ContextedExpressions ----------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [(EH.Expr,EH.PrExpr)]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : ContextedExpression 
         child tl             : ContextedExpressions 
      alternative Nil:
-}
-- cata
sem_ContextedExpressions :: ContextedExpressions ->
                            T_ContextedExpressions
sem_ContextedExpressions list =
    (Prelude.foldr sem_ContextedExpressions_Cons sem_ContextedExpressions_Nil (Prelude.map sem_ContextedExpression list))
-- semantic domain
type T_ContextedExpressions = UID ->
                              FixityGam ->
                              UID ->
                              (Map.Map HsName [(HsName,HsName)]) ->
                              IdDefOccGam ->
                              HsName ->
                              NmLev ->
                              EHCOpts ->
                              PatchEhNmInInstance ->
                              (Set.Set Pragma.Pragma) ->
                              ([HsName]) ->
                              ( ([(EH.Expr,EH.PrExpr)]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ContextedExpressions_Cons :: T_ContextedExpression ->
                                 T_ContextedExpressions ->
                                 T_ContextedExpressions
sem_ContextedExpressions_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([(EH.Expr,EH.PrExpr)])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: ((EH.Expr,EH.PrExpr))
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([(EH.Expr,EH.PrExpr)])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 511, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 544, column 36)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextedExpressions_Nil :: T_ContextedExpressions
sem_ContextedExpressions_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([(EH.Expr,EH.PrExpr)])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 513, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 544, column 36)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ContextedPattern --------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : (EH.PatExpr,EH.PrExpr)
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Contexted:
         child range          : {Range}
         child pattern        : Pattern 
         child context        : ContextItem 
         visit 0:
            local pp          : _
-}
-- cata
sem_ContextedPattern :: ContextedPattern ->
                        T_ContextedPattern
sem_ContextedPattern (ContextedPattern_Contexted _range _pattern _context) =
    (sem_ContextedPattern_Contexted _range (sem_Pattern _pattern) (sem_ContextItem _context))
-- semantic domain
type T_ContextedPattern = FixityGam ->
                          UID ->
                          IdDefOccGam ->
                          HsName ->
                          NmLev ->
                          EHCOpts ->
                          PatchEhNmInInstance ->
                          ([HsName]) ->
                          ( ((EH.PatExpr,EH.PrExpr)),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ContextedPattern_Contexted :: Range ->
                                  T_Pattern ->
                                  T_ContextItem ->
                                  T_ContextedPattern
sem_ContextedPattern_Contexted range_ pattern_ context_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ((EH.PatExpr,EH.PrExpr))
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _contextOfixityGam :: FixityGam
              _contextOgUniq :: UID
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              _contextIeh :: (EH.PrExpr)
              _contextIehTy :: (EH.TyExpr)
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 372, column 9)
              _pp =
                  _patternIpp >#< "<:" >#< _contextIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 852, column 9)
              _lhsOeh =
                  (_patternIeh,_contextIeh)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq `Seq.union` _contextIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _contextIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam `gamAddGam` _contextIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap . _contextIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam `gamUnion` _contextIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _contextIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _contextItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _contextOgUniq =
                  _patternIgUniq
              -- copy rule (down)
              _contextOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _contextOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (down)
              _contextOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _contextOtopInstanceNmL =
                  _patternItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ContextedPatterns -------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [(EH.PatExpr,EH.PrExpr)]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : ContextedPattern 
         child tl             : ContextedPatterns 
      alternative Nil:
-}
-- cata
sem_ContextedPatterns :: ContextedPatterns ->
                         T_ContextedPatterns
sem_ContextedPatterns list =
    (Prelude.foldr sem_ContextedPatterns_Cons sem_ContextedPatterns_Nil (Prelude.map sem_ContextedPattern list))
-- semantic domain
type T_ContextedPatterns = FixityGam ->
                           UID ->
                           IdDefOccGam ->
                           HsName ->
                           NmLev ->
                           EHCOpts ->
                           PatchEhNmInInstance ->
                           ([HsName]) ->
                           ( ([(EH.PatExpr,EH.PrExpr)]),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ContextedPatterns_Cons :: T_ContextedPattern ->
                              T_ContextedPatterns ->
                              T_ContextedPatterns
sem_ContextedPatterns_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([(EH.PatExpr,EH.PrExpr)])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: ((EH.PatExpr,EH.PrExpr))
              _hdIerrSq :: ErrSq
              _hdIfreeTvarS :: HsNameS
              _hdIgUniq :: UID
              _hdIidDefOccGam :: IdDefOccGam
              _hdIidOccDefs :: ([IdOcc])
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([(EH.PatExpr,EH.PrExpr)])
              _tlIerrSq :: ErrSq
              _tlIfreeTvarS :: HsNameS
              _tlIgUniq :: UID
              _tlIidDefOccGam :: IdDefOccGam
              _tlIidOccDefs :: ([IdOcc])
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 517, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 846, column 33)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _hdIidOccDefs ++ _tlIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ContextedPatterns_Nil :: T_ContextedPatterns
sem_ContextedPatterns_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([(EH.PatExpr,EH.PrExpr)])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 519, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 846, column 33)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Declaration -------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.Decl]
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         gathPragmas          : Set.Set Pragma.Pragma
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idTySigDefOccGam     : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         needsError           : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative FunctionBindings:
         child range          : {Range}
         child bindings       : FunctionBindings 
         visit 0:
            local idOccDefs   : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative PatternBinding:
         child range          : {Range}
         child pattern        : Pattern 
         child righthandside  : RightHandSide 
         visit 0:
            local idDefOccGamPat : _
            local idDefOccGam : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local idOccDef    : _
            local idOccDefsPat : _
            local idOccDefs   : _
            local pp          : _
            local eh          : _
            local caseId      : _
            local isAsPred    : _
            local doGenVarWild : _
            local lUniq       : {UID}
      alternative TypeSignature:
         child range          : {Range}
         child names          : {Names}
         child type           : Type 
         visit 0:
            local idDefOccGam : _
            local idDefOccGamType : _
            local idTySigDefOccGam : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local refnames    : _
            local idOccDefs   : _
            local nmLev       : _
            local pp          : _
            local mkEHSig     : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Fixity:
         child range          : {Range}
         child fixity         : {Fixity}
         child priority       : {Maybe Int}
         child operators      : {Names}
         visit 0:
            local idDefOccGam : _
            local patchEhNmInInstance : _
            local oprefnames  : _
            local pp          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative FusionDeclaration:
         child range          : {Range}
         child fusename       : {Name}
         visit 0:
            local idDefOccGam : _
            local reffusename : _
            local idUseOccGamFusion : _
            local errIdUse    : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local idOccDef    : _
            local idOccDefs   : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
            local lUniq       : {UID}
      alternative FusionConversion:
         child range          : {Range}
         child absname        : {Name}
         child conname        : {Name}
         visit 0:
            local idDefOccGam : _
            local refnames    : _
            local idUseOccGamFusion : _
            local errIdUse    : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local idOccDef    : _
            local idOccDefs   : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
            local lUniq       : {UID}
      alternative Empty:
         child range          : {Range}
         visit 0:
            local patchEhNmInInstance : _
            local pp          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Data:
         child range          : {Range}
         child context        : ContextItems 
         child typelefthandside : TypeLeftHandSide 
         child constructors   : Constructors 
         child derivings      : Derivings 
         visit 0:
            local idDefOccGamType : _
            local idDefOccGamType2 : _
            local idDefOccGamConstrs : _
            local idDefOccGamGener : _
            local idDefOccGam : _
            local idDefOccGamInside : _
            local idGam       : _
            local idUseOccGamVal : _
            local errIdUseVal : _
            local idUseOccGamClass : _
            local errIdUseClass : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local typerefname : _
            local idOccDef    : _
            local idOccDefsCon : _
            local idOccDefsFld : _
            local generMaxRemArity : _
            local idOccDefsGener : _
            local idOccDefs   : _
            local nmLev       : _
            local errDupIntro : _
            local locErrs     : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehGener     : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Newtype:
         child range          : {Range}
         child context        : ContextItems 
         child typelefthandside : TypeLeftHandSide 
         child constructors   : Constructor 
         child derivings      : Derivings 
         visit 0:
            local idDefOccGamType : _
            local idDefOccGamType2 : _
            local idDefOccGamConstrs : _
            local idDefOccGamGener : _
            local idDefOccGam : _
            local idDefOccGamInside : _
            local idGam       : _
            local idUseOccGamVal : _
            local errIdUseVal : _
            local idUseOccGamClass : _
            local errIdUseClass : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local typerefname : _
            local idOccDef    : _
            local idOccDefsCon : _
            local idOccDefsFld : _
            local generMaxRemArity : _
            local idOccDefsGener : _
            local idOccDefs   : _
            local nmLev       : _
            local errNewtype  : _
            local errDupIntro : _
            local locErrs     : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehGener     : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative GADT:
         child range          : {Range}
         child context        : ContextItems 
         child typelefthandside : TypeLeftHandSide 
         child constructors   : Constructors 
         child derivings      : Derivings 
         visit 0:
            local idDefOccGamType : _
            local idDefOccGamType2 : _
            local idDefOccGamConstrs : _
            local idDefOccGamGener : _
            local idDefOccGam : _
            local idDefOccGamInside : _
            local idGam       : _
            local idUseOccGamVal : _
            local errIdUseVal : _
            local idUseOccGamClass : _
            local errIdUseClass : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local typerefname : _
            local idOccDef    : _
            local idOccDefsCon : _
            local idOccDefsFld : _
            local generMaxRemArity : _
            local idOccDefsGener : _
            local idOccDefs   : _
            local nmLev       : _
            local errDupIntro : _
            local locErrs     : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehGener     : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative KindSignature:
         child range          : {Range}
         child names          : {Names}
         child kind           : Kind 
         visit 0:
            local idDefOccGam : _
            local idDefOccGamKind : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local refnames    : _
            local idOccDefs   : _
            local nmLev       : _
            local pp          : _
            local mkEHSig     : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative ForeignImport:
         child range          : {Range}
         child callconvention : {FFIWay}
         child safety         : {Maybe String}
         child importname     : {Maybe String}
         child name           : {Name}
         child type           : Type 
         visit 0:
            local idDefOccGamType : _
            local idDefOccGam : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local refname     : _
            local idOccDef    : _
            local idOccDefs   : _
            local errFFIWay   : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
            local nmForParse  : _
            local ent         : _
            local entErrs     : _
      alternative ForeignExport:
         child range          : {Range}
         child callconvention : {FFIWay}
         child exportname     : {Maybe String}
         child name           : {Name}
         child type           : Type 
         visit 0:
            local idDefOccGamType : _
            local idDefOccGam : _
            local refname     : _
            local idUseOccGamExport : _
            local errIdUse    : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local exportrefname : _
            local idOccDef    : _
            local idOccDefs   : _
            local errFFIWay   : _
            local errSq       : _
            local pp          : _
            local nmForParse  : _
            local ent         : _
            local entErrs     : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Class:
         child range          : {Range}
         child context        : ContextItems 
         child typelefthandside : TypeLeftHandSide 
         child dependencies   : FunctionalDependencies 
         child where          : MaybeDeclarations 
         visit 0:
            local idDefOccGamType : _
            local idDefOccGamSigAsVar : _
            local idDefOccGam : _
            local idDefOccGamInside : _
            local idGam       : _
            local idDefOccGamInstForClass : _
            local idUseOccGamExtra : _
            local errIdUseExtra : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local ehReorderedDecls : _
            local errReorder  : _
            local patchEhNmInInstance : _
            local instancerefname : _
            local classrefname : _
            local extranames  : _
            local idOccDef    : _
            local idOccDefVal : _
            local idOccDefsSig : _
            local idOccDefs   : _
            local instancename : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehInst      : _
            local isAsPred    : _
            local doGenVarWild : _
            local mbPrevInstancename : _
            local generDerivInfoL : _
            local lUniq       : {UID}
      alternative Instance:
         child range          : {Range}
         child instVariant    : {InstVariant}
         child maybeinstancename : {MaybeName}
         child useimplicitly  : {Bool}
         child context        : ContextItems 
         child type           : Type 
         child where          : MaybeDeclarations 
         visit 0:
            local idDefOccGamType : _
            local idDefOccGam : _
            local idGam       : _
            local classrefname : _
            local idUseOccGamInst : _
            local errIdUse    : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local ehReorderedDecls : _
            local errReorder  : _
            local instancerefname : _
            local idOccDef    : _
            local idOccDefVal : _
            local idOccDefs   : _
            local instancename : _
            local nmLev       : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
            local mbPrevInstancename : _
            local lUniq       : {UID}
      alternative InstanceUseImplicitly:
         child range          : {Range}
         child expression     : Expression 
         child name           : {Name}
         child types          : Types 
         visit 0:
            local idDefOccGam : _
            local classrefname : _
            local idUseOccGamInst : _
            local errIdUse    : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local instancerefname : _
            local idOccDef    : _
            local idOccDefs   : _
            local instancename : _
            local nmLev       : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
            local mbPrevInstancename : _
            local lUniq       : {UID}
      alternative Default:
         child range          : {Range}
         child name           : {MaybeName}
         child types          : Types 
         visit 0:
            local idDefOccGam : _
            local classrefname : _
            local classrefnames : _
            local idUseOccGamDflt : _
            local errIdUse    : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local idOccDef    : _
            local idOccDefs   : _
            local defaultname : _
            local nmLev       : _
            local errSq       : _
            local pp          : _
            local ignoredecl  : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
            local lUniq       : {UID}
      alternative Type:
         child range          : {Range}
         child typelefthandside : TypeLeftHandSide 
         child type           : Type 
         visit 0:
            local idDefOccGamType : _
            local idDefOccGam : _
            local idDefOccGamInside : _
            local idGam       : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local patchEhNmInInstance : _
            local typerefname : _
            local idOccDef    : _
            local idOccDefs   : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Pragma:
         child range          : {Range}
         child pragma         : Pragma 
         visit 0:
            local patchEhNmInInstance : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Module:
         child range          : {Range}
         child name           : {MaybeName}
         child exports        : MaybeExports 
         visit 0:
            local patchEhNmInInstance : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
            local isMainMod   : _
            local isTopMod    : _
-}
-- cata
sem_Declaration :: Declaration ->
                   T_Declaration
sem_Declaration (Declaration_FunctionBindings _range _bindings) =
    (sem_Declaration_FunctionBindings _range (sem_FunctionBindings _bindings))
sem_Declaration (Declaration_PatternBinding _range _pattern _righthandside) =
    (sem_Declaration_PatternBinding _range (sem_Pattern _pattern) (sem_RightHandSide _righthandside))
sem_Declaration (Declaration_TypeSignature _range _names _type) =
    (sem_Declaration_TypeSignature _range _names (sem_Type _type))
sem_Declaration (Declaration_Fixity _range _fixity _priority _operators) =
    (sem_Declaration_Fixity _range _fixity _priority _operators)
sem_Declaration (Declaration_FusionDeclaration _range _fusename) =
    (sem_Declaration_FusionDeclaration _range _fusename)
sem_Declaration (Declaration_FusionConversion _range _absname _conname) =
    (sem_Declaration_FusionConversion _range _absname _conname)
sem_Declaration (Declaration_Empty _range) =
    (sem_Declaration_Empty _range)
sem_Declaration (Declaration_Data _range _context _typelefthandside _constructors _derivings) =
    (sem_Declaration_Data _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructors _constructors) (sem_Derivings _derivings))
sem_Declaration (Declaration_Newtype _range _context _typelefthandside _constructors _derivings) =
    (sem_Declaration_Newtype _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructor _constructors) (sem_Derivings _derivings))
sem_Declaration (Declaration_GADT _range _context _typelefthandside _constructors _derivings) =
    (sem_Declaration_GADT _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_Constructors _constructors) (sem_Derivings _derivings))
sem_Declaration (Declaration_KindSignature _range _names _kind) =
    (sem_Declaration_KindSignature _range _names (sem_Kind _kind))
sem_Declaration (Declaration_ForeignImport _range _callconvention _safety _importname _name _type) =
    (sem_Declaration_ForeignImport _range _callconvention _safety _importname _name (sem_Type _type))
sem_Declaration (Declaration_ForeignExport _range _callconvention _exportname _name _type) =
    (sem_Declaration_ForeignExport _range _callconvention _exportname _name (sem_Type _type))
sem_Declaration (Declaration_Class _range _context _typelefthandside _dependencies _where) =
    (sem_Declaration_Class _range (sem_ContextItems _context) (sem_TypeLeftHandSide _typelefthandside) (sem_FunctionalDependencies _dependencies) (sem_MaybeDeclarations _where))
sem_Declaration (Declaration_Instance _range _instVariant _maybeinstancename _useimplicitly _context _type _where) =
    (sem_Declaration_Instance _range _instVariant _maybeinstancename _useimplicitly (sem_ContextItems _context) (sem_Type _type) (sem_MaybeDeclarations _where))
sem_Declaration (Declaration_InstanceUseImplicitly _range _expression _name _types) =
    (sem_Declaration_InstanceUseImplicitly _range (sem_Expression _expression) _name (sem_Types _types))
sem_Declaration (Declaration_Default _range _name _types) =
    (sem_Declaration_Default _range _name (sem_Types _types))
sem_Declaration (Declaration_Type _range _typelefthandside _type) =
    (sem_Declaration_Type _range (sem_TypeLeftHandSide _typelefthandside) (sem_Type _type))
sem_Declaration (Declaration_Pragma _range _pragma) =
    (sem_Declaration_Pragma _range (sem_Pragma _pragma))
sem_Declaration (Declaration_Module _range _name _exports) =
    (sem_Declaration_Module _range _name (sem_MaybeExports _exports))
-- semantic domain
type T_Declaration = UID ->
                     FixityGam ->
                     UID ->
                     (Map.Map HsName [(HsName,HsName)]) ->
                     IdDefOccGam ->
                     HsName ->
                     NmLev ->
                     EHCOpts ->
                     PatchEhNmInInstance ->
                     (Set.Set Pragma.Pragma) ->
                     ([HsName]) ->
                     ( ([EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Declaration_FunctionBindings :: Range ->
                                    T_FunctionBindings ->
                                    T_Declaration
sem_Declaration_FunctionBindings range_ bindings_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _bindingsOcaseId :: UID
              _bindingsOfixityGam :: FixityGam
              _bindingsOgUniq :: UID
              _bindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _bindingsOidGam :: IdDefOccGam
              _bindingsOmoduleNm :: HsName
              _bindingsOnmLev :: NmLev
              _bindingsOopts :: EHCOpts
              _bindingsOpatchEhNmInInstance :: PatchEhNmInInstance
              _bindingsOpragmas :: (Set.Set Pragma.Pragma)
              _bindingsOtopInstanceNmL :: ([HsName])
              _bindingsIeh :: ([EH.Decl])
              _bindingsIerrSq :: ErrSq
              _bindingsIgUniq :: UID
              _bindingsIidDefOccGam :: IdDefOccGam
              _bindingsIidDpdMp :: IdDpdMp
              _bindingsIidOccDefs :: ([IdOcc])
              _bindingsIidUseOccGam :: IdUseOccGam
              _bindingsIpp :: PP_Doc
              _bindingsIppWrap :: (PP_Doc -> PP_Doc)
              _bindingsItopInstanceNmL :: ([HsName])
              _bindingsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 115, column 9)
              _idOccDefs =
                  _bindingsIidOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 76, column 9)
              _lhsOeh =
                  _bindingsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _bindingsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _bindingsIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _bindingsIidDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _bindingsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _bindingsIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _bindingsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _bindingsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _bindingsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _bindingsItopInstanceNmL
              -- copy rule (down)
              _bindingsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _bindingsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _bindingsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _bindingsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _bindingsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _bindingsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _bindingsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _bindingsOopts =
                  _lhsIopts
              -- copy rule (down)
              _bindingsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _bindingsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _bindingsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _bindingsIeh,_bindingsIerrSq,_bindingsIgUniq,_bindingsIidDefOccGam,_bindingsIidDpdMp,_bindingsIidOccDefs,_bindingsIidUseOccGam,_bindingsIpp,_bindingsIppWrap,_bindingsItopInstanceNmL,_bindingsIundefOccGam) =
                  bindings_ _bindingsOcaseId _bindingsOfixityGam _bindingsOgUniq _bindingsOgenerDerivMp _bindingsOidGam _bindingsOmoduleNm _bindingsOnmLev _bindingsOopts _bindingsOpatchEhNmInInstance _bindingsOpragmas _bindingsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_PatternBinding :: Range ->
                                  T_Pattern ->
                                  T_RightHandSide ->
                                  T_Declaration
sem_Declaration_PatternBinding range_ pattern_ righthandside_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOundefOccGam :: IdUseOccGam
              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _righthandsideOsepPP :: PP_Doc
              _lhsOeh :: ([EH.Decl])
              _righthandsideOmustBeMono :: Bool
              _patternOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _righthandsideOcaseId :: UID
              _righthandsideOfixityGam :: FixityGam
              _righthandsideOgUniq :: UID
              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _righthandsideOidGam :: IdDefOccGam
              _righthandsideOmoduleNm :: HsName
              _righthandsideOnmLev :: NmLev
              _righthandsideOopts :: EHCOpts
              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
              _righthandsideOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              _righthandsideIeh :: (EH.Expr)
              _righthandsideIerrSq :: ErrSq
              _righthandsideIgUniq :: UID
              _righthandsideIidUseOccGam :: IdUseOccGam
              _righthandsideIpp :: PP_Doc
              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _righthandsideItopInstanceNmL :: ([HsName])
              _righthandsideIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 140, column 9)
              _idDefOccGamPat =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Pat _eh) _idOccDefsPat
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 140, column 9)
              _idDefOccGam =
                  _idDefOccGamPat `gamAddGam` _patternIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 746, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                       (gamUnions [_patternIidUseOccGam,_righthandsideIidUseOccGam])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 746, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
                  `idDpdMpUnion`
                  idToOccL2DpdMp [_idOccDef] (gamToAssocL _patternIidDefOccGam)
                  `idDpdMpUnion`
                  idFrOccGam2DpdMp _patternIidDefOccGam [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 754, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_righthandsideIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1074, column 9)
              _righthandsideOpatchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
              _idOccDef =
                  IdOcc (maybe (mkHNm _lUniq) id _patternImbTopRefname) IdOcc_Pat
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
              _idOccDefsPat =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 117, column 9)
              _idOccDefs =
                  _patternIidOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 29, column 9)
              _pp =
                  _patternIpp >#< _righthandsideIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 30, column 9)
              _righthandsideOsepPP =
                  pp "="
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 78, column 9)
              _eh =
                  rngLift range_ EH.Decl_Val _patternIeh _righthandsideIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 79, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 877, column 9)
              _caseId =
                  _lUniq
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 270, column 9)
              _righthandsideOmustBeMono =
                  not _patternIisVar
              -- -- generated by the unique rule mechanism.
              (_patternOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq `Seq.union` _righthandsideIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap . _righthandsideIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _righthandsideIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _righthandsideItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _righthandsideOcaseId =
                  _caseId
              -- copy rule (down)
              _righthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _righthandsideOgUniq =
                  _patternIgUniq
              -- copy rule (down)
              _righthandsideOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _righthandsideOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _righthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _righthandsideOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _righthandsideOopts =
                  _lhsIopts
              -- copy rule (down)
              _righthandsideOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _righthandsideOtopInstanceNmL =
                  _patternItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideIundefOccGam) =
                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_TypeSignature :: Range ->
                                 Names ->
                                 T_Type ->
                                 T_Declaration
sem_Declaration_TypeSignature range_ names_ type_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _typeOidGam :: IdDefOccGam
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 134, column 9)
              _idDefOccGam =
                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Val_Sig (_mkEHSig (ioccNm o))) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 134, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _nmLev range_ _typeIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 274, column 9)
              _idTySigDefOccGam =
                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Val_Var) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 366, column 9)
              _typeOidGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 741, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev _typeIidUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 741, column 9)
              _idDpdMp =
                  idToOccL2DpdMp (gamKeys _idDefOccGam) _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 744, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_typeIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 14, column 9)
              _refnames =
                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 113, column 9)
              _idOccDefs =
                  [ IdOcc n IdOcc_Val | n <- _refnames ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 17, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 33, column 9)
              _pp =
                  ppCommas' names_ >#< "::" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 81, column 9)
              _mkEHSig =
                  \n -> rngLift range_ EH.Decl_TySig n _typeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 82, column 9)
              _lhsOeh =
                  map _mkEHSig _refnames
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _idTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typeOnmLev =
                  _nmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typeOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Fixity :: Range ->
                          Fixity ->
                          (Maybe Int) ->
                          Names ->
                          T_Declaration
sem_Declaration_Fixity range_ fixity_ priority_ operators_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOgathFixityGam :: FixityGam
              _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 138, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Fix [ IdOcc n IdOcc_Val | n <- _oprefnames ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 12, column 9)
              _oprefnames =
                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) operators_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 35, column 9)
              _pp =
                  fixity_ >#< maybe empty pp priority_ >#< ppCommas' operators_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 16, column 9)
              _lhsOgathFixityGam =
                  let p = maybe (fgiPrio defaultFixityGamInfo) id priority_
                      mk n = (n,FixityGamInfo p fixity_)
                  in  assocLToGam $ map mk $ _oprefnames
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 84, column 9)
              _lhsOeh =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_FusionDeclaration :: Range ->
                                     Name ->
                                     T_Declaration
sem_Declaration_FusionDeclaration range_ fusename_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _lhsOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 201, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Fusion _eh) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 682, column 29)
              (_reffusename,_,_idUseOccGamFusion,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [fusename_] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 832, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev _idUseOccGamFusion
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 832, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 835, column 9)
              _lhsOundefOccGam =
                  _undefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
              _idOccDef =
                  IdOcc (mkHNm _lUniq) IdOcc_Fusion
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
              _idOccDefs =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 158, column 17)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 71, column 9)
              _pp =
                  "fuse" >#< fusename_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 99, column 9)
              _eh =
                  rngLift range_ EH.Decl_FusionDecl _reffusename
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 103, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- -- generated by the unique rule mechanism.
              (_lhsOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_FusionConversion :: Range ->
                                    Name ->
                                    Name ->
                                    T_Declaration
sem_Declaration_FusionConversion range_ absname_ conname_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _lhsOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 203, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Fusion_Conv _eh) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 685, column 29)
              (_,_refnames,_idUseOccGamFusion,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [conname_,absname_] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 832, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev _idUseOccGamFusion
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 832, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 835, column 9)
              _lhsOundefOccGam =
                  _undefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
              _idOccDef =
                  IdOcc (mkHNm _lUniq) IdOcc_Fusion
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 163, column 9)
              _idOccDefs =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 158, column 17)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 73, column 9)
              _pp =
                  "convert" >#< ppCommas [conname_, absname_]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 101, column 9)
              _eh =
                  rngLift range_ EH.Decl_FusionConv (_refnames !! 0) (_refnames !! 1)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 103, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- -- generated by the unique rule mechanism.
              (_lhsOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Empty :: Range ->
                         T_Declaration
sem_Declaration_Empty range_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 37, column 9)
              _pp =
                  empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 86, column 9)
              _lhsOeh =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Data :: Range ->
                        T_ContextItems ->
                        T_TypeLeftHandSide ->
                        T_Constructors ->
                        T_Derivings ->
                        T_Declaration
sem_Declaration_Data range_ context_ typelefthandside_ constructors_ derivings_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOneedsError :: Bool
              _derivingsOidOccDefData :: IdOcc
              _lhsOeh :: ([EH.Decl])
              _derivingsOehDataTyExpr :: (EH.TyExpr)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _contextOfixityGam :: FixityGam
              _contextOgUniq :: UID
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _typelefthandsideOfixityGam :: FixityGam
              _typelefthandsideOgUniq :: UID
              _typelefthandsideOidGam :: IdDefOccGam
              _typelefthandsideOmoduleNm :: HsName
              _typelefthandsideOnmLev :: NmLev
              _typelefthandsideOopts :: EHCOpts
              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _typelefthandsideOtopInstanceNmL :: ([HsName])
              _constructorsOfixityGam :: FixityGam
              _constructorsOgUniq :: UID
              _constructorsOidGam :: IdDefOccGam
              _constructorsOmoduleNm :: HsName
              _constructorsOnmLev :: NmLev
              _constructorsOopts :: EHCOpts
              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
              _constructorsOtopInstanceNmL :: ([HsName])
              _derivingsOfixityGam :: FixityGam
              _derivingsOgUniq :: UID
              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _derivingsOidGam :: IdDefOccGam
              _derivingsOmoduleNm :: HsName
              _derivingsOnmLev :: NmLev
              _derivingsOopts :: EHCOpts
              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
              _derivingsOtopInstanceNmL :: ([HsName])
              _contextIeh :: ([EH.PrExpr])
              _contextIehTy :: ([EH.TyExpr])
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              _typelefthandsideIeh :: ([EH.TyVar])
              _typelefthandsideIerrSq :: ErrSq
              _typelefthandsideIfreeTvarS :: HsNameS
              _typelefthandsideIgUniq :: UID
              _typelefthandsideIidDefOccGam :: IdDefOccGam
              _typelefthandsideIidOccDefs :: ([IdOcc])
              _typelefthandsideIidUseOccGam :: IdUseOccGam
              _typelefthandsideIname :: Name
              _typelefthandsideIpp :: PP_Doc
              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _typelefthandsideIrange :: Range
              _typelefthandsideItopInstanceNmL :: ([HsName])
              _typelefthandsideItypevariables :: Names
              _typelefthandsideIundefOccGam :: IdUseOccGam
              _constructorsIconAndFldrefnames :: (AssocL Name Names)
              _constructorsIconrefnames :: Names
              _constructorsIeh :: ([EH.DataConstr])
              _constructorsIerrSq :: ErrSq
              _constructorsIfreeTvarS :: HsNameS
              _constructorsIgUniq :: UID
              _constructorsIhasFlds :: Bool
              _constructorsIidUseOccGam :: IdUseOccGam
              _constructorsIpp :: PP_Doc
              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
              _constructorsItopInstanceNmL :: ([HsName])
              _constructorsIundefOccGam :: IdUseOccGam
              _derivingsIerrSq :: ErrSq
              _derivingsIgUniq :: UID
              _derivingsIgathFixityGam :: FixityGam
              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
              _derivingsIidDefOccGam :: IdDefOccGam
              _derivingsIidDpdMp :: IdDpdMp
              _derivingsIidOccDefs :: ([IdOcc])
              _derivingsIidTySigDefOccGam :: IdDefOccGam
              _derivingsIidUseOccGam :: IdUseOccGam
              _derivingsIneedsError :: Bool
              _derivingsIpp :: PP_Doc
              _derivingsIppL :: ([PP_Doc])
              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
              _derivingsItopInstanceNmL :: ([HsName])
              _derivingsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamType2 =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamConstrs =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
                  `gamAddGam`
                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
                                )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamGener =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _ehGener) _idOccDefsGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
                  `gamAddGam` _idDefOccGamConstrs
                  `gamAddGam` _derivingsIidDefOccGam
                  `gamAddGam` _idDefOccGamGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
              _idDefOccGamInside =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 370, column 9)
              _idGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 662, column 29)
              (_,_,_idUseOccGamVal,_errIdUseVal) =
                  mkUseOccGam _lhsIopts _lhsIidGam [] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 675, column 29)
              (_,_,_idUseOccGamClass,_errIdUseClass) =
                  mkUseOccGam _lhsIopts _lhsIidGam
                              (if ehcOptGenGenerics _lhsIopts then builtinGenerClassNmL else [])
                              IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 697, column 9)
              _lhsOneedsError =
                  _constructorsIhasFlds
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                      (gamUnions
                          [ _constructorsIidUseOccGam
                          , _idUseOccGamVal
                          , _contextIidUseOccGam
                          , _idUseOccGamClass
                          ]
                      )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
                  `idDpdMpUnion`
                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
                  `idDpdMpUnion`
                  _derivingsIidDpdMp
                  `idDpdMpUnion`
                  idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 873, column 9)
              _derivingsOidOccDefData =
                  _idOccDef
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
              _typerefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDef =
                  IdOcc _typerefname IdOcc_Type
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsCon =
                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsFld =
                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _generMaxRemArity =
                  length _typelefthandsideItypevariables `min` 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsGener =
                  if ehcOptGenGenerics _lhsIopts
                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
                  else []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefs =
                  [_idOccDef]
                  ++ _idOccDefsCon
                  ++ _idOccDefsFld
                  ++ _idOccDefsGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
              _nmLev =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _idDefOccGamType2
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 72, column 9)
              _locErrs =
                  Seq.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
              _errSq =
                  Seq.unions [ _locErrs
                             , _typelefthandsideIerrSq
                             , Seq.fromList _errDupIntro
                             , Seq.fromList _errIdUseVal
                             , _constructorsIerrSq
                             , _contextIerrSq
                             , _derivingsIerrSq
                             , Seq.fromList _errIdUseClass
                             ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 39, column 9)
              _pp =
                  "data" >#< _typelefthandsideIpp
                         >#< "=" >#< _constructorsIpp
                         >-< ppParensCommas _derivingsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 89, column 9)
              _eh =
                  rngLift range_ EH.Decl_Data False _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) _constructorsIeh
                          (if ehcOptGenGenerics _lhsIopts then Just _generMaxRemArity else Nothing)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 91, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
              _ehGener =
                  rngLift range_ EH.Decl_GenerRep _generMaxRemArity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 164, column 9)
              _derivingsOehDataTyExpr =
                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _derivingsIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _derivingsIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _derivingsIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _undefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _derivingsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _derivingsItopInstanceNmL
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _contextOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _contextOidGam =
                  _idGam
              -- copy rule (from local)
              _contextOnmLev =
                  _nmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (from local)
              _contextOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _contextOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _typelefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typelefthandsideOgUniq =
                  _contextIgUniq
              -- copy rule (from local)
              _typelefthandsideOidGam =
                  _idGam
              -- copy rule (down)
              _typelefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _typelefthandsideOnmLev =
                  _nmLev
              -- copy rule (down)
              _typelefthandsideOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typelefthandsideOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _typelefthandsideOtopInstanceNmL =
                  _contextItopInstanceNmL
              -- copy rule (down)
              _constructorsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _constructorsOgUniq =
                  _typelefthandsideIgUniq
              -- copy rule (from local)
              _constructorsOidGam =
                  _idGam
              -- copy rule (down)
              _constructorsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _constructorsOnmLev =
                  _nmLev
              -- copy rule (down)
              _constructorsOopts =
                  _lhsIopts
              -- copy rule (from local)
              _constructorsOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _constructorsOtopInstanceNmL =
                  _typelefthandsideItopInstanceNmL
              -- copy rule (down)
              _derivingsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _derivingsOgUniq =
                  _constructorsIgUniq
              -- copy rule (down)
              _derivingsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _derivingsOidGam =
                  _idGam
              -- copy rule (down)
              _derivingsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _derivingsOnmLev =
                  _nmLev
              -- copy rule (down)
              _derivingsOopts =
                  _lhsIopts
              -- copy rule (from local)
              _derivingsOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _derivingsOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _derivingsOtopInstanceNmL =
                  _constructorsItopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsIundefOccGam) =
                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL
              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidOccDefs,_derivingsIidTySigDefOccGam,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsIundefOccGam) =
                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefData _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Newtype :: Range ->
                           T_ContextItems ->
                           T_TypeLeftHandSide ->
                           T_Constructor ->
                           T_Derivings ->
                           T_Declaration
sem_Declaration_Newtype range_ context_ typelefthandside_ constructors_ derivings_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _derivingsOidOccDefData :: IdOcc
              _lhsOeh :: ([EH.Decl])
              _derivingsOehDataTyExpr :: (EH.TyExpr)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _contextOfixityGam :: FixityGam
              _contextOgUniq :: UID
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _typelefthandsideOfixityGam :: FixityGam
              _typelefthandsideOgUniq :: UID
              _typelefthandsideOidGam :: IdDefOccGam
              _typelefthandsideOmoduleNm :: HsName
              _typelefthandsideOnmLev :: NmLev
              _typelefthandsideOopts :: EHCOpts
              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _typelefthandsideOtopInstanceNmL :: ([HsName])
              _constructorsOfixityGam :: FixityGam
              _constructorsOgUniq :: UID
              _constructorsOidGam :: IdDefOccGam
              _constructorsOmoduleNm :: HsName
              _constructorsOnmLev :: NmLev
              _constructorsOopts :: EHCOpts
              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
              _constructorsOtopInstanceNmL :: ([HsName])
              _derivingsOfixityGam :: FixityGam
              _derivingsOgUniq :: UID
              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _derivingsOidGam :: IdDefOccGam
              _derivingsOmoduleNm :: HsName
              _derivingsOnmLev :: NmLev
              _derivingsOopts :: EHCOpts
              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
              _derivingsOtopInstanceNmL :: ([HsName])
              _contextIeh :: ([EH.PrExpr])
              _contextIehTy :: ([EH.TyExpr])
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              _typelefthandsideIeh :: ([EH.TyVar])
              _typelefthandsideIerrSq :: ErrSq
              _typelefthandsideIfreeTvarS :: HsNameS
              _typelefthandsideIgUniq :: UID
              _typelefthandsideIidDefOccGam :: IdDefOccGam
              _typelefthandsideIidOccDefs :: ([IdOcc])
              _typelefthandsideIidUseOccGam :: IdUseOccGam
              _typelefthandsideIname :: Name
              _typelefthandsideIpp :: PP_Doc
              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _typelefthandsideIrange :: Range
              _typelefthandsideItopInstanceNmL :: ([HsName])
              _typelefthandsideItypevariables :: Names
              _typelefthandsideIundefOccGam :: IdUseOccGam
              _constructorsIconAndFldrefnames :: (AssocL Name Names)
              _constructorsIconrefnames :: Names
              _constructorsIeh :: (EH.DataConstr)
              _constructorsIerrSq :: ErrSq
              _constructorsIfreeTvarS :: HsNameS
              _constructorsIgUniq :: UID
              _constructorsIhasFlds :: Bool
              _constructorsIidUseOccGam :: IdUseOccGam
              _constructorsIpp :: PP_Doc
              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
              _constructorsItopInstanceNmL :: ([HsName])
              _constructorsIundefOccGam :: IdUseOccGam
              _derivingsIerrSq :: ErrSq
              _derivingsIgUniq :: UID
              _derivingsIgathFixityGam :: FixityGam
              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
              _derivingsIidDefOccGam :: IdDefOccGam
              _derivingsIidDpdMp :: IdDpdMp
              _derivingsIidOccDefs :: ([IdOcc])
              _derivingsIidTySigDefOccGam :: IdDefOccGam
              _derivingsIidUseOccGam :: IdUseOccGam
              _derivingsIneedsError :: Bool
              _derivingsIpp :: PP_Doc
              _derivingsIppL :: ([PP_Doc])
              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
              _derivingsItopInstanceNmL :: ([HsName])
              _derivingsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamType2 =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamConstrs =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
                  `gamAddGam`
                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
                                )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamGener =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _ehGener) _idOccDefsGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
                  `gamAddGam` _idDefOccGamConstrs
                  `gamAddGam` _derivingsIidDefOccGam
                  `gamAddGam` _idDefOccGamGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
              _idDefOccGamInside =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 370, column 9)
              _idGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 665, column 29)
              (_,_,_idUseOccGamVal,_errIdUseVal) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnPrelId] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 675, column 29)
              (_,_,_idUseOccGamClass,_errIdUseClass) =
                  mkUseOccGam _lhsIopts _lhsIidGam
                              (if ehcOptGenGenerics _lhsIopts then builtinGenerClassNmL else [])
                              IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                      (gamUnions
                          [ _constructorsIidUseOccGam
                          , _idUseOccGamVal
                          , _contextIidUseOccGam
                          , _idUseOccGamClass
                          ]
                      )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
                  `idDpdMpUnion`
                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
                  `idDpdMpUnion`
                  _derivingsIidDpdMp
                  `idDpdMpUnion`
                  idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 873, column 9)
              _derivingsOidOccDefData =
                  _idOccDef
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
              _typerefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDef =
                  IdOcc _typerefname IdOcc_Type
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsCon =
                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsFld =
                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _generMaxRemArity =
                  length _typelefthandsideItypevariables `min` 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsGener =
                  if ehcOptGenGenerics _lhsIopts
                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
                  else []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefs =
                  [_idOccDef]
                  ++ _idOccDefsCon
                  ++ _idOccDefsFld
                  ++ _idOccDefsGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
              _nmLev =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 30, column 9)
              _errNewtype =
                  case _constructorsIeh of
                    EH.DataConstr_Constr _
                                         _
                                         _
                                         [_]
                                         _
                      -> []
                    _ -> [rngLift range_ Err_Newtype _typelefthandsideIname]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _idDefOccGamType2
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 74, column 9)
              _locErrs =
                  Seq.fromList _errNewtype
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
              _errSq =
                  Seq.unions [ _locErrs
                             , _typelefthandsideIerrSq
                             , Seq.fromList _errDupIntro
                             , Seq.fromList _errIdUseVal
                             , _constructorsIerrSq
                             , _contextIerrSq
                             , _derivingsIerrSq
                             , Seq.fromList _errIdUseClass
                             ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 43, column 9)
              _pp =
                  "newtype" >#< _typelefthandsideIpp
                            >#< "=" >#< _constructorsIpp
                            >-< ppParensCommas _derivingsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 93, column 9)
              _eh =
                  rngLift range_ EH.Decl_Data True _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) [_constructorsIeh]
                          (if ehcOptGenGenerics _lhsIopts then Just _generMaxRemArity else Nothing)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 95, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
              _ehGener =
                  rngLift range_ EH.Decl_GenerRep _generMaxRemArity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 164, column 9)
              _derivingsOehDataTyExpr =
                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _derivingsIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _derivingsIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _derivingsIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  _derivingsIneedsError
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _undefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _derivingsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _derivingsItopInstanceNmL
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _contextOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _contextOidGam =
                  _idGam
              -- copy rule (from local)
              _contextOnmLev =
                  _nmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (from local)
              _contextOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _contextOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _typelefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typelefthandsideOgUniq =
                  _contextIgUniq
              -- copy rule (from local)
              _typelefthandsideOidGam =
                  _idGam
              -- copy rule (down)
              _typelefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _typelefthandsideOnmLev =
                  _nmLev
              -- copy rule (down)
              _typelefthandsideOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typelefthandsideOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _typelefthandsideOtopInstanceNmL =
                  _contextItopInstanceNmL
              -- copy rule (down)
              _constructorsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _constructorsOgUniq =
                  _typelefthandsideIgUniq
              -- copy rule (from local)
              _constructorsOidGam =
                  _idGam
              -- copy rule (down)
              _constructorsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _constructorsOnmLev =
                  _nmLev
              -- copy rule (down)
              _constructorsOopts =
                  _lhsIopts
              -- copy rule (from local)
              _constructorsOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _constructorsOtopInstanceNmL =
                  _typelefthandsideItopInstanceNmL
              -- copy rule (down)
              _derivingsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _derivingsOgUniq =
                  _constructorsIgUniq
              -- copy rule (down)
              _derivingsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _derivingsOidGam =
                  _idGam
              -- copy rule (down)
              _derivingsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _derivingsOnmLev =
                  _nmLev
              -- copy rule (down)
              _derivingsOopts =
                  _lhsIopts
              -- copy rule (from local)
              _derivingsOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _derivingsOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _derivingsOtopInstanceNmL =
                  _constructorsItopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsIundefOccGam) =
                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL
              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidOccDefs,_derivingsIidTySigDefOccGam,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsIundefOccGam) =
                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefData _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_GADT :: Range ->
                        T_ContextItems ->
                        T_TypeLeftHandSide ->
                        T_Constructors ->
                        T_Derivings ->
                        T_Declaration
sem_Declaration_GADT range_ context_ typelefthandside_ constructors_ derivings_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _derivingsOidOccDefData :: IdOcc
              _lhsOeh :: ([EH.Decl])
              _derivingsOehDataTyExpr :: (EH.TyExpr)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _contextOfixityGam :: FixityGam
              _contextOgUniq :: UID
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _typelefthandsideOfixityGam :: FixityGam
              _typelefthandsideOgUniq :: UID
              _typelefthandsideOidGam :: IdDefOccGam
              _typelefthandsideOmoduleNm :: HsName
              _typelefthandsideOnmLev :: NmLev
              _typelefthandsideOopts :: EHCOpts
              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _typelefthandsideOtopInstanceNmL :: ([HsName])
              _constructorsOfixityGam :: FixityGam
              _constructorsOgUniq :: UID
              _constructorsOidGam :: IdDefOccGam
              _constructorsOmoduleNm :: HsName
              _constructorsOnmLev :: NmLev
              _constructorsOopts :: EHCOpts
              _constructorsOpatchEhNmInInstance :: PatchEhNmInInstance
              _constructorsOtopInstanceNmL :: ([HsName])
              _derivingsOfixityGam :: FixityGam
              _derivingsOgUniq :: UID
              _derivingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _derivingsOidGam :: IdDefOccGam
              _derivingsOmoduleNm :: HsName
              _derivingsOnmLev :: NmLev
              _derivingsOopts :: EHCOpts
              _derivingsOpatchEhNmInInstance :: PatchEhNmInInstance
              _derivingsOpragmas :: (Set.Set Pragma.Pragma)
              _derivingsOtopInstanceNmL :: ([HsName])
              _contextIeh :: ([EH.PrExpr])
              _contextIehTy :: ([EH.TyExpr])
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              _typelefthandsideIeh :: ([EH.TyVar])
              _typelefthandsideIerrSq :: ErrSq
              _typelefthandsideIfreeTvarS :: HsNameS
              _typelefthandsideIgUniq :: UID
              _typelefthandsideIidDefOccGam :: IdDefOccGam
              _typelefthandsideIidOccDefs :: ([IdOcc])
              _typelefthandsideIidUseOccGam :: IdUseOccGam
              _typelefthandsideIname :: Name
              _typelefthandsideIpp :: PP_Doc
              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _typelefthandsideIrange :: Range
              _typelefthandsideItopInstanceNmL :: ([HsName])
              _typelefthandsideItypevariables :: Names
              _typelefthandsideIundefOccGam :: IdUseOccGam
              _constructorsIconAndFldrefnames :: (AssocL Name Names)
              _constructorsIconrefnames :: Names
              _constructorsIeh :: ([EH.DataConstr])
              _constructorsIerrSq :: ErrSq
              _constructorsIfreeTvarS :: HsNameS
              _constructorsIgUniq :: UID
              _constructorsIhasFlds :: Bool
              _constructorsIidUseOccGam :: IdUseOccGam
              _constructorsIpp :: PP_Doc
              _constructorsIppWrap :: (PP_Doc -> PP_Doc)
              _constructorsItopInstanceNmL :: ([HsName])
              _constructorsIundefOccGam :: IdUseOccGam
              _derivingsIerrSq :: ErrSq
              _derivingsIgUniq :: UID
              _derivingsIgathFixityGam :: FixityGam
              _derivingsIgathPragmas :: (Set.Set Pragma.Pragma)
              _derivingsIidDefOccGam :: IdDefOccGam
              _derivingsIidDpdMp :: IdDpdMp
              _derivingsIidOccDefs :: ([IdOcc])
              _derivingsIidTySigDefOccGam :: IdDefOccGam
              _derivingsIidUseOccGam :: IdUseOccGam
              _derivingsIneedsError :: Bool
              _derivingsIpp :: PP_Doc
              _derivingsIppL :: ([PP_Doc])
              _derivingsIppWrap :: (PP_Doc -> PP_Doc)
              _derivingsItopInstanceNmL :: ([HsName])
              _derivingsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _nmLev _typelefthandsideIrange _constructorsIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamType2 =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamConstrs =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange IdAsp_Val_Con _idOccDefsCon
                  `gamAddGam`
                  mkDefOccGam'' _lhsInmLev _typelefthandsideIrange (\c _ -> IdAsp_Val_Fld _typerefname c)
                                (concat [ [(c,IdOcc n IdOcc_Val), (c,IdOcc n IdOcc_Fld)] | (c,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
                                )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGamGener =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _ehGener) _idOccDefsGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 145, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) [_idOccDef]
                  `gamAddGam` _idDefOccGamConstrs
                  `gamAddGam` _derivingsIidDefOccGam
                  `gamAddGam` _idDefOccGamGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
              _idDefOccGamInside =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 370, column 9)
              _idGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 662, column 29)
              (_,_,_idUseOccGamVal,_errIdUseVal) =
                  mkUseOccGam _lhsIopts _lhsIidGam [] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 675, column 29)
              (_,_,_idUseOccGamClass,_errIdUseClass) =
                  mkUseOccGam _lhsIopts _lhsIidGam
                              (if ehcOptGenGenerics _lhsIopts then builtinGenerClassNmL else [])
                              IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                      (gamUnions
                          [ _constructorsIidUseOccGam
                          , _idUseOccGamVal
                          , _contextIidUseOccGam
                          , _idUseOccGamClass
                          ]
                      )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 757, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
                  `idDpdMpUnion`
                  idFrOccGam2DpdMp _idDefOccGamConstrs [_idOccDef]
                  `idDpdMpUnion`
                  _derivingsIidDpdMp
                  `idDpdMpUnion`
                  idFrOccGam2DpdMp _idDefOccGamGener [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 873, column 9)
              _derivingsOidOccDefData =
                  _idOccDef
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 18, column 9)
              _typerefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDef =
                  IdOcc _typerefname IdOcc_Type
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsCon =
                  [ IdOcc n IdOcc_Val | n <- _constructorsIconrefnames ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsFld =
                  concat [ [IdOcc n IdOcc_Val, IdOcc n IdOcc_Fld] | (_,ns) <- _constructorsIconAndFldrefnames, n <- ns ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _generMaxRemArity =
                  length _typelefthandsideItypevariables `min` 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefsGener =
                  if ehcOptGenGenerics _lhsIopts
                  then [ IdOcc (hsnNm2GenerReprSyn arity _typerefname) IdOcc_Type | arity <- [0 .. _generMaxRemArity] ]
                  else []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 123, column 9)
              _idOccDefs =
                  [_idOccDef]
                  ++ _idOccDefsCon
                  ++ _idOccDefsFld
                  ++ _idOccDefsGener
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 20, column 9)
              _nmLev =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 117, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _idDefOccGamType2
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 72, column 9)
              _locErrs =
                  Seq.empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 77, column 9)
              _errSq =
                  Seq.unions [ _locErrs
                             , _typelefthandsideIerrSq
                             , Seq.fromList _errDupIntro
                             , Seq.fromList _errIdUseVal
                             , _constructorsIerrSq
                             , _contextIerrSq
                             , _derivingsIerrSq
                             , Seq.fromList _errIdUseClass
                             ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 47, column 9)
              _pp =
                  "data" >#< _typelefthandsideIpp
                            >#< "where"
                            >-< indent 2 (_constructorsIpp
                                          >-< ppParensCommas _derivingsIppL
                                         )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 89, column 9)
              _eh =
                  rngLift range_ EH.Decl_Data False _typerefname (map (rngLift range_ EH.TyVar_Var) _typelefthandsideItypevariables) _constructorsIeh
                          (if ehcOptGenGenerics _lhsIopts then Just _generMaxRemArity else Nothing)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 91, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 97, column 9)
              _ehGener =
                  rngLift range_ EH.Decl_GenerRep _generMaxRemArity _typerefname _constructorsIconrefnames _constructorsIconAndFldrefnames
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 164, column 9)
              _derivingsOehDataTyExpr =
                  appTopApp (rngLift range_ EH.TyExpr_Con _typerefname : map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _derivingsIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _derivingsIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _derivingsIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  _derivingsIneedsError
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _contextIppWrap . _typelefthandsideIppWrap . _constructorsIppWrap . _derivingsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _undefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _derivingsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _derivingsItopInstanceNmL
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _contextOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _contextOidGam =
                  _idGam
              -- copy rule (from local)
              _contextOnmLev =
                  _nmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (from local)
              _contextOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _contextOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _typelefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typelefthandsideOgUniq =
                  _contextIgUniq
              -- copy rule (from local)
              _typelefthandsideOidGam =
                  _idGam
              -- copy rule (down)
              _typelefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _typelefthandsideOnmLev =
                  _nmLev
              -- copy rule (down)
              _typelefthandsideOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typelefthandsideOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _typelefthandsideOtopInstanceNmL =
                  _contextItopInstanceNmL
              -- copy rule (down)
              _constructorsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _constructorsOgUniq =
                  _typelefthandsideIgUniq
              -- copy rule (from local)
              _constructorsOidGam =
                  _idGam
              -- copy rule (down)
              _constructorsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _constructorsOnmLev =
                  _nmLev
              -- copy rule (down)
              _constructorsOopts =
                  _lhsIopts
              -- copy rule (from local)
              _constructorsOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _constructorsOtopInstanceNmL =
                  _typelefthandsideItopInstanceNmL
              -- copy rule (down)
              _derivingsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _derivingsOgUniq =
                  _constructorsIgUniq
              -- copy rule (down)
              _derivingsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _derivingsOidGam =
                  _idGam
              -- copy rule (down)
              _derivingsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _derivingsOnmLev =
                  _nmLev
              -- copy rule (down)
              _derivingsOopts =
                  _lhsIopts
              -- copy rule (from local)
              _derivingsOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _derivingsOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _derivingsOtopInstanceNmL =
                  _constructorsItopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
              ( _constructorsIconAndFldrefnames,_constructorsIconrefnames,_constructorsIeh,_constructorsIerrSq,_constructorsIfreeTvarS,_constructorsIgUniq,_constructorsIhasFlds,_constructorsIidUseOccGam,_constructorsIpp,_constructorsIppWrap,_constructorsItopInstanceNmL,_constructorsIundefOccGam) =
                  constructors_ _constructorsOfixityGam _constructorsOgUniq _constructorsOidGam _constructorsOmoduleNm _constructorsOnmLev _constructorsOopts _constructorsOpatchEhNmInInstance _constructorsOtopInstanceNmL
              ( _derivingsIerrSq,_derivingsIgUniq,_derivingsIgathFixityGam,_derivingsIgathPragmas,_derivingsIidDefOccGam,_derivingsIidDpdMp,_derivingsIidOccDefs,_derivingsIidTySigDefOccGam,_derivingsIidUseOccGam,_derivingsIneedsError,_derivingsIpp,_derivingsIppL,_derivingsIppWrap,_derivingsItopInstanceNmL,_derivingsIundefOccGam) =
                  derivings_ _derivingsOehDataTyExpr _derivingsOfixityGam _derivingsOgUniq _derivingsOgenerDerivMp _derivingsOidGam _derivingsOidOccDefData _derivingsOmoduleNm _derivingsOnmLev _derivingsOopts _derivingsOpatchEhNmInInstance _derivingsOpragmas _derivingsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_KindSignature :: Range ->
                                 Names ->
                                 T_Kind ->
                                 T_Declaration
sem_Declaration_KindSignature range_ names_ kind_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _kindOidGam :: IdDefOccGam
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _kindOgUniq :: UID
              _kindOnmLev :: NmLev
              _kindOopts :: EHCOpts
              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
              _kindOtopInstanceNmL :: ([HsName])
              _kindIconNm :: Name
              _kindIeh :: (EH.KiExpr)
              _kindIerrSq :: ErrSq
              _kindIfreeTvarS :: HsNameS
              _kindIgUniq :: UID
              _kindIidUseOccGam :: IdUseOccGam
              _kindIpp :: PP_Doc
              _kindIppWrap :: (PP_Doc -> PP_Doc)
              _kindItopInstanceNmL :: ([HsName])
              _kindIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 163, column 9)
              _idDefOccGam =
                  mkDefOccGam' _lhsInmLev range_ (\o -> IdAsp_Type_Sig (_mkEHSig (ioccNm o))) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 163, column 9)
              _idDefOccGamKind =
                  kvarS2IdDefOccGam _nmLev range_ _kindIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 372, column 9)
              _kindOidGam =
                  gamUnion _idDefOccGamKind _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 775, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev _kindIidUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 775, column 9)
              _idDpdMp =
                  idToOccL2DpdMp (gamKeys _idDefOccGam) _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 778, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_kindIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 16, column 9)
              _refnames =
                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 137, column 9)
              _idOccDefs =
                  [ IdOcc n IdOcc_Type | n <- _refnames ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 22, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 53, column 9)
              _pp =
                  ppCommas' names_ >#< "::" >#< _kindIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 105, column 9)
              _mkEHSig =
                  \n -> rngLift range_ EH.Decl_KiSig n _kindIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 106, column 9)
              _lhsOeh =
                  map _mkEHSig _refnames
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _kindIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _kindIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _kindIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _kindItopInstanceNmL
              -- copy rule (down)
              _kindOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _kindOnmLev =
                  _nmLev
              -- copy rule (down)
              _kindOopts =
                  _lhsIopts
              -- copy rule (from local)
              _kindOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _kindOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindIundefOccGam) =
                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_ForeignImport :: Range ->
                                 FFIWay ->
                                 (Maybe String) ->
                                 (Maybe String) ->
                                 Name ->
                                 T_Type ->
                                 T_Declaration
sem_Declaration_ForeignImport range_ callconvention_ safety_ importname_ name_ type_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _typeOidGam :: IdDefOccGam
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 195, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 199, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Foreign _eh) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 366, column 9)
              _typeOidGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 780, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev _typeIidUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 780, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 783, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_typeIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 20, column 9)
              _refname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 157, column 9)
              _idOccDef =
                  IdOcc _refname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 157, column 9)
              _idOccDefs =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 24, column 9)
              _errFFIWay =
                  if maybe False (callconvention_ `elem`) $ fmap targiAllowedFFI $ Map.lookup (ehcOptTarget _lhsIopts) allTargetInfoMp
                  then []
                  else [rngLift range_ Err_IllegalFFIWay callconvention_]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 147, column 9)
              _errSq =
                  Seq.unions [ Seq.fromList (rngLift range_ mkNestErr (pp ("Parse of foreign entity '" ++ _nmForParse ++ "'")) _entErrs)
                             , _typeIerrSq
                             ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 55, column 9)
              _pp =
                  "foreign import" >#< callconvention_ >#< safety_ >#< maybe empty (pp.show) importname_ >#< name_ >#< "::" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 108, column 9)
              _eh =
                  rngLift range_ EH.Decl_FFI callconvention_ (maybe "safe" id safety_) _ent _refname _typeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 109, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 328, column 9)
              _nmForParse =
                  maybe "" id importname_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 329, column 25)
              (_ent,_entErrs) =
                  parseForeignEnt ForeignDirection_Import callconvention_ (Just $ show name_) _nmForParse
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typeOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_ForeignExport :: Range ->
                                 FFIWay ->
                                 (Maybe String) ->
                                 Name ->
                                 T_Type ->
                                 T_Declaration
sem_Declaration_ForeignExport range_ callconvention_ exportname_ name_ type_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _typeOidGam :: IdDefOccGam
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 195, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 199, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Val_Foreign _eh) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 366, column 9)
              _typeOidGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 670, column 29)
              (_refname,_,_idUseOccGamExport,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 826, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                      (gamUnions [_idUseOccGamExport,_typeIidUseOccGam])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 826, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 830, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_typeIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 32, column 9)
              _exportrefname =
                  hsnUniqify HsNameUniqifier_FFE name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 160, column 9)
              _idOccDef =
                  IdOcc _exportrefname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 160, column 9)
              _idOccDefs =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 24, column 9)
              _errFFIWay =
                  if maybe False (callconvention_ `elem`) $ fmap targiAllowedFFI $ Map.lookup (ehcOptTarget _lhsIopts) allTargetInfoMp
                  then []
                  else [rngLift range_ Err_IllegalFFIWay callconvention_]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 151, column 9)
              _errSq =
                  Seq.unions [ Seq.fromList _errIdUse
                             , Seq.fromList (rngLift range_ mkNestErr (pp ("Parse of foreign entity '" ++ _nmForParse ++ "'")) _entErrs)
                             , _typeIerrSq
                             ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 83, column 9)
              _pp =
                  "foreign export" >#< callconvention_ >#< exportname_ >#< name_ >#< "::" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 141, column 9)
              _nmForParse =
                  maybe "" id exportname_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 142, column 25)
              (_ent,_entErrs) =
                  parseForeignEnt ForeignDirection_Export callconvention_ (Just $ show name_) _nmForParse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 141, column 9)
              _eh =
                  rngLift range_ EH.Decl_FFE _exportrefname callconvention_ _ent (rngLift range_ EH.Expr_Var _refname) _typeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 145, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typeOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Class :: Range ->
                         T_ContextItems ->
                         T_TypeLeftHandSide ->
                         T_FunctionalDependencies ->
                         T_MaybeDeclarations ->
                         T_Declaration
sem_Declaration_Class range_ context_ typelefthandside_ dependencies_ where_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _lhsOtopInstanceNmL :: ([HsName])
              _contextOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _contextOfixityGam :: FixityGam
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _typelefthandsideOfixityGam :: FixityGam
              _typelefthandsideOgUniq :: UID
              _typelefthandsideOidGam :: IdDefOccGam
              _typelefthandsideOmoduleNm :: HsName
              _typelefthandsideOnmLev :: NmLev
              _typelefthandsideOopts :: EHCOpts
              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _typelefthandsideOtopInstanceNmL :: ([HsName])
              _dependenciesOfixityGam :: FixityGam
              _dependenciesOgUniq :: UID
              _dependenciesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _dependenciesOidGam :: IdDefOccGam
              _dependenciesOmoduleNm :: HsName
              _dependenciesOnmLev :: NmLev
              _dependenciesOopts :: EHCOpts
              _dependenciesOpatchEhNmInInstance :: PatchEhNmInInstance
              _dependenciesOpragmas :: (Set.Set Pragma.Pragma)
              _dependenciesOtopInstanceNmL :: ([HsName])
              _whereOcaseId :: UID
              _whereOfixityGam :: FixityGam
              _whereOgUniq :: UID
              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _whereOidGam :: IdDefOccGam
              _whereOmoduleNm :: HsName
              _whereOnmLev :: NmLev
              _whereOopts :: EHCOpts
              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
              _whereOpragmas :: (Set.Set Pragma.Pragma)
              _whereOtopInstanceNmL :: ([HsName])
              _contextIeh :: ([EH.PrExpr])
              _contextIehTy :: ([EH.TyExpr])
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              _typelefthandsideIeh :: ([EH.TyVar])
              _typelefthandsideIerrSq :: ErrSq
              _typelefthandsideIfreeTvarS :: HsNameS
              _typelefthandsideIgUniq :: UID
              _typelefthandsideIidDefOccGam :: IdDefOccGam
              _typelefthandsideIidOccDefs :: ([IdOcc])
              _typelefthandsideIidUseOccGam :: IdUseOccGam
              _typelefthandsideIname :: Name
              _typelefthandsideIpp :: PP_Doc
              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _typelefthandsideIrange :: Range
              _typelefthandsideItopInstanceNmL :: ([HsName])
              _typelefthandsideItypevariables :: Names
              _typelefthandsideIundefOccGam :: IdUseOccGam
              _dependenciesIeh :: ([EH.FuncDep])
              _dependenciesIerrSq :: ErrSq
              _dependenciesIgUniq :: UID
              _dependenciesIgathFixityGam :: FixityGam
              _dependenciesIgathPragmas :: (Set.Set Pragma.Pragma)
              _dependenciesIidDefOccGam :: IdDefOccGam
              _dependenciesIidDpdMp :: IdDpdMp
              _dependenciesIidOccDefs :: ([IdOcc])
              _dependenciesIidTySigDefOccGam :: IdDefOccGam
              _dependenciesIidUseOccGam :: IdUseOccGam
              _dependenciesIneedsError :: Bool
              _dependenciesIpp :: PP_Doc
              _dependenciesIppWrap :: (PP_Doc -> PP_Doc)
              _dependenciesItopInstanceNmL :: ([HsName])
              _dependenciesIundefOccGam :: IdUseOccGam
              _whereIeh :: (Maybe [EH.Decl])
              _whereIerrSq :: ErrSq
              _whereIgUniq :: UID
              _whereIgathFixityGam :: FixityGam
              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
              _whereIidDefOccGam :: IdDefOccGam
              _whereIidDpdMp :: IdDpdMp
              _whereIidOccDefs :: ([IdOcc])
              _whereIidTySigDefOccGam :: IdDefOccGam
              _whereIidUseOccGam :: IdUseOccGam
              _whereIneedsError :: Bool
              _whereIpp :: PP_Doc
              _whereIppWrap :: (PP_Doc -> PP_Doc)
              _whereItopInstanceNmL :: ([HsName])
              _whereIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 167, column 9)
              _idDefOccGamType =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 167, column 9)
              _idDefOccGamSigAsVar =
                  _whereIidTySigDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 167, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Class_Def _eh _ehInst) [_idOccDef]
                  `gamUnion` _idDefOccGamSigAsVar
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
              _idDefOccGamInside =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 375, column 9)
              _idGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 375, column 9)
              _idDefOccGamInstForClass =
                  fst $ gamPartition (\_ d -> case doccAsp d of {IdAsp_Inst_Def _ n | n == _classrefname -> True ; _ -> False}) $ _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 690, column 29)
              (_,_,_idUseOccGamExtra,_errIdUseExtra) =
                  mkUseOccGam _lhsIopts _lhsIidGam _extranames IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 785, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                      (gamUnions [ _contextIidUseOccGam,_whereIidUseOccGam
                                 , _idUseOccGamExtra
                                 ])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 785, column 9)
              _idDpdMp =
                  idDpdMpUnions
                      [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
                      , idToOccGam2DpdMp [_idOccDef] _idDefOccGamSigAsVar
                      , idFrOccGam2DpdMp _idDefOccGamSigAsVar [_idOccDef]
                      , idFrOccGam2DpdMp _idDefOccGamSigAsVar (gamKeys _idDefOccGamInstForClass)
                      , _whereIidDpdMp
                      ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 798, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_whereIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1036, column 29)
              (_,_ehReorderedDecls,_errReorder) =
                  mkIdOccSccEH range_ False _whereIidDefOccGam Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
              _instancerefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
                  $ maybe _instancename id _mbPrevInstancename
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 26, column 9)
              _classrefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 96, column 17)
              _extranames =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
              _idOccDef =
                  IdOcc _classrefname IdOcc_Class
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
              _idOccDefVal =
                  IdOcc _instancerefname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
              _idOccDefsSig =
                  _whereIidOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 139, column 9)
              _idOccDefs =
                  [_idOccDef] ++ _idOccDefsSig
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 235, column 9)
              _instancename =
                  hsnUniqifyUID HsNameUniqifier_Class _lUniq (mkHNm _typelefthandsideIname)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
              _nmLev =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 131, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _idDefOccGamType
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 129, column 9)
              _errSq =
                  Seq.unions [ Seq.fromList _errDupIntro, Seq.fromList _errReorder, _contextIerrSq, _typelefthandsideIerrSq
                             , _dependenciesIerrSq
                             , Seq.fromList _errIdUseExtra
                             , _whereIerrSq
                             ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 57, column 9)
              _pp =
                  "class" >#< ppParens _contextIpp >#< "=>" >#< _typelefthandsideIpp
                  >#< "|" >#< _dependenciesIpp
                  >-< indent 2 _whereIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 111, column 25)
              (_eh,_ehInst) =
                  let h = rngLift range_ EH.TyExpr_Pred
                          $ rngLift range_ EH.PrExpr_Class _classrefname (map (rngLift range_ EH.TyExpr_Var) _typelefthandsideItypevariables)
                      c = map (rngLift range_ EH.TyExpr_Pred) _contextIeh
                      a = appArr c h
                      (vals,sigs) = partition EH.ehIsDeclVal $ concat _ehReorderedDecls
                  in  ( rngLift range_ EH.Decl_Class a
                                _dependenciesIeh
                                (Just _instancerefname) sigs
                                _generDerivInfoL
                      , rngLift range_ EH.Decl_Instance (Just (_instancerefname,False)) InstDefault a vals
                      )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 122, column 9)
              _lhsOeh =
                  [_eh,_ehInst]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 293, column 9)
              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
                  extrTopInstanceNm _lhsItopInstanceNmL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 323, column 9)
              _generDerivInfoL =
                  Map.findWithDefault [] _classrefname _lhsIgenerDerivMp
              -- -- generated by the unique rule mechanism.
              (_contextOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _dependenciesIgathFixityGam `gamAddGam` _whereIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _dependenciesIgathPragmas `Set.union` _whereIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _dependenciesIidTySigDefOccGam `gamAddGam` _whereIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  _dependenciesIneedsError || _whereIneedsError
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _contextIppWrap . _typelefthandsideIppWrap . _dependenciesIppWrap . _whereIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _whereIgUniq
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (from local)
              _contextOidGam =
                  _idGam
              -- copy rule (from local)
              _contextOnmLev =
                  _nmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (from local)
              _contextOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _contextOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _typelefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typelefthandsideOgUniq =
                  _contextIgUniq
              -- copy rule (from local)
              _typelefthandsideOidGam =
                  _idGam
              -- copy rule (down)
              _typelefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _typelefthandsideOnmLev =
                  _nmLev
              -- copy rule (down)
              _typelefthandsideOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typelefthandsideOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _typelefthandsideOtopInstanceNmL =
                  _contextItopInstanceNmL
              -- copy rule (down)
              _dependenciesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _dependenciesOgUniq =
                  _typelefthandsideIgUniq
              -- copy rule (down)
              _dependenciesOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _dependenciesOidGam =
                  _idGam
              -- copy rule (down)
              _dependenciesOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _dependenciesOnmLev =
                  _nmLev
              -- copy rule (down)
              _dependenciesOopts =
                  _lhsIopts
              -- copy rule (from local)
              _dependenciesOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _dependenciesOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _dependenciesOtopInstanceNmL =
                  _typelefthandsideItopInstanceNmL
              -- copy rule (down)
              _whereOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _whereOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _whereOgUniq =
                  _dependenciesIgUniq
              -- copy rule (down)
              _whereOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _whereOidGam =
                  _idGam
              -- copy rule (down)
              _whereOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _whereOnmLev =
                  _nmLev
              -- copy rule (down)
              _whereOopts =
                  _lhsIopts
              -- copy rule (from local)
              _whereOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _whereOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _whereOtopInstanceNmL =
                  _dependenciesItopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
              ( _dependenciesIeh,_dependenciesIerrSq,_dependenciesIgUniq,_dependenciesIgathFixityGam,_dependenciesIgathPragmas,_dependenciesIidDefOccGam,_dependenciesIidDpdMp,_dependenciesIidOccDefs,_dependenciesIidTySigDefOccGam,_dependenciesIidUseOccGam,_dependenciesIneedsError,_dependenciesIpp,_dependenciesIppWrap,_dependenciesItopInstanceNmL,_dependenciesIundefOccGam) =
                  dependencies_ _dependenciesOfixityGam _dependenciesOgUniq _dependenciesOgenerDerivMp _dependenciesOidGam _dependenciesOmoduleNm _dependenciesOnmLev _dependenciesOopts _dependenciesOpatchEhNmInInstance _dependenciesOpragmas _dependenciesOtopInstanceNmL
              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidOccDefs,_whereIidTySigDefOccGam,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereIundefOccGam) =
                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Instance :: Range ->
                            InstVariant ->
                            MaybeName ->
                            Bool ->
                            T_ContextItems ->
                            T_Type ->
                            T_MaybeDeclarations ->
                            T_Declaration
sem_Declaration_Instance range_ instVariant_ maybeinstancename_ useimplicitly_ context_ type_ where_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOundefOccGam :: IdUseOccGam
              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
              _lhsOeh :: ([EH.Decl])
              _lhsOtopInstanceNmL :: ([HsName])
              _contextOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _contextOfixityGam :: FixityGam
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _whereOcaseId :: UID
              _whereOfixityGam :: FixityGam
              _whereOgUniq :: UID
              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _whereOidGam :: IdDefOccGam
              _whereOmoduleNm :: HsName
              _whereOnmLev :: NmLev
              _whereOopts :: EHCOpts
              _whereOpragmas :: (Set.Set Pragma.Pragma)
              _whereOtopInstanceNmL :: ([HsName])
              _contextIeh :: ([EH.PrExpr])
              _contextIehTy :: ([EH.TyExpr])
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              _whereIeh :: (Maybe [EH.Decl])
              _whereIerrSq :: ErrSq
              _whereIgUniq :: UID
              _whereIgathFixityGam :: FixityGam
              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
              _whereIidDefOccGam :: IdDefOccGam
              _whereIidDpdMp :: IdDpdMp
              _whereIidOccDefs :: ([IdOcc])
              _whereIidTySigDefOccGam :: IdDefOccGam
              _whereIidUseOccGam :: IdUseOccGam
              _whereIneedsError :: Bool
              _whereIpp :: PP_Doc
              _whereIppWrap :: (PP_Doc -> PP_Doc)
              _whereItopInstanceNmL :: ([HsName])
              _whereIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 175, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _lhsInmLev range_  _typeIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 175, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) [_idOccDef]
                  `gamUnion` mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDefVal]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 379, column 9)
              _idGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 623, column 29)
              (_classrefname,_,_idUseOccGamInst,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [_typeIconNm] IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 800, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                      (gamUnions [_idUseOccGamInst,_contextIidUseOccGam,_typeIidUseOccGam                         ,_whereIidUseOccGam])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 800, column 9)
              _idDpdMp =
                  idDpdMpUnions
                      [ idToOccL2DpdMp [_idOccDef] _idUseHereOccL
                      , idDpdMpSingleton _idOccDefVal _idOccDef
                      , _whereIidDpdMp
                      ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 808, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_whereIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1036, column 29)
              (_,_ehReorderedDecls,_errReorder) =
                  mkIdOccSccEH range_ False _whereIidDefOccGam Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1071, column 9)
              _whereOpatchEhNmInInstance =
                  hsnSetQual (panicJust "Declaration.Instance.patchEhNmInInstance" $ hsnQualifier _classrefname)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
              _instancerefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
                  $ maybe _instancename id _mbPrevInstancename
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
              _idOccDef =
                  IdOcc _instancerefname IdOcc_Inst
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
              _idOccDefVal =
                  IdOcc _instancerefname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 144, column 9)
              _idOccDefs =
                  [_idOccDef,_idOccDefVal]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 233, column 9)
              _instancename =
                  maybe (hsnUniqifyUID HsNameUniqifier_ClassDict _lUniq (_typeIconNm)) id maybeinstancename_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 26, column 9)
              _nmLev =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 135, column 9)
              _errSq =
                  Seq.firstNotEmpty [Seq.fromList _errIdUse, _contextIerrSq, _typeIerrSq,                     _whereIerrSq, Seq.fromList _errReorder]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 61, column 9)
              _pp =
                  "instance" >|< ppInstNm useimplicitly_ maybeinstancename_
                  >#< ppParens _contextIpp >#< "=>" >#< _typeIpp
                  >-< indent 2 _whereIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 124, column 9)
              _eh =
                  let
                      h = rngLift range_ EH.TyExpr_Pred $ panicJust "HS.ToEH.Instance.eh.type.ehMbAsPr" _typeIehMbAsPr
                      c = map (rngLift range_ EH.TyExpr_Pred) _contextIeh
                  in  rngLift range_ EH.Decl_Instance (Just (_instancerefname,useimplicitly_)) instVariant_ (appArr c h) (concat _ehReorderedDecls)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 128, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 182, column 9)
              _isAsPred =
                  True
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 293, column 9)
              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
                  extrTopInstanceNm _lhsItopInstanceNmL
              -- -- generated by the unique rule mechanism.
              (_contextOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _whereIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _whereIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _whereIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  _whereIneedsError
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _contextIppWrap . _typeIppWrap . _whereIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _whereIgUniq
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (from local)
              _contextOidGam =
                  _idGam
              -- copy rule (from local)
              _contextOnmLev =
                  _nmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (down)
              _contextOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _contextOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typeOgUniq =
                  _contextIgUniq
              -- copy rule (from local)
              _typeOidGam =
                  _idGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typeOnmLev =
                  _nmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _typeOtopInstanceNmL =
                  _contextItopInstanceNmL
              -- copy rule (down)
              _whereOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _whereOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _whereOgUniq =
                  _typeIgUniq
              -- copy rule (down)
              _whereOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _whereOidGam =
                  _idGam
              -- copy rule (down)
              _whereOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _whereOnmLev =
                  _nmLev
              -- copy rule (down)
              _whereOopts =
                  _lhsIopts
              -- copy rule (down)
              _whereOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _whereOtopInstanceNmL =
                  _typeItopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidOccDefs,_whereIidTySigDefOccGam,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereIundefOccGam) =
                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_InstanceUseImplicitly :: Range ->
                                         T_Expression ->
                                         Name ->
                                         T_Types ->
                                         T_Declaration
sem_Declaration_InstanceUseImplicitly range_ expression_ name_ types_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _typesOfixityGam :: FixityGam
              _typesOgUniq :: UID
              _typesOidGam :: IdDefOccGam
              _typesOisAsPred :: Bool
              _typesOnmLev :: NmLev
              _typesOopts :: EHCOpts
              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
              _typesOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              _typesIeh :: ([EH.TyExpr])
              _typesIerrSq :: ErrSq
              _typesIfreeTvarS :: HsNameS
              _typesIgUniq :: UID
              _typesIidUseOccGam :: IdUseOccGam
              _typesIpp :: PP_Doc
              _typesIppL :: ([PP_Doc])
              _typesIppWrap :: (PP_Doc -> PP_Doc)
              _typesItopInstanceNmL :: ([HsName])
              _typesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 180, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _classrefname) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 627, column 29)
              (_classrefname,_,_idUseOccGamInst,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 810, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                      (gamUnions [_idUseOccGamInst,_typesIidUseOccGam,_expressionIidUseOccGam])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 810, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 22, column 9)
              _instancerefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
                  $ maybe _instancename id _mbPrevInstancename
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 148, column 9)
              _idOccDef =
                  IdOcc _instancerefname IdOcc_Inst
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 148, column 9)
              _idOccDefs =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 237, column 9)
              _instancename =
                  mkHNm _lUniq
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
              _nmLev =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 137, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq, _typesIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 65, column 9)
              _pp =
                  "instance" >#< _expressionIpp >#< "<:" >#< name_ >#< ppSpaces _typesIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 130, column 9)
              _eh =
                  let h = rngLift range_ EH.PrExpr_Class _classrefname _typesIeh
                  in  rngLift range_ EH.Decl_InstanceIntro (Just _instancerefname) _expressionIeh h
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 132, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 293, column 9)
              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
                  extrTopInstanceNm _lhsItopInstanceNmL
              -- -- generated by the unique rule mechanism.
              (_expressionOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap . _typesIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _undefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _typesIgUniq
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _expressionOnmLev =
                  _nmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (from local)
              _expressionOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _typesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typesOgUniq =
                  _expressionIgUniq
              -- copy rule (down)
              _typesOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typesOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typesOnmLev =
                  _nmLev
              -- copy rule (down)
              _typesOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typesOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _typesOtopInstanceNmL =
                  _expressionItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesIundefOccGam) =
                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Default :: Range ->
                           MaybeName ->
                           T_Types ->
                           T_Declaration
sem_Declaration_Default range_ name_ types_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _typesOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typesOfixityGam :: FixityGam
              _typesOidGam :: IdDefOccGam
              _typesOisAsPred :: Bool
              _typesOnmLev :: NmLev
              _typesOopts :: EHCOpts
              _typesOpatchEhNmInInstance :: PatchEhNmInInstance
              _typesOtopInstanceNmL :: ([HsName])
              _typesIeh :: ([EH.TyExpr])
              _typesIerrSq :: ErrSq
              _typesIfreeTvarS :: HsNameS
              _typesIgUniq :: UID
              _typesIidUseOccGam :: IdUseOccGam
              _typesIpp :: PP_Doc
              _typesIppL :: ([PP_Doc])
              _typesIppWrap :: (PP_Doc -> PP_Doc)
              _typesItopInstanceNmL :: ([HsName])
              _typesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 182, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Dflt_Def _eh _ignoredecl) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 630, column 29)
              (_classrefname,_classrefnames,_idUseOccGamDflt,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam (catMaybes [name_]) IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 815, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                      (gamUnions [_idUseOccGamDflt,_typesIidUseOccGam])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 815, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 819, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_typesIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 151, column 9)
              _idOccDef =
                  IdOcc _defaultname IdOcc_Dflt
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 151, column 9)
              _idOccDefs =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 239, column 9)
              _defaultname =
                  mkHNm _lUniq
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 24, column 9)
              _nmLev =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 139, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _typesIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 67, column 9)
              _pp =
                  "default" >#< maybe empty pp name_ >#< ppParensCommas _typesIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 134, column 9)
              _ignoredecl =
                  null _classrefnames
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 134, column 9)
              _eh =
                  rngLift range_ EH.Decl_Default _classrefname _typesIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 136, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- -- generated by the unique rule mechanism.
              (_typesOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typesIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _typesIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typesItopInstanceNmL
              -- copy rule (down)
              _typesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typesOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typesOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typesOnmLev =
                  _nmLev
              -- copy rule (down)
              _typesOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typesOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _typesOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typesIeh,_typesIerrSq,_typesIfreeTvarS,_typesIgUniq,_typesIidUseOccGam,_typesIpp,_typesIppL,_typesIppWrap,_typesItopInstanceNmL,_typesIundefOccGam) =
                  types_ _typesOfixityGam _typesOgUniq _typesOidGam _typesOisAsPred _typesOnmLev _typesOopts _typesOpatchEhNmInInstance _typesOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Type :: Range ->
                        T_TypeLeftHandSide ->
                        T_Type ->
                        T_Declaration
sem_Declaration_Type range_ typelefthandside_ type_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typelefthandsideOfixityGam :: FixityGam
              _typelefthandsideOgUniq :: UID
              _typelefthandsideOidGam :: IdDefOccGam
              _typelefthandsideOmoduleNm :: HsName
              _typelefthandsideOnmLev :: NmLev
              _typelefthandsideOopts :: EHCOpts
              _typelefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _typelefthandsideOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typelefthandsideIeh :: ([EH.TyVar])
              _typelefthandsideIerrSq :: ErrSq
              _typelefthandsideIfreeTvarS :: HsNameS
              _typelefthandsideIgUniq :: UID
              _typelefthandsideIidDefOccGam :: IdDefOccGam
              _typelefthandsideIidOccDefs :: ([IdOcc])
              _typelefthandsideIidUseOccGam :: IdUseOccGam
              _typelefthandsideIname :: Name
              _typelefthandsideIpp :: PP_Doc
              _typelefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _typelefthandsideIrange :: Range
              _typelefthandsideItopInstanceNmL :: ([HsName])
              _typelefthandsideItypevariables :: Names
              _typelefthandsideIundefOccGam :: IdUseOccGam
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 184, column 9)
              _idDefOccGamType =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 184, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev _typelefthandsideIrange (IdAsp_Type_Def _eh) _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 191, column 9)
              _idDefOccGamInside =
                  tvarL2IdDefOccGam _nmLev _typelefthandsideIrange _typelefthandsideItypevariables
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 370, column 9)
              _idGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 821, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev _typeIidUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 821, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 824, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_typeIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 28, column 9)
              _typerefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm _typelefthandsideIname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 154, column 9)
              _idOccDef =
                  IdOcc _typerefname IdOcc_Type
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 154, column 9)
              _idOccDefs =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 29, column 9)
              _nmLev =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 141, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _idDefOccGamType
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 143, column 9)
              _errSq =
                  Seq.unions [ Seq.fromList _errDupIntro, _typelefthandsideIerrSq, _typeIerrSq ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 69, column 9)
              _pp =
                  "type" >#< _typelefthandsideIpp >#< "=" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 138, column 9)
              _eh =
                  rngLift range_ EH.Decl_Type _typerefname (foldr (rngLift range_ EH.TyExpr_Lam) _typeIeh _typelefthandsideItypevariables)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 139, column 9)
              _lhsOeh =
                  [_eh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typelefthandsideIppWrap . _typeIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _typelefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typelefthandsideOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _typelefthandsideOidGam =
                  _idGam
              -- copy rule (down)
              _typelefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _typelefthandsideOnmLev =
                  _nmLev
              -- copy rule (down)
              _typelefthandsideOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typelefthandsideOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _typelefthandsideOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typeOgUniq =
                  _typelefthandsideIgUniq
              -- copy rule (from local)
              _typeOidGam =
                  _idGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typeOnmLev =
                  _nmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (from local)
              _typeOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _typeOtopInstanceNmL =
                  _typelefthandsideItopInstanceNmL
              ( _typelefthandsideIeh,_typelefthandsideIerrSq,_typelefthandsideIfreeTvarS,_typelefthandsideIgUniq,_typelefthandsideIidDefOccGam,_typelefthandsideIidOccDefs,_typelefthandsideIidUseOccGam,_typelefthandsideIname,_typelefthandsideIpp,_typelefthandsideIppWrap,_typelefthandsideIrange,_typelefthandsideItopInstanceNmL,_typelefthandsideItypevariables,_typelefthandsideIundefOccGam) =
                  typelefthandside_ _typelefthandsideOfixityGam _typelefthandsideOgUniq _typelefthandsideOidGam _typelefthandsideOmoduleNm _typelefthandsideOnmLev _typelefthandsideOopts _typelefthandsideOpatchEhNmInInstance _typelefthandsideOtopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Pragma :: Range ->
                          T_Pragma ->
                          T_Declaration
sem_Declaration_Pragma range_ pragma_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _pragmaOgUniq :: UID
              _pragmaOidGam :: IdDefOccGam
              _pragmaOnmLev :: NmLev
              _pragmaOopts :: EHCOpts
              _pragmaOpatchEhNmInInstance :: PatchEhNmInInstance
              _pragmaOtopInstanceNmL :: ([HsName])
              _pragmaIerrSq :: ErrSq
              _pragmaIgUniq :: UID
              _pragmaIgathPragmas :: (Set.Set Pragma.Pragma)
              _pragmaIidUseOccGam :: IdUseOccGam
              _pragmaIpp :: PP_Doc
              _pragmaIppWrap :: (PP_Doc -> PP_Doc)
              _pragmaItopInstanceNmL :: ([HsName])
              _pragmaIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 75, column 9)
              _pp =
                  "{-#" >#< _pragmaIpp >#< "#-}"
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 147, column 9)
              _eh =
                  undefined
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 148, column 9)
              _lhsOeh =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _pragmaIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _pragmaIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _pragmaIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _pragmaIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _pragmaIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _pragmaIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _pragmaItopInstanceNmL
              -- copy rule (down)
              _pragmaOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _pragmaOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _pragmaOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _pragmaOopts =
                  _lhsIopts
              -- copy rule (from local)
              _pragmaOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _pragmaOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _pragmaIerrSq,_pragmaIgUniq,_pragmaIgathPragmas,_pragmaIidUseOccGam,_pragmaIpp,_pragmaIppWrap,_pragmaItopInstanceNmL,_pragmaIundefOccGam) =
                  pragma_ _pragmaOgUniq _pragmaOidGam _pragmaOnmLev _pragmaOopts _pragmaOpatchEhNmInInstance _pragmaOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declaration_Module :: Range ->
                          MaybeName ->
                          T_MaybeExports ->
                          T_Declaration
sem_Declaration_Module range_ name_ exports_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _exportsOfixityGam :: FixityGam
              _exportsOgUniq :: UID
              _exportsOidGam :: IdDefOccGam
              _exportsOisMainMod :: Bool
              _exportsOisTopMod :: Bool
              _exportsOmoduleNm :: HsName
              _exportsOnmLev :: NmLev
              _exportsOopts :: EHCOpts
              _exportsOpatchEhNmInInstance :: PatchEhNmInInstance
              _exportsOtopInstanceNmL :: ([HsName])
              _exportsIerrSq :: ErrSq
              _exportsIgUniq :: UID
              _exportsIgathFixityGam :: FixityGam
              _exportsIidUseOccGam :: IdUseOccGam
              _exportsIpp :: PP_Doc
              _exportsIppWrap :: (PP_Doc -> PP_Doc)
              _exportsItopInstanceNmL :: ([HsName])
              _exportsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1077, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 147, column 9)
              _eh =
                  undefined
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 148, column 9)
              _lhsOeh =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 184, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 222, column 9)
              _doGenVarWild =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 253, column 9)
              _isMainMod =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 253, column 9)
              _isTopMod =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _exportsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _exportsIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _exportsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _exportsIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _exportsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _exportsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _exportsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _exportsItopInstanceNmL
              -- copy rule (down)
              _exportsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _exportsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _exportsOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _exportsOisMainMod =
                  _isMainMod
              -- copy rule (from local)
              _exportsOisTopMod =
                  _isTopMod
              -- copy rule (down)
              _exportsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _exportsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _exportsOopts =
                  _lhsIopts
              -- copy rule (from local)
              _exportsOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _exportsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _exportsIerrSq,_exportsIgUniq,_exportsIgathFixityGam,_exportsIidUseOccGam,_exportsIpp,_exportsIppWrap,_exportsItopInstanceNmL,_exportsIundefOccGam) =
                  exports_ _exportsOfixityGam _exportsOgUniq _exportsOidGam _exportsOisMainMod _exportsOisTopMod _exportsOmoduleNm _exportsOnmLev _exportsOopts _exportsOpatchEhNmInInstance _exportsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Declarations ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.Decl]
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         gathPragmas          : Set.Set Pragma.Pragma
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idTySigDefOccGam     : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         needsError           : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Declaration 
         child tl             : Declarations 
      alternative Nil:
-}
-- cata
sem_Declarations :: Declarations ->
                    T_Declarations
sem_Declarations list =
    (Prelude.foldr sem_Declarations_Cons sem_Declarations_Nil (Prelude.map sem_Declaration list))
-- semantic domain
type T_Declarations = UID ->
                      FixityGam ->
                      UID ->
                      (Map.Map HsName [(HsName,HsName)]) ->
                      IdDefOccGam ->
                      HsName ->
                      NmLev ->
                      EHCOpts ->
                      PatchEhNmInInstance ->
                      (Set.Set Pragma.Pragma) ->
                      ([HsName]) ->
                      ( ([EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Declarations_Cons :: T_Declaration ->
                         T_Declarations ->
                         T_Declarations
sem_Declarations_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: ([EH.Decl])
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathFixityGam :: FixityGam
              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
              _hdIidDefOccGam :: IdDefOccGam
              _hdIidDpdMp :: IdDpdMp
              _hdIidOccDefs :: ([IdOcc])
              _hdIidTySigDefOccGam :: IdDefOccGam
              _hdIidUseOccGam :: IdUseOccGam
              _hdIneedsError :: Bool
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.Decl])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIgathFixityGam :: FixityGam
              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
              _tlIidDefOccGam :: IdDefOccGam
              _tlIidDpdMp :: IdDpdMp
              _tlIidOccDefs :: ([IdOcc])
              _tlIidTySigDefOccGam :: IdDefOccGam
              _tlIidUseOccGam :: IdUseOccGam
              _tlIneedsError :: Bool
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 66, column 28)
              _lhsOeh =
                  _hdIeh ++ _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _hdIgathPragmas `Set.union` _tlIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _hdIidOccDefs ++ _tlIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _hdIidTySigDefOccGam `gamAddGam` _tlIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  _hdIneedsError || _tlIneedsError
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidTySigDefOccGam,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidTySigDefOccGam,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Declarations_Nil :: T_Declarations
sem_Declarations_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 66, column 28)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Deriving ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         ehDataTyExpr         : EH.TyExpr
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         idOccDefData         : IdOcc
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         gathPragmas          : Set.Set Pragma.Pragma
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idTySigDefOccGam     : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         needsError           : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Deriving:
         child range          : {Range}
         child maybeinstancename : {MaybeName}
         child useimplicitly  : {Bool}
         child name           : {Name}
         visit 0:
            local idDefOccGam : _
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local instancerefname : _
            local idOccDef    : _
            local idOccDefVal : _
            local idOccDefs   : _
            local instancename : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local mbPrevInstancename : _
            local lUniq       : {UID}
-}
-- cata
sem_Deriving :: Deriving ->
                T_Deriving
sem_Deriving (Deriving_Deriving _range _maybeinstancename _useimplicitly _name) =
    (sem_Deriving_Deriving _range _maybeinstancename _useimplicitly _name)
-- semantic domain
type T_Deriving = (EH.TyExpr) ->
                  FixityGam ->
                  UID ->
                  (Map.Map HsName [(HsName,HsName)]) ->
                  IdDefOccGam ->
                  IdOcc ->
                  HsName ->
                  NmLev ->
                  EHCOpts ->
                  PatchEhNmInInstance ->
                  (Set.Set Pragma.Pragma) ->
                  ([HsName]) ->
                  ( ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Deriving_Deriving :: Range ->
                         MaybeName ->
                         Bool ->
                         Name ->
                         T_Deriving
sem_Deriving_Deriving range_ maybeinstancename_ useimplicitly_ name_ =
    (\ _lhsIehDataTyExpr
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsIidOccDefData
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidDpdMp :: IdDpdMp
              _lhsOtopInstanceNmL :: ([HsName])
              _lhsOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 264, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ (IdAsp_Inst_Def _eh _refname) [_idOccDef]
                  `gamUnion` mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDefVal]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 635, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 854, column 9)
              _lhsOidDpdMp =
                  idDpdMpUnions
                      [ idDpdMpSingleton _idOccDef _lhsIidOccDefData
                      , idDpdMpSingleton _idOccDefVal _idOccDef
                      ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 37, column 9)
              _instancerefname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm
                  $ maybe _instancename id _mbPrevInstancename
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
              _idOccDef =
                  IdOcc _instancerefname IdOcc_Inst
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
              _idOccDefVal =
                  IdOcc _instancerefname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 192, column 9)
              _idOccDefs =
                  [_idOccDef,_idOccDefVal]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 247, column 9)
              _instancename =
                  maybe (mkHNm _lUniq) id maybeinstancename_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 162, column 9)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 87, column 9)
              _pp =
                  ppInstNm useimplicitly_ maybeinstancename_ >#< name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 168, column 9)
              _eh =
                  let h = rngLift range_ EH.TyExpr_Pred
                          $ rngLift range_ EH.PrExpr_Class _refname [rngLift range_ EH.TyExpr_Parens _lhsIehDataTyExpr]
                  in  rngLift range_ EH.Decl_Instance (Just (_instancerefname,useimplicitly_)) (InstDeriving InstDerivingFrom_Datatype) h []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 298, column 9)
              (_mbPrevInstancename,_lhsOtopInstanceNmL) =
                  extrTopInstanceNm _lhsItopInstanceNmL
              -- -- generated by the unique rule mechanism.
              (_lhsOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Derivings ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         ehDataTyExpr         : EH.TyExpr
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         idOccDefData         : IdOcc
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         gathPragmas          : Set.Set Pragma.Pragma
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idTySigDefOccGam     : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         needsError           : Bool
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Deriving 
         child tl             : Derivings 
      alternative Nil:
-}
-- cata
sem_Derivings :: Derivings ->
                 T_Derivings
sem_Derivings list =
    (Prelude.foldr sem_Derivings_Cons sem_Derivings_Nil (Prelude.map sem_Deriving list))
-- semantic domain
type T_Derivings = (EH.TyExpr) ->
                   FixityGam ->
                   UID ->
                   (Map.Map HsName [(HsName,HsName)]) ->
                   IdDefOccGam ->
                   IdOcc ->
                   HsName ->
                   NmLev ->
                   EHCOpts ->
                   PatchEhNmInInstance ->
                   (Set.Set Pragma.Pragma) ->
                   ([HsName]) ->
                   ( ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Derivings_Cons :: T_Deriving ->
                      T_Derivings ->
                      T_Derivings
sem_Derivings_Cons hd_ tl_ =
    (\ _lhsIehDataTyExpr
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsIidOccDefData
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOehDataTyExpr :: (EH.TyExpr)
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOidOccDefData :: IdOcc
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOehDataTyExpr :: (EH.TyExpr)
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOidOccDefData :: IdOcc
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathFixityGam :: FixityGam
              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
              _hdIidDefOccGam :: IdDefOccGam
              _hdIidDpdMp :: IdDpdMp
              _hdIidOccDefs :: ([IdOcc])
              _hdIidTySigDefOccGam :: IdDefOccGam
              _hdIidUseOccGam :: IdUseOccGam
              _hdIneedsError :: Bool
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIgathFixityGam :: FixityGam
              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
              _tlIidDefOccGam :: IdDefOccGam
              _tlIidDpdMp :: IdDpdMp
              _tlIidOccDefs :: ([IdOcc])
              _tlIidTySigDefOccGam :: IdDefOccGam
              _tlIidUseOccGam :: IdUseOccGam
              _tlIneedsError :: Bool
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 528, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _hdIgathPragmas `Set.union` _tlIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _hdIidOccDefs ++ _tlIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _hdIidTySigDefOccGam `gamAddGam` _tlIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  _hdIneedsError || _tlIneedsError
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOehDataTyExpr =
                  _lhsIehDataTyExpr
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOidOccDefData =
                  _lhsIidOccDefData
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOehDataTyExpr =
                  _lhsIehDataTyExpr
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOidOccDefData =
                  _lhsIidOccDefData
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidTySigDefOccGam,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOehDataTyExpr _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOidOccDefData _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidTySigDefOccGam,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOehDataTyExpr _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOidOccDefData _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Derivings_Nil :: T_Derivings
sem_Derivings_Nil =
    (\ _lhsIehDataTyExpr
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsIidOccDefData
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 530, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Export ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Variable:
         child range          : {Range}
         child name           : {Name}
      alternative TypeOrClass:
         child range          : {Range}
         child name           : {Name}
         child names          : {MaybeNames}
      alternative TypeOrClassComplete:
         child range          : {Range}
         child name           : {Name}
      alternative Module:
         child range          : {Range}
         child name           : {Name}
-}
-- cata
sem_Export :: Export ->
              T_Export
sem_Export (Export_Variable _range _name) =
    (sem_Export_Variable _range _name)
sem_Export (Export_TypeOrClass _range _name _names) =
    (sem_Export_TypeOrClass _range _name _names)
sem_Export (Export_TypeOrClassComplete _range _name) =
    (sem_Export_TypeOrClassComplete _range _name)
sem_Export (Export_Module _range _name) =
    (sem_Export_Module _range _name)
-- semantic domain
type T_Export = FixityGam ->
                UID ->
                IdDefOccGam ->
                Bool ->
                Bool ->
                HsName ->
                NmLev ->
                EHCOpts ->
                PatchEhNmInInstance ->
                ([HsName]) ->
                ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Export_Variable :: Range ->
                       Name ->
                       T_Export
sem_Export_Variable range_ name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Export_TypeOrClass :: Range ->
                          Name ->
                          MaybeNames ->
                          T_Export
sem_Export_TypeOrClass range_ name_ names_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Export_TypeOrClassComplete :: Range ->
                                  Name ->
                                  T_Export
sem_Export_TypeOrClassComplete range_ name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Export_Module :: Range ->
                     Name ->
                     T_Export
sem_Export_Module range_ name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Exports -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Export 
         child tl             : Exports 
      alternative Nil:
-}
-- cata
sem_Exports :: Exports ->
               T_Exports
sem_Exports list =
    (Prelude.foldr sem_Exports_Cons sem_Exports_Nil (Prelude.map sem_Export list))
-- semantic domain
type T_Exports = FixityGam ->
                 UID ->
                 IdDefOccGam ->
                 Bool ->
                 Bool ->
                 HsName ->
                 NmLev ->
                 EHCOpts ->
                 PatchEhNmInInstance ->
                 ([HsName]) ->
                 ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Exports_Cons :: T_Export ->
                    T_Exports ->
                    T_Exports
sem_Exports_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOisMainMod :: Bool
              _hdOisTopMod :: Bool
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOisMainMod :: Bool
              _tlOisTopMod :: Bool
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathFixityGam :: FixityGam
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIgathFixityGam :: FixityGam
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _hdOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _tlOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Exports_Nil :: T_Exports
sem_Exports_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Expression --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         conNm                : Name
         eh                   : EH.Expr
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         opChain              : OpChain EH.Expr
         operatorName         : MaybeName
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Literal:
         child range          : {Range}
         child literal        : Literal 
         visit 0:
            local litnames    : _
            local litrefname  : _
            local litrefnames : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local eh          : _
            local isAsPred    : _
      alternative Variable:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local idAsp       : _
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative Constructor:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local idAsp       : _
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative TupleConstructor:
         child range          : {Range}
         child arity          : {Int}
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative Parenthesized:
         child range          : {Range}
         child expression     : Expression 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative NormalApplication:
         child range          : {Range}
         child function       : Expression 
         child arguments      : Expressions 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative SectionApplication:
         child range          : {Range}
         child leftExpression : MaybeExpression 
         child operator       : Expression 
         child rightExpression : MaybeExpression 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local lUniq_1_nm  : {UID}
      alternative InfixApplication:
         child range          : {Range}
         child leftExpression : Expression 
         child operator       : Expression 
         child rightExpression : Expression 
         visit 0:
            local pp          : _
            local fgi         : _
            local eh          : _
            local isAsPred    : _
      alternative InfixApplicationChainTop:
         child range          : {Range}
         child expression     : Expression 
         visit 0:
            local errSq       : _
            local ehRearrOpChain : _
            local errRearr    : _
            local ehFromOpChain : _
            local eh          : _
            local isAsPred    : _
      alternative Lambda:
         child range          : {Range}
         child patterns       : Patterns 
         child expression     : Expression 
         visit 0:
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative Let:
         child range          : {Range}
         child isStrict       : {Bool}
         child declarations   : Declarations 
         child expression     : Expression 
         visit 0:
            local idGam       : _
            local sccOrder    : _
            local mkSccLet    : _
            local errReorder  : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
            local ppExtra     : _
            local fixityGam   : _
            local eh          : _
            local isAsPred    : _
      alternative Tuple:
         child range          : {Range}
         child expressions    : Expressions 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative Typed:
         child range          : {Range}
         child expression     : Expression 
         child type           : Type 
         visit 0:
            local idDefOccGamType : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative Negate:
         child range          : {Range}
         child expression     : Expression 
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative Annotate:
         child range          : {Range}
         child annotation     : ExpressionAnnotation 
         child expression     : Expression 
         visit 0:
            local eh          : _
            local isAsPred    : _
      alternative ImpredicativeApplication:
         child range          : {Range}
         child function       : Expression 
         child arguments      : Expressions 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative If:
         child range          : {Range}
         child guardExpression : Expression 
         child thenExpression : Expression 
         child elseExpression : Expression 
         visit 0:
            local valrefnames : _
            local idUseOccGamVal : _
            local errIdUseVal : _
            local typerefname : _
            local idUseOccGamType : _
            local errIdUseType : _
            local idUseOccGam : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative Case:
         child range          : {Range}
         child expression     : Expression 
         child alternatives   : Alternatives 
         visit 0:
            local pp          : _
            local eh          : _
            local caseId      : _
            local isAsPred    : _
            local lUniq       : {UID}
      alternative List:
         child range          : {Range}
         child expressions    : Expressions 
         visit 0:
            local refnames    : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative Enum:
         child range          : {Range}
         child from           : Expression 
         child then           : MaybeExpression 
         child to             : MaybeExpression 
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local enumNm      : _
            local eh          : _
            local isAsPred    : _
      alternative Comprehension:
         child range          : {Range}
         child expression     : Expression 
         child qualifiers     : Qualifiers 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative RecordConstruction:
         child range          : {Range}
         child name           : {Name}
         child recordExpressionBindings : RecordExpressionBindings 
         visit 0:
            local idAsp       : _
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative RecordUpdate:
         child range          : {Range}
         child expression     : Expression 
         child recordExpressionBindings : RecordExpressionBindings 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative RowRecordUpdate:
         child range          : {Range}
         child expression     : Expression 
         child rowRecordExpressionUpdates : RowRecordExpressionUpdates 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative RowRecordEmpty:
         child range          : {Range}
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative RowRecordSelect:
         child range          : {Range}
         child expression     : Expression 
         child name           : {Name}
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative Do:
         child range          : {Range}
         child statements     : Statements 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative ImplicitApplication:
         child range          : {Range}
         child function       : Expression 
         child arguments      : ContextedExpressions 
         visit 0:
            local pp          : _
            local eh          : _
            local isAsPred    : _
      alternative ImplicitLambda:
         child range          : {Range}
         child patterns       : ContextedPatterns 
         child expression     : Expression 
         visit 0:
            local idDefOccGamType : _
            local idGam       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local isAsPred    : _
-}
-- cata
sem_Expression :: Expression ->
                  T_Expression
sem_Expression (Expression_Literal _range _literal) =
    (sem_Expression_Literal _range (sem_Literal _literal))
sem_Expression (Expression_Variable _range _name) =
    (sem_Expression_Variable _range _name)
sem_Expression (Expression_Constructor _range _name) =
    (sem_Expression_Constructor _range _name)
sem_Expression (Expression_TupleConstructor _range _arity) =
    (sem_Expression_TupleConstructor _range _arity)
sem_Expression (Expression_Parenthesized _range _expression) =
    (sem_Expression_Parenthesized _range (sem_Expression _expression))
sem_Expression (Expression_NormalApplication _range _function _arguments) =
    (sem_Expression_NormalApplication _range (sem_Expression _function) (sem_Expressions _arguments))
sem_Expression (Expression_SectionApplication _range _leftExpression _operator _rightExpression) =
    (sem_Expression_SectionApplication _range (sem_MaybeExpression _leftExpression) (sem_Expression _operator) (sem_MaybeExpression _rightExpression))
sem_Expression (Expression_InfixApplication _range _leftExpression _operator _rightExpression) =
    (sem_Expression_InfixApplication _range (sem_Expression _leftExpression) (sem_Expression _operator) (sem_Expression _rightExpression))
sem_Expression (Expression_InfixApplicationChainTop _range _expression) =
    (sem_Expression_InfixApplicationChainTop _range (sem_Expression _expression))
sem_Expression (Expression_Lambda _range _patterns _expression) =
    (sem_Expression_Lambda _range (sem_Patterns _patterns) (sem_Expression _expression))
sem_Expression (Expression_Let _range _isStrict _declarations _expression) =
    (sem_Expression_Let _range _isStrict (sem_Declarations _declarations) (sem_Expression _expression))
sem_Expression (Expression_Tuple _range _expressions) =
    (sem_Expression_Tuple _range (sem_Expressions _expressions))
sem_Expression (Expression_Typed _range _expression _type) =
    (sem_Expression_Typed _range (sem_Expression _expression) (sem_Type _type))
sem_Expression (Expression_Negate _range _expression) =
    (sem_Expression_Negate _range (sem_Expression _expression))
sem_Expression (Expression_Annotate _range _annotation _expression) =
    (sem_Expression_Annotate _range (sem_ExpressionAnnotation _annotation) (sem_Expression _expression))
sem_Expression (Expression_ImpredicativeApplication _range _function _arguments) =
    (sem_Expression_ImpredicativeApplication _range (sem_Expression _function) (sem_Expressions _arguments))
sem_Expression (Expression_If _range _guardExpression _thenExpression _elseExpression) =
    (sem_Expression_If _range (sem_Expression _guardExpression) (sem_Expression _thenExpression) (sem_Expression _elseExpression))
sem_Expression (Expression_Case _range _expression _alternatives) =
    (sem_Expression_Case _range (sem_Expression _expression) (sem_Alternatives _alternatives))
sem_Expression (Expression_List _range _expressions) =
    (sem_Expression_List _range (sem_Expressions _expressions))
sem_Expression (Expression_Enum _range _from _then _to) =
    (sem_Expression_Enum _range (sem_Expression _from) (sem_MaybeExpression _then) (sem_MaybeExpression _to))
sem_Expression (Expression_Comprehension _range _expression _qualifiers) =
    (sem_Expression_Comprehension _range (sem_Expression _expression) (sem_Qualifiers _qualifiers))
sem_Expression (Expression_RecordConstruction _range _name _recordExpressionBindings) =
    (sem_Expression_RecordConstruction _range _name (sem_RecordExpressionBindings _recordExpressionBindings))
sem_Expression (Expression_RecordUpdate _range _expression _recordExpressionBindings) =
    (sem_Expression_RecordUpdate _range (sem_Expression _expression) (sem_RecordExpressionBindings _recordExpressionBindings))
sem_Expression (Expression_RowRecordUpdate _range _expression _rowRecordExpressionUpdates) =
    (sem_Expression_RowRecordUpdate _range (sem_Expression _expression) (sem_RowRecordExpressionUpdates _rowRecordExpressionUpdates))
sem_Expression (Expression_RowRecordEmpty _range) =
    (sem_Expression_RowRecordEmpty _range)
sem_Expression (Expression_RowRecordSelect _range _expression _name) =
    (sem_Expression_RowRecordSelect _range (sem_Expression _expression) _name)
sem_Expression (Expression_Do _range _statements) =
    (sem_Expression_Do _range (sem_Statements _statements))
sem_Expression (Expression_ImplicitApplication _range _function _arguments) =
    (sem_Expression_ImplicitApplication _range (sem_Expression _function) (sem_ContextedExpressions _arguments))
sem_Expression (Expression_ImplicitLambda _range _patterns _expression) =
    (sem_Expression_ImplicitLambda _range (sem_ContextedPatterns _patterns) (sem_Expression _expression))
-- semantic domain
type T_Expression = UID ->
                    FixityGam ->
                    UID ->
                    (Map.Map HsName [(HsName,HsName)]) ->
                    IdDefOccGam ->
                    HsName ->
                    NmLev ->
                    EHCOpts ->
                    PatchEhNmInInstance ->
                    (Set.Set Pragma.Pragma) ->
                    ([HsName]) ->
                    ( Name,(EH.Expr),ErrSq,UID,IdUseOccGam,(OpChain EH.Expr),MaybeName,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Expression_Literal :: Range ->
                          T_Literal ->
                          T_Expression
sem_Expression_Literal range_ literal_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _literalOgUniq :: UID
              _literalOidGam :: IdDefOccGam
              _literalOnmLev :: NmLev
              _literalOopts :: EHCOpts
              _literalOpatchEhNmInInstance :: PatchEhNmInInstance
              _literalOtopInstanceNmL :: ([HsName])
              _literalIeh :: Literal
              _literalIerrSq :: ErrSq
              _literalIgUniq :: UID
              _literalIidUseOccGam :: IdUseOccGam
              _literalIpp :: PP_Doc
              _literalIppWrap :: (PP_Doc -> PP_Doc)
              _literalItopInstanceNmL :: ([HsName])
              _literalIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 475, column 9)
              _litnames =
                  litNames _lhsIopts _literalIeh False 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 476, column 29)
              (_litrefname,_litrefnames,_idUseOccGam,_errIdUse) =
                  mkUseOccGam' _lhsIopts _lhsIidGam _litnames range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 478, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam, _literalIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 13, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _literalIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 466, column 9)
              _eh =
                  case _literalIeh of
                    Literal_Int    r b s -> fst $ ehExpLitInt r b s 1 _litrefnames
                    Literal_Char   r s -> rngLift r EH.Expr_CConst (head s)
                    Literal_String r s -> fst $ ehExpLitString _lhsIopts r s _litrefnames
                    Literal_Float  r s -> fst $ ehExpLitFloat r s 1 _litrefnames
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _literalIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _literalIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _literalIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _literalIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _literalItopInstanceNmL
              -- copy rule (down)
              _literalOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _literalOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _literalOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _literalOopts =
                  _lhsIopts
              -- copy rule (down)
              _literalOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _literalOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _literalIeh,_literalIerrSq,_literalIgUniq,_literalIidUseOccGam,_literalIpp,_literalIppWrap,_literalItopInstanceNmL,_literalIundefOccGam) =
                  literal_ _literalOgUniq _literalOidGam _literalOnmLev _literalOopts _literalOpatchEhNmInInstance _literalOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Variable :: Range ->
                           Name ->
                           T_Expression
sem_Expression_Variable range_ name_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 480, column 9)
              _idAsp =
                  IdAsp_Val_Var
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 486, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
                      dbgnm = mkHNm "putStrLn"
                      dbgoc = IdOcc dbgnm IdOcc_Val
                  in
                              x
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 15, column 9)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 194, column 9)
              _pp =
                  pp name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
              _lhsOoperatorName =
                  Just _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 472, column 9)
              _eh =
                  rngLift range_ EH.Expr_Var _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Constructor :: Range ->
                              Name ->
                              T_Expression
sem_Expression_Constructor range_ name_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 483, column 9)
              _idAsp =
                  IdAsp_Val_Con
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 486, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
                      dbgnm = mkHNm "putStrLn"
                      dbgoc = IdOcc dbgnm IdOcc_Val
                  in
                              x
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 263, column 9)
              _lhsOconNm =
                  name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 15, column 9)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 196, column 9)
              _pp =
                  ppCon name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
              _lhsOoperatorName =
                  Just _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 474, column 9)
              _eh =
                  rngLift range_ EH.Expr_Con _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_TupleConstructor :: Range ->
                                   Int ->
                                   T_Expression
sem_Expression_TupleConstructor range_ arity_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 198, column 9)
              _pp =
                  ppParens (replicate (arity_ - 1) (','))
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 476, column 9)
              _eh =
                  ehTupleConstructor range_ arity_ EH.Expr_Var EH.PatExpr_Var EH.Expr_Lam
                      (\_ x -> x) EH.Expr_Rec EH.RecExpr_Ext EH.RecExpr_Empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Parenthesized :: Range ->
                                T_Expression ->
                                T_Expression
sem_Expression_Parenthesized range_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 200, column 9)
              _pp =
                  ppParens _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 479, column 9)
              _eh =
                  rngLift range_ EH.Expr_Parens _expressionIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_NormalApplication :: Range ->
                                    T_Expression ->
                                    T_Expressions ->
                                    T_Expression
sem_Expression_NormalApplication range_ function_ arguments_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _functionOcaseId :: UID
              _functionOfixityGam :: FixityGam
              _functionOgUniq :: UID
              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _functionOidGam :: IdDefOccGam
              _functionOmoduleNm :: HsName
              _functionOnmLev :: NmLev
              _functionOopts :: EHCOpts
              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
              _functionOpragmas :: (Set.Set Pragma.Pragma)
              _functionOtopInstanceNmL :: ([HsName])
              _argumentsOcaseId :: UID
              _argumentsOfixityGam :: FixityGam
              _argumentsOgUniq :: UID
              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _argumentsOidGam :: IdDefOccGam
              _argumentsOmoduleNm :: HsName
              _argumentsOnmLev :: NmLev
              _argumentsOopts :: EHCOpts
              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
              _argumentsOtopInstanceNmL :: ([HsName])
              _functionIconNm :: Name
              _functionIeh :: (EH.Expr)
              _functionIerrSq :: ErrSq
              _functionIgUniq :: UID
              _functionIidUseOccGam :: IdUseOccGam
              _functionIopChain :: (OpChain EH.Expr)
              _functionIoperatorName :: MaybeName
              _functionIpp :: PP_Doc
              _functionIppWrap :: (PP_Doc -> PP_Doc)
              _functionItopInstanceNmL :: ([HsName])
              _functionIundefOccGam :: IdUseOccGam
              _argumentsIeh :: ([EH.Expr])
              _argumentsIerrSq :: ErrSq
              _argumentsIgUniq :: UID
              _argumentsIidUseOccGam :: IdUseOccGam
              _argumentsIpp :: PP_Doc
              _argumentsIppL :: ([PP_Doc])
              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
              _argumentsItopInstanceNmL :: ([HsName])
              _argumentsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 202, column 9)
              _pp =
                  ppAppTop  (_functionIconNm,_functionIpp)
                            _argumentsIppL (_functionIpp >#< ppSpaces _argumentsIppL)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 481, column 9)
              _eh =
                  appRngTopApp range_ (_functionIeh : _argumentsIeh)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _functionIerrSq `Seq.union` _argumentsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _functionIppWrap . _argumentsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _argumentsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _argumentsItopInstanceNmL
              -- copy rule (down)
              _functionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _functionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _functionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _functionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _functionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _functionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _functionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _functionOopts =
                  _lhsIopts
              -- copy rule (down)
              _functionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _functionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _functionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _argumentsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _argumentsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _argumentsOgUniq =
                  _functionIgUniq
              -- copy rule (down)
              _argumentsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _argumentsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _argumentsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _argumentsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _argumentsOopts =
                  _lhsIopts
              -- copy rule (down)
              _argumentsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _argumentsOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _argumentsOtopInstanceNmL =
                  _functionItopInstanceNmL
              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionIundefOccGam) =
                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL
              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_SectionApplication :: Range ->
                                     T_MaybeExpression ->
                                     T_Expression ->
                                     T_MaybeExpression ->
                                     T_Expression
sem_Expression_SectionApplication range_ leftExpression_ operator_ rightExpression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _leftExpressionOgUniq :: UID
              _lUniq_1_nm :: UID
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _leftExpressionOcaseId :: UID
              _leftExpressionOfixityGam :: FixityGam
              _leftExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _leftExpressionOidGam :: IdDefOccGam
              _leftExpressionOmoduleNm :: HsName
              _leftExpressionOnmLev :: NmLev
              _leftExpressionOopts :: EHCOpts
              _leftExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftExpressionOpragmas :: (Set.Set Pragma.Pragma)
              _leftExpressionOtopInstanceNmL :: ([HsName])
              _operatorOcaseId :: UID
              _operatorOfixityGam :: FixityGam
              _operatorOgUniq :: UID
              _operatorOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _operatorOidGam :: IdDefOccGam
              _operatorOmoduleNm :: HsName
              _operatorOnmLev :: NmLev
              _operatorOopts :: EHCOpts
              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
              _operatorOpragmas :: (Set.Set Pragma.Pragma)
              _operatorOtopInstanceNmL :: ([HsName])
              _rightExpressionOcaseId :: UID
              _rightExpressionOfixityGam :: FixityGam
              _rightExpressionOgUniq :: UID
              _rightExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _rightExpressionOidGam :: IdDefOccGam
              _rightExpressionOmoduleNm :: HsName
              _rightExpressionOnmLev :: NmLev
              _rightExpressionOopts :: EHCOpts
              _rightExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightExpressionOpragmas :: (Set.Set Pragma.Pragma)
              _rightExpressionOtopInstanceNmL :: ([HsName])
              _leftExpressionIeh :: (Maybe EH.Expr)
              _leftExpressionIerrSq :: ErrSq
              _leftExpressionIgUniq :: UID
              _leftExpressionIidUseOccGam :: IdUseOccGam
              _leftExpressionIpp :: PP_Doc
              _leftExpressionIppMb :: (Maybe PP_Doc)
              _leftExpressionIppWrap :: (PP_Doc -> PP_Doc)
              _leftExpressionItopInstanceNmL :: ([HsName])
              _leftExpressionIundefOccGam :: IdUseOccGam
              _operatorIconNm :: Name
              _operatorIeh :: (EH.Expr)
              _operatorIerrSq :: ErrSq
              _operatorIgUniq :: UID
              _operatorIidUseOccGam :: IdUseOccGam
              _operatorIopChain :: (OpChain EH.Expr)
              _operatorIoperatorName :: MaybeName
              _operatorIpp :: PP_Doc
              _operatorIppWrap :: (PP_Doc -> PP_Doc)
              _operatorItopInstanceNmL :: ([HsName])
              _operatorIundefOccGam :: IdUseOccGam
              _rightExpressionIeh :: (Maybe EH.Expr)
              _rightExpressionIerrSq :: ErrSq
              _rightExpressionIgUniq :: UID
              _rightExpressionIidUseOccGam :: IdUseOccGam
              _rightExpressionIpp :: PP_Doc
              _rightExpressionIppMb :: (Maybe PP_Doc)
              _rightExpressionIppWrap :: (PP_Doc -> PP_Doc)
              _rightExpressionItopInstanceNmL :: ([HsName])
              _rightExpressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 207, column 9)
              _pp =
                  let e = case (_leftExpressionIppMb,_rightExpressionIppMb) of
                            (Just l ,Nothing) -> l >#< _operatorIpp
                            (Nothing,Just r ) ->       _operatorIpp >#< r
                            (Nothing,Nothing) ->       _operatorIpp
                  in  ppParens e
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 487, column 9)
              _eh =
                  ehSection
                      _lUniq_1_nm range_
                      EH.Expr_Var EH.PatExpr_Var EH.Expr_Lam
                      _leftExpressionIeh _operatorIeh _rightExpressionIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- -- generated by the unique rule mechanism.
              (_leftExpressionOgUniq,_lUniq_1_nm) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_1_nm) -> (__cont,lUniq_1_nm)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _leftExpressionIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightExpressionIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _leftExpressionIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightExpressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftExpressionIppWrap . _operatorIppWrap . _rightExpressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftExpressionIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightExpressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _rightExpressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightExpressionItopInstanceNmL
              -- copy rule (down)
              _leftExpressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _leftExpressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _leftExpressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _leftExpressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _leftExpressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _leftExpressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _leftExpressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _leftExpressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _leftExpressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _leftExpressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _operatorOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _operatorOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _operatorOgUniq =
                  _leftExpressionIgUniq
              -- copy rule (down)
              _operatorOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _operatorOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _operatorOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _operatorOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _operatorOopts =
                  _lhsIopts
              -- copy rule (down)
              _operatorOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _operatorOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _operatorOtopInstanceNmL =
                  _leftExpressionItopInstanceNmL
              -- copy rule (down)
              _rightExpressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _rightExpressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rightExpressionOgUniq =
                  _operatorIgUniq
              -- copy rule (down)
              _rightExpressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _rightExpressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rightExpressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _rightExpressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rightExpressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _rightExpressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _rightExpressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _rightExpressionOtopInstanceNmL =
                  _operatorItopInstanceNmL
              ( _leftExpressionIeh,_leftExpressionIerrSq,_leftExpressionIgUniq,_leftExpressionIidUseOccGam,_leftExpressionIpp,_leftExpressionIppMb,_leftExpressionIppWrap,_leftExpressionItopInstanceNmL,_leftExpressionIundefOccGam) =
                  leftExpression_ _leftExpressionOcaseId _leftExpressionOfixityGam _leftExpressionOgUniq _leftExpressionOgenerDerivMp _leftExpressionOidGam _leftExpressionOmoduleNm _leftExpressionOnmLev _leftExpressionOopts _leftExpressionOpatchEhNmInInstance _leftExpressionOpragmas _leftExpressionOtopInstanceNmL
              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIgUniq,_operatorIidUseOccGam,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorIundefOccGam) =
                  operator_ _operatorOcaseId _operatorOfixityGam _operatorOgUniq _operatorOgenerDerivMp _operatorOidGam _operatorOmoduleNm _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOpragmas _operatorOtopInstanceNmL
              ( _rightExpressionIeh,_rightExpressionIerrSq,_rightExpressionIgUniq,_rightExpressionIidUseOccGam,_rightExpressionIpp,_rightExpressionIppMb,_rightExpressionIppWrap,_rightExpressionItopInstanceNmL,_rightExpressionIundefOccGam) =
                  rightExpression_ _rightExpressionOcaseId _rightExpressionOfixityGam _rightExpressionOgUniq _rightExpressionOgenerDerivMp _rightExpressionOidGam _rightExpressionOmoduleNm _rightExpressionOnmLev _rightExpressionOopts _rightExpressionOpatchEhNmInInstance _rightExpressionOpragmas _rightExpressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_InfixApplication :: Range ->
                                   T_Expression ->
                                   T_Expression ->
                                   T_Expression ->
                                   T_Expression
sem_Expression_InfixApplication range_ leftExpression_ operator_ rightExpression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _leftExpressionOcaseId :: UID
              _leftExpressionOfixityGam :: FixityGam
              _leftExpressionOgUniq :: UID
              _leftExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _leftExpressionOidGam :: IdDefOccGam
              _leftExpressionOmoduleNm :: HsName
              _leftExpressionOnmLev :: NmLev
              _leftExpressionOopts :: EHCOpts
              _leftExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftExpressionOpragmas :: (Set.Set Pragma.Pragma)
              _leftExpressionOtopInstanceNmL :: ([HsName])
              _operatorOcaseId :: UID
              _operatorOfixityGam :: FixityGam
              _operatorOgUniq :: UID
              _operatorOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _operatorOidGam :: IdDefOccGam
              _operatorOmoduleNm :: HsName
              _operatorOnmLev :: NmLev
              _operatorOopts :: EHCOpts
              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
              _operatorOpragmas :: (Set.Set Pragma.Pragma)
              _operatorOtopInstanceNmL :: ([HsName])
              _rightExpressionOcaseId :: UID
              _rightExpressionOfixityGam :: FixityGam
              _rightExpressionOgUniq :: UID
              _rightExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _rightExpressionOidGam :: IdDefOccGam
              _rightExpressionOmoduleNm :: HsName
              _rightExpressionOnmLev :: NmLev
              _rightExpressionOopts :: EHCOpts
              _rightExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightExpressionOpragmas :: (Set.Set Pragma.Pragma)
              _rightExpressionOtopInstanceNmL :: ([HsName])
              _leftExpressionIconNm :: Name
              _leftExpressionIeh :: (EH.Expr)
              _leftExpressionIerrSq :: ErrSq
              _leftExpressionIgUniq :: UID
              _leftExpressionIidUseOccGam :: IdUseOccGam
              _leftExpressionIopChain :: (OpChain EH.Expr)
              _leftExpressionIoperatorName :: MaybeName
              _leftExpressionIpp :: PP_Doc
              _leftExpressionIppWrap :: (PP_Doc -> PP_Doc)
              _leftExpressionItopInstanceNmL :: ([HsName])
              _leftExpressionIundefOccGam :: IdUseOccGam
              _operatorIconNm :: Name
              _operatorIeh :: (EH.Expr)
              _operatorIerrSq :: ErrSq
              _operatorIgUniq :: UID
              _operatorIidUseOccGam :: IdUseOccGam
              _operatorIopChain :: (OpChain EH.Expr)
              _operatorIoperatorName :: MaybeName
              _operatorIpp :: PP_Doc
              _operatorIppWrap :: (PP_Doc -> PP_Doc)
              _operatorItopInstanceNmL :: ([HsName])
              _operatorIundefOccGam :: IdUseOccGam
              _rightExpressionIconNm :: Name
              _rightExpressionIeh :: (EH.Expr)
              _rightExpressionIerrSq :: ErrSq
              _rightExpressionIgUniq :: UID
              _rightExpressionIidUseOccGam :: IdUseOccGam
              _rightExpressionIopChain :: (OpChain EH.Expr)
              _rightExpressionIoperatorName :: MaybeName
              _rightExpressionIpp :: PP_Doc
              _rightExpressionIppWrap :: (PP_Doc -> PP_Doc)
              _rightExpressionItopInstanceNmL :: ([HsName])
              _rightExpressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 205, column 9)
              _pp =
                  _leftExpressionIpp >#< _operatorIpp >#< _rightExpressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 58, column 9)
              _fgi =
                  case _operatorIoperatorName of
                    Just n
                      -> fixityGamLookup n _lhsIfixityGam
                    _ -> defaultFixityGamInfo
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 100, column 9)
              _lhsOopChain =
                  OpChain_Op _operatorIeh _operatorIpp (fgiFixity _fgi) (fgiPrio _fgi) range_ _leftExpressionIopChain _rightExpressionIopChain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 483, column 9)
              _eh =
                  appRngParApp range_ [_operatorIeh,_leftExpressionIeh,_rightExpressionIeh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _leftExpressionIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightExpressionIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _leftExpressionIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightExpressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftExpressionIppWrap . _operatorIppWrap . _rightExpressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftExpressionIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightExpressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _rightExpressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightExpressionItopInstanceNmL
              -- copy rule (down)
              _leftExpressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _leftExpressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _leftExpressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _leftExpressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _leftExpressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _leftExpressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _leftExpressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _leftExpressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _leftExpressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _leftExpressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _leftExpressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _operatorOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _operatorOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _operatorOgUniq =
                  _leftExpressionIgUniq
              -- copy rule (down)
              _operatorOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _operatorOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _operatorOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _operatorOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _operatorOopts =
                  _lhsIopts
              -- copy rule (down)
              _operatorOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _operatorOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _operatorOtopInstanceNmL =
                  _leftExpressionItopInstanceNmL
              -- copy rule (down)
              _rightExpressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _rightExpressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rightExpressionOgUniq =
                  _operatorIgUniq
              -- copy rule (down)
              _rightExpressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _rightExpressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rightExpressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _rightExpressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rightExpressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _rightExpressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _rightExpressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _rightExpressionOtopInstanceNmL =
                  _operatorItopInstanceNmL
              ( _leftExpressionIconNm,_leftExpressionIeh,_leftExpressionIerrSq,_leftExpressionIgUniq,_leftExpressionIidUseOccGam,_leftExpressionIopChain,_leftExpressionIoperatorName,_leftExpressionIpp,_leftExpressionIppWrap,_leftExpressionItopInstanceNmL,_leftExpressionIundefOccGam) =
                  leftExpression_ _leftExpressionOcaseId _leftExpressionOfixityGam _leftExpressionOgUniq _leftExpressionOgenerDerivMp _leftExpressionOidGam _leftExpressionOmoduleNm _leftExpressionOnmLev _leftExpressionOopts _leftExpressionOpatchEhNmInInstance _leftExpressionOpragmas _leftExpressionOtopInstanceNmL
              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIgUniq,_operatorIidUseOccGam,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorIundefOccGam) =
                  operator_ _operatorOcaseId _operatorOfixityGam _operatorOgUniq _operatorOgenerDerivMp _operatorOidGam _operatorOmoduleNm _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOpragmas _operatorOtopInstanceNmL
              ( _rightExpressionIconNm,_rightExpressionIeh,_rightExpressionIerrSq,_rightExpressionIgUniq,_rightExpressionIidUseOccGam,_rightExpressionIopChain,_rightExpressionIoperatorName,_rightExpressionIpp,_rightExpressionIppWrap,_rightExpressionItopInstanceNmL,_rightExpressionIundefOccGam) =
                  rightExpression_ _rightExpressionOcaseId _rightExpressionOfixityGam _rightExpressionOgUniq _rightExpressionOgenerDerivMp _rightExpressionOidGam _rightExpressionOmoduleNm _rightExpressionOnmLev _rightExpressionOopts _rightExpressionOpatchEhNmInInstance _rightExpressionOpragmas _rightExpressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_InfixApplicationChainTop :: Range ->
                                           T_Expression ->
                                           T_Expression
sem_Expression_InfixApplicationChainTop range_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 22, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errRearr, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 106, column 25)
              (_ehRearrOpChain,_errRearr) =
                  opChainReArrange _expressionIopChain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 106, column 9)
              _ehFromOpChain =
                  unOpChain _ehRearrOpChain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 485, column 9)
              _eh =
                  _ehFromOpChain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _expressionIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Lambda :: Range ->
                         T_Patterns ->
                         T_Expression ->
                         T_Expression
sem_Expression_Lambda range_ patterns_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _expressionOidGam :: IdDefOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternsOfixityGam :: FixityGam
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _patternsIeh :: ([EH.PatExpr])
              _patternsIerrSq :: ErrSq
              _patternsIgUniq :: UID
              _patternsIidDefOccGam :: IdDefOccGam
              _patternsIidOccDefs :: ([IdOcc])
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsIundefOccGam :: IdUseOccGam
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 344, column 9)
              _expressionOidGam =
                  gamUnion _patternsIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 50, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 104, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _patternsIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 20, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, _patternsIerrSq, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 213, column 9)
              _pp =
                  "\\" >|< ppSpaces _patternsIppL >#< "->" >#< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 493, column 9)
              _eh =
                  foldr (rngLift range_ EH.Expr_Lam) _expressionIeh _patternsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternsIppWrap . _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternsIundefOccGam `gamUnion` _expressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _patternsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _patternsOnmLev =
                  _nmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _expressionOgUniq =
                  _patternsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _expressionOnmLev =
                  _nmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _expressionOtopInstanceNmL =
                  _patternsItopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Let :: Range ->
                      Bool ->
                      T_Declarations ->
                      T_Expression ->
                      T_Expression
sem_Expression_Let range_ isStrict_ declarations_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _declarationsOcaseId :: UID
              _declarationsOfixityGam :: FixityGam
              _declarationsOgUniq :: UID
              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _declarationsOidGam :: IdDefOccGam
              _declarationsOmoduleNm :: HsName
              _declarationsOnmLev :: NmLev
              _declarationsOopts :: EHCOpts
              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
              _declarationsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _declarationsIeh :: ([EH.Decl])
              _declarationsIerrSq :: ErrSq
              _declarationsIgUniq :: UID
              _declarationsIgathFixityGam :: FixityGam
              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
              _declarationsIidDefOccGam :: IdDefOccGam
              _declarationsIidDpdMp :: IdDpdMp
              _declarationsIidOccDefs :: ([IdOcc])
              _declarationsIidTySigDefOccGam :: IdDefOccGam
              _declarationsIidUseOccGam :: IdUseOccGam
              _declarationsIneedsError :: Bool
              _declarationsIpp :: PP_Doc
              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
              _declarationsItopInstanceNmL :: ([HsName])
              _declarationsIundefOccGam :: IdUseOccGam
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 342, column 9)
              _idGam =
                  gamUnion _declarationsIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 890, column 9)
              _sccOrder =
                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1020, column 29)
              (_mkSccLet,_,_errReorder) =
                  mkIdOccSccEH range_ isStrict_ _declarationsIidDefOccGam (Just _sccOrder)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 50, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 101, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 17, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errReorder, _declarationsIerrSq, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 215, column 9)
              _pp =
                  "let" >|< (if isStrict_ then pp "!" else empty) >#< (_declarationsIpp >-< _ppExtra) >#< "in" >#< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 216, column 17)
              _ppExtra =
                  empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 26, column 9)
              _fixityGam =
                  _declarationsIgathFixityGam `gamUnion` _lhsIfixityGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 495, column 9)
              _eh =
                  _mkSccLet _expressionIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _declarationsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _declarationsIppWrap . _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _declarationsIundefOccGam `gamUnion` _expressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _declarationsOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _declarationsOfixityGam =
                  _fixityGam
              -- copy rule (down)
              _declarationsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _declarationsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _declarationsOidGam =
                  _idGam
              -- copy rule (down)
              _declarationsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _declarationsOnmLev =
                  _nmLev
              -- copy rule (down)
              _declarationsOopts =
                  _lhsIopts
              -- copy rule (down)
              _declarationsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _declarationsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _declarationsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _expressionOfixityGam =
                  _fixityGam
              -- copy rule (chain)
              _expressionOgUniq =
                  _declarationsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _expressionOidGam =
                  _idGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _expressionOnmLev =
                  _nmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _expressionOtopInstanceNmL =
                  _declarationsItopInstanceNmL
              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidOccDefs,_declarationsIidTySigDefOccGam,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsIundefOccGam) =
                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Tuple :: Range ->
                        T_Expressions ->
                        T_Expression
sem_Expression_Tuple range_ expressions_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionsOcaseId :: UID
              _expressionsOfixityGam :: FixityGam
              _expressionsOgUniq :: UID
              _expressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionsOidGam :: IdDefOccGam
              _expressionsOmoduleNm :: HsName
              _expressionsOnmLev :: NmLev
              _expressionsOopts :: EHCOpts
              _expressionsOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionsOpragmas :: (Set.Set Pragma.Pragma)
              _expressionsOtopInstanceNmL :: ([HsName])
              _expressionsIeh :: ([EH.Expr])
              _expressionsIerrSq :: ErrSq
              _expressionsIgUniq :: UID
              _expressionsIidUseOccGam :: IdUseOccGam
              _expressionsIpp :: PP_Doc
              _expressionsIppL :: ([PP_Doc])
              _expressionsIppWrap :: (PP_Doc -> PP_Doc)
              _expressionsItopInstanceNmL :: ([HsName])
              _expressionsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 218, column 9)
              _pp =
                  ppParensCommas _expressionsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 497, column 9)
              _eh =
                  ehExpConApp range_ (hsnProd (length _expressionsIeh)) _expressionsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionsIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionsItopInstanceNmL
              -- copy rule (down)
              _expressionsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionsOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionsIeh,_expressionsIerrSq,_expressionsIgUniq,_expressionsIidUseOccGam,_expressionsIpp,_expressionsIppL,_expressionsIppWrap,_expressionsItopInstanceNmL,_expressionsIundefOccGam) =
                  expressions_ _expressionsOcaseId _expressionsOfixityGam _expressionsOgUniq _expressionsOgenerDerivMp _expressionsOidGam _expressionsOmoduleNm _expressionsOnmLev _expressionsOopts _expressionsOpatchEhNmInInstance _expressionsOpragmas _expressionsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Typed :: Range ->
                        T_Expression ->
                        T_Type ->
                        T_Expression
sem_Expression_Typed range_ expression_ type_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _typeOidGam :: IdDefOccGam
              _lhsOconNm :: Name
              _typeOnmLev :: NmLev
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOisAsPred :: Bool
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 234, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 346, column 9)
              _typeOidGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 52, column 9)
              _typeOnmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 220, column 9)
              _pp =
                  _expressionIpp >#< "::" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 499, column 9)
              _eh =
                  rngLift range_ EH.Expr_TypeAs False _typeIeh _expressionIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 218, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq `Seq.union` _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam `gamAddGam` _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap . _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam `gamUnion` _typeIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typeOgUniq =
                  _expressionIgUniq
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _typeOtopInstanceNmL =
                  _expressionItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Negate :: Range ->
                         T_Expression ->
                         T_Expression
sem_Expression_Negate range_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 496, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnNegate] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 498, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_expressionIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 24, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 222, column 9)
              _pp =
                  "-" >#< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 501, column 9)
              _eh =
                  ehExpVarApp range_ _refname [_expressionIeh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Annotate :: Range ->
                           T_ExpressionAnnotation ->
                           T_Expression ->
                           T_Expression
sem_Expression_Annotate range_ annotation_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _annotationOcaseId :: UID
              _annotationOfixityGam :: FixityGam
              _annotationOgUniq :: UID
              _annotationOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _annotationOidGam :: IdDefOccGam
              _annotationOmoduleNm :: HsName
              _annotationOnmLev :: NmLev
              _annotationOopts :: EHCOpts
              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
              _annotationOpragmas :: (Set.Set Pragma.Pragma)
              _annotationOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _annotationIeh :: (EH.ExprAnn)
              _annotationIerrSq :: ErrSq
              _annotationIgUniq :: UID
              _annotationIidUseOccGam :: IdUseOccGam
              _annotationIpp :: PP_Doc
              _annotationIppWrap :: (PP_Doc -> PP_Doc)
              _annotationItopInstanceNmL :: ([HsName])
              _annotationIundefOccGam :: IdUseOccGam
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 503, column 17)
              _eh =
                  rngLift range_ EH.Expr_Ann _annotationIeh _expressionIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _annotationIerrSq `Seq.union` _expressionIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _annotationIidUseOccGam `gamAddGam` _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _annotationIpp >-< _expressionIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _annotationIppWrap . _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _annotationIundefOccGam `gamUnion` _expressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _annotationOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _annotationOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _annotationOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _annotationOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _annotationOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _annotationOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _annotationOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _annotationOopts =
                  _lhsIopts
              -- copy rule (down)
              _annotationOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _annotationOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _annotationOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _expressionOgUniq =
                  _annotationIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _expressionOtopInstanceNmL =
                  _annotationItopInstanceNmL
              ( _annotationIeh,_annotationIerrSq,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationIundefOccGam) =
                  annotation_ _annotationOcaseId _annotationOfixityGam _annotationOgUniq _annotationOgenerDerivMp _annotationOidGam _annotationOmoduleNm _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOpragmas _annotationOtopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_ImpredicativeApplication :: Range ->
                                           T_Expression ->
                                           T_Expressions ->
                                           T_Expression
sem_Expression_ImpredicativeApplication range_ function_ arguments_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _functionOcaseId :: UID
              _functionOfixityGam :: FixityGam
              _functionOgUniq :: UID
              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _functionOidGam :: IdDefOccGam
              _functionOmoduleNm :: HsName
              _functionOnmLev :: NmLev
              _functionOopts :: EHCOpts
              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
              _functionOpragmas :: (Set.Set Pragma.Pragma)
              _functionOtopInstanceNmL :: ([HsName])
              _argumentsOcaseId :: UID
              _argumentsOfixityGam :: FixityGam
              _argumentsOgUniq :: UID
              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _argumentsOidGam :: IdDefOccGam
              _argumentsOmoduleNm :: HsName
              _argumentsOnmLev :: NmLev
              _argumentsOopts :: EHCOpts
              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
              _argumentsOtopInstanceNmL :: ([HsName])
              _functionIconNm :: Name
              _functionIeh :: (EH.Expr)
              _functionIerrSq :: ErrSq
              _functionIgUniq :: UID
              _functionIidUseOccGam :: IdUseOccGam
              _functionIopChain :: (OpChain EH.Expr)
              _functionIoperatorName :: MaybeName
              _functionIpp :: PP_Doc
              _functionIppWrap :: (PP_Doc -> PP_Doc)
              _functionItopInstanceNmL :: ([HsName])
              _functionIundefOccGam :: IdUseOccGam
              _argumentsIeh :: ([EH.Expr])
              _argumentsIerrSq :: ErrSq
              _argumentsIgUniq :: UID
              _argumentsIidUseOccGam :: IdUseOccGam
              _argumentsIpp :: PP_Doc
              _argumentsIppL :: ([PP_Doc])
              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
              _argumentsItopInstanceNmL :: ([HsName])
              _argumentsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 224, column 9)
              _pp =
                  _functionIpp >#< "~" >|< _argumentsIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 505, column 9)
              _eh =
                  ehExpApp' (rngLift range_ EH.Expr_AppImpred) range_ _functionIeh _argumentsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _functionIerrSq `Seq.union` _argumentsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _functionIppWrap . _argumentsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _argumentsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _argumentsItopInstanceNmL
              -- copy rule (down)
              _functionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _functionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _functionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _functionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _functionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _functionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _functionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _functionOopts =
                  _lhsIopts
              -- copy rule (down)
              _functionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _functionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _functionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _argumentsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _argumentsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _argumentsOgUniq =
                  _functionIgUniq
              -- copy rule (down)
              _argumentsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _argumentsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _argumentsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _argumentsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _argumentsOopts =
                  _lhsIopts
              -- copy rule (down)
              _argumentsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _argumentsOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _argumentsOtopInstanceNmL =
                  _functionItopInstanceNmL
              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionIundefOccGam) =
                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL
              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_If :: Range ->
                     T_Expression ->
                     T_Expression ->
                     T_Expression ->
                     T_Expression
sem_Expression_If range_ guardExpression_ thenExpression_ elseExpression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _guardExpressionOcaseId :: UID
              _guardExpressionOfixityGam :: FixityGam
              _guardExpressionOgUniq :: UID
              _guardExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _guardExpressionOidGam :: IdDefOccGam
              _guardExpressionOmoduleNm :: HsName
              _guardExpressionOnmLev :: NmLev
              _guardExpressionOopts :: EHCOpts
              _guardExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _guardExpressionOpragmas :: (Set.Set Pragma.Pragma)
              _guardExpressionOtopInstanceNmL :: ([HsName])
              _thenExpressionOcaseId :: UID
              _thenExpressionOfixityGam :: FixityGam
              _thenExpressionOgUniq :: UID
              _thenExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _thenExpressionOidGam :: IdDefOccGam
              _thenExpressionOmoduleNm :: HsName
              _thenExpressionOnmLev :: NmLev
              _thenExpressionOopts :: EHCOpts
              _thenExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _thenExpressionOpragmas :: (Set.Set Pragma.Pragma)
              _thenExpressionOtopInstanceNmL :: ([HsName])
              _elseExpressionOcaseId :: UID
              _elseExpressionOfixityGam :: FixityGam
              _elseExpressionOgUniq :: UID
              _elseExpressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _elseExpressionOidGam :: IdDefOccGam
              _elseExpressionOmoduleNm :: HsName
              _elseExpressionOnmLev :: NmLev
              _elseExpressionOopts :: EHCOpts
              _elseExpressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _elseExpressionOpragmas :: (Set.Set Pragma.Pragma)
              _elseExpressionOtopInstanceNmL :: ([HsName])
              _guardExpressionIconNm :: Name
              _guardExpressionIeh :: (EH.Expr)
              _guardExpressionIerrSq :: ErrSq
              _guardExpressionIgUniq :: UID
              _guardExpressionIidUseOccGam :: IdUseOccGam
              _guardExpressionIopChain :: (OpChain EH.Expr)
              _guardExpressionIoperatorName :: MaybeName
              _guardExpressionIpp :: PP_Doc
              _guardExpressionIppWrap :: (PP_Doc -> PP_Doc)
              _guardExpressionItopInstanceNmL :: ([HsName])
              _guardExpressionIundefOccGam :: IdUseOccGam
              _thenExpressionIconNm :: Name
              _thenExpressionIeh :: (EH.Expr)
              _thenExpressionIerrSq :: ErrSq
              _thenExpressionIgUniq :: UID
              _thenExpressionIidUseOccGam :: IdUseOccGam
              _thenExpressionIopChain :: (OpChain EH.Expr)
              _thenExpressionIoperatorName :: MaybeName
              _thenExpressionIpp :: PP_Doc
              _thenExpressionIppWrap :: (PP_Doc -> PP_Doc)
              _thenExpressionItopInstanceNmL :: ([HsName])
              _thenExpressionIundefOccGam :: IdUseOccGam
              _elseExpressionIconNm :: Name
              _elseExpressionIeh :: (EH.Expr)
              _elseExpressionIerrSq :: ErrSq
              _elseExpressionIgUniq :: UID
              _elseExpressionIidUseOccGam :: IdUseOccGam
              _elseExpressionIopChain :: (OpChain EH.Expr)
              _elseExpressionIoperatorName :: MaybeName
              _elseExpressionIpp :: PP_Doc
              _elseExpressionIppWrap :: (PP_Doc -> PP_Doc)
              _elseExpressionItopInstanceNmL :: ([HsName])
              _elseExpressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 508, column 29)
              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 510, column 29)
              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 508, column 9)
              _idUseOccGam =
                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 513, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_guardExpressionIidUseOccGam,_thenExpressionIidUseOccGam,_elseExpressionIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 30, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardExpressionIerrSq, _thenExpressionIerrSq, _elseExpressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 226, column 9)
              _pp =
                  "if" >#< _guardExpressionIpp >-< "then" >#< _thenExpressionIpp >-< "else" >#< _elseExpressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 507, column 9)
              _eh =
                  EH.mkIf' (_typerefname : _valrefnames) range_ _guardExpressionIeh _thenExpressionIeh _elseExpressionIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _guardExpressionIppWrap . _thenExpressionIppWrap . _elseExpressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _guardExpressionIundefOccGam `gamUnion` _thenExpressionIundefOccGam `gamUnion` _elseExpressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _elseExpressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _elseExpressionItopInstanceNmL
              -- copy rule (down)
              _guardExpressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _guardExpressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _guardExpressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _guardExpressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _guardExpressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _guardExpressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _guardExpressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _guardExpressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _guardExpressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _guardExpressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _guardExpressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _thenExpressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _thenExpressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _thenExpressionOgUniq =
                  _guardExpressionIgUniq
              -- copy rule (down)
              _thenExpressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _thenExpressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _thenExpressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _thenExpressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _thenExpressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _thenExpressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _thenExpressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _thenExpressionOtopInstanceNmL =
                  _guardExpressionItopInstanceNmL
              -- copy rule (down)
              _elseExpressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _elseExpressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _elseExpressionOgUniq =
                  _thenExpressionIgUniq
              -- copy rule (down)
              _elseExpressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _elseExpressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _elseExpressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _elseExpressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _elseExpressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _elseExpressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _elseExpressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _elseExpressionOtopInstanceNmL =
                  _thenExpressionItopInstanceNmL
              ( _guardExpressionIconNm,_guardExpressionIeh,_guardExpressionIerrSq,_guardExpressionIgUniq,_guardExpressionIidUseOccGam,_guardExpressionIopChain,_guardExpressionIoperatorName,_guardExpressionIpp,_guardExpressionIppWrap,_guardExpressionItopInstanceNmL,_guardExpressionIundefOccGam) =
                  guardExpression_ _guardExpressionOcaseId _guardExpressionOfixityGam _guardExpressionOgUniq _guardExpressionOgenerDerivMp _guardExpressionOidGam _guardExpressionOmoduleNm _guardExpressionOnmLev _guardExpressionOopts _guardExpressionOpatchEhNmInInstance _guardExpressionOpragmas _guardExpressionOtopInstanceNmL
              ( _thenExpressionIconNm,_thenExpressionIeh,_thenExpressionIerrSq,_thenExpressionIgUniq,_thenExpressionIidUseOccGam,_thenExpressionIopChain,_thenExpressionIoperatorName,_thenExpressionIpp,_thenExpressionIppWrap,_thenExpressionItopInstanceNmL,_thenExpressionIundefOccGam) =
                  thenExpression_ _thenExpressionOcaseId _thenExpressionOfixityGam _thenExpressionOgUniq _thenExpressionOgenerDerivMp _thenExpressionOidGam _thenExpressionOmoduleNm _thenExpressionOnmLev _thenExpressionOopts _thenExpressionOpatchEhNmInInstance _thenExpressionOpragmas _thenExpressionOtopInstanceNmL
              ( _elseExpressionIconNm,_elseExpressionIeh,_elseExpressionIerrSq,_elseExpressionIgUniq,_elseExpressionIidUseOccGam,_elseExpressionIopChain,_elseExpressionIoperatorName,_elseExpressionIpp,_elseExpressionIppWrap,_elseExpressionItopInstanceNmL,_elseExpressionIundefOccGam) =
                  elseExpression_ _elseExpressionOcaseId _elseExpressionOfixityGam _elseExpressionOgUniq _elseExpressionOgenerDerivMp _elseExpressionOidGam _elseExpressionOmoduleNm _elseExpressionOnmLev _elseExpressionOopts _elseExpressionOpatchEhNmInInstance _elseExpressionOpragmas _elseExpressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Case :: Range ->
                       T_Expression ->
                       T_Alternatives ->
                       T_Expression
sem_Expression_Case range_ expression_ alternatives_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _expressionOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _alternativesOcaseId :: UID
              _alternativesOfixityGam :: FixityGam
              _alternativesOgUniq :: UID
              _alternativesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _alternativesOidGam :: IdDefOccGam
              _alternativesOmoduleNm :: HsName
              _alternativesOnmLev :: NmLev
              _alternativesOopts :: EHCOpts
              _alternativesOpatchEhNmInInstance :: PatchEhNmInInstance
              _alternativesOpragmas :: (Set.Set Pragma.Pragma)
              _alternativesOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              _alternativesIeh :: ([EH.CaseAlt])
              _alternativesIerrSq :: ErrSq
              _alternativesIgUniq :: UID
              _alternativesIidUseOccGam :: IdUseOccGam
              _alternativesIpp :: PP_Doc
              _alternativesIppWrap :: (PP_Doc -> PP_Doc)
              _alternativesItopInstanceNmL :: ([HsName])
              _alternativesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 228, column 9)
              _pp =
                  "case" >#< _expressionIpp >#< "of" >-< indent 2 _alternativesIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 509, column 9)
              _eh =
                  EH.mkCase' range_ _expressionIeh (Just $ Set.singleton _caseId) Set.empty False _alternativesIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 868, column 9)
              _caseId =
                  _lUniq
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- -- generated by the unique rule mechanism.
              (_expressionOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq `Seq.union` _alternativesIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam `gamAddGam` _alternativesIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap . _alternativesIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam `gamUnion` _alternativesIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _alternativesIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _alternativesItopInstanceNmL
              -- copy rule (from local)
              _expressionOcaseId =
                  _caseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _alternativesOcaseId =
                  _caseId
              -- copy rule (down)
              _alternativesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _alternativesOgUniq =
                  _expressionIgUniq
              -- copy rule (down)
              _alternativesOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _alternativesOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _alternativesOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _alternativesOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _alternativesOopts =
                  _lhsIopts
              -- copy rule (down)
              _alternativesOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _alternativesOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _alternativesOtopInstanceNmL =
                  _expressionItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
              ( _alternativesIeh,_alternativesIerrSq,_alternativesIgUniq,_alternativesIidUseOccGam,_alternativesIpp,_alternativesIppWrap,_alternativesItopInstanceNmL,_alternativesIundefOccGam) =
                  alternatives_ _alternativesOcaseId _alternativesOfixityGam _alternativesOgUniq _alternativesOgenerDerivMp _alternativesOidGam _alternativesOmoduleNm _alternativesOnmLev _alternativesOopts _alternativesOpatchEhNmInInstance _alternativesOpragmas _alternativesOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_List :: Range ->
                       T_Expressions ->
                       T_Expression
sem_Expression_List range_ expressions_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionsOcaseId :: UID
              _expressionsOfixityGam :: FixityGam
              _expressionsOgUniq :: UID
              _expressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionsOidGam :: IdDefOccGam
              _expressionsOmoduleNm :: HsName
              _expressionsOnmLev :: NmLev
              _expressionsOopts :: EHCOpts
              _expressionsOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionsOpragmas :: (Set.Set Pragma.Pragma)
              _expressionsOtopInstanceNmL :: ([HsName])
              _expressionsIeh :: ([EH.Expr])
              _expressionsIerrSq :: ErrSq
              _expressionsIgUniq :: UID
              _expressionsIidUseOccGam :: IdUseOccGam
              _expressionsIpp :: PP_Doc
              _expressionsIppL :: ([PP_Doc])
              _expressionsIppWrap :: (PP_Doc -> PP_Doc)
              _expressionsItopInstanceNmL :: ([HsName])
              _expressionsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 500, column 29)
              (_,_refnames,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Con range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 502, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_expressionsIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 26, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _expressionsIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 230, column 9)
              _pp =
                  ppBracketsCommas _expressionsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 511, column 9)
              _eh =
                  foldr (\l r -> ehExpConApp range_ (_refnames !! 0) [l,r]) (rngLift range_ EH.Expr_Con (_refnames !! 1)) _expressionsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionsIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionsItopInstanceNmL
              -- copy rule (down)
              _expressionsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionsOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionsIeh,_expressionsIerrSq,_expressionsIgUniq,_expressionsIidUseOccGam,_expressionsIpp,_expressionsIppL,_expressionsIppWrap,_expressionsItopInstanceNmL,_expressionsIundefOccGam) =
                  expressions_ _expressionsOcaseId _expressionsOfixityGam _expressionsOgUniq _expressionsOgenerDerivMp _expressionsOidGam _expressionsOmoduleNm _expressionsOnmLev _expressionsOopts _expressionsOpatchEhNmInInstance _expressionsOpragmas _expressionsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Enum :: Range ->
                       T_Expression ->
                       T_MaybeExpression ->
                       T_MaybeExpression ->
                       T_Expression
sem_Expression_Enum range_ from_ then_ to_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _fromOcaseId :: UID
              _fromOfixityGam :: FixityGam
              _fromOgUniq :: UID
              _fromOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _fromOidGam :: IdDefOccGam
              _fromOmoduleNm :: HsName
              _fromOnmLev :: NmLev
              _fromOopts :: EHCOpts
              _fromOpatchEhNmInInstance :: PatchEhNmInInstance
              _fromOpragmas :: (Set.Set Pragma.Pragma)
              _fromOtopInstanceNmL :: ([HsName])
              _thenOcaseId :: UID
              _thenOfixityGam :: FixityGam
              _thenOgUniq :: UID
              _thenOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _thenOidGam :: IdDefOccGam
              _thenOmoduleNm :: HsName
              _thenOnmLev :: NmLev
              _thenOopts :: EHCOpts
              _thenOpatchEhNmInInstance :: PatchEhNmInInstance
              _thenOpragmas :: (Set.Set Pragma.Pragma)
              _thenOtopInstanceNmL :: ([HsName])
              _toOcaseId :: UID
              _toOfixityGam :: FixityGam
              _toOgUniq :: UID
              _toOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _toOidGam :: IdDefOccGam
              _toOmoduleNm :: HsName
              _toOnmLev :: NmLev
              _toOopts :: EHCOpts
              _toOpatchEhNmInInstance :: PatchEhNmInInstance
              _toOpragmas :: (Set.Set Pragma.Pragma)
              _toOtopInstanceNmL :: ([HsName])
              _fromIconNm :: Name
              _fromIeh :: (EH.Expr)
              _fromIerrSq :: ErrSq
              _fromIgUniq :: UID
              _fromIidUseOccGam :: IdUseOccGam
              _fromIopChain :: (OpChain EH.Expr)
              _fromIoperatorName :: MaybeName
              _fromIpp :: PP_Doc
              _fromIppWrap :: (PP_Doc -> PP_Doc)
              _fromItopInstanceNmL :: ([HsName])
              _fromIundefOccGam :: IdUseOccGam
              _thenIeh :: (Maybe EH.Expr)
              _thenIerrSq :: ErrSq
              _thenIgUniq :: UID
              _thenIidUseOccGam :: IdUseOccGam
              _thenIpp :: PP_Doc
              _thenIppMb :: (Maybe PP_Doc)
              _thenIppWrap :: (PP_Doc -> PP_Doc)
              _thenItopInstanceNmL :: ([HsName])
              _thenIundefOccGam :: IdUseOccGam
              _toIeh :: (Maybe EH.Expr)
              _toIerrSq :: ErrSq
              _toIgUniq :: UID
              _toIidUseOccGam :: IdUseOccGam
              _toIpp :: PP_Doc
              _toIppMb :: (Maybe PP_Doc)
              _toIppWrap :: (PP_Doc -> PP_Doc)
              _toItopInstanceNmL :: ([HsName])
              _toIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 504, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [_enumNm] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 506, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_fromIidUseOccGam,_thenIidUseOccGam,_toIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 28, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _fromIerrSq, _thenIerrSq, _toIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 232, column 9)
              _pp =
                  case (_fromIpp,_thenIppMb,_toIppMb) of
                    (fr,Just th,Just to) -> ppBrackets (fr >|< ","  >#< th >#< ".." >#< to)
                    (fr,Just th,Nothing) -> ppBrackets (fr >|< ","  >#< th >#< ".."       )
                    (fr,Nothing,Just to) -> ppBrackets (fr >#< ".." >#< to                )
                    (fr,Nothing,Nothing) -> ppBrackets (fr >#< ".."                       )
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 513, column 9)
              _enumNm =
                  case (_fromIeh,_thenIeh,_toIeh) of
                    (fr,Just th,Just to) -> hsnEnumFromThenTo
                    (fr,Just th,Nothing) -> hsnEnumFromThen
                    (fr,Nothing,Just to) -> hsnEnumFromTo
                    (fr,Nothing,Nothing) -> hsnEnumFrom
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 513, column 9)
              _eh =
                  case (_fromIeh,_thenIeh,_toIeh) of
                    (fr,Just th,Just to) -> ehExpVarApp range_ _refname [fr,th,to]
                    (fr,Just th,Nothing) -> ehExpVarApp range_ _refname [fr,th   ]
                    (fr,Nothing,Just to) -> ehExpVarApp range_ _refname [fr   ,to]
                    (fr,Nothing,Nothing) -> ehExpVarApp range_ _refname [fr      ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _fromIppWrap . _thenIppWrap . _toIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _fromIundefOccGam `gamUnion` _thenIundefOccGam `gamUnion` _toIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _toIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _toItopInstanceNmL
              -- copy rule (down)
              _fromOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _fromOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _fromOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _fromOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _fromOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _fromOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _fromOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _fromOopts =
                  _lhsIopts
              -- copy rule (down)
              _fromOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _fromOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _fromOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _thenOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _thenOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _thenOgUniq =
                  _fromIgUniq
              -- copy rule (down)
              _thenOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _thenOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _thenOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _thenOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _thenOopts =
                  _lhsIopts
              -- copy rule (down)
              _thenOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _thenOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _thenOtopInstanceNmL =
                  _fromItopInstanceNmL
              -- copy rule (down)
              _toOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _toOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _toOgUniq =
                  _thenIgUniq
              -- copy rule (down)
              _toOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _toOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _toOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _toOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _toOopts =
                  _lhsIopts
              -- copy rule (down)
              _toOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _toOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _toOtopInstanceNmL =
                  _thenItopInstanceNmL
              ( _fromIconNm,_fromIeh,_fromIerrSq,_fromIgUniq,_fromIidUseOccGam,_fromIopChain,_fromIoperatorName,_fromIpp,_fromIppWrap,_fromItopInstanceNmL,_fromIundefOccGam) =
                  from_ _fromOcaseId _fromOfixityGam _fromOgUniq _fromOgenerDerivMp _fromOidGam _fromOmoduleNm _fromOnmLev _fromOopts _fromOpatchEhNmInInstance _fromOpragmas _fromOtopInstanceNmL
              ( _thenIeh,_thenIerrSq,_thenIgUniq,_thenIidUseOccGam,_thenIpp,_thenIppMb,_thenIppWrap,_thenItopInstanceNmL,_thenIundefOccGam) =
                  then_ _thenOcaseId _thenOfixityGam _thenOgUniq _thenOgenerDerivMp _thenOidGam _thenOmoduleNm _thenOnmLev _thenOopts _thenOpatchEhNmInInstance _thenOpragmas _thenOtopInstanceNmL
              ( _toIeh,_toIerrSq,_toIgUniq,_toIidUseOccGam,_toIpp,_toIppMb,_toIppWrap,_toItopInstanceNmL,_toIundefOccGam) =
                  to_ _toOcaseId _toOfixityGam _toOgUniq _toOgenerDerivMp _toOidGam _toOmoduleNm _toOnmLev _toOopts _toOpatchEhNmInInstance _toOpragmas _toOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Comprehension :: Range ->
                                T_Expression ->
                                T_Qualifiers ->
                                T_Expression
sem_Expression_Comprehension range_ expression_ qualifiers_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _expressionOidGam :: IdDefOccGam
              _qualifiersOidGam :: IdDefOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _qualifiersOcaseId :: UID
              _qualifiersOfixityGam :: FixityGam
              _qualifiersOgUniq :: UID
              _qualifiersOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _qualifiersOmoduleNm :: HsName
              _qualifiersOnmLev :: NmLev
              _qualifiersOopts :: EHCOpts
              _qualifiersOpatchEhNmInInstance :: PatchEhNmInInstance
              _qualifiersOpragmas :: (Set.Set Pragma.Pragma)
              _qualifiersOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              _qualifiersIeh :: ([EH.Expr -> EH.Expr])
              _qualifiersIerrSq :: ErrSq
              _qualifiersIgUniq :: UID
              _qualifiersIidGam :: IdDefOccGam
              _qualifiersIidUseOccGam :: IdUseOccGam
              _qualifiersIpp :: PP_Doc
              _qualifiersIppL :: ([PP_Doc])
              _qualifiersIppWrap :: (PP_Doc -> PP_Doc)
              _qualifiersItopInstanceNmL :: ([HsName])
              _qualifiersIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 348, column 9)
              _expressionOidGam =
                  _qualifiersIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 349, column 9)
              _qualifiersOidGam =
                  _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 238, column 9)
              _pp =
                  ppBrackets (_expressionIpp >#< "|" >#< ppCommas' _qualifiersIppL)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 524, column 9)
              _eh =
                  foldr ($) _expressionIeh _qualifiersIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq `Seq.union` _qualifiersIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam `gamAddGam` _qualifiersIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap . _qualifiersIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam `gamUnion` _qualifiersIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _qualifiersIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _qualifiersItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _qualifiersOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _qualifiersOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _qualifiersOgUniq =
                  _expressionIgUniq
              -- copy rule (down)
              _qualifiersOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _qualifiersOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _qualifiersOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _qualifiersOopts =
                  _lhsIopts
              -- copy rule (down)
              _qualifiersOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _qualifiersOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _qualifiersOtopInstanceNmL =
                  _expressionItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
              ( _qualifiersIeh,_qualifiersIerrSq,_qualifiersIgUniq,_qualifiersIidGam,_qualifiersIidUseOccGam,_qualifiersIpp,_qualifiersIppL,_qualifiersIppWrap,_qualifiersItopInstanceNmL,_qualifiersIundefOccGam) =
                  qualifiers_ _qualifiersOcaseId _qualifiersOfixityGam _qualifiersOgUniq _qualifiersOgenerDerivMp _qualifiersOidGam _qualifiersOmoduleNm _qualifiersOnmLev _qualifiersOopts _qualifiersOpatchEhNmInInstance _qualifiersOpragmas _qualifiersOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_RecordConstruction :: Range ->
                                     Name ->
                                     T_RecordExpressionBindings ->
                                     T_Expression
sem_Expression_RecordConstruction range_ name_ recordExpressionBindings_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _recordExpressionBindingsOcaseId :: UID
              _recordExpressionBindingsOfixityGam :: FixityGam
              _recordExpressionBindingsOgUniq :: UID
              _recordExpressionBindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _recordExpressionBindingsOidGam :: IdDefOccGam
              _recordExpressionBindingsOmoduleNm :: HsName
              _recordExpressionBindingsOnmLev :: NmLev
              _recordExpressionBindingsOopts :: EHCOpts
              _recordExpressionBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
              _recordExpressionBindingsOpragmas :: (Set.Set Pragma.Pragma)
              _recordExpressionBindingsOtopInstanceNmL :: ([HsName])
              _recordExpressionBindingsIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
              _recordExpressionBindingsIerrSq :: ErrSq
              _recordExpressionBindingsIgUniq :: UID
              _recordExpressionBindingsIidUseOccGam :: IdUseOccGam
              _recordExpressionBindingsIpp :: PP_Doc
              _recordExpressionBindingsIppL :: ([PP_Doc])
              _recordExpressionBindingsIppWrap :: (PP_Doc -> PP_Doc)
              _recordExpressionBindingsItopInstanceNmL :: ([HsName])
              _recordExpressionBindingsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 483, column 9)
              _idAsp =
                  IdAsp_Val_Con
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 486, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  let x@(n,_,_,_) = mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Val _idAsp range_
                      dbgnm = mkHNm "putStrLn"
                      dbgoc = IdOcc dbgnm IdOcc_Val
                  in
                              x
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 494, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_recordExpressionBindingsIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 32, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _recordExpressionBindingsIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 240, column 9)
              _pp =
                  name_ >#< ppCurlysCommas' _recordExpressionBindingsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 526, column 9)
              _eh =
                  rngLift range_ EH.Expr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldExpr_Con _refname) _recordExpressionBindingsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _recordExpressionBindingsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _recordExpressionBindingsIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _recordExpressionBindingsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _recordExpressionBindingsItopInstanceNmL
              -- copy rule (down)
              _recordExpressionBindingsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _recordExpressionBindingsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _recordExpressionBindingsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _recordExpressionBindingsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _recordExpressionBindingsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _recordExpressionBindingsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _recordExpressionBindingsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _recordExpressionBindingsOopts =
                  _lhsIopts
              -- copy rule (down)
              _recordExpressionBindingsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _recordExpressionBindingsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _recordExpressionBindingsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _recordExpressionBindingsIeh,_recordExpressionBindingsIerrSq,_recordExpressionBindingsIgUniq,_recordExpressionBindingsIidUseOccGam,_recordExpressionBindingsIpp,_recordExpressionBindingsIppL,_recordExpressionBindingsIppWrap,_recordExpressionBindingsItopInstanceNmL,_recordExpressionBindingsIundefOccGam) =
                  recordExpressionBindings_ _recordExpressionBindingsOcaseId _recordExpressionBindingsOfixityGam _recordExpressionBindingsOgUniq _recordExpressionBindingsOgenerDerivMp _recordExpressionBindingsOidGam _recordExpressionBindingsOmoduleNm _recordExpressionBindingsOnmLev _recordExpressionBindingsOopts _recordExpressionBindingsOpatchEhNmInInstance _recordExpressionBindingsOpragmas _recordExpressionBindingsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_RecordUpdate :: Range ->
                               T_Expression ->
                               T_RecordExpressionBindings ->
                               T_Expression
sem_Expression_RecordUpdate range_ expression_ recordExpressionBindings_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _recordExpressionBindingsOcaseId :: UID
              _recordExpressionBindingsOfixityGam :: FixityGam
              _recordExpressionBindingsOgUniq :: UID
              _recordExpressionBindingsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _recordExpressionBindingsOidGam :: IdDefOccGam
              _recordExpressionBindingsOmoduleNm :: HsName
              _recordExpressionBindingsOnmLev :: NmLev
              _recordExpressionBindingsOopts :: EHCOpts
              _recordExpressionBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
              _recordExpressionBindingsOpragmas :: (Set.Set Pragma.Pragma)
              _recordExpressionBindingsOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              _recordExpressionBindingsIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
              _recordExpressionBindingsIerrSq :: ErrSq
              _recordExpressionBindingsIgUniq :: UID
              _recordExpressionBindingsIidUseOccGam :: IdUseOccGam
              _recordExpressionBindingsIpp :: PP_Doc
              _recordExpressionBindingsIppL :: ([PP_Doc])
              _recordExpressionBindingsIppWrap :: (PP_Doc -> PP_Doc)
              _recordExpressionBindingsItopInstanceNmL :: ([HsName])
              _recordExpressionBindingsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 242, column 9)
              _pp =
                  _expressionIpp >#< ppCurlysCommas' _recordExpressionBindingsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 528, column 9)
              _eh =
                  case _recordExpressionBindingsIeh of
                    b@(_:_) -> rngLift range_ EH.Expr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldExpr_Expr _expressionIeh) b
                    _       -> _expressionIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq `Seq.union` _recordExpressionBindingsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam `gamAddGam` _recordExpressionBindingsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap . _recordExpressionBindingsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam `gamUnion` _recordExpressionBindingsIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _recordExpressionBindingsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _recordExpressionBindingsItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _recordExpressionBindingsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _recordExpressionBindingsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _recordExpressionBindingsOgUniq =
                  _expressionIgUniq
              -- copy rule (down)
              _recordExpressionBindingsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _recordExpressionBindingsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _recordExpressionBindingsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _recordExpressionBindingsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _recordExpressionBindingsOopts =
                  _lhsIopts
              -- copy rule (down)
              _recordExpressionBindingsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _recordExpressionBindingsOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _recordExpressionBindingsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
              ( _recordExpressionBindingsIeh,_recordExpressionBindingsIerrSq,_recordExpressionBindingsIgUniq,_recordExpressionBindingsIidUseOccGam,_recordExpressionBindingsIpp,_recordExpressionBindingsIppL,_recordExpressionBindingsIppWrap,_recordExpressionBindingsItopInstanceNmL,_recordExpressionBindingsIundefOccGam) =
                  recordExpressionBindings_ _recordExpressionBindingsOcaseId _recordExpressionBindingsOfixityGam _recordExpressionBindingsOgUniq _recordExpressionBindingsOgenerDerivMp _recordExpressionBindingsOidGam _recordExpressionBindingsOmoduleNm _recordExpressionBindingsOnmLev _recordExpressionBindingsOopts _recordExpressionBindingsOpatchEhNmInInstance _recordExpressionBindingsOpragmas _recordExpressionBindingsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_RowRecordUpdate :: Range ->
                                  T_Expression ->
                                  T_RowRecordExpressionUpdates ->
                                  T_Expression
sem_Expression_RowRecordUpdate range_ expression_ rowRecordExpressionUpdates_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _rowRecordExpressionUpdatesOcaseId :: UID
              _rowRecordExpressionUpdatesOfixityGam :: FixityGam
              _rowRecordExpressionUpdatesOgUniq :: UID
              _rowRecordExpressionUpdatesOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _rowRecordExpressionUpdatesOidGam :: IdDefOccGam
              _rowRecordExpressionUpdatesOmoduleNm :: HsName
              _rowRecordExpressionUpdatesOnmLev :: NmLev
              _rowRecordExpressionUpdatesOopts :: EHCOpts
              _rowRecordExpressionUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
              _rowRecordExpressionUpdatesOpragmas :: (Set.Set Pragma.Pragma)
              _rowRecordExpressionUpdatesOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              _rowRecordExpressionUpdatesIeh :: ([EH.Expr -> EH.Expr])
              _rowRecordExpressionUpdatesIerrSq :: ErrSq
              _rowRecordExpressionUpdatesIgUniq :: UID
              _rowRecordExpressionUpdatesIidUseOccGam :: IdUseOccGam
              _rowRecordExpressionUpdatesIpp :: PP_Doc
              _rowRecordExpressionUpdatesIppL :: ([PP_Doc])
              _rowRecordExpressionUpdatesIppWrap :: (PP_Doc -> PP_Doc)
              _rowRecordExpressionUpdatesItopInstanceNmL :: ([HsName])
              _rowRecordExpressionUpdatesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 244, column 9)
              _pp =
                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _expressionIpp)
                            _rowRecordExpressionUpdatesIppL _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 532, column 9)
              _eh =
                  foldl (flip ($)) _expressionIeh _rowRecordExpressionUpdatesIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq `Seq.union` _rowRecordExpressionUpdatesIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam `gamAddGam` _rowRecordExpressionUpdatesIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap . _rowRecordExpressionUpdatesIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam `gamUnion` _rowRecordExpressionUpdatesIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _rowRecordExpressionUpdatesIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rowRecordExpressionUpdatesItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _rowRecordExpressionUpdatesOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _rowRecordExpressionUpdatesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rowRecordExpressionUpdatesOgUniq =
                  _expressionIgUniq
              -- copy rule (down)
              _rowRecordExpressionUpdatesOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _rowRecordExpressionUpdatesOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rowRecordExpressionUpdatesOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _rowRecordExpressionUpdatesOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rowRecordExpressionUpdatesOopts =
                  _lhsIopts
              -- copy rule (down)
              _rowRecordExpressionUpdatesOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _rowRecordExpressionUpdatesOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _rowRecordExpressionUpdatesOtopInstanceNmL =
                  _expressionItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
              ( _rowRecordExpressionUpdatesIeh,_rowRecordExpressionUpdatesIerrSq,_rowRecordExpressionUpdatesIgUniq,_rowRecordExpressionUpdatesIidUseOccGam,_rowRecordExpressionUpdatesIpp,_rowRecordExpressionUpdatesIppL,_rowRecordExpressionUpdatesIppWrap,_rowRecordExpressionUpdatesItopInstanceNmL,_rowRecordExpressionUpdatesIundefOccGam) =
                  rowRecordExpressionUpdates_ _rowRecordExpressionUpdatesOcaseId _rowRecordExpressionUpdatesOfixityGam _rowRecordExpressionUpdatesOgUniq _rowRecordExpressionUpdatesOgenerDerivMp _rowRecordExpressionUpdatesOidGam _rowRecordExpressionUpdatesOmoduleNm _rowRecordExpressionUpdatesOnmLev _rowRecordExpressionUpdatesOopts _rowRecordExpressionUpdatesOpatchEhNmInInstance _rowRecordExpressionUpdatesOpragmas _rowRecordExpressionUpdatesOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_RowRecordEmpty :: Range ->
                                 T_Expression
sem_Expression_RowRecordEmpty range_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 247, column 9)
              _pp =
                  hsnORec >|< hsnCRec
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 534, column 9)
              _eh =
                  rngLift range_ EH.Expr_Rec (rngLift range_ EH.RecExpr_Empty)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_RowRecordSelect :: Range ->
                                  T_Expression ->
                                  Name ->
                                  T_Expression
sem_Expression_RowRecordSelect range_ expression_ name_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 249, column 9)
              _pp =
                  _expressionIpp >|< "->" >|< name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 536, column 9)
              _eh =
                  rngLift range_ EH.Expr_Sel _expressionIeh name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_Do :: Range ->
                     T_Statements ->
                     T_Expression
sem_Expression_Do range_ statements_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _statementsOcaseId :: UID
              _statementsOfixityGam :: FixityGam
              _statementsOgUniq :: UID
              _statementsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _statementsOidGam :: IdDefOccGam
              _statementsOmoduleNm :: HsName
              _statementsOnmLev :: NmLev
              _statementsOopts :: EHCOpts
              _statementsOpatchEhNmInInstance :: PatchEhNmInInstance
              _statementsOpragmas :: (Set.Set Pragma.Pragma)
              _statementsOtopInstanceNmL :: ([HsName])
              _statementsIeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
              _statementsIerrSq :: ErrSq
              _statementsIgUniq :: UID
              _statementsIidUseOccGam :: IdUseOccGam
              _statementsIpp :: PP_Doc
              _statementsIppL :: ([PP_Doc])
              _statementsIppWrap :: (PP_Doc -> PP_Doc)
              _statementsItopInstanceNmL :: ([HsName])
              _statementsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 251, column 9)
              _pp =
                  "do" >#< vlist _statementsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 538, column 25)
              (_eh,_) =
                  foldr1 (\(_,s) (e,_) -> (s e,undefined)) _statementsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _statementsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _statementsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _statementsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _statementsIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _statementsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _statementsItopInstanceNmL
              -- copy rule (down)
              _statementsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _statementsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _statementsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _statementsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _statementsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _statementsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _statementsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _statementsOopts =
                  _lhsIopts
              -- copy rule (down)
              _statementsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _statementsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _statementsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _statementsIeh,_statementsIerrSq,_statementsIgUniq,_statementsIidUseOccGam,_statementsIpp,_statementsIppL,_statementsIppWrap,_statementsItopInstanceNmL,_statementsIundefOccGam) =
                  statements_ _statementsOcaseId _statementsOfixityGam _statementsOgUniq _statementsOgenerDerivMp _statementsOidGam _statementsOmoduleNm _statementsOnmLev _statementsOopts _statementsOpatchEhNmInInstance _statementsOpragmas _statementsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_ImplicitApplication :: Range ->
                                      T_Expression ->
                                      T_ContextedExpressions ->
                                      T_Expression
sem_Expression_ImplicitApplication range_ function_ arguments_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _functionOcaseId :: UID
              _functionOfixityGam :: FixityGam
              _functionOgUniq :: UID
              _functionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _functionOidGam :: IdDefOccGam
              _functionOmoduleNm :: HsName
              _functionOnmLev :: NmLev
              _functionOopts :: EHCOpts
              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
              _functionOpragmas :: (Set.Set Pragma.Pragma)
              _functionOtopInstanceNmL :: ([HsName])
              _argumentsOcaseId :: UID
              _argumentsOfixityGam :: FixityGam
              _argumentsOgUniq :: UID
              _argumentsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _argumentsOidGam :: IdDefOccGam
              _argumentsOmoduleNm :: HsName
              _argumentsOnmLev :: NmLev
              _argumentsOopts :: EHCOpts
              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
              _argumentsOpragmas :: (Set.Set Pragma.Pragma)
              _argumentsOtopInstanceNmL :: ([HsName])
              _functionIconNm :: Name
              _functionIeh :: (EH.Expr)
              _functionIerrSq :: ErrSq
              _functionIgUniq :: UID
              _functionIidUseOccGam :: IdUseOccGam
              _functionIopChain :: (OpChain EH.Expr)
              _functionIoperatorName :: MaybeName
              _functionIpp :: PP_Doc
              _functionIppWrap :: (PP_Doc -> PP_Doc)
              _functionItopInstanceNmL :: ([HsName])
              _functionIundefOccGam :: IdUseOccGam
              _argumentsIeh :: ([(EH.Expr,EH.PrExpr)])
              _argumentsIerrSq :: ErrSq
              _argumentsIgUniq :: UID
              _argumentsIidUseOccGam :: IdUseOccGam
              _argumentsIpp :: PP_Doc
              _argumentsIppL :: ([PP_Doc])
              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
              _argumentsItopInstanceNmL :: ([HsName])
              _argumentsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 253, column 9)
              _pp =
                  _functionIpp >#< ppListSep hsnOImpl hsnCImpl ", " _argumentsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 540, column 9)
              _eh =
                  ehExpApp' (\f (e,p) -> rngLift range_ EH.Expr_AppImpl f p e) range_ _functionIeh _argumentsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _functionIerrSq `Seq.union` _argumentsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _functionIppWrap . _argumentsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _argumentsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _argumentsItopInstanceNmL
              -- copy rule (down)
              _functionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _functionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _functionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _functionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _functionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _functionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _functionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _functionOopts =
                  _lhsIopts
              -- copy rule (down)
              _functionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _functionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _functionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _argumentsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _argumentsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _argumentsOgUniq =
                  _functionIgUniq
              -- copy rule (down)
              _argumentsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _argumentsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _argumentsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _argumentsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _argumentsOopts =
                  _lhsIopts
              -- copy rule (down)
              _argumentsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _argumentsOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _argumentsOtopInstanceNmL =
                  _functionItopInstanceNmL
              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIgUniq,_functionIidUseOccGam,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionIundefOccGam) =
                  function_ _functionOcaseId _functionOfixityGam _functionOgUniq _functionOgenerDerivMp _functionOidGam _functionOmoduleNm _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOpragmas _functionOtopInstanceNmL
              ( _argumentsIeh,_argumentsIerrSq,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
                  arguments_ _argumentsOcaseId _argumentsOfixityGam _argumentsOgUniq _argumentsOgenerDerivMp _argumentsOidGam _argumentsOmoduleNm _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOpragmas _argumentsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expression_ImplicitLambda :: Range ->
                                 T_ContextedPatterns ->
                                 T_Expression ->
                                 T_Expression
sem_Expression_ImplicitLambda range_ patterns_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _expressionOidGam :: IdDefOccGam
              _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternsOfixityGam :: FixityGam
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _patternsIeh :: ([(EH.PatExpr,EH.PrExpr)])
              _patternsIerrSq :: ErrSq
              _patternsIfreeTvarS :: HsNameS
              _patternsIgUniq :: UID
              _patternsIidDefOccGam :: IdDefOccGam
              _patternsIidOccDefs :: ([IdOcc])
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsIundefOccGam :: IdUseOccGam
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 237, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _lhsInmLev range_ _patternsIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 351, column 9)
              _idGam =
                  gamUnions [_idDefOccGamType, _lhsIidGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 352, column 9)
              _expressionOidGam =
                  gamUnions [_patternsIidDefOccGam, _idGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 265, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 104, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _patternsIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 20, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, _patternsIerrSq, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 255, column 9)
              _pp =
                  "\\" >|< ppListSep hsnOImpl hsnCImpl ", " _patternsIppL >#< "->" >#< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 102, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 542, column 9)
              _eh =
                  foldr (\(p,c) e -> rngLift range_ EH.Expr_LamImpl c p e) _expressionIeh _patternsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternsIidUseOccGam `gamAddGam` _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternsIppWrap . _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternsIundefOccGam `gamUnion` _expressionIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _patternsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternsOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _patternsOidGam =
                  _idGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _expressionOgUniq =
                  _patternsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _expressionOtopInstanceNmL =
                  _patternsItopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIfreeTvarS,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ExpressionAnnotation ----------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.ExprAnn
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Empty:
         visit 0:
            local eh          : _
-}
-- cata
sem_ExpressionAnnotation :: ExpressionAnnotation ->
                            T_ExpressionAnnotation
sem_ExpressionAnnotation (ExpressionAnnotation_Empty) =
    (sem_ExpressionAnnotation_Empty)
-- semantic domain
type T_ExpressionAnnotation = UID ->
                              FixityGam ->
                              UID ->
                              (Map.Map HsName [(HsName,HsName)]) ->
                              IdDefOccGam ->
                              HsName ->
                              NmLev ->
                              EHCOpts ->
                              PatchEhNmInInstance ->
                              (Set.Set Pragma.Pragma) ->
                              ([HsName]) ->
                              ( (EH.ExprAnn),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ExpressionAnnotation_Empty :: T_ExpressionAnnotation
sem_ExpressionAnnotation_Empty =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.ExprAnn)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 908, column 17)
              _eh =
                  EH.ExprAnn_Empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Expressions -------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.Expr]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Expression 
         child tl             : Expressions 
      alternative Nil:
-}
-- cata
sem_Expressions :: Expressions ->
                   T_Expressions
sem_Expressions list =
    (Prelude.foldr sem_Expressions_Cons sem_Expressions_Nil (Prelude.map sem_Expression list))
-- semantic domain
type T_Expressions = UID ->
                     FixityGam ->
                     UID ->
                     (Map.Map HsName [(HsName,HsName)]) ->
                     IdDefOccGam ->
                     HsName ->
                     NmLev ->
                     EHCOpts ->
                     PatchEhNmInInstance ->
                     (Set.Set Pragma.Pragma) ->
                     ([HsName]) ->
                     ( ([EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Expressions_Cons :: T_Expression ->
                        T_Expressions ->
                        T_Expressions
sem_Expressions_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.Expr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIconNm :: Name
              _hdIeh :: (EH.Expr)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIopChain :: (OpChain EH.Expr)
              _hdIoperatorName :: MaybeName
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.Expr])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 420, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 454, column 27)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIconNm,_hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIopChain,_hdIoperatorName,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Expressions_Nil :: T_Expressions
sem_Expressions_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.Expr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 422, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 454, column 27)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- FieldDeclaration --------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.DataField
         errSq                : ErrSq
         fldrefnames          : Names
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative FieldDeclaration:
         child range          : {Range}
         child names          : {Names}
         child type           : Type 
         visit 0:
            local fldrefnames : _
            local nmLev       : _
            local pp          : _
            local isAsPred    : _
            local doGenVarWild : _
-}
-- cata
sem_FieldDeclaration :: FieldDeclaration ->
                        T_FieldDeclaration
sem_FieldDeclaration (FieldDeclaration_FieldDeclaration _range _names _type) =
    (sem_FieldDeclaration_FieldDeclaration _range _names (sem_Type _type))
-- semantic domain
type T_FieldDeclaration = FixityGam ->
                          UID ->
                          IdDefOccGam ->
                          HsName ->
                          NmLev ->
                          EHCOpts ->
                          PatchEhNmInInstance ->
                          ([HsName]) ->
                          ( (EH.DataField),ErrSq,Names,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_FieldDeclaration_FieldDeclaration :: Range ->
                                         Names ->
                                         T_Type ->
                                         T_FieldDeclaration
sem_FieldDeclaration_FieldDeclaration range_ names_ type_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.DataField)
              _lhsOerrSq :: ErrSq
              _lhsOfldrefnames :: Names
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 83, column 9)
              _fldrefnames =
                  map (hsnSetLevQual _lhsInmLev _lhsImoduleNm) names_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 42, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 190, column 9)
              _pp =
                  ppCommas' names_ >#< "::" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 340, column 9)
              _lhsOeh =
                  rngLift range_ EH.DataField_Field (Just _fldrefnames) _typeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 178, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 231, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
              _lhsOfldrefnames =
                  _fldrefnames
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typeOnmLev =
                  _nmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- FieldDeclarations -------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.DataField]
         errSq                : ErrSq
         fldrefnames          : Names
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : FieldDeclaration 
         child tl             : FieldDeclarations 
      alternative Nil:
-}
-- cata
sem_FieldDeclarations :: FieldDeclarations ->
                         T_FieldDeclarations
sem_FieldDeclarations list =
    (Prelude.foldr sem_FieldDeclarations_Cons sem_FieldDeclarations_Nil (Prelude.map sem_FieldDeclaration list))
-- semantic domain
type T_FieldDeclarations = FixityGam ->
                           UID ->
                           IdDefOccGam ->
                           HsName ->
                           NmLev ->
                           EHCOpts ->
                           PatchEhNmInInstance ->
                           ([HsName]) ->
                           ( ([EH.DataField]),ErrSq,Names,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_FieldDeclarations_Cons :: T_FieldDeclaration ->
                              T_FieldDeclarations ->
                              T_FieldDeclarations
sem_FieldDeclarations_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.DataField])
              _lhsOerrSq :: ErrSq
              _lhsOfldrefnames :: Names
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.DataField)
              _hdIerrSq :: ErrSq
              _hdIfldrefnames :: Names
              _hdIfreeTvarS :: HsNameS
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.DataField])
              _tlIerrSq :: ErrSq
              _tlIfldrefnames :: Names
              _tlIfreeTvarS :: HsNameS
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 478, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 334, column 33)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
              _lhsOfldrefnames =
                  _hdIfldrefnames ++ _tlIfldrefnames
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIfldrefnames,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIfldrefnames,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_FieldDeclarations_Nil :: T_FieldDeclarations
sem_FieldDeclarations_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.DataField])
              _lhsOerrSq :: ErrSq
              _lhsOfldrefnames :: Names
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 480, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 334, column 33)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 78, column 44)
              _lhsOfldrefnames =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfldrefnames,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- FunctionBinding ---------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.Decl
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative FunctionBinding:
         child range          : {Range}
         child lefthandside   : LeftHandSide 
         child righthandside  : RightHandSide 
         visit 0:
            local idDefOccGam : _
            local idUseOccGam : _
            local idUseHereOccL : _
            local undefOccGam : _
            local idDpdMp     : _
            local idOccDef    : _
            local idOccDefs   : _
            local nmLev       : _
            local nmLevFun    : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
            local caseId      : _
            local lUniq       : {UID}
-}
-- cata
sem_FunctionBinding :: FunctionBinding ->
                       T_FunctionBinding
sem_FunctionBinding (FunctionBinding_FunctionBinding _range _lefthandside _righthandside) =
    (sem_FunctionBinding_FunctionBinding _range (sem_LeftHandSide _lefthandside) (sem_RightHandSide _righthandside))
-- semantic domain
type T_FunctionBinding = UID ->
                         FixityGam ->
                         UID ->
                         (Map.Map HsName [(HsName,HsName)]) ->
                         IdDefOccGam ->
                         HsName ->
                         NmLev ->
                         EHCOpts ->
                         PatchEhNmInInstance ->
                         (Set.Set Pragma.Pragma) ->
                         ([HsName]) ->
                         ( (EH.Decl),ErrSq,UID,IdDefOccGam,IdDpdMp,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_FunctionBinding_FunctionBinding :: Range ->
                                       T_LeftHandSide ->
                                       T_RightHandSide ->
                                       T_FunctionBinding
sem_FunctionBinding_FunctionBinding range_ lefthandside_ righthandside_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _righthandsideOidGam :: IdDefOccGam
              _lhsOundefOccGam :: IdUseOccGam
              _righthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _righthandsideOsepPP :: PP_Doc
              _lhsOeh :: (EH.Decl)
              _righthandsideOmustBeMono :: Bool
              _lefthandsideOgUniq :: UID
              _lUniq :: UID
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _lefthandsideOcaseId :: UID
              _lefthandsideOfixityGam :: FixityGam
              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _lefthandsideOidGam :: IdDefOccGam
              _lefthandsideOmoduleNm :: HsName
              _lefthandsideOnmLev :: NmLev
              _lefthandsideOnmLevFun :: NmLev
              _lefthandsideOopts :: EHCOpts
              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
              _lefthandsideOtopInstanceNmL :: ([HsName])
              _righthandsideOcaseId :: UID
              _righthandsideOfixityGam :: FixityGam
              _righthandsideOgUniq :: UID
              _righthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _righthandsideOmoduleNm :: HsName
              _righthandsideOnmLev :: NmLev
              _righthandsideOopts :: EHCOpts
              _righthandsideOpragmas :: (Set.Set Pragma.Pragma)
              _righthandsideOtopInstanceNmL :: ([HsName])
              _lefthandsideIeh :: ([EH.PatExpr])
              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
              _lefthandsideIerrSq :: ErrSq
              _lefthandsideIgUniq :: UID
              _lefthandsideIidDefOccGam :: IdDefOccGam
              _lefthandsideIidOccDefs :: ([IdOcc])
              _lefthandsideIidUseOccGam :: IdUseOccGam
              _lefthandsideIpp :: PP_Doc
              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _lefthandsideIrefname :: HsName
              _lefthandsideItopInstanceNmL :: ([HsName])
              _lefthandsideIundefOccGam :: IdUseOccGam
              _righthandsideIeh :: (EH.Expr)
              _righthandsideIerrSq :: ErrSq
              _righthandsideIgUniq :: UID
              _righthandsideIidUseOccGam :: IdUseOccGam
              _righthandsideIpp :: PP_Doc
              _righthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _righthandsideItopInstanceNmL :: ([HsName])
              _righthandsideIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 207, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_
                    (IdAsp_Val_Fun _lefthandsideIeh
                                   (_lefthandsideIehTyMk _righthandsideIeh)
                                   _lUniq)
                    _idOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 383, column 9)
              _righthandsideOidGam =
                  gamUnion _lefthandsideIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 733, column 29)
              (_idUseOccGam,_idUseHereOccL,_,_undefOccGam) =
                  splitIdUseOccGam _lhsInmLev
                       (gamUnions [_lefthandsideIidUseOccGam,_righthandsideIidUseOccGam])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 733, column 9)
              _idDpdMp =
                  idToOccL2DpdMp [_idOccDef] _idUseHereOccL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 737, column 9)
              _lhsOundefOccGam =
                  gamUnions [_undefOccGam,_lefthandsideIundefOccGam,_righthandsideIundefOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1082, column 9)
              _righthandsideOpatchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 169, column 9)
              _idOccDef =
                  IdOcc _lefthandsideIrefname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 169, column 9)
              _idOccDefs =
                  [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 64, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 64, column 9)
              _nmLevFun =
                  _lhsInmLev
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 108, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _lefthandsideIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 40, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, _lefthandsideIerrSq, _righthandsideIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 311, column 9)
              _pp =
                  _lefthandsideIpp >#< _righthandsideIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 312, column 9)
              _righthandsideOsepPP =
                  pp "="
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 718, column 9)
              _lhsOeh =
                  let (h,t) = hdAndTl _lefthandsideIeh
                  in  rngLift range_ EH.Decl_Val h
                        (foldr (rngLift range_ EH.Expr_Lam)
                               (_lefthandsideIehTyMk _righthandsideIeh)
                               t)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 873, column 9)
              _caseId =
                  _lUniq
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 274, column 9)
              _righthandsideOmustBeMono =
                  False
              -- -- generated by the unique rule mechanism.
              (_lefthandsideOgUniq,_lUniq) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _idDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _lefthandsideIppWrap . _righthandsideIppWrap
              -- copy rule (up)
              _lhsOgUniq =
                  _righthandsideIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _righthandsideItopInstanceNmL
              -- copy rule (from local)
              _lefthandsideOcaseId =
                  _caseId
              -- copy rule (down)
              _lefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _lefthandsideOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _lefthandsideOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _lefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _lefthandsideOnmLev =
                  _nmLev
              -- copy rule (from local)
              _lefthandsideOnmLevFun =
                  _nmLevFun
              -- copy rule (down)
              _lefthandsideOopts =
                  _lhsIopts
              -- copy rule (down)
              _lefthandsideOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _lefthandsideOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _lefthandsideOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _righthandsideOcaseId =
                  _caseId
              -- copy rule (down)
              _righthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _righthandsideOgUniq =
                  _lefthandsideIgUniq
              -- copy rule (down)
              _righthandsideOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _righthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _righthandsideOnmLev =
                  _nmLev
              -- copy rule (down)
              _righthandsideOopts =
                  _lhsIopts
              -- copy rule (down)
              _righthandsideOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _righthandsideOtopInstanceNmL =
                  _lefthandsideItopInstanceNmL
              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideIundefOccGam) =
                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL
              ( _righthandsideIeh,_righthandsideIerrSq,_righthandsideIgUniq,_righthandsideIidUseOccGam,_righthandsideIpp,_righthandsideIppWrap,_righthandsideItopInstanceNmL,_righthandsideIundefOccGam) =
                  righthandside_ _righthandsideOcaseId _righthandsideOfixityGam _righthandsideOgUniq _righthandsideOgenerDerivMp _righthandsideOidGam _righthandsideOmoduleNm _righthandsideOmustBeMono _righthandsideOnmLev _righthandsideOopts _righthandsideOpatchEhNmInInstance _righthandsideOpragmas _righthandsideOsepPP _righthandsideOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- FunctionBindings --------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.Decl]
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : FunctionBinding 
         child tl             : FunctionBindings 
      alternative Nil:
-}
-- cata
sem_FunctionBindings :: FunctionBindings ->
                        T_FunctionBindings
sem_FunctionBindings list =
    (Prelude.foldr sem_FunctionBindings_Cons sem_FunctionBindings_Nil (Prelude.map sem_FunctionBinding list))
-- semantic domain
type T_FunctionBindings = UID ->
                          FixityGam ->
                          UID ->
                          (Map.Map HsName [(HsName,HsName)]) ->
                          IdDefOccGam ->
                          HsName ->
                          NmLev ->
                          EHCOpts ->
                          PatchEhNmInInstance ->
                          (Set.Set Pragma.Pragma) ->
                          ([HsName]) ->
                          ( ([EH.Decl]),ErrSq,UID,IdDefOccGam,IdDpdMp,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_FunctionBindings_Cons :: T_FunctionBinding ->
                             T_FunctionBindings ->
                             T_FunctionBindings
sem_FunctionBindings_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.Decl)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidDefOccGam :: IdDefOccGam
              _hdIidDpdMp :: IdDpdMp
              _hdIidOccDefs :: ([IdOcc])
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.Decl])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidDefOccGam :: IdDefOccGam
              _tlIidDpdMp :: IdDpdMp
              _tlIidOccDefs :: ([IdOcc])
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 712, column 32)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _hdIidOccDefs ++ _tlIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_FunctionBindings_Nil :: T_FunctionBindings
sem_FunctionBindings_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 712, column 32)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- FunctionalDependencies --------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.FuncDep]
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         gathPragmas          : Set.Set Pragma.Pragma
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idTySigDefOccGam     : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         needsError           : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : FunctionalDependency 
         child tl             : FunctionalDependencies 
      alternative Nil:
-}
-- cata
sem_FunctionalDependencies :: FunctionalDependencies ->
                              T_FunctionalDependencies
sem_FunctionalDependencies list =
    (Prelude.foldr sem_FunctionalDependencies_Cons sem_FunctionalDependencies_Nil (Prelude.map sem_FunctionalDependency list))
-- semantic domain
type T_FunctionalDependencies = FixityGam ->
                                UID ->
                                (Map.Map HsName [(HsName,HsName)]) ->
                                IdDefOccGam ->
                                HsName ->
                                NmLev ->
                                EHCOpts ->
                                PatchEhNmInInstance ->
                                (Set.Set Pragma.Pragma) ->
                                ([HsName]) ->
                                ( ([EH.FuncDep]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_FunctionalDependencies_Cons :: T_FunctionalDependency ->
                                   T_FunctionalDependencies ->
                                   T_FunctionalDependencies
sem_FunctionalDependencies_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.FuncDep])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.FuncDep)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathFixityGam :: FixityGam
              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
              _hdIidDefOccGam :: IdDefOccGam
              _hdIidDpdMp :: IdDpdMp
              _hdIidOccDefs :: ([IdOcc])
              _hdIidTySigDefOccGam :: IdDefOccGam
              _hdIidUseOccGam :: IdUseOccGam
              _hdIneedsError :: Bool
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.FuncDep])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIgathFixityGam :: FixityGam
              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
              _tlIidDefOccGam :: IdDefOccGam
              _tlIidDpdMp :: IdDpdMp
              _tlIidOccDefs :: ([IdOcc])
              _tlIidTySigDefOccGam :: IdDefOccGam
              _tlIidUseOccGam :: IdUseOccGam
              _tlIneedsError :: Bool
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 150, column 38)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _hdIgathPragmas `Set.union` _tlIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _hdIidDpdMp `idDpdMpUnion` _tlIidDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _hdIidOccDefs ++ _tlIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _hdIidTySigDefOccGam `gamAddGam` _tlIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  _hdIneedsError || _tlIneedsError
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIgathPragmas,_hdIidDefOccGam,_hdIidDpdMp,_hdIidOccDefs,_hdIidTySigDefOccGam,_hdIidUseOccGam,_hdIneedsError,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIgathPragmas,_tlIidDefOccGam,_tlIidDpdMp,_tlIidOccDefs,_tlIidTySigDefOccGam,_tlIidUseOccGam,_tlIneedsError,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_FunctionalDependencies_Nil :: T_FunctionalDependencies
sem_FunctionalDependencies_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.FuncDep])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 150, column 38)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- FunctionalDependency ----------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.FuncDep
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         gathPragmas          : Set.Set Pragma.Pragma
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idTySigDefOccGam     : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         needsError           : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Dependency:
         child range          : {Range}
         child fromtypevariables : {Names}
         child totypevariables : {Names}
         visit 0:
            local pp          : _
-}
-- cata
sem_FunctionalDependency :: FunctionalDependency ->
                            T_FunctionalDependency
sem_FunctionalDependency (FunctionalDependency_Dependency _range _fromtypevariables _totypevariables) =
    (sem_FunctionalDependency_Dependency _range _fromtypevariables _totypevariables)
-- semantic domain
type T_FunctionalDependency = FixityGam ->
                              UID ->
                              (Map.Map HsName [(HsName,HsName)]) ->
                              IdDefOccGam ->
                              HsName ->
                              NmLev ->
                              EHCOpts ->
                              PatchEhNmInInstance ->
                              (Set.Set Pragma.Pragma) ->
                              ([HsName]) ->
                              ( (EH.FuncDep),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_FunctionalDependency_Dependency :: Range ->
                                       Names ->
                                       Names ->
                                       T_FunctionalDependency
sem_FunctionalDependency_Dependency range_ fromtypevariables_ totypevariables_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.FuncDep)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 79, column 9)
              _pp =
                  ppSpaces fromtypevariables_ >#< "->" >#< totypevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 156, column 9)
              _lhsOeh =
                  rngLift range_ EH.FuncDep_Dep
                    (map (rngLift range_ EH.TyVar_Var) fromtypevariables_)
                    (map (rngLift range_ EH.TyVar_Var) totypevariables_)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- GuardedExpression -------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         mustBeMono           : Bool
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
         sepPP                : PP_Doc
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : UIDS -> EH.Expr -> EH.Expr
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative GuardedExpression:
         child range          : {Range}
         child guard          : Expression 
         child expression     : Expression 
         visit 0:
            local valrefnames : _
            local idUseOccGamVal : _
            local errIdUseVal : _
            local typerefname : _
            local idUseOccGamType : _
            local errIdUseType : _
            local idUseOccGam : _
            local errSq       : _
            local pp          : _
-}
-- cata
sem_GuardedExpression :: GuardedExpression ->
                         T_GuardedExpression
sem_GuardedExpression (GuardedExpression_GuardedExpression _range _guard _expression) =
    (sem_GuardedExpression_GuardedExpression _range (sem_Expression _guard) (sem_Expression _expression))
-- semantic domain
type T_GuardedExpression = UID ->
                           FixityGam ->
                           UID ->
                           (Map.Map HsName [(HsName,HsName)]) ->
                           IdDefOccGam ->
                           HsName ->
                           Bool ->
                           NmLev ->
                           EHCOpts ->
                           PatchEhNmInInstance ->
                           (Set.Set Pragma.Pragma) ->
                           PP_Doc ->
                           ([HsName]) ->
                           ( (UIDS -> EH.Expr -> EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_GuardedExpression_GuardedExpression :: Range ->
                                           T_Expression ->
                                           T_Expression ->
                                           T_GuardedExpression
sem_GuardedExpression_GuardedExpression range_ guard_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsImustBeMono
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsIsepPP
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOeh :: (UIDS -> EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _guardOcaseId :: UID
              _guardOfixityGam :: FixityGam
              _guardOgUniq :: UID
              _guardOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _guardOidGam :: IdDefOccGam
              _guardOmoduleNm :: HsName
              _guardOnmLev :: NmLev
              _guardOopts :: EHCOpts
              _guardOpatchEhNmInInstance :: PatchEhNmInInstance
              _guardOpragmas :: (Set.Set Pragma.Pragma)
              _guardOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _guardIconNm :: Name
              _guardIeh :: (EH.Expr)
              _guardIerrSq :: ErrSq
              _guardIgUniq :: UID
              _guardIidUseOccGam :: IdUseOccGam
              _guardIopChain :: (OpChain EH.Expr)
              _guardIoperatorName :: MaybeName
              _guardIpp :: PP_Doc
              _guardIppWrap :: (PP_Doc -> PP_Doc)
              _guardItopInstanceNmL :: ([HsName])
              _guardIundefOccGam :: IdUseOccGam
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 548, column 29)
              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 550, column 29)
              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 548, column 9)
              _idUseOccGam =
                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 553, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_guardIidUseOccGam,_expressionIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 89, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardIerrSq, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 281, column 9)
              _pp =
                  "|" >#< _guardIpp >#< _lhsIsepPP >#< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 634, column 9)
              _lhsOeh =
                  \failS e -> EH.mkIf'' (_typerefname : _valrefnames) range_ _guardIeh (ehMkEnforceMono range_ _lhsImustBeMono _expressionIeh) e Nothing failS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _guardIppWrap . _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _guardIundefOccGam `gamUnion` _expressionIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _guardOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _guardOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _guardOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _guardOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _guardOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _guardOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _guardOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _guardOopts =
                  _lhsIopts
              -- copy rule (down)
              _guardOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _guardOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _guardOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _expressionOgUniq =
                  _guardIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _expressionOtopInstanceNmL =
                  _guardItopInstanceNmL
              ( _guardIconNm,_guardIeh,_guardIerrSq,_guardIgUniq,_guardIidUseOccGam,_guardIopChain,_guardIoperatorName,_guardIpp,_guardIppWrap,_guardItopInstanceNmL,_guardIundefOccGam) =
                  guard_ _guardOcaseId _guardOfixityGam _guardOgUniq _guardOgenerDerivMp _guardOidGam _guardOmoduleNm _guardOnmLev _guardOopts _guardOpatchEhNmInInstance _guardOpragmas _guardOtopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- GuardedExpressions ------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         mustBeMono           : Bool
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
         sepPP                : PP_Doc
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [UIDS -> EH.Expr -> EH.Expr]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : GuardedExpression 
         child tl             : GuardedExpressions 
      alternative Nil:
-}
-- cata
sem_GuardedExpressions :: GuardedExpressions ->
                          T_GuardedExpressions
sem_GuardedExpressions list =
    (Prelude.foldr sem_GuardedExpressions_Cons sem_GuardedExpressions_Nil (Prelude.map sem_GuardedExpression list))
-- semantic domain
type T_GuardedExpressions = UID ->
                            FixityGam ->
                            UID ->
                            (Map.Map HsName [(HsName,HsName)]) ->
                            IdDefOccGam ->
                            HsName ->
                            Bool ->
                            NmLev ->
                            EHCOpts ->
                            PatchEhNmInInstance ->
                            (Set.Set Pragma.Pragma) ->
                            PP_Doc ->
                            ([HsName]) ->
                            ( ([UIDS -> EH.Expr -> EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_GuardedExpressions_Cons :: T_GuardedExpression ->
                               T_GuardedExpressions ->
                               T_GuardedExpressions
sem_GuardedExpressions_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsImustBeMono
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsIsepPP
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([UIDS -> EH.Expr -> EH.Expr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOmustBeMono :: Bool
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOsepPP :: PP_Doc
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOmustBeMono :: Bool
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOsepPP :: PP_Doc
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (UIDS -> EH.Expr -> EH.Expr)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([UIDS -> EH.Expr -> EH.Expr])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 629, column 34)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOmustBeMono =
                  _lhsImustBeMono
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOsepPP =
                  _lhsIsepPP
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOmustBeMono =
                  _lhsImustBeMono
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _tlOsepPP =
                  _lhsIsepPP
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOmustBeMono _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOsepPP _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOmustBeMono _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOsepPP _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_GuardedExpressions_Nil :: T_GuardedExpressions
sem_GuardedExpressions_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsImustBeMono
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsIsepPP
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([UIDS -> EH.Expr -> EH.Expr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 629, column 34)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Import ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Variable:
         child range          : {Range}
         child name           : {Name}
      alternative TypeOrClass:
         child range          : {Range}
         child name           : {Name}
         child names          : {MaybeNames}
      alternative TypeOrClassComplete:
         child range          : {Range}
         child name           : {Name}
-}
-- cata
sem_Import :: Import ->
              T_Import
sem_Import (Import_Variable _range _name) =
    (sem_Import_Variable _range _name)
sem_Import (Import_TypeOrClass _range _name _names) =
    (sem_Import_TypeOrClass _range _name _names)
sem_Import (Import_TypeOrClassComplete _range _name) =
    (sem_Import_TypeOrClassComplete _range _name)
-- semantic domain
type T_Import = FixityGam ->
                UID ->
                IdDefOccGam ->
                Bool ->
                Bool ->
                HsName ->
                NmLev ->
                EHCOpts ->
                PatchEhNmInInstance ->
                ([HsName]) ->
                ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Import_Variable :: Range ->
                       Name ->
                       T_Import
sem_Import_Variable range_ name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Import_TypeOrClass :: Range ->
                          Name ->
                          MaybeNames ->
                          T_Import
sem_Import_TypeOrClass range_ name_ names_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Import_TypeOrClassComplete :: Range ->
                                  Name ->
                                  T_Import
sem_Import_TypeOrClassComplete range_ name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ImportDeclaration -------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         modAsMp              : Map.Map HsName HsName
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Import:
         child range          : {Range}
         child qualified      : {Bool}
         child name           : {Name}
         child asname         : {MaybeName}
         child importspecification : MaybeImportSpecification 
      alternative Empty:
         child range          : {Range}
-}
-- cata
sem_ImportDeclaration :: ImportDeclaration ->
                         T_ImportDeclaration
sem_ImportDeclaration (ImportDeclaration_Import _range _qualified _name _asname _importspecification) =
    (sem_ImportDeclaration_Import _range _qualified _name _asname (sem_MaybeImportSpecification _importspecification))
sem_ImportDeclaration (ImportDeclaration_Empty _range) =
    (sem_ImportDeclaration_Empty _range)
-- semantic domain
type T_ImportDeclaration = FixityGam ->
                           UID ->
                           IdDefOccGam ->
                           Bool ->
                           Bool ->
                           HsName ->
                           NmLev ->
                           EHCOpts ->
                           PatchEhNmInInstance ->
                           ([HsName]) ->
                           ( ErrSq,UID,FixityGam,IdUseOccGam,(Map.Map HsName HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ImportDeclaration_Import :: Range ->
                                Bool ->
                                Name ->
                                MaybeName ->
                                T_MaybeImportSpecification ->
                                T_ImportDeclaration
sem_ImportDeclaration_Import range_ qualified_ name_ asname_ importspecification_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmodAsMp :: (Map.Map HsName HsName)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _importspecificationOfixityGam :: FixityGam
              _importspecificationOgUniq :: UID
              _importspecificationOidGam :: IdDefOccGam
              _importspecificationOisMainMod :: Bool
              _importspecificationOisTopMod :: Bool
              _importspecificationOmoduleNm :: HsName
              _importspecificationOnmLev :: NmLev
              _importspecificationOopts :: EHCOpts
              _importspecificationOpatchEhNmInInstance :: PatchEhNmInInstance
              _importspecificationOtopInstanceNmL :: ([HsName])
              _importspecificationIerrSq :: ErrSq
              _importspecificationIgUniq :: UID
              _importspecificationIgathFixityGam :: FixityGam
              _importspecificationIidUseOccGam :: IdUseOccGam
              _importspecificationIpp :: PP_Doc
              _importspecificationIppWrap :: (PP_Doc -> PP_Doc)
              _importspecificationItopInstanceNmL :: ([HsName])
              _importspecificationIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1048, column 9)
              _lhsOmodAsMp =
                  maybe Map.empty (Map.singleton name_) asname_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _importspecificationIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _importspecificationIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _importspecificationIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _importspecificationIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _importspecificationIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _importspecificationIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _importspecificationIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _importspecificationItopInstanceNmL
              -- copy rule (down)
              _importspecificationOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _importspecificationOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _importspecificationOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _importspecificationOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _importspecificationOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _importspecificationOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _importspecificationOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _importspecificationOopts =
                  _lhsIopts
              -- copy rule (down)
              _importspecificationOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _importspecificationOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _importspecificationIerrSq,_importspecificationIgUniq,_importspecificationIgathFixityGam,_importspecificationIidUseOccGam,_importspecificationIpp,_importspecificationIppWrap,_importspecificationItopInstanceNmL,_importspecificationIundefOccGam) =
                  importspecification_ _importspecificationOfixityGam _importspecificationOgUniq _importspecificationOidGam _importspecificationOisMainMod _importspecificationOisTopMod _importspecificationOmoduleNm _importspecificationOnmLev _importspecificationOopts _importspecificationOpatchEhNmInInstance _importspecificationOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ImportDeclaration_Empty :: Range ->
                               T_ImportDeclaration
sem_ImportDeclaration_Empty range_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmodAsMp :: (Map.Map HsName HsName)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1050, column 9)
              _lhsOmodAsMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ImportDeclarations ------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         modAsMp              : Map.Map HsName HsName
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : ImportDeclaration 
         child tl             : ImportDeclarations 
      alternative Nil:
-}
-- cata
sem_ImportDeclarations :: ImportDeclarations ->
                          T_ImportDeclarations
sem_ImportDeclarations list =
    (Prelude.foldr sem_ImportDeclarations_Cons sem_ImportDeclarations_Nil (Prelude.map sem_ImportDeclaration list))
-- semantic domain
type T_ImportDeclarations = FixityGam ->
                            UID ->
                            IdDefOccGam ->
                            Bool ->
                            Bool ->
                            HsName ->
                            NmLev ->
                            EHCOpts ->
                            PatchEhNmInInstance ->
                            ([HsName]) ->
                            ( ErrSq,UID,FixityGam,IdUseOccGam,(Map.Map HsName HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ImportDeclarations_Cons :: T_ImportDeclaration ->
                               T_ImportDeclarations ->
                               T_ImportDeclarations
sem_ImportDeclarations_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOmodAsMp :: (Map.Map HsName HsName)
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOisMainMod :: Bool
              _hdOisTopMod :: Bool
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOisMainMod :: Bool
              _tlOisTopMod :: Bool
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathFixityGam :: FixityGam
              _hdIidUseOccGam :: IdUseOccGam
              _hdImodAsMp :: (Map.Map HsName HsName)
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIgathFixityGam :: FixityGam
              _tlIidUseOccGam :: IdUseOccGam
              _tlImodAsMp :: (Map.Map HsName HsName)
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1044, column 41)
              _lhsOmodAsMp =
                  _hdImodAsMp `Map.union` _tlImodAsMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _hdOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _tlOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdImodAsMp,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlImodAsMp,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_ImportDeclarations_Nil :: T_ImportDeclarations
sem_ImportDeclarations_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOmodAsMp :: (Map.Map HsName HsName)
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1044, column 41)
              _lhsOmodAsMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOmodAsMp,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- ImportSpecification -----------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Import:
         child range          : {Range}
         child hiding         : {Bool}
         child imports        : Imports 
-}
-- cata
sem_ImportSpecification :: ImportSpecification ->
                           T_ImportSpecification
sem_ImportSpecification (ImportSpecification_Import _range _hiding _imports) =
    (sem_ImportSpecification_Import _range _hiding (sem_Imports _imports))
-- semantic domain
type T_ImportSpecification = FixityGam ->
                             UID ->
                             IdDefOccGam ->
                             Bool ->
                             Bool ->
                             HsName ->
                             NmLev ->
                             EHCOpts ->
                             PatchEhNmInInstance ->
                             ([HsName]) ->
                             ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_ImportSpecification_Import :: Range ->
                                  Bool ->
                                  T_Imports ->
                                  T_ImportSpecification
sem_ImportSpecification_Import range_ hiding_ imports_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _importsOfixityGam :: FixityGam
              _importsOgUniq :: UID
              _importsOidGam :: IdDefOccGam
              _importsOisMainMod :: Bool
              _importsOisTopMod :: Bool
              _importsOmoduleNm :: HsName
              _importsOnmLev :: NmLev
              _importsOopts :: EHCOpts
              _importsOpatchEhNmInInstance :: PatchEhNmInInstance
              _importsOtopInstanceNmL :: ([HsName])
              _importsIerrSq :: ErrSq
              _importsIgUniq :: UID
              _importsIgathFixityGam :: FixityGam
              _importsIidUseOccGam :: IdUseOccGam
              _importsIpp :: PP_Doc
              _importsIppWrap :: (PP_Doc -> PP_Doc)
              _importsItopInstanceNmL :: ([HsName])
              _importsIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _importsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _importsIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _importsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _importsIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _importsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _importsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _importsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _importsItopInstanceNmL
              -- copy rule (down)
              _importsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _importsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _importsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _importsOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _importsOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _importsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _importsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _importsOopts =
                  _lhsIopts
              -- copy rule (down)
              _importsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _importsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _importsIerrSq,_importsIgUniq,_importsIgathFixityGam,_importsIidUseOccGam,_importsIpp,_importsIppWrap,_importsItopInstanceNmL,_importsIundefOccGam) =
                  imports_ _importsOfixityGam _importsOgUniq _importsOidGam _importsOisMainMod _importsOisTopMod _importsOmoduleNm _importsOnmLev _importsOopts _importsOpatchEhNmInInstance _importsOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Imports -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Import 
         child tl             : Imports 
      alternative Nil:
-}
-- cata
sem_Imports :: Imports ->
               T_Imports
sem_Imports list =
    (Prelude.foldr sem_Imports_Cons sem_Imports_Nil (Prelude.map sem_Import list))
-- semantic domain
type T_Imports = FixityGam ->
                 UID ->
                 IdDefOccGam ->
                 Bool ->
                 Bool ->
                 HsName ->
                 NmLev ->
                 EHCOpts ->
                 PatchEhNmInInstance ->
                 ([HsName]) ->
                 ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Imports_Cons :: T_Import ->
                    T_Imports ->
                    T_Imports
sem_Imports_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOisMainMod :: Bool
              _hdOisTopMod :: Bool
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOisMainMod :: Bool
              _tlOisTopMod :: Bool
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathFixityGam :: FixityGam
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIgathFixityGam :: FixityGam
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _hdIgathFixityGam `gamAddGam` _tlIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _hdOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _tlOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOisMainMod _hdOisTopMod _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIerrSq,_tlIgUniq,_tlIgathFixityGam,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisMainMod _tlOisTopMod _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Imports_Nil :: T_Imports
sem_Imports_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Kind --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         conNm                : Name
         eh                   : EH.KiExpr
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative NormalApplication:
         child range          : {Range}
         child function       : Kind 
         child arguments      : Kinds 
         visit 0:
            local pp          : _
      alternative InfixApplication:
         child range          : {Range}
         child leftKind       : Kind 
         child operator       : Kind 
         child rightKind      : Kind 
         visit 0:
            local pp          : _
            local eh          : _
      alternative Constructor:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local idAsp       : _
            local idOccKind   : _
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local pp          : _
      alternative Parenthesized:
         child range          : {Range}
         child kind           : Kind 
         visit 0:
            local pp          : _
      alternative Variable:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local idAsp       : _
            local idOccKind   : _
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local pp          : _
      alternative Forall:
         child range          : {Range}
         child kindvariables  : {Names}
         child kind           : Kind 
         visit 0:
            local idDefOccGamInside : _
            local idGam       : _
            local pp          : _
      alternative Annotate:
         child range          : {Range}
         child annotation     : KindAnnotation 
         child kind           : Kind 
         visit 0:
            local eh          : _
-}
-- cata
sem_Kind :: Kind ->
            T_Kind
sem_Kind (Kind_NormalApplication _range _function _arguments) =
    (sem_Kind_NormalApplication _range (sem_Kind _function) (sem_Kinds _arguments))
sem_Kind (Kind_InfixApplication _range _leftKind _operator _rightKind) =
    (sem_Kind_InfixApplication _range (sem_Kind _leftKind) (sem_Kind _operator) (sem_Kind _rightKind))
sem_Kind (Kind_Constructor _range _name) =
    (sem_Kind_Constructor _range _name)
sem_Kind (Kind_Parenthesized _range _kind) =
    (sem_Kind_Parenthesized _range (sem_Kind _kind))
sem_Kind (Kind_Variable _range _name) =
    (sem_Kind_Variable _range _name)
sem_Kind (Kind_Forall _range _kindvariables _kind) =
    (sem_Kind_Forall _range _kindvariables (sem_Kind _kind))
sem_Kind (Kind_Annotate _range _annotation _kind) =
    (sem_Kind_Annotate _range (sem_KindAnnotation _annotation) (sem_Kind _kind))
-- semantic domain
type T_Kind = UID ->
              IdDefOccGam ->
              NmLev ->
              EHCOpts ->
              PatchEhNmInInstance ->
              ([HsName]) ->
              ( Name,(EH.KiExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Kind_NormalApplication :: Range ->
                              T_Kind ->
                              T_Kinds ->
                              T_Kind
sem_Kind_NormalApplication range_ function_ arguments_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.KiExpr)
              _lhsOconNm :: Name
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _functionOgUniq :: UID
              _functionOidGam :: IdDefOccGam
              _functionOnmLev :: NmLev
              _functionOopts :: EHCOpts
              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
              _functionOtopInstanceNmL :: ([HsName])
              _argumentsOgUniq :: UID
              _argumentsOidGam :: IdDefOccGam
              _argumentsOnmLev :: NmLev
              _argumentsOopts :: EHCOpts
              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
              _argumentsOtopInstanceNmL :: ([HsName])
              _functionIconNm :: Name
              _functionIeh :: (EH.KiExpr)
              _functionIerrSq :: ErrSq
              _functionIfreeTvarS :: HsNameS
              _functionIgUniq :: UID
              _functionIidUseOccGam :: IdUseOccGam
              _functionIpp :: PP_Doc
              _functionIppWrap :: (PP_Doc -> PP_Doc)
              _functionItopInstanceNmL :: ([HsName])
              _functionIundefOccGam :: IdUseOccGam
              _argumentsIeh :: ([EH.KiExpr])
              _argumentsIerrSq :: ErrSq
              _argumentsIfreeTvarS :: HsNameS
              _argumentsIgUniq :: UID
              _argumentsIidUseOccGam :: IdUseOccGam
              _argumentsIpp :: PP_Doc
              _argumentsIppL :: ([PP_Doc])
              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
              _argumentsItopInstanceNmL :: ([HsName])
              _argumentsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 99, column 9)
              _pp =
                  ppAppTop  (_functionIconNm, _functionIpp)
                            _argumentsIppL (_functionIpp >#< ppSpaces _argumentsIppL)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 178, column 9)
              _lhsOeh =
                  appTopApp (_functionIeh : _argumentsIeh)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _functionIerrSq `Seq.union` _argumentsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
              _lhsOfreeTvarS =
                  _functionIfreeTvarS `Set.union` _argumentsIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _functionIppWrap . _argumentsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _argumentsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _argumentsItopInstanceNmL
              -- copy rule (down)
              _functionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _functionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _functionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _functionOopts =
                  _lhsIopts
              -- copy rule (down)
              _functionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _functionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (chain)
              _argumentsOgUniq =
                  _functionIgUniq
              -- copy rule (down)
              _argumentsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _argumentsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _argumentsOopts =
                  _lhsIopts
              -- copy rule (down)
              _argumentsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _argumentsOtopInstanceNmL =
                  _functionItopInstanceNmL
              ( _functionIconNm,_functionIeh,_functionIerrSq,_functionIfreeTvarS,_functionIgUniq,_functionIidUseOccGam,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionIundefOccGam) =
                  function_ _functionOgUniq _functionOidGam _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOtopInstanceNmL
              ( _argumentsIeh,_argumentsIerrSq,_argumentsIfreeTvarS,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
                  arguments_ _argumentsOgUniq _argumentsOidGam _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Kind_InfixApplication :: Range ->
                             T_Kind ->
                             T_Kind ->
                             T_Kind ->
                             T_Kind
sem_Kind_InfixApplication range_ leftKind_ operator_ rightKind_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.KiExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _leftKindOgUniq :: UID
              _leftKindOidGam :: IdDefOccGam
              _leftKindOnmLev :: NmLev
              _leftKindOopts :: EHCOpts
              _leftKindOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftKindOtopInstanceNmL :: ([HsName])
              _operatorOgUniq :: UID
              _operatorOidGam :: IdDefOccGam
              _operatorOnmLev :: NmLev
              _operatorOopts :: EHCOpts
              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
              _operatorOtopInstanceNmL :: ([HsName])
              _rightKindOgUniq :: UID
              _rightKindOidGam :: IdDefOccGam
              _rightKindOnmLev :: NmLev
              _rightKindOopts :: EHCOpts
              _rightKindOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightKindOtopInstanceNmL :: ([HsName])
              _leftKindIconNm :: Name
              _leftKindIeh :: (EH.KiExpr)
              _leftKindIerrSq :: ErrSq
              _leftKindIfreeTvarS :: HsNameS
              _leftKindIgUniq :: UID
              _leftKindIidUseOccGam :: IdUseOccGam
              _leftKindIpp :: PP_Doc
              _leftKindIppWrap :: (PP_Doc -> PP_Doc)
              _leftKindItopInstanceNmL :: ([HsName])
              _leftKindIundefOccGam :: IdUseOccGam
              _operatorIconNm :: Name
              _operatorIeh :: (EH.KiExpr)
              _operatorIerrSq :: ErrSq
              _operatorIfreeTvarS :: HsNameS
              _operatorIgUniq :: UID
              _operatorIidUseOccGam :: IdUseOccGam
              _operatorIpp :: PP_Doc
              _operatorIppWrap :: (PP_Doc -> PP_Doc)
              _operatorItopInstanceNmL :: ([HsName])
              _operatorIundefOccGam :: IdUseOccGam
              _rightKindIconNm :: Name
              _rightKindIeh :: (EH.KiExpr)
              _rightKindIerrSq :: ErrSq
              _rightKindIfreeTvarS :: HsNameS
              _rightKindIgUniq :: UID
              _rightKindIidUseOccGam :: IdUseOccGam
              _rightKindIpp :: PP_Doc
              _rightKindIppWrap :: (PP_Doc -> PP_Doc)
              _rightKindItopInstanceNmL :: ([HsName])
              _rightKindIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 102, column 9)
              _pp =
                  let args = [_leftKindIpp,_rightKindIpp]
                                                  in      ppAppTop  (_operatorIconNm, _operatorIpp)
                                    args (_operatorIpp >#< ppSpaces args)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 180, column 9)
              _eh =
                  appRngParApp range_ [_operatorIeh,_leftKindIeh,_rightKindIeh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _leftKindIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightKindIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
              _lhsOfreeTvarS =
                  _leftKindIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightKindIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _leftKindIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightKindIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftKindIppWrap . _operatorIppWrap . _rightKindIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftKindIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightKindIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _rightKindIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightKindItopInstanceNmL
              -- copy rule (down)
              _leftKindOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _leftKindOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _leftKindOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _leftKindOopts =
                  _lhsIopts
              -- copy rule (down)
              _leftKindOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _leftKindOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (chain)
              _operatorOgUniq =
                  _leftKindIgUniq
              -- copy rule (down)
              _operatorOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _operatorOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _operatorOopts =
                  _lhsIopts
              -- copy rule (down)
              _operatorOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _operatorOtopInstanceNmL =
                  _leftKindItopInstanceNmL
              -- copy rule (chain)
              _rightKindOgUniq =
                  _operatorIgUniq
              -- copy rule (down)
              _rightKindOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rightKindOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rightKindOopts =
                  _lhsIopts
              -- copy rule (down)
              _rightKindOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rightKindOtopInstanceNmL =
                  _operatorItopInstanceNmL
              ( _leftKindIconNm,_leftKindIeh,_leftKindIerrSq,_leftKindIfreeTvarS,_leftKindIgUniq,_leftKindIidUseOccGam,_leftKindIpp,_leftKindIppWrap,_leftKindItopInstanceNmL,_leftKindIundefOccGam) =
                  leftKind_ _leftKindOgUniq _leftKindOidGam _leftKindOnmLev _leftKindOopts _leftKindOpatchEhNmInInstance _leftKindOtopInstanceNmL
              ( _operatorIconNm,_operatorIeh,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorIundefOccGam) =
                  operator_ _operatorOgUniq _operatorOidGam _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL
              ( _rightKindIconNm,_rightKindIeh,_rightKindIerrSq,_rightKindIfreeTvarS,_rightKindIgUniq,_rightKindIidUseOccGam,_rightKindIpp,_rightKindIppWrap,_rightKindItopInstanceNmL,_rightKindIundefOccGam) =
                  rightKind_ _rightKindOgUniq _rightKindOidGam _rightKindOnmLev _rightKindOopts _rightKindOpatchEhNmInInstance _rightKindOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Kind_Constructor :: Range ->
                        Name ->
                        T_Kind
sem_Kind_Constructor range_ name_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.KiExpr)
              _lhsOconNm :: Name
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 586, column 9)
              _idAsp =
                  IdAsp_Kind_Con
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 586, column 9)
              _idOccKind =
                  IdOcc_Kind
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 592, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 106, column 9)
              _pp =
                  ppCon name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 182, column 9)
              _lhsOeh =
                  rngLift range_ EH.KiExpr_Con _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 102, column 9)
              _lhsOconNm =
                  name_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Kind_Parenthesized :: Range ->
                          T_Kind ->
                          T_Kind
sem_Kind_Parenthesized range_ kind_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.KiExpr)
              _lhsOconNm :: Name
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _kindOgUniq :: UID
              _kindOidGam :: IdDefOccGam
              _kindOnmLev :: NmLev
              _kindOopts :: EHCOpts
              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
              _kindOtopInstanceNmL :: ([HsName])
              _kindIconNm :: Name
              _kindIeh :: (EH.KiExpr)
              _kindIerrSq :: ErrSq
              _kindIfreeTvarS :: HsNameS
              _kindIgUniq :: UID
              _kindIidUseOccGam :: IdUseOccGam
              _kindIpp :: PP_Doc
              _kindIppWrap :: (PP_Doc -> PP_Doc)
              _kindItopInstanceNmL :: ([HsName])
              _kindIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 108, column 9)
              _pp =
                  ppParens _kindIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 184, column 9)
              _lhsOeh =
                  rngLift range_ EH.KiExpr_Parens _kindIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _kindIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
              _lhsOfreeTvarS =
                  _kindIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _kindIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _kindIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _kindIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _kindIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _kindItopInstanceNmL
              -- copy rule (down)
              _kindOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _kindOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _kindOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _kindOopts =
                  _lhsIopts
              -- copy rule (down)
              _kindOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _kindOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindIundefOccGam) =
                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Kind_Variable :: Range ->
                     Name ->
                     T_Kind
sem_Kind_Variable range_ name_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.KiExpr)
              _lhsOconNm :: Name
              _lhsOfreeTvarS :: HsNameS
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 589, column 9)
              _idAsp =
                  IdAsp_Kind_Var
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 589, column 9)
              _idOccKind =
                  IdOcc_Kind
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 592, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 110, column 9)
              _pp =
                  pp name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 186, column 9)
              _lhsOeh =
                  rngLift range_ EH.KiExpr_Var name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 110, column 9)
              _lhsOfreeTvarS =
                  Set.singleton name_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Kind_Forall :: Range ->
                   Names ->
                   T_Kind ->
                   T_Kind
sem_Kind_Forall range_ kindvariables_ kind_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.KiExpr)
              _lhsOconNm :: Name
              _lhsOfreeTvarS :: HsNameS
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _kindOgUniq :: UID
              _kindOidGam :: IdDefOccGam
              _kindOnmLev :: NmLev
              _kindOopts :: EHCOpts
              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
              _kindOtopInstanceNmL :: ([HsName])
              _kindIconNm :: Name
              _kindIeh :: (EH.KiExpr)
              _kindIerrSq :: ErrSq
              _kindIfreeTvarS :: HsNameS
              _kindIgUniq :: UID
              _kindIidUseOccGam :: IdUseOccGam
              _kindIpp :: PP_Doc
              _kindIppWrap :: (PP_Doc -> PP_Doc)
              _kindItopInstanceNmL :: ([HsName])
              _kindIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 247, column 9)
              _idDefOccGamInside =
                  kvarL2IdDefOccGam _lhsInmLev range_ kindvariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 412, column 9)
              _idGam =
                  gamUnion _idDefOccGamInside _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 112, column 9)
              _pp =
                  "forall" >#< ppSpaces kindvariables_ >#< "." >#< _kindIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 188, column 9)
              _lhsOeh =
                  _kindIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 112, column 9)
              _lhsOfreeTvarS =
                  _kindIfreeTvarS `Set.difference` Set.fromList kindvariables_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _kindIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _kindIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _kindIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _kindIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _kindIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _kindItopInstanceNmL
              -- copy rule (down)
              _kindOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _kindOidGam =
                  _idGam
              -- copy rule (down)
              _kindOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _kindOopts =
                  _lhsIopts
              -- copy rule (down)
              _kindOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _kindOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindIundefOccGam) =
                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Kind_Annotate :: Range ->
                     T_KindAnnotation ->
                     T_Kind ->
                     T_Kind
sem_Kind_Annotate range_ annotation_ kind_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.KiExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _annotationOgUniq :: UID
              _annotationOidGam :: IdDefOccGam
              _annotationOnmLev :: NmLev
              _annotationOopts :: EHCOpts
              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
              _annotationOtopInstanceNmL :: ([HsName])
              _kindOgUniq :: UID
              _kindOidGam :: IdDefOccGam
              _kindOnmLev :: NmLev
              _kindOopts :: EHCOpts
              _kindOpatchEhNmInInstance :: PatchEhNmInInstance
              _kindOtopInstanceNmL :: ([HsName])
              _annotationIeh :: (EH.KiExprAnn)
              _annotationIerrSq :: ErrSq
              _annotationIfreeTvarS :: HsNameS
              _annotationIgUniq :: UID
              _annotationIidUseOccGam :: IdUseOccGam
              _annotationIpp :: PP_Doc
              _annotationIppWrap :: (PP_Doc -> PP_Doc)
              _annotationItopInstanceNmL :: ([HsName])
              _annotationIundefOccGam :: IdUseOccGam
              _kindIconNm :: Name
              _kindIeh :: (EH.KiExpr)
              _kindIerrSq :: ErrSq
              _kindIfreeTvarS :: HsNameS
              _kindIgUniq :: UID
              _kindIidUseOccGam :: IdUseOccGam
              _kindIpp :: PP_Doc
              _kindIppWrap :: (PP_Doc -> PP_Doc)
              _kindItopInstanceNmL :: ([HsName])
              _kindIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 190, column 17)
              _eh =
                  rngLift range_ EH.KiExpr_Ann _annotationIeh _kindIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 104, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _annotationIerrSq `Seq.union` _kindIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
              _lhsOfreeTvarS =
                  _annotationIfreeTvarS `Set.union` _kindIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _annotationIidUseOccGam `gamAddGam` _kindIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _annotationIpp >-< _kindIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _annotationIppWrap . _kindIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _annotationIundefOccGam `gamUnion` _kindIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _kindIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _kindItopInstanceNmL
              -- copy rule (down)
              _annotationOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _annotationOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _annotationOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _annotationOopts =
                  _lhsIopts
              -- copy rule (down)
              _annotationOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _annotationOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (chain)
              _kindOgUniq =
                  _annotationIgUniq
              -- copy rule (down)
              _kindOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _kindOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _kindOopts =
                  _lhsIopts
              -- copy rule (down)
              _kindOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _kindOtopInstanceNmL =
                  _annotationItopInstanceNmL
              ( _annotationIeh,_annotationIerrSq,_annotationIfreeTvarS,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationIundefOccGam) =
                  annotation_ _annotationOgUniq _annotationOidGam _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL
              ( _kindIconNm,_kindIeh,_kindIerrSq,_kindIfreeTvarS,_kindIgUniq,_kindIidUseOccGam,_kindIpp,_kindIppWrap,_kindItopInstanceNmL,_kindIundefOccGam) =
                  kind_ _kindOgUniq _kindOidGam _kindOnmLev _kindOopts _kindOpatchEhNmInInstance _kindOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- KindAnnotation ----------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.KiExprAnn
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Empty:
         visit 0:
            local eh          : _
-}
-- cata
sem_KindAnnotation :: KindAnnotation ->
                      T_KindAnnotation
sem_KindAnnotation (KindAnnotation_Empty) =
    (sem_KindAnnotation_Empty)
-- semantic domain
type T_KindAnnotation = UID ->
                        IdDefOccGam ->
                        NmLev ->
                        EHCOpts ->
                        PatchEhNmInInstance ->
                        ([HsName]) ->
                        ( (EH.KiExprAnn),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_KindAnnotation_Empty :: T_KindAnnotation
sem_KindAnnotation_Empty =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.KiExprAnn)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 914, column 17)
              _eh =
                  EH.KiExprAnn_Empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Kinds -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.KiExpr]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Kind 
         child tl             : Kinds 
      alternative Nil:
-}
-- cata
sem_Kinds :: Kinds ->
             T_Kinds
sem_Kinds list =
    (Prelude.foldr sem_Kinds_Cons sem_Kinds_Nil (Prelude.map sem_Kind list))
-- semantic domain
type T_Kinds = UID ->
               IdDefOccGam ->
               NmLev ->
               EHCOpts ->
               PatchEhNmInInstance ->
               ([HsName]) ->
               ( ([EH.KiExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Kinds_Cons :: T_Kind ->
                  T_Kinds ->
                  T_Kinds
sem_Kinds_Cons hd_ tl_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.KiExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIconNm :: Name
              _hdIeh :: (EH.KiExpr)
              _hdIerrSq :: ErrSq
              _hdIfreeTvarS :: HsNameS
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.KiExpr])
              _tlIerrSq :: ErrSq
              _tlIfreeTvarS :: HsNameS
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 448, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 172, column 21)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
              _lhsOfreeTvarS =
                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIconNm,_hdIeh,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Kinds_Nil :: T_Kinds
sem_Kinds_Nil =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.KiExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 450, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 172, column 21)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 106, column 30)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- LeftHandSide ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         nmLevFun             : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.PatExpr]
         ehTyMk               : EH.Expr -> EH.Expr
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         refname              : HsName
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Function:
         child range          : {Range}
         child name           : {Name}
         child patterns       : Patterns 
         visit 0:
            local refname     : _
            local pp          : _
      alternative Infix:
         child range          : {Range}
         child leftPattern    : Pattern 
         child operator       : {Name}
         child rightPattern   : Pattern 
         visit 0:
            local patchEhNmInInstance : _
            local refname     : _
            local pp          : _
      alternative Parenthesized:
         child range          : {Range}
         child lefthandside   : LeftHandSide 
         child patterns       : Patterns 
         visit 0:
            local pp          : _
      alternative Typed:
         child range          : {Range}
         child lefthandside   : LeftHandSide 
         child type           : Type 
         visit 0:
            local idDefOccGamType : _
            local pp          : _
            local isAsPred    : _
            local doGenVarWild : _
-}
-- cata
sem_LeftHandSide :: LeftHandSide ->
                    T_LeftHandSide
sem_LeftHandSide (LeftHandSide_Function _range _name _patterns) =
    (sem_LeftHandSide_Function _range _name (sem_Patterns _patterns))
sem_LeftHandSide (LeftHandSide_Infix _range _leftPattern _operator _rightPattern) =
    (sem_LeftHandSide_Infix _range (sem_Pattern _leftPattern) _operator (sem_Pattern _rightPattern))
sem_LeftHandSide (LeftHandSide_Parenthesized _range _lefthandside _patterns) =
    (sem_LeftHandSide_Parenthesized _range (sem_LeftHandSide _lefthandside) (sem_Patterns _patterns))
sem_LeftHandSide (LeftHandSide_Typed _range _lefthandside _type) =
    (sem_LeftHandSide_Typed _range (sem_LeftHandSide _lefthandside) (sem_Type _type))
-- semantic domain
type T_LeftHandSide = UID ->
                      FixityGam ->
                      UID ->
                      (Map.Map HsName [(HsName,HsName)]) ->
                      IdDefOccGam ->
                      HsName ->
                      NmLev ->
                      NmLev ->
                      EHCOpts ->
                      PatchEhNmInInstance ->
                      (Set.Set Pragma.Pragma) ->
                      ([HsName]) ->
                      ( ([EH.PatExpr]),(EH.Expr -> EH.Expr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),HsName,([HsName]),IdUseOccGam)
sem_LeftHandSide_Function :: Range ->
                             Name ->
                             T_Patterns ->
                             T_LeftHandSide
sem_LeftHandSide_Function range_ name_ patterns_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsInmLevFun
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _lhsOeh :: ([EH.PatExpr])
              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOrefname :: HsName
              _lhsOtopInstanceNmL :: ([HsName])
              _patternsOfixityGam :: FixityGam
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOtopInstanceNmL :: ([HsName])
              _patternsIeh :: ([EH.PatExpr])
              _patternsIerrSq :: ErrSq
              _patternsIgUniq :: UID
              _patternsIidDefOccGam :: IdDefOccGam
              _patternsIidOccDefs :: ([IdOcc])
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1087, column 9)
              _patternsOpatchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 47, column 9)
              _refname =
                  hsnSetLevQual _lhsInmLevFun _lhsImoduleNm name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 317, column 9)
              _pp =
                  name_ >#< ppSpaces _patternsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 735, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_Var
                          (_lhsIpatchEhNmInInstance _refname)
                    : _patternsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 755, column 9)
              _lhsOehTyMk =
                  id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternsIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternsIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternsIgUniq
              -- copy rule (from local)
              _lhsOrefname =
                  _refname
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternsItopInstanceNmL
              -- copy rule (down)
              _patternsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_LeftHandSide_Infix :: Range ->
                          T_Pattern ->
                          Name ->
                          T_Pattern ->
                          T_LeftHandSide
sem_LeftHandSide_Infix range_ leftPattern_ operator_ rightPattern_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsInmLevFun
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.PatExpr])
              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOrefname :: HsName
              _lhsOtopInstanceNmL :: ([HsName])
              _leftPatternOfixityGam :: FixityGam
              _leftPatternOgUniq :: UID
              _leftPatternOidGam :: IdDefOccGam
              _leftPatternOmoduleNm :: HsName
              _leftPatternOnmLev :: NmLev
              _leftPatternOopts :: EHCOpts
              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftPatternOtopInstanceNmL :: ([HsName])
              _rightPatternOfixityGam :: FixityGam
              _rightPatternOgUniq :: UID
              _rightPatternOidGam :: IdDefOccGam
              _rightPatternOmoduleNm :: HsName
              _rightPatternOnmLev :: NmLev
              _rightPatternOopts :: EHCOpts
              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightPatternOtopInstanceNmL :: ([HsName])
              _leftPatternIeh :: (EH.PatExpr)
              _leftPatternIerrSq :: ErrSq
              _leftPatternIgUniq :: UID
              _leftPatternIidDefOccGam :: IdDefOccGam
              _leftPatternIidOccDefs :: ([IdOcc])
              _leftPatternIidUseOccGam :: IdUseOccGam
              _leftPatternIisVar :: Bool
              _leftPatternImbTopRefname :: (Maybe HsName)
              _leftPatternIpp :: PP_Doc
              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
              _leftPatternItopInstanceNmL :: ([HsName])
              _leftPatternIundefOccGam :: IdUseOccGam
              _rightPatternIeh :: (EH.PatExpr)
              _rightPatternIerrSq :: ErrSq
              _rightPatternIgUniq :: UID
              _rightPatternIidDefOccGam :: IdDefOccGam
              _rightPatternIidOccDefs :: ([IdOcc])
              _rightPatternIidUseOccGam :: IdUseOccGam
              _rightPatternIisVar :: Bool
              _rightPatternImbTopRefname :: (Maybe HsName)
              _rightPatternIpp :: PP_Doc
              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
              _rightPatternItopInstanceNmL :: ([HsName])
              _rightPatternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1090, column 9)
              _patchEhNmInInstance =
                  id
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 49, column 9)
              _refname =
                  hsnSetLevQual _lhsInmLevFun _lhsImoduleNm operator_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 319, column 9)
              _pp =
                  _leftPatternIpp >#< operator_ >#< _rightPatternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 739, column 9)
              _lhsOeh =
                  [ rngLift range_ EH.PatExpr_Var
                            (_lhsIpatchEhNmInInstance _refname)
                  , _leftPatternIeh
                  , _rightPatternIeh
                  ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 755, column 9)
              _lhsOehTyMk =
                  id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _leftPatternIerrSq `Seq.union` _rightPatternIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _leftPatternIidDefOccGam `gamAddGam` _rightPatternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _leftPatternIidOccDefs ++ _rightPatternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _leftPatternIidUseOccGam `gamAddGam` _rightPatternIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftPatternIppWrap . _rightPatternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _rightPatternIgUniq
              -- copy rule (from local)
              _lhsOrefname =
                  _refname
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightPatternItopInstanceNmL
              -- copy rule (down)
              _leftPatternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _leftPatternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _leftPatternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _leftPatternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _leftPatternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _leftPatternOopts =
                  _lhsIopts
              -- copy rule (from local)
              _leftPatternOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (down)
              _leftPatternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _rightPatternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rightPatternOgUniq =
                  _leftPatternIgUniq
              -- copy rule (down)
              _rightPatternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rightPatternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _rightPatternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rightPatternOopts =
                  _lhsIopts
              -- copy rule (from local)
              _rightPatternOpatchEhNmInInstance =
                  _patchEhNmInInstance
              -- copy rule (chain)
              _rightPatternOtopInstanceNmL =
                  _leftPatternItopInstanceNmL
              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidDefOccGam,_leftPatternIidOccDefs,_leftPatternIidUseOccGam,_leftPatternIisVar,_leftPatternImbTopRefname,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternIundefOccGam) =
                  leftPattern_ _leftPatternOfixityGam _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL
              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidDefOccGam,_rightPatternIidOccDefs,_rightPatternIidUseOccGam,_rightPatternIisVar,_rightPatternImbTopRefname,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternIundefOccGam) =
                  rightPattern_ _rightPatternOfixityGam _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_LeftHandSide_Parenthesized :: Range ->
                                  T_LeftHandSide ->
                                  T_Patterns ->
                                  T_LeftHandSide
sem_LeftHandSide_Parenthesized range_ lefthandside_ patterns_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsInmLevFun
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.PatExpr])
              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOrefname :: HsName
              _lhsOtopInstanceNmL :: ([HsName])
              _lefthandsideOcaseId :: UID
              _lefthandsideOfixityGam :: FixityGam
              _lefthandsideOgUniq :: UID
              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _lefthandsideOidGam :: IdDefOccGam
              _lefthandsideOmoduleNm :: HsName
              _lefthandsideOnmLev :: NmLev
              _lefthandsideOnmLevFun :: NmLev
              _lefthandsideOopts :: EHCOpts
              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
              _lefthandsideOtopInstanceNmL :: ([HsName])
              _patternsOfixityGam :: FixityGam
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternsOtopInstanceNmL :: ([HsName])
              _lefthandsideIeh :: ([EH.PatExpr])
              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
              _lefthandsideIerrSq :: ErrSq
              _lefthandsideIgUniq :: UID
              _lefthandsideIidDefOccGam :: IdDefOccGam
              _lefthandsideIidOccDefs :: ([IdOcc])
              _lefthandsideIidUseOccGam :: IdUseOccGam
              _lefthandsideIpp :: PP_Doc
              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _lefthandsideIrefname :: HsName
              _lefthandsideItopInstanceNmL :: ([HsName])
              _lefthandsideIundefOccGam :: IdUseOccGam
              _patternsIeh :: ([EH.PatExpr])
              _patternsIerrSq :: ErrSq
              _patternsIgUniq :: UID
              _patternsIidDefOccGam :: IdDefOccGam
              _patternsIidOccDefs :: ([IdOcc])
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 321, column 9)
              _pp =
                  ppParens _lefthandsideIpp >#< ppSpaces _patternsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 745, column 9)
              _lhsOeh =
                  _lefthandsideIeh ++ _patternsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 755, column 9)
              _lhsOehTyMk =
                  id
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _lefthandsideIerrSq `Seq.union` _patternsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _lefthandsideIidDefOccGam `gamAddGam` _patternsIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _lefthandsideIidOccDefs ++ _patternsIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _lefthandsideIidUseOccGam `gamAddGam` _patternsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _lefthandsideIppWrap . _patternsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _lefthandsideIundefOccGam `gamUnion` _patternsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternsIgUniq
              -- copy rule (up)
              _lhsOrefname =
                  _lefthandsideIrefname
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternsItopInstanceNmL
              -- copy rule (down)
              _lefthandsideOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _lefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _lefthandsideOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _lefthandsideOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _lefthandsideOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _lefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _lefthandsideOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _lefthandsideOnmLevFun =
                  _lhsInmLevFun
              -- copy rule (down)
              _lefthandsideOopts =
                  _lhsIopts
              -- copy rule (down)
              _lefthandsideOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _lefthandsideOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _lefthandsideOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _patternsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _patternsOgUniq =
                  _lefthandsideIgUniq
              -- copy rule (down)
              _patternsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _patternsOtopInstanceNmL =
                  _lefthandsideItopInstanceNmL
              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideIundefOccGam) =
                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_LeftHandSide_Typed :: Range ->
                          T_LeftHandSide ->
                          T_Type ->
                          T_LeftHandSide
sem_LeftHandSide_Typed range_ lefthandside_ type_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsInmLevFun
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _typeOidGam :: IdDefOccGam
              _typeOnmLev :: NmLev
              _lhsOeh :: ([EH.PatExpr])
              _lhsOehTyMk :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOrefname :: HsName
              _lhsOtopInstanceNmL :: ([HsName])
              _lefthandsideOcaseId :: UID
              _lefthandsideOfixityGam :: FixityGam
              _lefthandsideOgUniq :: UID
              _lefthandsideOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _lefthandsideOidGam :: IdDefOccGam
              _lefthandsideOmoduleNm :: HsName
              _lefthandsideOnmLev :: NmLev
              _lefthandsideOnmLevFun :: NmLev
              _lefthandsideOopts :: EHCOpts
              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _lefthandsideOpragmas :: (Set.Set Pragma.Pragma)
              _lefthandsideOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOisAsPred :: Bool
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _lefthandsideIeh :: ([EH.PatExpr])
              _lefthandsideIehTyMk :: (EH.Expr -> EH.Expr)
              _lefthandsideIerrSq :: ErrSq
              _lefthandsideIgUniq :: UID
              _lefthandsideIidDefOccGam :: IdDefOccGam
              _lefthandsideIidOccDefs :: ([IdOcc])
              _lefthandsideIidUseOccGam :: IdUseOccGam
              _lefthandsideIpp :: PP_Doc
              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _lefthandsideIrefname :: HsName
              _lefthandsideItopInstanceNmL :: ([HsName])
              _lefthandsideIundefOccGam :: IdUseOccGam
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 225, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 360, column 9)
              _typeOidGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 60, column 9)
              _typeOnmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 323, column 9)
              _pp =
                  _lefthandsideIpp >#< "::" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 747, column 9)
              _lhsOeh =
                  _lefthandsideIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 753, column 9)
              _lhsOehTyMk =
                  rngLift range_ EH.Expr_TypeAs True _typeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 197, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 206, column 9)
              _doGenVarWild =
                  True
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _lefthandsideIerrSq `Seq.union` _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _lefthandsideIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _lefthandsideIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _lefthandsideIidUseOccGam `gamAddGam` _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _lefthandsideIppWrap . _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _lefthandsideIundefOccGam `gamUnion` _typeIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOrefname =
                  _lefthandsideIrefname
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _lefthandsideOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _lefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _lefthandsideOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _lefthandsideOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _lefthandsideOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _lefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _lefthandsideOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _lefthandsideOnmLevFun =
                  _lhsInmLevFun
              -- copy rule (down)
              _lefthandsideOopts =
                  _lhsIopts
              -- copy rule (down)
              _lefthandsideOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _lefthandsideOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _lefthandsideOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typeOgUniq =
                  _lefthandsideIgUniq
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _typeOtopInstanceNmL =
                  _lefthandsideItopInstanceNmL
              ( _lefthandsideIeh,_lefthandsideIehTyMk,_lefthandsideIerrSq,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrefname,_lefthandsideItopInstanceNmL,_lefthandsideIundefOccGam) =
                  lefthandside_ _lefthandsideOcaseId _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOgenerDerivMp _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOnmLevFun _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOpragmas _lefthandsideOtopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehTyMk,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOrefname,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Literal -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : Literal 
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Int:
         child range          : {Range}
         child base           : {Int}
         child value          : {String}
         visit 0:
            local pp          : _
            local eh          : _
      alternative Char:
         child range          : {Range}
         child value          : {String}
         visit 0:
            local pp          : _
            local eh          : _
      alternative String:
         child range          : {Range}
         child value          : {String}
         visit 0:
            local pp          : _
            local eh          : _
      alternative Float:
         child range          : {Range}
         child value          : {String}
         visit 0:
            local pp          : _
            local eh          : _
-}
-- cata
sem_Literal :: Literal ->
               T_Literal
sem_Literal (Literal_Int _range _base _value) =
    (sem_Literal_Int _range _base _value)
sem_Literal (Literal_Char _range _value) =
    (sem_Literal_Char _range _value)
sem_Literal (Literal_String _range _value) =
    (sem_Literal_String _range _value)
sem_Literal (Literal_Float _range _value) =
    (sem_Literal_Float _range _value)
-- semantic domain
type T_Literal = UID ->
                 IdDefOccGam ->
                 NmLev ->
                 EHCOpts ->
                 PatchEhNmInInstance ->
                 ([HsName]) ->
                 ( Literal,ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Literal_Int :: Range ->
                   Int ->
                   String ->
                   T_Literal
sem_Literal_Int range_ base_ value_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: Literal
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 384, column 9)
              _pp =
                  pp value_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- self rule
              _eh =
                  Literal_Int range_ base_ value_
              -- self rule
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Literal_Char :: Range ->
                    String ->
                    T_Literal
sem_Literal_Char range_ value_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: Literal
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 386, column 9)
              _pp =
                  pp ("'" ++ value_ ++ "'")
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- self rule
              _eh =
                  Literal_Char range_ value_
              -- self rule
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Literal_String :: Range ->
                      String ->
                      T_Literal
sem_Literal_String range_ value_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: Literal
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 388, column 9)
              _pp =
                  pp (show value_)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- self rule
              _eh =
                  Literal_String range_ value_
              -- self rule
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Literal_Float :: Range ->
                     String ->
                     T_Literal
sem_Literal_Float range_ value_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: Literal
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 390, column 9)
              _pp =
                  pp value_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- self rule
              _eh =
                  Literal_Float range_ value_
              -- self rule
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- MaybeDeclarations -------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : Maybe [EH.Decl]
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         gathPragmas          : Set.Set Pragma.Pragma
         idDefOccGam          : IdDefOccGam
         idDpdMp              : IdDpdMp
         idOccDefs            : [IdOcc]
         idTySigDefOccGam     : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         needsError           : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Just:
         child just           : Declarations 
         visit 0:
            local pp          : _
      alternative Nothing:
-}
-- cata
sem_MaybeDeclarations :: MaybeDeclarations ->
                         T_MaybeDeclarations
sem_MaybeDeclarations (Prelude.Just x) =
    (sem_MaybeDeclarations_Just (sem_Declarations x))
sem_MaybeDeclarations Prelude.Nothing =
    sem_MaybeDeclarations_Nothing
-- semantic domain
type T_MaybeDeclarations = UID ->
                           FixityGam ->
                           UID ->
                           (Map.Map HsName [(HsName,HsName)]) ->
                           IdDefOccGam ->
                           HsName ->
                           NmLev ->
                           EHCOpts ->
                           PatchEhNmInInstance ->
                           (Set.Set Pragma.Pragma) ->
                           ([HsName]) ->
                           ( (Maybe [EH.Decl]),ErrSq,UID,FixityGam,(Set.Set Pragma.Pragma),IdDefOccGam,IdDpdMp,([IdOcc]),IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_MaybeDeclarations_Just :: T_Declarations ->
                              T_MaybeDeclarations
sem_MaybeDeclarations_Just just_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (Maybe [EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _justOcaseId :: UID
              _justOfixityGam :: FixityGam
              _justOgUniq :: UID
              _justOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _justOidGam :: IdDefOccGam
              _justOmoduleNm :: HsName
              _justOnmLev :: NmLev
              _justOopts :: EHCOpts
              _justOpatchEhNmInInstance :: PatchEhNmInInstance
              _justOpragmas :: (Set.Set Pragma.Pragma)
              _justOtopInstanceNmL :: ([HsName])
              _justIeh :: ([EH.Decl])
              _justIerrSq :: ErrSq
              _justIgUniq :: UID
              _justIgathFixityGam :: FixityGam
              _justIgathPragmas :: (Set.Set Pragma.Pragma)
              _justIidDefOccGam :: IdDefOccGam
              _justIidDpdMp :: IdDpdMp
              _justIidOccDefs :: ([IdOcc])
              _justIidTySigDefOccGam :: IdDefOccGam
              _justIidUseOccGam :: IdUseOccGam
              _justIneedsError :: Bool
              _justIpp :: PP_Doc
              _justIppWrap :: (PP_Doc -> PP_Doc)
              _justItopInstanceNmL :: ([HsName])
              _justIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 25, column 9)
              _pp =
                  "where" >#< _justIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 72, column 9)
              _lhsOeh =
                  Just _justIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _justIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _justIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _justIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _justIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  _justIidDpdMp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _justIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  _justIidTySigDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _justIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  _justIneedsError
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _justIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _justIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _justIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _justItopInstanceNmL
              -- copy rule (down)
              _justOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _justOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _justOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _justOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _justOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _justOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _justOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _justOopts =
                  _lhsIopts
              -- copy rule (down)
              _justOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _justOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _justOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _justIeh,_justIerrSq,_justIgUniq,_justIgathFixityGam,_justIgathPragmas,_justIidDefOccGam,_justIidDpdMp,_justIidOccDefs,_justIidTySigDefOccGam,_justIidUseOccGam,_justIneedsError,_justIpp,_justIppWrap,_justItopInstanceNmL,_justIundefOccGam) =
                  just_ _justOcaseId _justOfixityGam _justOgUniq _justOgenerDerivMp _justOidGam _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOpragmas _justOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_MaybeDeclarations_Nothing :: T_MaybeDeclarations
sem_MaybeDeclarations_Nothing =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (Maybe [EH.Decl])
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidDpdMp :: IdDpdMp
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidTySigDefOccGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOneedsError :: Bool
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 64, column 33)
              _lhsOeh =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 728, column 19)
              _lhsOidDpdMp =
                  Map.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 269, column 28)
              _lhsOidTySigDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 693, column 38)
              _lhsOneedsError =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathPragmas,_lhsOidDefOccGam,_lhsOidDpdMp,_lhsOidOccDefs,_lhsOidTySigDefOccGam,_lhsOidUseOccGam,_lhsOneedsError,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- MaybeExports ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Just:
         child just           : Exports 
      alternative Nothing:
-}
-- cata
sem_MaybeExports :: MaybeExports ->
                    T_MaybeExports
sem_MaybeExports (Prelude.Just x) =
    (sem_MaybeExports_Just (sem_Exports x))
sem_MaybeExports Prelude.Nothing =
    sem_MaybeExports_Nothing
-- semantic domain
type T_MaybeExports = FixityGam ->
                      UID ->
                      IdDefOccGam ->
                      Bool ->
                      Bool ->
                      HsName ->
                      NmLev ->
                      EHCOpts ->
                      PatchEhNmInInstance ->
                      ([HsName]) ->
                      ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_MaybeExports_Just :: T_Exports ->
                         T_MaybeExports
sem_MaybeExports_Just just_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _justOfixityGam :: FixityGam
              _justOgUniq :: UID
              _justOidGam :: IdDefOccGam
              _justOisMainMod :: Bool
              _justOisTopMod :: Bool
              _justOmoduleNm :: HsName
              _justOnmLev :: NmLev
              _justOopts :: EHCOpts
              _justOpatchEhNmInInstance :: PatchEhNmInInstance
              _justOtopInstanceNmL :: ([HsName])
              _justIerrSq :: ErrSq
              _justIgUniq :: UID
              _justIgathFixityGam :: FixityGam
              _justIidUseOccGam :: IdUseOccGam
              _justIpp :: PP_Doc
              _justIppWrap :: (PP_Doc -> PP_Doc)
              _justItopInstanceNmL :: ([HsName])
              _justIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _justIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _justIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _justIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _justIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _justIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _justIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _justIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _justItopInstanceNmL
              -- copy rule (down)
              _justOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _justOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _justOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _justOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _justOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _justOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _justOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _justOopts =
                  _lhsIopts
              -- copy rule (down)
              _justOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _justOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _justIerrSq,_justIgUniq,_justIgathFixityGam,_justIidUseOccGam,_justIpp,_justIppWrap,_justItopInstanceNmL,_justIundefOccGam) =
                  just_ _justOfixityGam _justOgUniq _justOidGam _justOisMainMod _justOisTopMod _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_MaybeExports_Nothing :: T_MaybeExports
sem_MaybeExports_Nothing =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- MaybeExpression ---------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : Maybe EH.Expr
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppMb                 : Maybe PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Just:
         child just           : Expression 
      alternative Nothing:
-}
-- cata
sem_MaybeExpression :: MaybeExpression ->
                       T_MaybeExpression
sem_MaybeExpression (Prelude.Just x) =
    (sem_MaybeExpression_Just (sem_Expression x))
sem_MaybeExpression Prelude.Nothing =
    sem_MaybeExpression_Nothing
-- semantic domain
type T_MaybeExpression = UID ->
                         FixityGam ->
                         UID ->
                         (Map.Map HsName [(HsName,HsName)]) ->
                         IdDefOccGam ->
                         HsName ->
                         NmLev ->
                         EHCOpts ->
                         PatchEhNmInInstance ->
                         (Set.Set Pragma.Pragma) ->
                         ([HsName]) ->
                         ( (Maybe EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(Maybe PP_Doc),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_MaybeExpression_Just :: T_Expression ->
                            T_MaybeExpression
sem_MaybeExpression_Just just_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppMb :: (Maybe PP_Doc)
              _lhsOeh :: (Maybe EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _justOcaseId :: UID
              _justOfixityGam :: FixityGam
              _justOgUniq :: UID
              _justOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _justOidGam :: IdDefOccGam
              _justOmoduleNm :: HsName
              _justOnmLev :: NmLev
              _justOopts :: EHCOpts
              _justOpatchEhNmInInstance :: PatchEhNmInInstance
              _justOpragmas :: (Set.Set Pragma.Pragma)
              _justOtopInstanceNmL :: ([HsName])
              _justIconNm :: Name
              _justIeh :: (EH.Expr)
              _justIerrSq :: ErrSq
              _justIgUniq :: UID
              _justIidUseOccGam :: IdUseOccGam
              _justIopChain :: (OpChain EH.Expr)
              _justIoperatorName :: MaybeName
              _justIpp :: PP_Doc
              _justIppWrap :: (PP_Doc -> PP_Doc)
              _justItopInstanceNmL :: ([HsName])
              _justIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 400, column 9)
              _lhsOppMb =
                  Just _justIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 462, column 9)
              _lhsOeh =
                  Just _justIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _justIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _justIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _justIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _justIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _justIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _justIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _justItopInstanceNmL
              -- copy rule (down)
              _justOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _justOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _justOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _justOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _justOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _justOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _justOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _justOopts =
                  _lhsIopts
              -- copy rule (down)
              _justOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _justOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _justOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _justIconNm,_justIeh,_justIerrSq,_justIgUniq,_justIidUseOccGam,_justIopChain,_justIoperatorName,_justIpp,_justIppWrap,_justItopInstanceNmL,_justIundefOccGam) =
                  just_ _justOcaseId _justOfixityGam _justOgUniq _justOgenerDerivMp _justOidGam _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOpragmas _justOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_MaybeExpression_Nothing :: T_MaybeExpression
sem_MaybeExpression_Nothing =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppMb :: (Maybe PP_Doc)
              _lhsOeh :: (Maybe EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 402, column 9)
              _lhsOppMb =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 456, column 31)
              _lhsOeh =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- MaybeImportSpecification ------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Just:
         child just           : ImportSpecification 
      alternative Nothing:
-}
-- cata
sem_MaybeImportSpecification :: MaybeImportSpecification ->
                                T_MaybeImportSpecification
sem_MaybeImportSpecification (Prelude.Just x) =
    (sem_MaybeImportSpecification_Just (sem_ImportSpecification x))
sem_MaybeImportSpecification Prelude.Nothing =
    sem_MaybeImportSpecification_Nothing
-- semantic domain
type T_MaybeImportSpecification = FixityGam ->
                                  UID ->
                                  IdDefOccGam ->
                                  Bool ->
                                  Bool ->
                                  HsName ->
                                  NmLev ->
                                  EHCOpts ->
                                  PatchEhNmInInstance ->
                                  ([HsName]) ->
                                  ( ErrSq,UID,FixityGam,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_MaybeImportSpecification_Just :: T_ImportSpecification ->
                                     T_MaybeImportSpecification
sem_MaybeImportSpecification_Just just_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _justOfixityGam :: FixityGam
              _justOgUniq :: UID
              _justOidGam :: IdDefOccGam
              _justOisMainMod :: Bool
              _justOisTopMod :: Bool
              _justOmoduleNm :: HsName
              _justOnmLev :: NmLev
              _justOopts :: EHCOpts
              _justOpatchEhNmInInstance :: PatchEhNmInInstance
              _justOtopInstanceNmL :: ([HsName])
              _justIerrSq :: ErrSq
              _justIgUniq :: UID
              _justIgathFixityGam :: FixityGam
              _justIidUseOccGam :: IdUseOccGam
              _justIpp :: PP_Doc
              _justIppWrap :: (PP_Doc -> PP_Doc)
              _justItopInstanceNmL :: ([HsName])
              _justIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _justIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _justIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _justIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _justIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _justIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _justIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _justIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _justItopInstanceNmL
              -- copy rule (down)
              _justOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _justOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _justOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _justOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _justOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _justOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _justOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _justOopts =
                  _lhsIopts
              -- copy rule (down)
              _justOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _justOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _justIerrSq,_justIgUniq,_justIgathFixityGam,_justIidUseOccGam,_justIpp,_justIppWrap,_justItopInstanceNmL,_justIundefOccGam) =
                  just_ _justOfixityGam _justOgUniq _justOidGam _justOisMainMod _justOisTopMod _justOmoduleNm _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_MaybeImportSpecification_Nothing :: T_MaybeImportSpecification
sem_MaybeImportSpecification_Nothing =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- MaybeType ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         doGenVarWild         : Bool
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : Maybe EH.TyExpr
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppMb                 : Maybe PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Just:
         child just           : Type 
         visit 0:
            local isAsPred    : _
      alternative Nothing:
         visit 0:
            local isAsPred    : _
-}
-- cata
sem_MaybeType :: MaybeType ->
                 T_MaybeType
sem_MaybeType (Prelude.Just x) =
    (sem_MaybeType_Just (sem_Type x))
sem_MaybeType Prelude.Nothing =
    sem_MaybeType_Nothing
-- semantic domain
type T_MaybeType = Bool ->
                   FixityGam ->
                   UID ->
                   IdDefOccGam ->
                   NmLev ->
                   EHCOpts ->
                   PatchEhNmInInstance ->
                   ([HsName]) ->
                   ( (Maybe EH.TyExpr),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(Maybe PP_Doc),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_MaybeType_Just :: T_Type ->
                      T_MaybeType
sem_MaybeType_Just just_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppMb :: (Maybe PP_Doc)
              _lhsOeh :: (Maybe EH.TyExpr)
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _justOdoGenVarWild :: Bool
              _justOfixityGam :: FixityGam
              _justOgUniq :: UID
              _justOidGam :: IdDefOccGam
              _justOisAsPred :: Bool
              _justOnmLev :: NmLev
              _justOopts :: EHCOpts
              _justOpatchEhNmInInstance :: PatchEhNmInInstance
              _justOtopInstanceNmL :: ([HsName])
              _justIconNm :: Name
              _justIeh :: (EH.TyExpr)
              _justIehMbAsPr :: (Maybe EH.PrExpr)
              _justIehMbAsPrL :: ([Maybe EH.PrExpr])
              _justIehMbAsTyPr :: (Maybe EH.TyExpr)
              _justIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _justIerrSq :: ErrSq
              _justIfreeTvarS :: HsNameS
              _justIgUniq :: UID
              _justIidUseOccGam :: IdUseOccGam
              _justImbRefConNm :: (Maybe Name)
              _justIopChain :: (OpChain EH.TyExpr)
              _justIoperatorName :: MaybeName
              _justIpp :: PP_Doc
              _justIppWrap :: (PP_Doc -> PP_Doc)
              _justItopInstanceNmL :: ([HsName])
              _justItyConIs :: TypeConFixedMeaning
              _justIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 406, column 9)
              _lhsOppMb =
                  Just _justIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 205, column 9)
              _lhsOeh =
                  Just _justIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _justIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _justIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _justIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _justIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _justIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _justIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _justIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _justItopInstanceNmL
              -- copy rule (down)
              _justOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _justOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _justOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _justOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _justOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _justOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _justOopts =
                  _lhsIopts
              -- copy rule (down)
              _justOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _justOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _justIconNm,_justIeh,_justIehMbAsPr,_justIehMbAsPrL,_justIehMbAsTyPr,_justIehMbAsTyPrL,_justIerrSq,_justIfreeTvarS,_justIgUniq,_justIidUseOccGam,_justImbRefConNm,_justIopChain,_justIoperatorName,_justIpp,_justIppWrap,_justItopInstanceNmL,_justItyConIs,_justIundefOccGam) =
                  just_ _justOdoGenVarWild _justOfixityGam _justOgUniq _justOidGam _justOisAsPred _justOnmLev _justOopts _justOpatchEhNmInInstance _justOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_MaybeType_Nothing :: T_MaybeType
sem_MaybeType_Nothing =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppMb :: (Maybe PP_Doc)
              _lhsOeh :: (Maybe EH.TyExpr)
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 408, column 9)
              _lhsOppMb =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 201, column 25)
              _lhsOeh =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppMb,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Module ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isMainMod            : Bool
         isTopMod             : Bool
         modEntToOrig         : ModEntRngMp
         modInScope           : ModEntDomMp
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.Expr
         errSq                : ErrSq
         fileHeaderPragmas    : Set.Set Pragma.Pragma
         gathFixityGam        : FixityGam
         gathIdGam            : IdDefOccGam
         idUseOccGam          : IdUseOccGam
         mainValExists        : Bool
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Module:
         child range          : {Range}
         child name           : {MaybeName}
         child fileheaderpragmas : Pragmas 
         child exports        : MaybeExports 
         child body           : Body 
         visit 0:
            local fileHeaderPragmas : _
            local opts        : _
            local errUndef    : _
            local errModName  : _
-}
-- cata
sem_Module :: Module ->
              T_Module
sem_Module (Module_Module _range _name _fileheaderpragmas _exports _body) =
    (sem_Module_Module _range _name (sem_Pragmas _fileheaderpragmas) (sem_MaybeExports _exports) (sem_Body _body))
-- semantic domain
type T_Module = FixityGam ->
                UID ->
                IdDefOccGam ->
                Bool ->
                Bool ->
                ModEntRngMp ->
                ModEntDomMp ->
                HsName ->
                NmLev ->
                EHCOpts ->
                PatchEhNmInInstance ->
                ([HsName]) ->
                ( (EH.Expr),ErrSq,(Set.Set Pragma.Pragma),UID,FixityGam,IdDefOccGam,IdUseOccGam,Bool,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Module_Module :: Range ->
                     MaybeName ->
                     T_Pragmas ->
                     T_MaybeExports ->
                     T_Body ->
                     T_Module
sem_Module_Module range_ name_ fileheaderpragmas_ exports_ body_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisMainMod
       _lhsIisTopMod
       _lhsImodEntToOrig
       _lhsImodInScope
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _bodyOpragmas :: (Set.Set Pragma.Pragma)
              _lhsOfileHeaderPragmas :: (Set.Set Pragma.Pragma)
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr)
              _lhsOgUniq :: UID
              _lhsOgathIdGam :: IdDefOccGam
              _lhsOmainValExists :: Bool
              _lhsOtopInstanceNmL :: ([HsName])
              _fileheaderpragmasOgUniq :: UID
              _fileheaderpragmasOidGam :: IdDefOccGam
              _fileheaderpragmasOnmLev :: NmLev
              _fileheaderpragmasOopts :: EHCOpts
              _fileheaderpragmasOpatchEhNmInInstance :: PatchEhNmInInstance
              _fileheaderpragmasOtopInstanceNmL :: ([HsName])
              _exportsOfixityGam :: FixityGam
              _exportsOgUniq :: UID
              _exportsOidGam :: IdDefOccGam
              _exportsOisMainMod :: Bool
              _exportsOisTopMod :: Bool
              _exportsOmoduleNm :: HsName
              _exportsOnmLev :: NmLev
              _exportsOopts :: EHCOpts
              _exportsOpatchEhNmInInstance :: PatchEhNmInInstance
              _exportsOtopInstanceNmL :: ([HsName])
              _bodyOfixityGam :: FixityGam
              _bodyOgUniq :: UID
              _bodyOidGam :: IdDefOccGam
              _bodyOisMainMod :: Bool
              _bodyOisTopMod :: Bool
              _bodyOmodEntToOrig :: ModEntRngMp
              _bodyOmodInScope :: ModEntDomMp
              _bodyOmoduleNm :: HsName
              _bodyOnmLev :: NmLev
              _bodyOopts :: EHCOpts
              _bodyOpatchEhNmInInstance :: PatchEhNmInInstance
              _bodyOtopInstanceNmL :: ([HsName])
              _fileheaderpragmasIerrSq :: ErrSq
              _fileheaderpragmasIgUniq :: UID
              _fileheaderpragmasIgathPragmas :: (Set.Set Pragma.Pragma)
              _fileheaderpragmasIidUseOccGam :: IdUseOccGam
              _fileheaderpragmasIpp :: PP_Doc
              _fileheaderpragmasIppWrap :: (PP_Doc -> PP_Doc)
              _fileheaderpragmasItopInstanceNmL :: ([HsName])
              _fileheaderpragmasIundefOccGam :: IdUseOccGam
              _exportsIerrSq :: ErrSq
              _exportsIgUniq :: UID
              _exportsIgathFixityGam :: FixityGam
              _exportsIidUseOccGam :: IdUseOccGam
              _exportsIpp :: PP_Doc
              _exportsIppWrap :: (PP_Doc -> PP_Doc)
              _exportsItopInstanceNmL :: ([HsName])
              _exportsIundefOccGam :: IdUseOccGam
              _bodyIeh :: (EH.Expr)
              _bodyIerrSq :: ErrSq
              _bodyIextraModImpL :: ([ModImp])
              _bodyIgUniq :: UID
              _bodyIgathFixityGam :: FixityGam
              _bodyIgathIdGam :: IdDefOccGam
              _bodyIidUseOccGam :: IdUseOccGam
              _bodyImainValExists :: Bool
              _bodyIpp :: PP_Doc
              _bodyIppWrap :: (PP_Doc -> PP_Doc)
              _bodyItopInstanceNmL :: ([HsName])
              _bodyIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 23, column 9)
              _fileHeaderPragmas =
                  _fileheaderpragmasIgathPragmas
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 23, column 9)
              _opts =
                  fst $ ehcOptUpdateWithPragmas _fileHeaderPragmas _lhsIopts
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 3, column 9)
              _errUndef =
                  let ns = [ (ioccNm o >#< ppParens (ioccKind o),Just (map (\o -> (uoccRange o,Nothing)) os))
                           | (o,os) <- gamToAssocDupL _bodyIundefOccGam, not $ hsnIsProd $ ioccNm $ o
                           ]
                  in  (if null ns then [] else [rngLift range_ mkErr_NamesNotIntrod' "" ns])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 16, column 9)
              _errModName =
                  case name_ of
                    Just n | n /= _lhsImoduleNm && not _lhsIisTopMod
                      -> [rngLift range_ Err_ModNameMismatch _lhsImoduleNm n]
                    _ -> []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 5, column 9)
              _lhsOerrSq =
                  Seq.firstNotEmpty [Seq.fromList _errUndef,Seq.fromList _errModName,_bodyIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 305, column 9)
              _bodyOpragmas =
                  _fileHeaderPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 2, column 43)
              _lhsOfileHeaderPragmas =
                  _fileHeaderPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _exportsIgathFixityGam `gamAddGam` _bodyIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _fileheaderpragmasIidUseOccGam `gamAddGam` _exportsIidUseOccGam `gamAddGam` _bodyIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _fileheaderpragmasIpp >-< _exportsIpp >-< _bodyIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _fileheaderpragmasIppWrap . _exportsIppWrap . _bodyIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _fileheaderpragmasIundefOccGam `gamUnion` _exportsIundefOccGam `gamUnion` _bodyIundefOccGam
              -- copy rule (up)
              _lhsOeh =
                  _bodyIeh
              -- copy rule (up)
              _lhsOgUniq =
                  _bodyIgUniq
              -- copy rule (up)
              _lhsOgathIdGam =
                  _bodyIgathIdGam
              -- copy rule (up)
              _lhsOmainValExists =
                  _bodyImainValExists
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _bodyItopInstanceNmL
              -- copy rule (down)
              _fileheaderpragmasOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _fileheaderpragmasOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _fileheaderpragmasOnmLev =
                  _lhsInmLev
              -- copy rule (from local)
              _fileheaderpragmasOopts =
                  _opts
              -- copy rule (down)
              _fileheaderpragmasOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _fileheaderpragmasOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _exportsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _exportsOgUniq =
                  _fileheaderpragmasIgUniq
              -- copy rule (down)
              _exportsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _exportsOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _exportsOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _exportsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _exportsOnmLev =
                  _lhsInmLev
              -- copy rule (from local)
              _exportsOopts =
                  _opts
              -- copy rule (down)
              _exportsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _exportsOtopInstanceNmL =
                  _fileheaderpragmasItopInstanceNmL
              -- copy rule (down)
              _bodyOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _bodyOgUniq =
                  _exportsIgUniq
              -- copy rule (down)
              _bodyOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _bodyOisMainMod =
                  _lhsIisMainMod
              -- copy rule (down)
              _bodyOisTopMod =
                  _lhsIisTopMod
              -- copy rule (down)
              _bodyOmodEntToOrig =
                  _lhsImodEntToOrig
              -- copy rule (down)
              _bodyOmodInScope =
                  _lhsImodInScope
              -- copy rule (down)
              _bodyOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _bodyOnmLev =
                  _lhsInmLev
              -- copy rule (from local)
              _bodyOopts =
                  _opts
              -- copy rule (down)
              _bodyOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _bodyOtopInstanceNmL =
                  _exportsItopInstanceNmL
              ( _fileheaderpragmasIerrSq,_fileheaderpragmasIgUniq,_fileheaderpragmasIgathPragmas,_fileheaderpragmasIidUseOccGam,_fileheaderpragmasIpp,_fileheaderpragmasIppWrap,_fileheaderpragmasItopInstanceNmL,_fileheaderpragmasIundefOccGam) =
                  fileheaderpragmas_ _fileheaderpragmasOgUniq _fileheaderpragmasOidGam _fileheaderpragmasOnmLev _fileheaderpragmasOopts _fileheaderpragmasOpatchEhNmInInstance _fileheaderpragmasOtopInstanceNmL
              ( _exportsIerrSq,_exportsIgUniq,_exportsIgathFixityGam,_exportsIidUseOccGam,_exportsIpp,_exportsIppWrap,_exportsItopInstanceNmL,_exportsIundefOccGam) =
                  exports_ _exportsOfixityGam _exportsOgUniq _exportsOidGam _exportsOisMainMod _exportsOisTopMod _exportsOmoduleNm _exportsOnmLev _exportsOopts _exportsOpatchEhNmInInstance _exportsOtopInstanceNmL
              ( _bodyIeh,_bodyIerrSq,_bodyIextraModImpL,_bodyIgUniq,_bodyIgathFixityGam,_bodyIgathIdGam,_bodyIidUseOccGam,_bodyImainValExists,_bodyIpp,_bodyIppWrap,_bodyItopInstanceNmL,_bodyIundefOccGam) =
                  body_ _bodyOfixityGam _bodyOgUniq _bodyOidGam _bodyOisMainMod _bodyOisTopMod _bodyOmodEntToOrig _bodyOmodInScope _bodyOmoduleNm _bodyOnmLev _bodyOopts _bodyOpatchEhNmInInstance _bodyOpragmas _bodyOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfileHeaderPragmas,_lhsOgUniq,_lhsOgathFixityGam,_lhsOgathIdGam,_lhsOidUseOccGam,_lhsOmainValExists,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Pattern -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.PatExpr
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         isVar                : Bool
         mbTopRefname         : Maybe HsName
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Literal:
         child range          : {Range}
         child sign           : {Int}
         child literal        : Literal 
         visit 0:
            local eqrefname   : _
            local idUseOccGamEq : _
            local errIdUseEq  : _
            local litnames    : _
            local litrefname  : _
            local litrefnames : _
            local idUseOccGam : _
            local errIdUse    : _
            local eqclassrefname : _
            local idUseOccGamCls : _
            local errIdUseCls : _
            local errSq       : _
            local isAsPred    : _
      alternative Variable:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local idDefOccGam : _
            local refname     : _
            local isWildcard  : _
            local idOccDef    : _
            local idOccDefsNoWildcard : _
            local idOccDefs   : _
            local pp          : _
            local isAsPred    : _
      alternative Constructor:
         child range          : {Range}
         child name           : {Name}
         child patterns       : Patterns 
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local conNm       : _
            local errSq       : _
            local pp          : _
            local isAsPred    : _
      alternative Parenthesized:
         child range          : {Range}
         child pattern        : Pattern 
         visit 0:
            local pp          : _
            local isAsPred    : _
      alternative As:
         child range          : {Range}
         child name           : {Name}
         child pattern        : Pattern 
         visit 0:
            local idDefOccGam : _
            local refname     : _
            local isWildcard  : _
            local idOccDef    : _
            local idOccDefsNoWildcard : _
            local idOccDefs   : _
            local pp          : _
            local isAsPred    : _
      alternative Wildcard:
         child range          : {Range}
         visit 0:
            local pp          : _
            local isAsPred    : _
      alternative Tuple:
         child range          : {Range}
         child arity          : {Int}
         child patterns       : Patterns 
         visit 0:
            local errArity    : _
            local errSq       : _
            local pp          : _
            local isAsPred    : _
      alternative Annotate:
         child range          : {Range}
         child annotation     : PatternAnnotation 
         child pattern        : Pattern 
         visit 0:
            local eh          : _
            local isAsPred    : _
      alternative Typed:
         child range          : {Range}
         child pattern        : Pattern 
         child type           : Type 
         visit 0:
            local idDefOccGamType : _
            local pp          : _
            local isAsPred    : _
            local doGenVarWild : _
      alternative InfixConstructor:
         child range          : {Range}
         child leftPattern    : Pattern 
         child constructorOperator : {Name}
         child rightPattern   : Pattern 
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local conNm       : _
            local errSq       : _
            local pp          : _
            local isAsPred    : _
      alternative List:
         child range          : {Range}
         child patterns       : Patterns 
         visit 0:
            local refnames    : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local isAsPred    : _
      alternative Record:
         child range          : {Range}
         child name           : {Name}
         child recordPatternBindings : RecordPatternBindings 
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local conNm       : _
            local errSq       : _
            local pp          : _
            local isAsPred    : _
      alternative RowRecordBinding:
         child range          : {Range}
         child pattern        : Pattern 
         child rowRecordPattternBindings : RowRecordPatternBindings 
         visit 0:
            local pp          : _
            local isAsPred    : _
      alternative RowRecordEmpty:
         child range          : {Range}
         visit 0:
            local pp          : _
            local isAsPred    : _
      alternative Irrefutable:
         child range          : {Range}
         child pattern        : Pattern 
         visit 0:
            local pp          : _
            local isAsPred    : _
      alternative Bang:
         child range          : {Range}
         child pattern        : Pattern 
         visit 0:
            local pp          : _
            local isAsPred    : _
-}
-- cata
sem_Pattern :: Pattern ->
               T_Pattern
sem_Pattern (Pattern_Literal _range _sign _literal) =
    (sem_Pattern_Literal _range _sign (sem_Literal _literal))
sem_Pattern (Pattern_Variable _range _name) =
    (sem_Pattern_Variable _range _name)
sem_Pattern (Pattern_Constructor _range _name _patterns) =
    (sem_Pattern_Constructor _range _name (sem_Patterns _patterns))
sem_Pattern (Pattern_Parenthesized _range _pattern) =
    (sem_Pattern_Parenthesized _range (sem_Pattern _pattern))
sem_Pattern (Pattern_As _range _name _pattern) =
    (sem_Pattern_As _range _name (sem_Pattern _pattern))
sem_Pattern (Pattern_Wildcard _range) =
    (sem_Pattern_Wildcard _range)
sem_Pattern (Pattern_Tuple _range _arity _patterns) =
    (sem_Pattern_Tuple _range _arity (sem_Patterns _patterns))
sem_Pattern (Pattern_Annotate _range _annotation _pattern) =
    (sem_Pattern_Annotate _range (sem_PatternAnnotation _annotation) (sem_Pattern _pattern))
sem_Pattern (Pattern_Typed _range _pattern _type) =
    (sem_Pattern_Typed _range (sem_Pattern _pattern) (sem_Type _type))
sem_Pattern (Pattern_InfixConstructor _range _leftPattern _constructorOperator _rightPattern) =
    (sem_Pattern_InfixConstructor _range (sem_Pattern _leftPattern) _constructorOperator (sem_Pattern _rightPattern))
sem_Pattern (Pattern_List _range _patterns) =
    (sem_Pattern_List _range (sem_Patterns _patterns))
sem_Pattern (Pattern_Record _range _name _recordPatternBindings) =
    (sem_Pattern_Record _range _name (sem_RecordPatternBindings _recordPatternBindings))
sem_Pattern (Pattern_RowRecordBinding _range _pattern _rowRecordPattternBindings) =
    (sem_Pattern_RowRecordBinding _range (sem_Pattern _pattern) (sem_RowRecordPatternBindings _rowRecordPattternBindings))
sem_Pattern (Pattern_RowRecordEmpty _range) =
    (sem_Pattern_RowRecordEmpty _range)
sem_Pattern (Pattern_Irrefutable _range _pattern) =
    (sem_Pattern_Irrefutable _range (sem_Pattern _pattern))
sem_Pattern (Pattern_Bang _range _pattern) =
    (sem_Pattern_Bang _range (sem_Pattern _pattern))
-- semantic domain
type T_Pattern = FixityGam ->
                 UID ->
                 IdDefOccGam ->
                 HsName ->
                 NmLev ->
                 EHCOpts ->
                 PatchEhNmInInstance ->
                 ([HsName]) ->
                 ( (EH.PatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,Bool,(Maybe HsName),PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Pattern_Literal :: Range ->
                       Int ->
                       T_Literal ->
                       T_Pattern
sem_Pattern_Literal range_ sign_ literal_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _literalOgUniq :: UID
              _literalOidGam :: IdDefOccGam
              _literalOnmLev :: NmLev
              _literalOopts :: EHCOpts
              _literalOpatchEhNmInInstance :: PatchEhNmInInstance
              _literalOtopInstanceNmL :: ([HsName])
              _literalIeh :: Literal
              _literalIerrSq :: ErrSq
              _literalIgUniq :: UID
              _literalIidUseOccGam :: IdUseOccGam
              _literalIpp :: PP_Doc
              _literalIppWrap :: (PP_Doc -> PP_Doc)
              _literalItopInstanceNmL :: ([HsName])
              _literalIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 517, column 29)
              (_eqrefname,_,_idUseOccGamEq,_errIdUseEq) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnClassEqFldEq] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 517, column 9)
              _litnames =
                  litNames _lhsIopts _literalIeh True sign_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 520, column 29)
              (_litrefname,_litrefnames,_idUseOccGam,_errIdUse) =
                  mkUseOccGam' _lhsIopts _lhsIidGam _litnames range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 522, column 29)
              (_eqclassrefname,_,_idUseOccGamCls,_errIdUseCls) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnClassEq] IdOcc_Class IdAsp_Class_Class range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 524, column 9)
              _lhsOidUseOccGam =
                  gamUnions
                      [ _idUseOccGam, _idUseOccGamEq
                      , _idUseOccGamCls
                      , _literalIidUseOccGam
                      ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 49, column 9)
              _errSq =
                  Seq.unions [ Seq.fromList _errIdUse, Seq.fromList _errIdUseEq
                             , Seq.fromList _errIdUseCls
                             , _literalIerrSq
                             ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 801, column 9)
              _lhsOeh =
                  let
                      mkc r = \c -> mke r (rngLift r EH.Expr_CConst c, Just $ SrcConst_Char c)
                      mke r = uncurry (rngLift r EH.PatExpr_Expr)
                  in  case _literalIeh of
                        Literal_Char   r   s -> mkc r $ head s
                        Literal_Int    r b s -> mke r (ehExpLitInt r b s sign_ _litrefnames)
                        Literal_String r   s
                          | ehcOptOverloadedStrings _lhsIopts -> mke r (ehExpLitString _lhsIopts r s _litrefnames)
                          | otherwise                         -> foldr (\c p -> ehPatConApp r (_litrefnames !! 0) [mkc r c,p]) (ehPatConApp r (_litrefnames !! 1) []) s
                        Literal_Float  r   s -> mke r (ehExpLitFloat r s sign_ _litrefnames)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _literalIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _literalIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _literalIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _literalIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _literalItopInstanceNmL
              -- copy rule (down)
              _literalOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _literalOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _literalOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _literalOopts =
                  _lhsIopts
              -- copy rule (down)
              _literalOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _literalOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _literalIeh,_literalIerrSq,_literalIgUniq,_literalIidUseOccGam,_literalIpp,_literalIppWrap,_literalItopInstanceNmL,_literalIundefOccGam) =
                  literal_ _literalOgUniq _literalOidGam _literalOnmLev _literalOopts _literalOpatchEhNmInInstance _literalOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Variable :: Range ->
                        Name ->
                        T_Pattern
sem_Pattern_Variable range_ name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 216, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var _idOccDefsNoWildcard
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 54, column 9)
              _refname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 100, column 9)
              _isWildcard =
                  hsnIsWild name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
              _idOccDef =
                  IdOcc _refname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
              _idOccDefsNoWildcard =
                  if _isWildcard then [] else [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 178, column 9)
              _idOccDefs =
                  _idOccDefsNoWildcard
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 227, column 9)
              _lhsOmbTopRefname =
                  if _isWildcard then Just _refname else Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 341, column 9)
              _pp =
                  pp name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 812, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_Var
                          (_lhsIpatchEhNmInInstance _refname)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 260, column 9)
              _lhsOisVar =
                  True
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Constructor :: Range ->
                           Name ->
                           T_Patterns ->
                           T_Pattern
sem_Pattern_Constructor range_ name_ patterns_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternsOfixityGam :: FixityGam
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternsOtopInstanceNmL :: ([HsName])
              _patternsIeh :: ([EH.PatExpr])
              _patternsIerrSq :: ErrSq
              _patternsIgUniq :: UID
              _patternsIidDefOccGam :: IdDefOccGam
              _patternsIidOccDefs :: ([IdOcc])
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 559, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 562, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_patternsIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 219, column 9)
              _conNm =
                  name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 45, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _patternsIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 343, column 9)
              _pp =
                  name_ >#< ppSpaces _patternsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 815, column 9)
              _lhsOeh =
                  ehPatConApp range_ _refname _patternsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternsIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternsIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternsItopInstanceNmL
              -- copy rule (down)
              _patternsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Parenthesized :: Range ->
                             T_Pattern ->
                             T_Pattern
sem_Pattern_Parenthesized range_ pattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOisVar :: Bool
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 345, column 9)
              _pp =
                  ppParens _patternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 817, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_Parens _patternIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternIgUniq
              -- copy rule (up)
              _lhsOisVar =
                  _patternIisVar
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_As :: Range ->
                  Name ->
                  T_Pattern ->
                  T_Pattern
sem_Pattern_As range_ name_ pattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOidDefOccGam :: IdDefOccGam
              _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOerrSq :: ErrSq
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOisVar :: Bool
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 216, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var _idOccDefsNoWildcard
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 218, column 9)
              _lhsOidDefOccGam =
                  _idDefOccGam `gamAddGam` _patternIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 54, column 9)
              _refname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 100, column 9)
              _isWildcard =
                  hsnIsWild name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
              _idOccDef =
                  IdOcc _refname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 174, column 9)
              _idOccDefsNoWildcard =
                  if _isWildcard then [] else [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 180, column 9)
              _idOccDefs =
                  _idOccDefsNoWildcard ++ _patternIidOccDefs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 227, column 9)
              _lhsOmbTopRefname =
                  if _isWildcard then Just _refname else Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 349, column 9)
              _pp =
                  name_ >|< "@" >|< _patternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 823, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_VarAs
                          (_lhsIpatchEhNmInInstance _refname)
                          _patternIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _idOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternIgUniq
              -- copy rule (up)
              _lhsOisVar =
                  _patternIisVar
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Wildcard :: Range ->
                        T_Pattern
sem_Pattern_Wildcard range_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 351, column 9)
              _pp =
                  pp hsnWild
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 827, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_Var hsnWild
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Tuple :: Range ->
                     Int ->
                     T_Patterns ->
                     T_Pattern
sem_Pattern_Tuple range_ arity_ patterns_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternsOfixityGam :: FixityGam
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternsOtopInstanceNmL :: ([HsName])
              _patternsIeh :: ([EH.PatExpr])
              _patternsIerrSq :: ErrSq
              _patternsIgUniq :: UID
              _patternsIidDefOccGam :: IdDefOccGam
              _patternsIidOccDefs :: ([IdOcc])
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 10, column 9)
              _errArity =
                  if arity_ == length _patternsIeh
                  then []
                  else [rngLift range_ Err_PatArity2 "pat " _pp arity_]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 56, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errArity, _patternsIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 347, column 9)
              _pp =
                  ppParensCommas' $ _patternsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 819, column 9)
              _lhsOeh =
                  foldl (\eh (n,p) -> ehRowRecPatExprUpd range_ (Just n) (rngLift range_ EH.RecPatExpr_Ext) p eh)
                        (rngLift range_ EH.PatExpr_Rec $ rngLift range_ EH.RecPatExpr_Empty)
                  $ zip positionalFldNames _patternsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternsIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternsIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternsItopInstanceNmL
              -- copy rule (down)
              _patternsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Annotate :: Range ->
                        T_PatternAnnotation ->
                        T_Pattern ->
                        T_Pattern
sem_Pattern_Annotate range_ annotation_ pattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PatExpr)
              _lhsOgUniq :: UID
              _lhsOisVar :: Bool
              _lhsOtopInstanceNmL :: ([HsName])
              _annotationOfixityGam :: FixityGam
              _annotationOgUniq :: UID
              _annotationOidGam :: IdDefOccGam
              _annotationOmoduleNm :: HsName
              _annotationOnmLev :: NmLev
              _annotationOopts :: EHCOpts
              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
              _annotationOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _annotationIeh :: (EH.PatExprAnn)
              _annotationIerrSq :: ErrSq
              _annotationIgUniq :: UID
              _annotationIidDefOccGam :: IdDefOccGam
              _annotationIidOccDefs :: ([IdOcc])
              _annotationIidUseOccGam :: IdUseOccGam
              _annotationIpp :: PP_Doc
              _annotationIppWrap :: (PP_Doc -> PP_Doc)
              _annotationItopInstanceNmL :: ([HsName])
              _annotationIundefOccGam :: IdUseOccGam
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 829, column 17)
              _eh =
                  rngLift range_ EH.PatExpr_Ann _annotationIeh _patternIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _annotationIerrSq `Seq.union` _patternIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _annotationIidDefOccGam `gamAddGam` _patternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _annotationIidOccDefs ++ _patternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _annotationIidUseOccGam `gamAddGam` _patternIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _annotationIpp >-< _patternIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _annotationIppWrap . _patternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _annotationIundefOccGam `gamUnion` _patternIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (up)
              _lhsOgUniq =
                  _patternIgUniq
              -- copy rule (up)
              _lhsOisVar =
                  _patternIisVar
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternItopInstanceNmL
              -- copy rule (down)
              _annotationOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _annotationOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _annotationOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _annotationOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _annotationOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _annotationOopts =
                  _lhsIopts
              -- copy rule (down)
              _annotationOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _annotationOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _patternOgUniq =
                  _annotationIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _patternOtopInstanceNmL =
                  _annotationItopInstanceNmL
              ( _annotationIeh,_annotationIerrSq,_annotationIgUniq,_annotationIidDefOccGam,_annotationIidOccDefs,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationIundefOccGam) =
                  annotation_ _annotationOfixityGam _annotationOgUniq _annotationOidGam _annotationOmoduleNm _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Typed :: Range ->
                     T_Pattern ->
                     T_Type ->
                     T_Pattern
sem_Pattern_Typed range_ pattern_ type_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _typeOidGam :: IdDefOccGam
              _lhsOmbTopRefname :: (Maybe HsName)
              _typeOnmLev :: NmLev
              _lhsOeh :: (EH.PatExpr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOisVar :: Bool
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOisAsPred :: Bool
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 220, column 9)
              _idDefOccGamType =
                  tvarS2IdDefOccGam _lhsInmLev range_ _typeIfreeTvarS
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 356, column 9)
              _typeOidGam =
                  gamUnion _idDefOccGamType _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 56, column 9)
              _typeOnmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 354, column 9)
              _pp =
                  _patternIpp >#< "::" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 831, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_TypeAs _typeIeh _patternIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 214, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq `Seq.union` _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam `gamAddGam` _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap . _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam `gamUnion` _typeIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOisVar =
                  _patternIisVar
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _typeOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typeOgUniq =
                  _patternIgUniq
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _typeOtopInstanceNmL =
                  _patternItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_InfixConstructor :: Range ->
                                T_Pattern ->
                                Name ->
                                T_Pattern ->
                                T_Pattern
sem_Pattern_InfixConstructor range_ leftPattern_ constructorOperator_ rightPattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _leftPatternOfixityGam :: FixityGam
              _leftPatternOgUniq :: UID
              _leftPatternOidGam :: IdDefOccGam
              _leftPatternOmoduleNm :: HsName
              _leftPatternOnmLev :: NmLev
              _leftPatternOopts :: EHCOpts
              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftPatternOtopInstanceNmL :: ([HsName])
              _rightPatternOfixityGam :: FixityGam
              _rightPatternOgUniq :: UID
              _rightPatternOidGam :: IdDefOccGam
              _rightPatternOmoduleNm :: HsName
              _rightPatternOnmLev :: NmLev
              _rightPatternOopts :: EHCOpts
              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightPatternOtopInstanceNmL :: ([HsName])
              _leftPatternIeh :: (EH.PatExpr)
              _leftPatternIerrSq :: ErrSq
              _leftPatternIgUniq :: UID
              _leftPatternIidDefOccGam :: IdDefOccGam
              _leftPatternIidOccDefs :: ([IdOcc])
              _leftPatternIidUseOccGam :: IdUseOccGam
              _leftPatternIisVar :: Bool
              _leftPatternImbTopRefname :: (Maybe HsName)
              _leftPatternIpp :: PP_Doc
              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
              _leftPatternItopInstanceNmL :: ([HsName])
              _leftPatternIundefOccGam :: IdUseOccGam
              _rightPatternIeh :: (EH.PatExpr)
              _rightPatternIerrSq :: ErrSq
              _rightPatternIgUniq :: UID
              _rightPatternIidDefOccGam :: IdDefOccGam
              _rightPatternIidOccDefs :: ([IdOcc])
              _rightPatternIidUseOccGam :: IdUseOccGam
              _rightPatternIisVar :: Bool
              _rightPatternImbTopRefname :: (Maybe HsName)
              _rightPatternIpp :: PP_Doc
              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
              _rightPatternItopInstanceNmL :: ([HsName])
              _rightPatternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 559, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 564, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_leftPatternIidUseOccGam,_rightPatternIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 221, column 9)
              _conNm =
                  constructorOperator_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 47, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _leftPatternIerrSq, _rightPatternIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 356, column 9)
              _pp =
                  _leftPatternIpp >#< constructorOperator_ >#< _rightPatternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 833, column 9)
              _lhsOeh =
                  ehPatConApp range_ _refname [_leftPatternIeh,_rightPatternIeh]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _leftPatternIidDefOccGam `gamAddGam` _rightPatternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _leftPatternIidOccDefs ++ _rightPatternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftPatternIppWrap . _rightPatternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _rightPatternIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightPatternItopInstanceNmL
              -- copy rule (down)
              _leftPatternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _leftPatternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _leftPatternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _leftPatternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _leftPatternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _leftPatternOopts =
                  _lhsIopts
              -- copy rule (down)
              _leftPatternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _leftPatternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _rightPatternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rightPatternOgUniq =
                  _leftPatternIgUniq
              -- copy rule (down)
              _rightPatternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rightPatternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _rightPatternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rightPatternOopts =
                  _lhsIopts
              -- copy rule (down)
              _rightPatternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rightPatternOtopInstanceNmL =
                  _leftPatternItopInstanceNmL
              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidDefOccGam,_leftPatternIidOccDefs,_leftPatternIidUseOccGam,_leftPatternIisVar,_leftPatternImbTopRefname,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternIundefOccGam) =
                  leftPattern_ _leftPatternOfixityGam _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL
              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidDefOccGam,_rightPatternIidOccDefs,_rightPatternIidUseOccGam,_rightPatternIisVar,_rightPatternImbTopRefname,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternIundefOccGam) =
                  rightPattern_ _rightPatternOfixityGam _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_List :: Range ->
                    T_Patterns ->
                    T_Pattern
sem_Pattern_List range_ patterns_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternsOfixityGam :: FixityGam
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternsOtopInstanceNmL :: ([HsName])
              _patternsIeh :: ([EH.PatExpr])
              _patternsIerrSq :: ErrSq
              _patternsIgUniq :: UID
              _patternsIidDefOccGam :: IdDefOccGam
              _patternsIidOccDefs :: ([IdOcc])
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 566, column 29)
              (_,_refnames,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Con range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 568, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_patternsIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 45, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _patternsIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 358, column 9)
              _pp =
                  ppBracketsCommas _patternsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 835, column 9)
              _lhsOeh =
                  foldr (\l r -> ehPatConApp range_ (_refnames !! 0) [l,r]) (appCon (_refnames !! 1)) _patternsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternsIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternsIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternsItopInstanceNmL
              -- copy rule (down)
              _patternsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidDefOccGam,_patternsIidOccDefs,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsIundefOccGam) =
                  patterns_ _patternsOfixityGam _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Record :: Range ->
                      Name ->
                      T_RecordPatternBindings ->
                      T_Pattern
sem_Pattern_Record range_ name_ recordPatternBindings_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _recordPatternBindingsOfixityGam :: FixityGam
              _recordPatternBindingsOgUniq :: UID
              _recordPatternBindingsOidGam :: IdDefOccGam
              _recordPatternBindingsOmoduleNm :: HsName
              _recordPatternBindingsOnmLev :: NmLev
              _recordPatternBindingsOopts :: EHCOpts
              _recordPatternBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
              _recordPatternBindingsOtopInstanceNmL :: ([HsName])
              _recordPatternBindingsIeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
              _recordPatternBindingsIerrSq :: ErrSq
              _recordPatternBindingsIgUniq :: UID
              _recordPatternBindingsIidDefOccGam :: IdDefOccGam
              _recordPatternBindingsIidOccDefs :: ([IdOcc])
              _recordPatternBindingsIidUseOccGam :: IdUseOccGam
              _recordPatternBindingsIpp :: PP_Doc
              _recordPatternBindingsIppL :: ([PP_Doc])
              _recordPatternBindingsIppWrap :: (PP_Doc -> PP_Doc)
              _recordPatternBindingsItopInstanceNmL :: ([HsName])
              _recordPatternBindingsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 559, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [_conNm] IdOcc_Val IdAsp_Val_Con range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 570, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_recordPatternBindingsIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 219, column 9)
              _conNm =
                  name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 54, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _recordPatternBindingsIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 360, column 9)
              _pp =
                  name_ >#< ppCurlysCommas' _recordPatternBindingsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 837, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_DataFields $ foldl (flip ($)) (rngLift range_ EH.DataFieldPatExpr_Con _refname) _recordPatternBindingsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _recordPatternBindingsIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _recordPatternBindingsIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _recordPatternBindingsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _recordPatternBindingsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _recordPatternBindingsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _recordPatternBindingsItopInstanceNmL
              -- copy rule (down)
              _recordPatternBindingsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _recordPatternBindingsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _recordPatternBindingsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _recordPatternBindingsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _recordPatternBindingsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _recordPatternBindingsOopts =
                  _lhsIopts
              -- copy rule (down)
              _recordPatternBindingsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _recordPatternBindingsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _recordPatternBindingsIeh,_recordPatternBindingsIerrSq,_recordPatternBindingsIgUniq,_recordPatternBindingsIidDefOccGam,_recordPatternBindingsIidOccDefs,_recordPatternBindingsIidUseOccGam,_recordPatternBindingsIpp,_recordPatternBindingsIppL,_recordPatternBindingsIppWrap,_recordPatternBindingsItopInstanceNmL,_recordPatternBindingsIundefOccGam) =
                  recordPatternBindings_ _recordPatternBindingsOfixityGam _recordPatternBindingsOgUniq _recordPatternBindingsOidGam _recordPatternBindingsOmoduleNm _recordPatternBindingsOnmLev _recordPatternBindingsOopts _recordPatternBindingsOpatchEhNmInInstance _recordPatternBindingsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_RowRecordBinding :: Range ->
                                T_Pattern ->
                                T_RowRecordPatternBindings ->
                                T_Pattern
sem_Pattern_RowRecordBinding range_ pattern_ rowRecordPattternBindings_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _rowRecordPattternBindingsOfixityGam :: FixityGam
              _rowRecordPattternBindingsOgUniq :: UID
              _rowRecordPattternBindingsOidGam :: IdDefOccGam
              _rowRecordPattternBindingsOmoduleNm :: HsName
              _rowRecordPattternBindingsOnmLev :: NmLev
              _rowRecordPattternBindingsOopts :: EHCOpts
              _rowRecordPattternBindingsOpatchEhNmInInstance :: PatchEhNmInInstance
              _rowRecordPattternBindingsOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              _rowRecordPattternBindingsIeh :: ([EH.PatExpr -> EH.PatExpr])
              _rowRecordPattternBindingsIerrSq :: ErrSq
              _rowRecordPattternBindingsIgUniq :: UID
              _rowRecordPattternBindingsIidDefOccGam :: IdDefOccGam
              _rowRecordPattternBindingsIidOccDefs :: ([IdOcc])
              _rowRecordPattternBindingsIidUseOccGam :: IdUseOccGam
              _rowRecordPattternBindingsIpp :: PP_Doc
              _rowRecordPattternBindingsIppL :: ([PP_Doc])
              _rowRecordPattternBindingsIppWrap :: (PP_Doc -> PP_Doc)
              _rowRecordPattternBindingsItopInstanceNmL :: ([HsName])
              _rowRecordPattternBindingsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 362, column 9)
              _pp =
                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _patternIpp)
                            _rowRecordPattternBindingsIppL _patternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 839, column 9)
              _lhsOeh =
                  foldl (flip ($)) _patternIeh _rowRecordPattternBindingsIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq `Seq.union` _rowRecordPattternBindingsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternIidDefOccGam `gamAddGam` _rowRecordPattternBindingsIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternIidOccDefs ++ _rowRecordPattternBindingsIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam `gamAddGam` _rowRecordPattternBindingsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap . _rowRecordPattternBindingsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam `gamUnion` _rowRecordPattternBindingsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _rowRecordPattternBindingsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rowRecordPattternBindingsItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _rowRecordPattternBindingsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rowRecordPattternBindingsOgUniq =
                  _patternIgUniq
              -- copy rule (down)
              _rowRecordPattternBindingsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rowRecordPattternBindingsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _rowRecordPattternBindingsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rowRecordPattternBindingsOopts =
                  _lhsIopts
              -- copy rule (down)
              _rowRecordPattternBindingsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rowRecordPattternBindingsOtopInstanceNmL =
                  _patternItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
              ( _rowRecordPattternBindingsIeh,_rowRecordPattternBindingsIerrSq,_rowRecordPattternBindingsIgUniq,_rowRecordPattternBindingsIidDefOccGam,_rowRecordPattternBindingsIidOccDefs,_rowRecordPattternBindingsIidUseOccGam,_rowRecordPattternBindingsIpp,_rowRecordPattternBindingsIppL,_rowRecordPattternBindingsIppWrap,_rowRecordPattternBindingsItopInstanceNmL,_rowRecordPattternBindingsIundefOccGam) =
                  rowRecordPattternBindings_ _rowRecordPattternBindingsOfixityGam _rowRecordPattternBindingsOgUniq _rowRecordPattternBindingsOidGam _rowRecordPattternBindingsOmoduleNm _rowRecordPattternBindingsOnmLev _rowRecordPattternBindingsOopts _rowRecordPattternBindingsOpatchEhNmInInstance _rowRecordPattternBindingsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_RowRecordEmpty :: Range ->
                              T_Pattern
sem_Pattern_RowRecordEmpty range_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOisVar :: Bool
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 365, column 9)
              _pp =
                  hsnORec >|< hsnCRec
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 841, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_Rec (rngLift range_ EH.RecPatExpr_Empty)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 264, column 9)
              _lhsOisVar =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Irrefutable :: Range ->
                           T_Pattern ->
                           T_Pattern
sem_Pattern_Irrefutable range_ pattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOisVar :: Bool
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 367, column 9)
              _pp =
                  "~" >|< _patternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 843, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_Irrefutable _patternIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternIgUniq
              -- copy rule (up)
              _lhsOisVar =
                  _patternIisVar
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pattern_Bang :: Range ->
                    T_Pattern ->
                    T_Pattern
sem_Pattern_Bang range_ pattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOmbTopRefname :: (Maybe HsName)
              _lhsOeh :: (EH.PatExpr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOisVar :: Bool
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 229, column 9)
              _lhsOmbTopRefname =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 369, column 9)
              _pp =
                  "!" >|< _patternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 845, column 9)
              _lhsOeh =
                  rngLift range_ EH.PatExpr_Bang        _patternIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 188, column 9)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternIgUniq
              -- copy rule (up)
              _lhsOisVar =
                  _patternIisVar
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOisVar,_lhsOmbTopRefname,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- PatternAnnotation -------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.PatExprAnn
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Empty:
         visit 0:
            local eh          : _
-}
-- cata
sem_PatternAnnotation :: PatternAnnotation ->
                         T_PatternAnnotation
sem_PatternAnnotation (PatternAnnotation_Empty) =
    (sem_PatternAnnotation_Empty)
-- semantic domain
type T_PatternAnnotation = FixityGam ->
                           UID ->
                           IdDefOccGam ->
                           HsName ->
                           NmLev ->
                           EHCOpts ->
                           PatchEhNmInInstance ->
                           ([HsName]) ->
                           ( (EH.PatExprAnn),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_PatternAnnotation_Empty :: T_PatternAnnotation
sem_PatternAnnotation_Empty =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.PatExprAnn)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 902, column 17)
              _eh =
                  EH.PatExprAnn_Empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Patterns ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.PatExpr]
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Pattern 
         child tl             : Patterns 
      alternative Nil:
-}
-- cata
sem_Patterns :: Patterns ->
                T_Patterns
sem_Patterns list =
    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))
-- semantic domain
type T_Patterns = FixityGam ->
                  UID ->
                  IdDefOccGam ->
                  HsName ->
                  NmLev ->
                  EHCOpts ->
                  PatchEhNmInInstance ->
                  ([HsName]) ->
                  ( ([EH.PatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Patterns_Cons :: T_Pattern ->
                     T_Patterns ->
                     T_Patterns
sem_Patterns_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.PatExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.PatExpr)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidDefOccGam :: IdDefOccGam
              _hdIidOccDefs :: ([IdOcc])
              _hdIidUseOccGam :: IdUseOccGam
              _hdIisVar :: Bool
              _hdImbTopRefname :: (Maybe HsName)
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.PatExpr])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidDefOccGam :: IdDefOccGam
              _tlIidOccDefs :: ([IdOcc])
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 426, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 795, column 24)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _hdIidOccDefs ++ _tlIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIisVar,_hdImbTopRefname,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Patterns_Nil :: T_Patterns
sem_Patterns_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.PatExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 428, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 795, column 24)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Pragma ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathPragmas          : Set.Set Pragma.Pragma
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Language:
         child range          : {Range}
         child pragmas        : {Names}
         visit 0:
            local pragmaNames : _
            local pp          : _
      alternative OptionsUHC:
         child range          : {Range}
         child options        : {String}
         visit 0:
            local pragmaNames : _
      alternative Derivable:
         child range          : {Range}
         child className      : {Name}
         child fieldName      : {Name}
         child defaultName    : {Name}
         visit 0:
            local pp          : _
      alternative ExcludeIfTarget:
         child range          : {Range}
         child targetNames    : {[String]}
         visit 0:
            local targets     : _
            local pp          : _
-}
-- cata
sem_Pragma :: Pragma ->
              T_Pragma
sem_Pragma (Pragma_Language _range _pragmas) =
    (sem_Pragma_Language _range _pragmas)
sem_Pragma (Pragma_OptionsUHC _range _options) =
    (sem_Pragma_OptionsUHC _range _options)
sem_Pragma (Pragma_Derivable _range _className _fieldName _defaultName) =
    (sem_Pragma_Derivable _range _className _fieldName _defaultName)
sem_Pragma (Pragma_ExcludeIfTarget _range _targetNames) =
    (sem_Pragma_ExcludeIfTarget _range _targetNames)
-- semantic domain
type T_Pragma = UID ->
                IdDefOccGam ->
                NmLev ->
                EHCOpts ->
                PatchEhNmInInstance ->
                ([HsName]) ->
                ( ErrSq,UID,(Set.Set Pragma.Pragma),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Pragma_Language :: Range ->
                       Names ->
                       T_Pragma
sem_Pragma_Language range_ pragmas_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 6, column 9)
              _pragmaNames =
                  [ p |      p  <- map show pragmas_ ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 12, column 9)
              _lhsOgathPragmas =
                  Set.fromList $ catMaybes [ Map.lookup p Pragma.allSimplePragmaMp | p <- _pragmaNames ]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 91, column 17)
              _pp =
                  "LANGUAGE" >#< ppCommas pragmas_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pragma_OptionsUHC :: Range ->
                         String ->
                         T_Pragma
sem_Pragma_OptionsUHC range_ options_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 8, column 9)
              _pragmaNames =
                  []
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 16, column 9)
              _lhsOgathPragmas =
                  Set.singleton (Pragma.Pragma_OptionsUHC options_)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pragma_Derivable :: Range ->
                        Name ->
                        Name ->
                        Name ->
                        T_Pragma
sem_Pragma_Derivable range_ className_ fieldName_ defaultName_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 14, column 9)
              _lhsOgathPragmas =
                  Set.singleton (Pragma.Pragma_Derivable className_ fieldName_ defaultName_)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 93, column 17)
              _pp =
                  "DERIVABLE" >#< className_ >#< fieldName_ >#< defaultName_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pragma_ExcludeIfTarget :: Range ->
                              ([String]) ->
                              T_Pragma
sem_Pragma_ExcludeIfTarget range_ targetNames_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 18, column 9)
              _targets =
                  catMaybes $ map (\t -> Map.lookup t supportedTargetMp) targetNames_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 19, column 9)
              _lhsOgathPragmas =
                  Set.singleton (Pragma.Pragma_ExcludeIfTarget _targets)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 95, column 17)
              _pp =
                  "EXCLUDE_IF_TARGET" >#< ppCommas targetNames_
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Pragmas -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         errSq                : ErrSq
         gathPragmas          : Set.Set Pragma.Pragma
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Pragma 
         child tl             : Pragmas 
      alternative Nil:
-}
-- cata
sem_Pragmas :: Pragmas ->
               T_Pragmas
sem_Pragmas list =
    (Prelude.foldr sem_Pragmas_Cons sem_Pragmas_Nil (Prelude.map sem_Pragma list))
-- semantic domain
type T_Pragmas = UID ->
                 IdDefOccGam ->
                 NmLev ->
                 EHCOpts ->
                 PatchEhNmInInstance ->
                 ([HsName]) ->
                 ( ErrSq,UID,(Set.Set Pragma.Pragma),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Pragmas_Cons :: T_Pragma ->
                    T_Pragmas ->
                    T_Pragmas
sem_Pragmas_Cons hd_ tl_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathPragmas :: (Set.Set Pragma.Pragma)
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIgathPragmas :: (Set.Set Pragma.Pragma)
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  _hdIgathPragmas `Set.union` _tlIgathPragmas
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIerrSq,_hdIgUniq,_hdIgathPragmas,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOgUniq _hdOidGam _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIerrSq,_tlIgUniq,_tlIgathPragmas,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Pragmas_Nil :: T_Pragmas
sem_Pragmas_Nil =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOgathPragmas :: (Set.Set Pragma.Pragma)
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pragmas.ag"(line 1, column 49)
              _lhsOgathPragmas =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOerrSq,_lhsOgUniq,_lhsOgathPragmas,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Qualifier ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         moduleNm             : HsName
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         idGam                : IdDefOccGam
         nmLev                : NmLev
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.Expr -> EH.Expr
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Guard:
         child range          : {Range}
         child guard          : Expression 
         visit 0:
            local valrefnames : _
            local idUseOccGamVal : _
            local errIdUseVal : _
            local typerefname : _
            local idUseOccGamType : _
            local errIdUseType : _
            local idUseOccGam : _
            local errSq       : _
      alternative Let:
         child range          : {Range}
         child declarations   : Declarations 
         visit 0:
            local idGam       : _
            local sccOrder    : _
            local mkSccLet    : _
            local errReorder  : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
      alternative Generator:
         child range          : {Range}
         child pattern        : Pattern 
         child expression     : Expression 
         visit 0:
            local refnames    : _
            local idUseOccGam : _
            local errIdUse    : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
      alternative Empty:
         child range          : {Range}
         visit 0:
            local refnames    : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
-}
-- cata
sem_Qualifier :: Qualifier ->
                 T_Qualifier
sem_Qualifier (Qualifier_Guard _range _guard) =
    (sem_Qualifier_Guard _range (sem_Expression _guard))
sem_Qualifier (Qualifier_Let _range _declarations) =
    (sem_Qualifier_Let _range (sem_Declarations _declarations))
sem_Qualifier (Qualifier_Generator _range _pattern _expression) =
    (sem_Qualifier_Generator _range (sem_Pattern _pattern) (sem_Expression _expression))
sem_Qualifier (Qualifier_Empty _range) =
    (sem_Qualifier_Empty _range)
-- semantic domain
type T_Qualifier = UID ->
                   FixityGam ->
                   UID ->
                   (Map.Map HsName [(HsName,HsName)]) ->
                   IdDefOccGam ->
                   HsName ->
                   NmLev ->
                   EHCOpts ->
                   PatchEhNmInInstance ->
                   (Set.Set Pragma.Pragma) ->
                   ([HsName]) ->
                   ( (EH.Expr -> EH.Expr),ErrSq,UID,FixityGam,IdDefOccGam,IdUseOccGam,NmLev,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Qualifier_Guard :: Range ->
                       T_Expression ->
                       T_Qualifier
sem_Qualifier_Guard range_ guard_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOidGam :: IdDefOccGam
              _lhsOnmLev :: NmLev
              _lhsOtopInstanceNmL :: ([HsName])
              _guardOcaseId :: UID
              _guardOfixityGam :: FixityGam
              _guardOgUniq :: UID
              _guardOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _guardOidGam :: IdDefOccGam
              _guardOmoduleNm :: HsName
              _guardOnmLev :: NmLev
              _guardOopts :: EHCOpts
              _guardOpatchEhNmInInstance :: PatchEhNmInInstance
              _guardOpragmas :: (Set.Set Pragma.Pragma)
              _guardOtopInstanceNmL :: ([HsName])
              _guardIconNm :: Name
              _guardIeh :: (EH.Expr)
              _guardIerrSq :: ErrSq
              _guardIgUniq :: UID
              _guardIidUseOccGam :: IdUseOccGam
              _guardIopChain :: (OpChain EH.Expr)
              _guardIoperatorName :: MaybeName
              _guardIpp :: PP_Doc
              _guardIppWrap :: (PP_Doc -> PP_Doc)
              _guardItopInstanceNmL :: ([HsName])
              _guardIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 532, column 29)
              (_,_valrefnames,_idUseOccGamVal,_errIdUseVal) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnTrue,hsnFalse,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 534, column 29)
              (_typerefname,_,_idUseOccGamType,_errIdUseType) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnBool] IdOcc_Type IdAsp_Type_Con range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 532, column 9)
              _idUseOccGam =
                  gamUnions [_idUseOccGamVal,_idUseOccGamType]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 537, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_guardIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 99, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUseVal, Seq.fromList _errIdUseType, _guardIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 608, column 9)
              _lhsOeh =
                  \e -> EH.mkIf' (_typerefname : _valrefnames) range_ _guardIeh e (appCon (_valrefnames !! 2))
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _guardIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _guardIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _guardIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _guardIgUniq
              -- copy rule (chain)
              _lhsOidGam =
                  _lhsIidGam
              -- copy rule (chain)
              _lhsOnmLev =
                  _lhsInmLev
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _guardItopInstanceNmL
              -- copy rule (down)
              _guardOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _guardOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _guardOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _guardOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _guardOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _guardOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _guardOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _guardOopts =
                  _lhsIopts
              -- copy rule (down)
              _guardOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _guardOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _guardOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _guardIconNm,_guardIeh,_guardIerrSq,_guardIgUniq,_guardIidUseOccGam,_guardIopChain,_guardIoperatorName,_guardIpp,_guardIppWrap,_guardItopInstanceNmL,_guardIundefOccGam) =
                  guard_ _guardOcaseId _guardOfixityGam _guardOgUniq _guardOgenerDerivMp _guardOidGam _guardOmoduleNm _guardOnmLev _guardOopts _guardOpatchEhNmInInstance _guardOpragmas _guardOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Qualifier_Let :: Range ->
                     T_Declarations ->
                     T_Qualifier
sem_Qualifier_Let range_ declarations_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOidGam :: IdDefOccGam
              _lhsOnmLev :: NmLev
              _lhsOtopInstanceNmL :: ([HsName])
              _declarationsOcaseId :: UID
              _declarationsOfixityGam :: FixityGam
              _declarationsOgUniq :: UID
              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _declarationsOidGam :: IdDefOccGam
              _declarationsOmoduleNm :: HsName
              _declarationsOnmLev :: NmLev
              _declarationsOopts :: EHCOpts
              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
              _declarationsOtopInstanceNmL :: ([HsName])
              _declarationsIeh :: ([EH.Decl])
              _declarationsIerrSq :: ErrSq
              _declarationsIgUniq :: UID
              _declarationsIgathFixityGam :: FixityGam
              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
              _declarationsIidDefOccGam :: IdDefOccGam
              _declarationsIidDpdMp :: IdDpdMp
              _declarationsIidOccDefs :: ([IdOcc])
              _declarationsIidTySigDefOccGam :: IdDefOccGam
              _declarationsIidUseOccGam :: IdUseOccGam
              _declarationsIneedsError :: Bool
              _declarationsIpp :: PP_Doc
              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
              _declarationsItopInstanceNmL :: ([HsName])
              _declarationsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 396, column 9)
              _idGam =
                  gamUnion _declarationsIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 899, column 9)
              _sccOrder =
                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1031, column 29)
              (_mkSccLet,_,_errReorder) =
                  mkIdOccSccEH range_ False _declarationsIidDefOccGam (Just _sccOrder)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 77, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 127, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 97, column 9)
              _errSq =
                  Seq.firstNotEmpty [Seq.fromList _errDupIntro, _declarationsIerrSq, Seq.fromList _errReorder]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 269, column 9)
              _pp =
                  "let" >#< _declarationsIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 610, column 9)
              _lhsOeh =
                  _mkSccLet
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _declarationsIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _declarationsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _declarationsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _declarationsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _declarationsIgUniq
              -- copy rule (from local)
              _lhsOidGam =
                  _idGam
              -- copy rule (from local)
              _lhsOnmLev =
                  _nmLev
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _declarationsItopInstanceNmL
              -- copy rule (down)
              _declarationsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _declarationsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _declarationsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _declarationsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _declarationsOidGam =
                  _idGam
              -- copy rule (down)
              _declarationsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _declarationsOnmLev =
                  _nmLev
              -- copy rule (down)
              _declarationsOopts =
                  _lhsIopts
              -- copy rule (down)
              _declarationsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _declarationsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _declarationsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidOccDefs,_declarationsIidTySigDefOccGam,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsIundefOccGam) =
                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Qualifier_Generator :: Range ->
                           T_Pattern ->
                           T_Expression ->
                           T_Qualifier
sem_Qualifier_Generator range_ pattern_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOeh :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOnmLev :: NmLev
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 398, column 9)
              _lhsOidGam =
                  gamUnion _patternIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 539, column 29)
              (_,_refnames,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnPrelConcatMap,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 541, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_patternIidUseOccGam,_expressionIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 77, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 125, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _patternIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 101, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errIdUse, _patternIerrSq, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 271, column 9)
              _pp =
                  _patternIpp >#< "<-" >#< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 612, column 9)
              _lhsOeh =
                  ehGenerator
                     range_ _patternIeh
                     (\e -> ehExpVarApp range_ (_refnames !! 0) [e,_expressionIeh])
                     (appCon (_refnames !! 1))
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap . _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam `gamUnion` _expressionIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (from local)
              _lhsOnmLev =
                  _nmLev
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _patternOnmLev =
                  _nmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _expressionOgUniq =
                  _patternIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _expressionOnmLev =
                  _nmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _expressionOtopInstanceNmL =
                  _patternItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Qualifier_Empty :: Range ->
                       T_Qualifier
sem_Qualifier_Empty range_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOidGam :: IdDefOccGam
              _lhsOnmLev :: NmLev
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 543, column 29)
              (_,_refnames,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnDataListAltCons,hsnDataListAltNil] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 103, column 9)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 617, column 9)
              _lhsOeh =
                  \e -> ehExpConApp range_ (_refnames !! 0) [e,appCon (_refnames !! 1)]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOidGam =
                  _lhsIidGam
              -- copy rule (chain)
              _lhsOnmLev =
                  _lhsInmLev
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Qualifiers --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         idGam                : IdDefOccGam
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.Expr -> EH.Expr]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Qualifier 
         child tl             : Qualifiers 
         visit 0:
            local fixityGam   : _
      alternative Nil:
-}
-- cata
sem_Qualifiers :: Qualifiers ->
                  T_Qualifiers
sem_Qualifiers list =
    (Prelude.foldr sem_Qualifiers_Cons sem_Qualifiers_Nil (Prelude.map sem_Qualifier list))
-- semantic domain
type T_Qualifiers = UID ->
                    FixityGam ->
                    UID ->
                    (Map.Map HsName [(HsName,HsName)]) ->
                    IdDefOccGam ->
                    HsName ->
                    NmLev ->
                    EHCOpts ->
                    PatchEhNmInInstance ->
                    (Set.Set Pragma.Pragma) ->
                    ([HsName]) ->
                    ( ([EH.Expr -> EH.Expr]),ErrSq,UID,IdDefOccGam,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Qualifiers_Cons :: T_Qualifier ->
                       T_Qualifiers ->
                       T_Qualifiers
sem_Qualifiers_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.Expr -> EH.Expr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOidGam :: IdDefOccGam
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.Expr -> EH.Expr)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathFixityGam :: FixityGam
              _hdIidGam :: IdDefOccGam
              _hdIidUseOccGam :: IdUseOccGam
              _hdInmLev :: NmLev
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.Expr -> EH.Expr])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidGam :: IdDefOccGam
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 434, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 35, column 9)
              _fixityGam =
                  _hdIgathFixityGam `gamUnion` _lhsIfixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 602, column 26)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOidGam =
                  _tlIidGam
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _hdOfixityGam =
                  _fixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _tlOfixityGam =
                  _fixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (chain)
              _tlOidGam =
                  _hdIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (chain)
              _tlOnmLev =
                  _hdInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidGam,_hdIidUseOccGam,_hdInmLev,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidGam,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Qualifiers_Nil :: T_Qualifiers
sem_Qualifiers_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.Expr -> EH.Expr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOidGam :: IdDefOccGam
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 436, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 602, column 26)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOidGam =
                  _lhsIidGam
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidGam,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RecordExpressionBinding -------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.DataFieldExpr -> EH.DataFieldExpr
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Binding:
         child range          : {Range}
         child name           : {Name}
         child expression     : Expression 
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
-}
-- cata
sem_RecordExpressionBinding :: RecordExpressionBinding ->
                               T_RecordExpressionBinding
sem_RecordExpressionBinding (RecordExpressionBinding_Binding _range _name _expression) =
    (sem_RecordExpressionBinding_Binding _range _name (sem_Expression _expression))
-- semantic domain
type T_RecordExpressionBinding = UID ->
                                 FixityGam ->
                                 UID ->
                                 (Map.Map HsName [(HsName,HsName)]) ->
                                 IdDefOccGam ->
                                 HsName ->
                                 NmLev ->
                                 EHCOpts ->
                                 PatchEhNmInInstance ->
                                 (Set.Set Pragma.Pragma) ->
                                 ([HsName]) ->
                                 ( (EH.DataFieldExpr -> EH.DataFieldExpr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RecordExpressionBinding_Binding :: Range ->
                                       Name ->
                                       T_Expression ->
                                       T_RecordExpressionBinding
sem_RecordExpressionBinding_Binding range_ name_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOeh :: (EH.DataFieldExpr -> EH.DataFieldExpr)
              _lhsOerrSq :: ErrSq
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 604, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 606, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_expressionIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 107, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 285, column 9)
              _pp =
                  name_ >|< "=" >|< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 642, column 9)
              _lhsOeh =
                  \df -> rngLift range_ EH.DataFieldExpr_Upd df _refname _expressionIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RecordExpressionBindings ------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.DataFieldExpr -> EH.DataFieldExpr]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : RecordExpressionBinding 
         child tl             : RecordExpressionBindings 
      alternative Nil:
-}
-- cata
sem_RecordExpressionBindings :: RecordExpressionBindings ->
                                T_RecordExpressionBindings
sem_RecordExpressionBindings list =
    (Prelude.foldr sem_RecordExpressionBindings_Cons sem_RecordExpressionBindings_Nil (Prelude.map sem_RecordExpressionBinding list))
-- semantic domain
type T_RecordExpressionBindings = UID ->
                                  FixityGam ->
                                  UID ->
                                  (Map.Map HsName [(HsName,HsName)]) ->
                                  IdDefOccGam ->
                                  HsName ->
                                  NmLev ->
                                  EHCOpts ->
                                  PatchEhNmInInstance ->
                                  (Set.Set Pragma.Pragma) ->
                                  ([HsName]) ->
                                  ( ([EH.DataFieldExpr -> EH.DataFieldExpr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RecordExpressionBindings_Cons :: T_RecordExpressionBinding ->
                                     T_RecordExpressionBindings ->
                                     T_RecordExpressionBindings
sem_RecordExpressionBindings_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.DataFieldExpr -> EH.DataFieldExpr)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 466, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 636, column 40)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_RecordExpressionBindings_Nil :: T_RecordExpressionBindings
sem_RecordExpressionBindings_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.DataFieldExpr -> EH.DataFieldExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 468, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 636, column 40)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RecordPatternBinding ----------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.DataFieldPatExpr -> EH.DataFieldPatExpr
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Binding:
         child range          : {Range}
         child name           : {Name}
         child pattern        : Pattern 
         visit 0:
            local fldrefname  : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
      alternative Pun:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local idDefOccGam : _
            local fldrefname  : _
            local idUseOccGam : _
            local errIdUse    : _
            local refname     : _
            local idOccDef    : _
            local errSq       : _
            local pp          : _
-}
-- cata
sem_RecordPatternBinding :: RecordPatternBinding ->
                            T_RecordPatternBinding
sem_RecordPatternBinding (RecordPatternBinding_Binding _range _name _pattern) =
    (sem_RecordPatternBinding_Binding _range _name (sem_Pattern _pattern))
sem_RecordPatternBinding (RecordPatternBinding_Pun _range _name) =
    (sem_RecordPatternBinding_Pun _range _name)
-- semantic domain
type T_RecordPatternBinding = FixityGam ->
                              UID ->
                              IdDefOccGam ->
                              HsName ->
                              NmLev ->
                              EHCOpts ->
                              PatchEhNmInInstance ->
                              ([HsName]) ->
                              ( (EH.DataFieldPatExpr -> EH.DataFieldPatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RecordPatternBinding_Binding :: Range ->
                                    Name ->
                                    T_Pattern ->
                                    T_RecordPatternBinding
sem_RecordPatternBinding_Binding range_ name_ pattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 610, column 29)
              (_fldrefname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 613, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_patternIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 111, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _patternIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 305, column 9)
              _pp =
                  name_ >|< "=" >|< _patternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 708, column 9)
              _lhsOeh =
                  \df -> rngLift range_ EH.DataFieldPatExpr_Ext df _fldrefname _patternIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_RecordPatternBinding_Pun :: Range ->
                                Name ->
                                T_RecordPatternBinding
sem_RecordPatternBinding_Pun range_ name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 230, column 9)
              _idDefOccGam =
                  mkDefOccGam _lhsInmLev range_ IdAsp_Val_Var [_idOccDef]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 610, column 29)
              (_fldrefname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] IdOcc_Fld (IdAsp_Val_Fld hsnUnknown hsnUnknown) range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 92, column 9)
              _refname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 184, column 9)
              _idOccDef =
                  IdOcc _refname IdOcc_Val
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 113, column 9)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 307, column 9)
              _pp =
                  pp name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 710, column 9)
              _lhsOeh =
                  \df -> rngLift range_ EH.DataFieldPatExpr_Ext df _fldrefname (rngLift range_ EH.PatExpr_Var _refname)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _idDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RecordPatternBindings ---------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.DataFieldPatExpr -> EH.DataFieldPatExpr]
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : RecordPatternBinding 
         child tl             : RecordPatternBindings 
      alternative Nil:
-}
-- cata
sem_RecordPatternBindings :: RecordPatternBindings ->
                             T_RecordPatternBindings
sem_RecordPatternBindings list =
    (Prelude.foldr sem_RecordPatternBindings_Cons sem_RecordPatternBindings_Nil (Prelude.map sem_RecordPatternBinding list))
-- semantic domain
type T_RecordPatternBindings = FixityGam ->
                               UID ->
                               IdDefOccGam ->
                               HsName ->
                               NmLev ->
                               EHCOpts ->
                               PatchEhNmInInstance ->
                               ([HsName]) ->
                               ( ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RecordPatternBindings_Cons :: T_RecordPatternBinding ->
                                  T_RecordPatternBindings ->
                                  T_RecordPatternBindings
sem_RecordPatternBindings_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.DataFieldPatExpr -> EH.DataFieldPatExpr)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidDefOccGam :: IdDefOccGam
              _hdIidOccDefs :: ([IdOcc])
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidDefOccGam :: IdDefOccGam
              _tlIidOccDefs :: ([IdOcc])
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 472, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 702, column 37)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _hdIidOccDefs ++ _tlIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_RecordPatternBindings_Nil :: T_RecordPatternBindings
sem_RecordPatternBindings_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.DataFieldPatExpr -> EH.DataFieldPatExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 474, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 702, column 37)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RightHandSide -----------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         mustBeMono           : Bool
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
         sepPP                : PP_Doc
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.Expr
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Expression:
         child range          : {Range}
         child expression     : Expression 
         child where          : MaybeDeclarations 
         visit 0:
            local idGam       : _
            local sccOrder    : _
            local mkSccLet    : _
            local errReorder  : _
            local nmLev       : _
            local errSq       : _
            local pp          : _
            local fixityGam   : _
      alternative Guarded:
         child range          : {Range}
         child guardedexpressions : GuardedExpressions 
         child where          : MaybeDeclarations 
         visit 0:
            local idGam       : _
            local sccOrder    : _
            local mkSccLet    : _
            local errReorder  : _
            local nmLev       : _
            local pp          : _
            local fixityGam   : _
-}
-- cata
sem_RightHandSide :: RightHandSide ->
                     T_RightHandSide
sem_RightHandSide (RightHandSide_Expression _range _expression _where) =
    (sem_RightHandSide_Expression _range (sem_Expression _expression) (sem_MaybeDeclarations _where))
sem_RightHandSide (RightHandSide_Guarded _range _guardedexpressions _where) =
    (sem_RightHandSide_Guarded _range (sem_GuardedExpressions _guardedexpressions) (sem_MaybeDeclarations _where))
-- semantic domain
type T_RightHandSide = UID ->
                       FixityGam ->
                       UID ->
                       (Map.Map HsName [(HsName,HsName)]) ->
                       IdDefOccGam ->
                       HsName ->
                       Bool ->
                       NmLev ->
                       EHCOpts ->
                       PatchEhNmInInstance ->
                       (Set.Set Pragma.Pragma) ->
                       PP_Doc ->
                       ([HsName]) ->
                       ( (EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RightHandSide_Expression :: Range ->
                                T_Expression ->
                                T_MaybeDeclarations ->
                                T_RightHandSide
sem_RightHandSide_Expression range_ expression_ where_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsImustBeMono
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsIsepPP
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _whereOcaseId :: UID
              _whereOfixityGam :: FixityGam
              _whereOgUniq :: UID
              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _whereOidGam :: IdDefOccGam
              _whereOmoduleNm :: HsName
              _whereOnmLev :: NmLev
              _whereOopts :: EHCOpts
              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
              _whereOpragmas :: (Set.Set Pragma.Pragma)
              _whereOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              _whereIeh :: (Maybe [EH.Decl])
              _whereIerrSq :: ErrSq
              _whereIgUniq :: UID
              _whereIgathFixityGam :: FixityGam
              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
              _whereIidDefOccGam :: IdDefOccGam
              _whereIidDpdMp :: IdDpdMp
              _whereIidOccDefs :: ([IdOcc])
              _whereIidTySigDefOccGam :: IdDefOccGam
              _whereIidUseOccGam :: IdUseOccGam
              _whereIneedsError :: Bool
              _whereIpp :: PP_Doc
              _whereIppWrap :: (PP_Doc -> PP_Doc)
              _whereItopInstanceNmL :: ([HsName])
              _whereIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 388, column 9)
              _idGam =
                  gamUnion _whereIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 895, column 9)
              _sccOrder =
                  idDpdMp2SccOrder _whereIidDefOccGam _whereIidDpdMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1026, column 29)
              (_mkSccLet,_,_errReorder) =
                  mkIdOccSccEH range_ False _whereIidDefOccGam (Just _sccOrder)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 69, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 36, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errReorder, _expressionIerrSq, _whereIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 327, column 9)
              _pp =
                  _lhsIsepPP >#< _expressionIpp >-< _whereIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 31, column 9)
              _fixityGam =
                  _whereIgathFixityGam `gamUnion` _lhsIfixityGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 761, column 9)
              _lhsOeh =
                  _mkSccLet
                  $ ehMkEnforceMono range_ _lhsImustBeMono
                    _expressionIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam `gamAddGam` _whereIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap . _whereIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam `gamUnion` _whereIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _whereIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _whereItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _expressionOfixityGam =
                  _fixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _expressionOidGam =
                  _idGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _expressionOnmLev =
                  _nmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _whereOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _whereOfixityGam =
                  _fixityGam
              -- copy rule (chain)
              _whereOgUniq =
                  _expressionIgUniq
              -- copy rule (down)
              _whereOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _whereOidGam =
                  _idGam
              -- copy rule (down)
              _whereOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _whereOnmLev =
                  _nmLev
              -- copy rule (down)
              _whereOopts =
                  _lhsIopts
              -- copy rule (down)
              _whereOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _whereOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _whereOtopInstanceNmL =
                  _expressionItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidOccDefs,_whereIidTySigDefOccGam,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereIundefOccGam) =
                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_RightHandSide_Guarded :: Range ->
                             T_GuardedExpressions ->
                             T_MaybeDeclarations ->
                             T_RightHandSide
sem_RightHandSide_Guarded range_ guardedexpressions_ where_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsImustBeMono
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsIsepPP
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _guardedexpressionsOcaseId :: UID
              _guardedexpressionsOfixityGam :: FixityGam
              _guardedexpressionsOgUniq :: UID
              _guardedexpressionsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _guardedexpressionsOidGam :: IdDefOccGam
              _guardedexpressionsOmoduleNm :: HsName
              _guardedexpressionsOmustBeMono :: Bool
              _guardedexpressionsOnmLev :: NmLev
              _guardedexpressionsOopts :: EHCOpts
              _guardedexpressionsOpatchEhNmInInstance :: PatchEhNmInInstance
              _guardedexpressionsOpragmas :: (Set.Set Pragma.Pragma)
              _guardedexpressionsOsepPP :: PP_Doc
              _guardedexpressionsOtopInstanceNmL :: ([HsName])
              _whereOcaseId :: UID
              _whereOfixityGam :: FixityGam
              _whereOgUniq :: UID
              _whereOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _whereOidGam :: IdDefOccGam
              _whereOmoduleNm :: HsName
              _whereOnmLev :: NmLev
              _whereOopts :: EHCOpts
              _whereOpatchEhNmInInstance :: PatchEhNmInInstance
              _whereOpragmas :: (Set.Set Pragma.Pragma)
              _whereOtopInstanceNmL :: ([HsName])
              _guardedexpressionsIeh :: ([UIDS -> EH.Expr -> EH.Expr])
              _guardedexpressionsIerrSq :: ErrSq
              _guardedexpressionsIgUniq :: UID
              _guardedexpressionsIidUseOccGam :: IdUseOccGam
              _guardedexpressionsIpp :: PP_Doc
              _guardedexpressionsIppWrap :: (PP_Doc -> PP_Doc)
              _guardedexpressionsItopInstanceNmL :: ([HsName])
              _guardedexpressionsIundefOccGam :: IdUseOccGam
              _whereIeh :: (Maybe [EH.Decl])
              _whereIerrSq :: ErrSq
              _whereIgUniq :: UID
              _whereIgathFixityGam :: FixityGam
              _whereIgathPragmas :: (Set.Set Pragma.Pragma)
              _whereIidDefOccGam :: IdDefOccGam
              _whereIidDpdMp :: IdDpdMp
              _whereIidOccDefs :: ([IdOcc])
              _whereIidTySigDefOccGam :: IdDefOccGam
              _whereIidUseOccGam :: IdUseOccGam
              _whereIneedsError :: Bool
              _whereIpp :: PP_Doc
              _whereIppWrap :: (PP_Doc -> PP_Doc)
              _whereItopInstanceNmL :: ([HsName])
              _whereIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 388, column 9)
              _idGam =
                  gamUnion _whereIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 895, column 9)
              _sccOrder =
                  idDpdMp2SccOrder _whereIidDefOccGam _whereIidDpdMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1026, column 29)
              (_mkSccLet,_,_errReorder) =
                  mkIdOccSccEH range_ False _whereIidDefOccGam (Just _sccOrder)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 69, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 329, column 9)
              _pp =
                  _guardedexpressionsIpp >-< _whereIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 31, column 9)
              _fixityGam =
                  _whereIgathFixityGam `gamUnion` _lhsIfixityGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 765, column 9)
              _lhsOeh =
                  _mkSccLet (foldr (\(mk,failS) e -> mk failS e)
                                   (rngLift range_ EH.Expr_CaseAltFail _lhsIcaseId)
                                   (zip _guardedexpressionsIeh (Set.singleton _lhsIcaseId : repeat Set.empty)))
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _guardedexpressionsIerrSq `Seq.union` _whereIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _guardedexpressionsIidUseOccGam `gamAddGam` _whereIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _guardedexpressionsIppWrap . _whereIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _guardedexpressionsIundefOccGam `gamUnion` _whereIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _whereIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _whereItopInstanceNmL
              -- copy rule (down)
              _guardedexpressionsOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _guardedexpressionsOfixityGam =
                  _fixityGam
              -- copy rule (down)
              _guardedexpressionsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _guardedexpressionsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _guardedexpressionsOidGam =
                  _idGam
              -- copy rule (down)
              _guardedexpressionsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _guardedexpressionsOmustBeMono =
                  _lhsImustBeMono
              -- copy rule (from local)
              _guardedexpressionsOnmLev =
                  _nmLev
              -- copy rule (down)
              _guardedexpressionsOopts =
                  _lhsIopts
              -- copy rule (down)
              _guardedexpressionsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _guardedexpressionsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _guardedexpressionsOsepPP =
                  _lhsIsepPP
              -- copy rule (down)
              _guardedexpressionsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _whereOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _whereOfixityGam =
                  _fixityGam
              -- copy rule (chain)
              _whereOgUniq =
                  _guardedexpressionsIgUniq
              -- copy rule (down)
              _whereOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _whereOidGam =
                  _idGam
              -- copy rule (down)
              _whereOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _whereOnmLev =
                  _nmLev
              -- copy rule (down)
              _whereOopts =
                  _lhsIopts
              -- copy rule (down)
              _whereOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _whereOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _whereOtopInstanceNmL =
                  _guardedexpressionsItopInstanceNmL
              ( _guardedexpressionsIeh,_guardedexpressionsIerrSq,_guardedexpressionsIgUniq,_guardedexpressionsIidUseOccGam,_guardedexpressionsIpp,_guardedexpressionsIppWrap,_guardedexpressionsItopInstanceNmL,_guardedexpressionsIundefOccGam) =
                  guardedexpressions_ _guardedexpressionsOcaseId _guardedexpressionsOfixityGam _guardedexpressionsOgUniq _guardedexpressionsOgenerDerivMp _guardedexpressionsOidGam _guardedexpressionsOmoduleNm _guardedexpressionsOmustBeMono _guardedexpressionsOnmLev _guardedexpressionsOopts _guardedexpressionsOpatchEhNmInInstance _guardedexpressionsOpragmas _guardedexpressionsOsepPP _guardedexpressionsOtopInstanceNmL
              ( _whereIeh,_whereIerrSq,_whereIgUniq,_whereIgathFixityGam,_whereIgathPragmas,_whereIidDefOccGam,_whereIidDpdMp,_whereIidOccDefs,_whereIidTySigDefOccGam,_whereIidUseOccGam,_whereIneedsError,_whereIpp,_whereIppWrap,_whereItopInstanceNmL,_whereIundefOccGam) =
                  where_ _whereOcaseId _whereOfixityGam _whereOgUniq _whereOgenerDerivMp _whereOidGam _whereOmoduleNm _whereOnmLev _whereOopts _whereOpatchEhNmInInstance _whereOpragmas _whereOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RowRecordExpressionUpdate -----------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.Expr -> EH.Expr
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Update:
         child range          : {Range}
         child name           : {Name}
         child expression     : Expression 
         visit 0:
            local pp          : _
      alternative Extends:
         child range          : {Range}
         child name           : {MaybeName}
         child expression     : Expression 
         visit 0:
            local pp          : _
-}
-- cata
sem_RowRecordExpressionUpdate :: RowRecordExpressionUpdate ->
                                 T_RowRecordExpressionUpdate
sem_RowRecordExpressionUpdate (RowRecordExpressionUpdate_Update _range _name _expression) =
    (sem_RowRecordExpressionUpdate_Update _range _name (sem_Expression _expression))
sem_RowRecordExpressionUpdate (RowRecordExpressionUpdate_Extends _range _name _expression) =
    (sem_RowRecordExpressionUpdate_Extends _range _name (sem_Expression _expression))
-- semantic domain
type T_RowRecordExpressionUpdate = UID ->
                                   FixityGam ->
                                   UID ->
                                   (Map.Map HsName [(HsName,HsName)]) ->
                                   IdDefOccGam ->
                                   HsName ->
                                   NmLev ->
                                   EHCOpts ->
                                   PatchEhNmInInstance ->
                                   (Set.Set Pragma.Pragma) ->
                                   ([HsName]) ->
                                   ( (EH.Expr -> EH.Expr),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RowRecordExpressionUpdate_Update :: Range ->
                                        Name ->
                                        T_Expression ->
                                        T_RowRecordExpressionUpdate
sem_RowRecordExpressionUpdate_Update range_ name_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 291, column 9)
              _pp =
                  name_ >|< ":=" >|< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 684, column 9)
              _lhsOeh =
                  ehRowRecExprUpd range_ name_ (rngLift range_ EH.RecExpr_Upd) _expressionIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_RowRecordExpressionUpdate_Extends :: Range ->
                                         MaybeName ->
                                         T_Expression ->
                                         T_RowRecordExpressionUpdate
sem_RowRecordExpressionUpdate_Extends range_ name_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.Expr -> EH.Expr)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 289, column 9)
              _pp =
                  name_ >|< "=" >|< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 682, column 9)
              _lhsOeh =
                  ehRowRecExprUpd range_ name_ (rngLift range_ EH.RecExpr_Ext) _expressionIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _expressionIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _expressionIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RowRecordExpressionUpdates ----------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.Expr -> EH.Expr]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : RowRecordExpressionUpdate 
         child tl             : RowRecordExpressionUpdates 
      alternative Nil:
-}
-- cata
sem_RowRecordExpressionUpdates :: RowRecordExpressionUpdates ->
                                  T_RowRecordExpressionUpdates
sem_RowRecordExpressionUpdates list =
    (Prelude.foldr sem_RowRecordExpressionUpdates_Cons sem_RowRecordExpressionUpdates_Nil (Prelude.map sem_RowRecordExpressionUpdate list))
-- semantic domain
type T_RowRecordExpressionUpdates = UID ->
                                    FixityGam ->
                                    UID ->
                                    (Map.Map HsName [(HsName,HsName)]) ->
                                    IdDefOccGam ->
                                    HsName ->
                                    NmLev ->
                                    EHCOpts ->
                                    PatchEhNmInInstance ->
                                    (Set.Set Pragma.Pragma) ->
                                    ([HsName]) ->
                                    ( ([EH.Expr -> EH.Expr]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RowRecordExpressionUpdates_Cons :: T_RowRecordExpressionUpdate ->
                                       T_RowRecordExpressionUpdates ->
                                       T_RowRecordExpressionUpdates
sem_RowRecordExpressionUpdates_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.Expr -> EH.Expr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.Expr -> EH.Expr)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.Expr -> EH.Expr])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 484, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 676, column 42)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_RowRecordExpressionUpdates_Nil :: T_RowRecordExpressionUpdates
sem_RowRecordExpressionUpdates_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.Expr -> EH.Expr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 486, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 676, column 42)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RowRecordPatternBinding -------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.PatExpr -> EH.PatExpr
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Binding:
         child range          : {Range}
         child name           : {MaybeName}
         child pattern        : Pattern 
         visit 0:
            local pp          : _
-}
-- cata
sem_RowRecordPatternBinding :: RowRecordPatternBinding ->
                               T_RowRecordPatternBinding
sem_RowRecordPatternBinding (RowRecordPatternBinding_Binding _range _name _pattern) =
    (sem_RowRecordPatternBinding_Binding _range _name (sem_Pattern _pattern))
-- semantic domain
type T_RowRecordPatternBinding = FixityGam ->
                                 UID ->
                                 IdDefOccGam ->
                                 HsName ->
                                 NmLev ->
                                 EHCOpts ->
                                 PatchEhNmInInstance ->
                                 ([HsName]) ->
                                 ( (EH.PatExpr -> EH.PatExpr),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RowRecordPatternBinding_Binding :: Range ->
                                       MaybeName ->
                                       T_Pattern ->
                                       T_RowRecordPatternBinding
sem_RowRecordPatternBinding_Binding range_ name_ pattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.PatExpr -> EH.PatExpr)
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 295, column 9)
              _pp =
                  case name_ of
                    Just n  -> n >|< "=" >|< _patternIpp
                    Nothing -> _patternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 692, column 9)
              _lhsOeh =
                  ehRowRecPatExprUpd range_ name_ (rngLift range_ EH.RecPatExpr_Ext) _patternIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _patternIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _patternIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RowRecordPatternBindings ------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.PatExpr -> EH.PatExpr]
         errSq                : ErrSq
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : RowRecordPatternBinding 
         child tl             : RowRecordPatternBindings 
      alternative Nil:
-}
-- cata
sem_RowRecordPatternBindings :: RowRecordPatternBindings ->
                                T_RowRecordPatternBindings
sem_RowRecordPatternBindings list =
    (Prelude.foldr sem_RowRecordPatternBindings_Cons sem_RowRecordPatternBindings_Nil (Prelude.map sem_RowRecordPatternBinding list))
-- semantic domain
type T_RowRecordPatternBindings = FixityGam ->
                                  UID ->
                                  IdDefOccGam ->
                                  HsName ->
                                  NmLev ->
                                  EHCOpts ->
                                  PatchEhNmInInstance ->
                                  ([HsName]) ->
                                  ( ([EH.PatExpr -> EH.PatExpr]),ErrSq,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RowRecordPatternBindings_Cons :: T_RowRecordPatternBinding ->
                                     T_RowRecordPatternBindings ->
                                     T_RowRecordPatternBindings
sem_RowRecordPatternBindings_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.PatExpr -> EH.PatExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.PatExpr -> EH.PatExpr)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidDefOccGam :: IdDefOccGam
              _hdIidOccDefs :: ([IdOcc])
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.PatExpr -> EH.PatExpr])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidDefOccGam :: IdDefOccGam
              _tlIidOccDefs :: ([IdOcc])
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 490, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 686, column 40)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _hdIidDefOccGam `gamAddGam` _tlIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _hdIidOccDefs ++ _tlIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidDefOccGam,_hdIidOccDefs,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOfixityGam _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidDefOccGam,_tlIidOccDefs,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_RowRecordPatternBindings_Nil :: T_RowRecordPatternBindings
sem_RowRecordPatternBindings_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.PatExpr -> EH.PatExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 492, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 686, column 40)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RowTypeUpdate -----------------------------------------------
{-
   visit 0:
      inherited attributes:
         doGenVarWild         : Bool
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isAsPred             : Bool
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.TyExpr -> EH.TyExpr
         ehMbAsPrL            : [Maybe EH.PrExpr]
         ehMbAsTyPrL          : [Maybe EH.TyExpr]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Extends:
         child range          : {Range}
         child name           : {MaybeName}
         child type           : Type 
         visit 0:
            local pp          : _
            local ehMbAsPrL   : _
-}
-- cata
sem_RowTypeUpdate :: RowTypeUpdate ->
                     T_RowTypeUpdate
sem_RowTypeUpdate (RowTypeUpdate_Extends _range _name _type) =
    (sem_RowTypeUpdate_Extends _range _name (sem_Type _type))
-- semantic domain
type T_RowTypeUpdate = Bool ->
                       FixityGam ->
                       UID ->
                       IdDefOccGam ->
                       Bool ->
                       NmLev ->
                       EHCOpts ->
                       PatchEhNmInInstance ->
                       ([HsName]) ->
                       ( (EH.TyExpr -> EH.TyExpr),([Maybe EH.PrExpr]),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RowTypeUpdate_Extends :: Range ->
                             MaybeName ->
                             T_Type ->
                             T_RowTypeUpdate
sem_RowTypeUpdate_Extends range_ name_ type_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: (EH.TyExpr -> EH.TyExpr)
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 301, column 9)
              _pp =
                  name_ >|< "::" >|< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 379, column 9)
              _ehMbAsPrL =
                  [_typeIehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 700, column 9)
              _lhsOeh =
                  ehRowRowTyExprUpd range_ name_ (rngLift range_ EH.RowTyExpr_Ext) _typeIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _typeIehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _typeOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- RowTypeUpdates ----------------------------------------------
{-
   visit 0:
      inherited attributes:
         doGenVarWild         : Bool
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isAsPred             : Bool
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.TyExpr -> EH.TyExpr]
         ehMbAsPrL            : [Maybe EH.PrExpr]
         ehMbAsTyPrL          : [Maybe EH.TyExpr]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : RowTypeUpdate 
         child tl             : RowTypeUpdates 
      alternative Nil:
-}
-- cata
sem_RowTypeUpdates :: RowTypeUpdates ->
                      T_RowTypeUpdates
sem_RowTypeUpdates list =
    (Prelude.foldr sem_RowTypeUpdates_Cons sem_RowTypeUpdates_Nil (Prelude.map sem_RowTypeUpdate list))
-- semantic domain
type T_RowTypeUpdates = Bool ->
                        FixityGam ->
                        UID ->
                        IdDefOccGam ->
                        Bool ->
                        NmLev ->
                        EHCOpts ->
                        PatchEhNmInInstance ->
                        ([HsName]) ->
                        ( ([EH.TyExpr -> EH.TyExpr]),([Maybe EH.PrExpr]),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_RowTypeUpdates_Cons :: T_RowTypeUpdate ->
                           T_RowTypeUpdates ->
                           T_RowTypeUpdates
sem_RowTypeUpdates_Cons hd_ tl_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.TyExpr -> EH.TyExpr])
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOdoGenVarWild :: Bool
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOisAsPred :: Bool
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOdoGenVarWild :: Bool
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOisAsPred :: Bool
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.TyExpr -> EH.TyExpr)
              _hdIehMbAsPrL :: ([Maybe EH.PrExpr])
              _hdIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _hdIerrSq :: ErrSq
              _hdIfreeTvarS :: HsNameS
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.TyExpr -> EH.TyExpr])
              _tlIehMbAsPrL :: ([Maybe EH.PrExpr])
              _tlIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _tlIerrSq :: ErrSq
              _tlIfreeTvarS :: HsNameS
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 460, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 694, column 30)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _hdIehMbAsPrL ++ _tlIehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _hdIehMbAsTyPrL ++ _tlIehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIehMbAsPrL,_hdIehMbAsTyPrL,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOdoGenVarWild _hdOfixityGam _hdOgUniq _hdOidGam _hdOisAsPred _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIehMbAsPrL,_tlIehMbAsTyPrL,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOdoGenVarWild _tlOfixityGam _tlOgUniq _tlOidGam _tlOisAsPred _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_RowTypeUpdates_Nil :: T_RowTypeUpdates
sem_RowTypeUpdates_Nil =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.TyExpr -> EH.TyExpr])
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 462, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 694, column 30)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOehMbAsPrL,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Statement ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         moduleNm             : HsName
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         idGam                : IdDefOccGam
         nmLev                : NmLev
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : (EH.Expr,EH.Expr -> EH.Expr)
         errSq                : ErrSq
         gathFixityGam        : FixityGam
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Expression:
         child range          : {Range}
         child expression     : Expression 
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
      alternative Let:
         child range          : {Range}
         child declarations   : Declarations 
         visit 0:
            local idGam       : _
            local sccOrder    : _
            local mkSccLet    : _
            local errReorder  : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
      alternative Generator:
         child range          : {Range}
         child pattern        : Pattern 
         child expression     : Expression 
         visit 0:
            local refnames    : _
            local idUseOccGam : _
            local errIdUse    : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
      alternative Empty:
         child range          : {Range}
-}
-- cata
sem_Statement :: Statement ->
                 T_Statement
sem_Statement (Statement_Expression _range _expression) =
    (sem_Statement_Expression _range (sem_Expression _expression))
sem_Statement (Statement_Let _range _declarations) =
    (sem_Statement_Let _range (sem_Declarations _declarations))
sem_Statement (Statement_Generator _range _pattern _expression) =
    (sem_Statement_Generator _range (sem_Pattern _pattern) (sem_Expression _expression))
sem_Statement (Statement_Empty _range) =
    (sem_Statement_Empty _range)
-- semantic domain
type T_Statement = UID ->
                   FixityGam ->
                   UID ->
                   (Map.Map HsName [(HsName,HsName)]) ->
                   IdDefOccGam ->
                   HsName ->
                   NmLev ->
                   EHCOpts ->
                   PatchEhNmInInstance ->
                   (Set.Set Pragma.Pragma) ->
                   ([HsName]) ->
                   ( ((EH.Expr,EH.Expr -> EH.Expr)),ErrSq,UID,FixityGam,IdDefOccGam,IdUseOccGam,NmLev,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Statement_Expression :: Range ->
                            T_Expression ->
                            T_Statement
sem_Statement_Expression range_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidUseOccGam :: IdUseOccGam
              _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOidGam :: IdDefOccGam
              _lhsOnmLev :: NmLev
              _lhsOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 640, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnMonadSeq] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 642, column 9)
              _lhsOidUseOccGam =
                  _idUseOccGam `gamUnion` _expressionIidUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 119, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errIdUse, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 589, column 9)
              _lhsOeh =
                  (_expressionIeh,\e -> ehExpVarApp range_ _refname [_expressionIeh,e])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _expressionIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _expressionIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (chain)
              _lhsOidGam =
                  _lhsIidGam
              -- copy rule (chain)
              _lhsOnmLev =
                  _lhsInmLev
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _expressionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _expressionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _expressionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Statement_Let :: Range ->
                     T_Declarations ->
                     T_Statement
sem_Statement_Let range_ declarations_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOidGam :: IdDefOccGam
              _lhsOnmLev :: NmLev
              _lhsOtopInstanceNmL :: ([HsName])
              _declarationsOcaseId :: UID
              _declarationsOfixityGam :: FixityGam
              _declarationsOgUniq :: UID
              _declarationsOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _declarationsOidGam :: IdDefOccGam
              _declarationsOmoduleNm :: HsName
              _declarationsOnmLev :: NmLev
              _declarationsOopts :: EHCOpts
              _declarationsOpatchEhNmInInstance :: PatchEhNmInInstance
              _declarationsOpragmas :: (Set.Set Pragma.Pragma)
              _declarationsOtopInstanceNmL :: ([HsName])
              _declarationsIeh :: ([EH.Decl])
              _declarationsIerrSq :: ErrSq
              _declarationsIgUniq :: UID
              _declarationsIgathFixityGam :: FixityGam
              _declarationsIgathPragmas :: (Set.Set Pragma.Pragma)
              _declarationsIidDefOccGam :: IdDefOccGam
              _declarationsIidDpdMp :: IdDpdMp
              _declarationsIidOccDefs :: ([IdOcc])
              _declarationsIidTySigDefOccGam :: IdDefOccGam
              _declarationsIidUseOccGam :: IdUseOccGam
              _declarationsIneedsError :: Bool
              _declarationsIpp :: PP_Doc
              _declarationsIppWrap :: (PP_Doc -> PP_Doc)
              _declarationsItopInstanceNmL :: ([HsName])
              _declarationsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 402, column 9)
              _idGam =
                  gamUnion _declarationsIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 903, column 9)
              _sccOrder =
                  idDpdMp2SccOrder _declarationsIidDefOccGam _declarationsIidDpdMp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 1041, column 29)
              (_mkSccLet,_,_errReorder) =
                  mkIdOccSccEH range_ False _declarationsIidDefOccGam (Just _sccOrder)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 81, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 137, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _declarationsIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 117, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errReorder, _declarationsIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 263, column 9)
              _pp =
                  "let" >#< _declarationsIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 591, column 9)
              _lhsOeh =
                  (EH.mkUnit range_,_mkSccLet)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  _declarationsIgathFixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _declarationsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _declarationsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _declarationsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _declarationsIgUniq
              -- copy rule (from local)
              _lhsOidGam =
                  _idGam
              -- copy rule (from local)
              _lhsOnmLev =
                  _nmLev
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _declarationsItopInstanceNmL
              -- copy rule (down)
              _declarationsOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _declarationsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _declarationsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _declarationsOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (from local)
              _declarationsOidGam =
                  _idGam
              -- copy rule (down)
              _declarationsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _declarationsOnmLev =
                  _nmLev
              -- copy rule (down)
              _declarationsOopts =
                  _lhsIopts
              -- copy rule (down)
              _declarationsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _declarationsOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _declarationsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _declarationsIeh,_declarationsIerrSq,_declarationsIgUniq,_declarationsIgathFixityGam,_declarationsIgathPragmas,_declarationsIidDefOccGam,_declarationsIidDpdMp,_declarationsIidOccDefs,_declarationsIidTySigDefOccGam,_declarationsIidUseOccGam,_declarationsIneedsError,_declarationsIpp,_declarationsIppWrap,_declarationsItopInstanceNmL,_declarationsIundefOccGam) =
                  declarations_ _declarationsOcaseId _declarationsOfixityGam _declarationsOgUniq _declarationsOgenerDerivMp _declarationsOidGam _declarationsOmoduleNm _declarationsOnmLev _declarationsOopts _declarationsOpatchEhNmInInstance _declarationsOpragmas _declarationsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Statement_Generator :: Range ->
                           T_Pattern ->
                           T_Expression ->
                           T_Statement
sem_Statement_Generator range_ pattern_ expression_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOidGam :: IdDefOccGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOnmLev :: NmLev
              _lhsOtopInstanceNmL :: ([HsName])
              _patternOfixityGam :: FixityGam
              _patternOgUniq :: UID
              _patternOidGam :: IdDefOccGam
              _patternOmoduleNm :: HsName
              _patternOnmLev :: NmLev
              _patternOopts :: EHCOpts
              _patternOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternOtopInstanceNmL :: ([HsName])
              _expressionOcaseId :: UID
              _expressionOfixityGam :: FixityGam
              _expressionOgUniq :: UID
              _expressionOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _expressionOidGam :: IdDefOccGam
              _expressionOmoduleNm :: HsName
              _expressionOnmLev :: NmLev
              _expressionOopts :: EHCOpts
              _expressionOpatchEhNmInInstance :: PatchEhNmInInstance
              _expressionOpragmas :: (Set.Set Pragma.Pragma)
              _expressionOtopInstanceNmL :: ([HsName])
              _patternIeh :: (EH.PatExpr)
              _patternIerrSq :: ErrSq
              _patternIgUniq :: UID
              _patternIidDefOccGam :: IdDefOccGam
              _patternIidOccDefs :: ([IdOcc])
              _patternIidUseOccGam :: IdUseOccGam
              _patternIisVar :: Bool
              _patternImbTopRefname :: (Maybe HsName)
              _patternIpp :: PP_Doc
              _patternIppWrap :: (PP_Doc -> PP_Doc)
              _patternItopInstanceNmL :: ([HsName])
              _patternIundefOccGam :: IdUseOccGam
              _expressionIconNm :: Name
              _expressionIeh :: (EH.Expr)
              _expressionIerrSq :: ErrSq
              _expressionIgUniq :: UID
              _expressionIidUseOccGam :: IdUseOccGam
              _expressionIopChain :: (OpChain EH.Expr)
              _expressionIoperatorName :: MaybeName
              _expressionIpp :: PP_Doc
              _expressionIppWrap :: (PP_Doc -> PP_Doc)
              _expressionItopInstanceNmL :: ([HsName])
              _expressionIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 404, column 9)
              _lhsOidGam =
                  gamUnion _patternIidDefOccGam _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 644, column 29)
              (_,_refnames,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [hsnMonadBind,hsnMonadFail] IdOcc_Val IdAsp_Val_Var range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 646, column 9)
              _lhsOidUseOccGam =
                  gamUnions [_idUseOccGam,_patternIidUseOccGam,_expressionIidUseOccGam]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 81, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 135, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _patternIidDefOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 121, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, Seq.fromList _errIdUse, _patternIerrSq, _expressionIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 265, column 9)
              _pp =
                  _patternIpp >#< "<-" >#< _expressionIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 593, column 9)
              _lhsOeh =
                  (_expressionIeh
                  ,ehGenerator
                     range_ _patternIeh
                     (\e -> ehExpVarApp range_ (_refnames !! 0) [_expressionIeh,e])
                     (EH.mkError' (_refnames !! 1) range_ "monadic bind")
                  )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternIppWrap . _expressionIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternIundefOccGam `gamUnion` _expressionIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _expressionIgUniq
              -- copy rule (from local)
              _lhsOnmLev =
                  _nmLev
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _expressionItopInstanceNmL
              -- copy rule (down)
              _patternOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _patternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _patternOnmLev =
                  _nmLev
              -- copy rule (down)
              _patternOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _expressionOcaseId =
                  _lhsIcaseId
              -- copy rule (down)
              _expressionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _expressionOgUniq =
                  _patternIgUniq
              -- copy rule (down)
              _expressionOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _expressionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _expressionOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (from local)
              _expressionOnmLev =
                  _nmLev
              -- copy rule (down)
              _expressionOopts =
                  _lhsIopts
              -- copy rule (down)
              _expressionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _expressionOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _expressionOtopInstanceNmL =
                  _patternItopInstanceNmL
              ( _patternIeh,_patternIerrSq,_patternIgUniq,_patternIidDefOccGam,_patternIidOccDefs,_patternIidUseOccGam,_patternIisVar,_patternImbTopRefname,_patternIpp,_patternIppWrap,_patternItopInstanceNmL,_patternIundefOccGam) =
                  pattern_ _patternOfixityGam _patternOgUniq _patternOidGam _patternOmoduleNm _patternOnmLev _patternOopts _patternOpatchEhNmInInstance _patternOtopInstanceNmL
              ( _expressionIconNm,_expressionIeh,_expressionIerrSq,_expressionIgUniq,_expressionIidUseOccGam,_expressionIopChain,_expressionIoperatorName,_expressionIpp,_expressionIppWrap,_expressionItopInstanceNmL,_expressionIundefOccGam) =
                  expression_ _expressionOcaseId _expressionOfixityGam _expressionOgUniq _expressionOgenerDerivMp _expressionOidGam _expressionOmoduleNm _expressionOnmLev _expressionOopts _expressionOpatchEhNmInInstance _expressionOpragmas _expressionOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Statement_Empty :: Range ->
                       T_Statement
sem_Statement_Empty range_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ((EH.Expr,EH.Expr -> EH.Expr))
              _lhsOerrSq :: ErrSq
              _lhsOgathFixityGam :: FixityGam
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOidGam :: IdDefOccGam
              _lhsOnmLev :: NmLev
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 600, column 9)
              _lhsOeh =
                  (undefined,id)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 6, column 25)
              _lhsOgathFixityGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOidGam =
                  _lhsIidGam
              -- copy rule (chain)
              _lhsOnmLev =
                  _lhsInmLev
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOgathFixityGam,_lhsOidGam,_lhsOidUseOccGam,_lhsOnmLev,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Statements --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         caseId               : UID
         fixityGam            : FixityGam
         generDerivMp         : Map.Map HsName [(HsName,HsName)]
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
         pragmas              : Set.Set Pragma.Pragma
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [(EH.Expr,EH.Expr -> EH.Expr)]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Statement 
         child tl             : Statements 
         visit 0:
            local fixityGam   : _
      alternative Nil:
-}
-- cata
sem_Statements :: Statements ->
                  T_Statements
sem_Statements list =
    (Prelude.foldr sem_Statements_Cons sem_Statements_Nil (Prelude.map sem_Statement list))
-- semantic domain
type T_Statements = UID ->
                    FixityGam ->
                    UID ->
                    (Map.Map HsName [(HsName,HsName)]) ->
                    IdDefOccGam ->
                    HsName ->
                    NmLev ->
                    EHCOpts ->
                    PatchEhNmInInstance ->
                    (Set.Set Pragma.Pragma) ->
                    ([HsName]) ->
                    ( ([(EH.Expr,EH.Expr -> EH.Expr)]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Statements_Cons :: T_Statement ->
                       T_Statements ->
                       T_Statements
sem_Statements_Cons hd_ tl_ =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOcaseId :: UID
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOpragmas :: (Set.Set Pragma.Pragma)
              _hdOtopInstanceNmL :: ([HsName])
              _tlOcaseId :: UID
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOgenerDerivMp :: (Map.Map HsName [(HsName,HsName)])
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOpragmas :: (Set.Set Pragma.Pragma)
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: ((EH.Expr,EH.Expr -> EH.Expr))
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIgathFixityGam :: FixityGam
              _hdIidGam :: IdDefOccGam
              _hdIidUseOccGam :: IdUseOccGam
              _hdInmLev :: NmLev
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 500, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 39, column 9)
              _fixityGam =
                  _hdIgathFixityGam `gamUnion` _lhsIfixityGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 583, column 26)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _hdOfixityGam =
                  _fixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOpragmas =
                  _lhsIpragmas
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOcaseId =
                  _lhsIcaseId
              -- copy rule (from local)
              _tlOfixityGam =
                  _fixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOgenerDerivMp =
                  _lhsIgenerDerivMp
              -- copy rule (chain)
              _tlOidGam =
                  _hdIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (chain)
              _tlOnmLev =
                  _hdInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOpragmas =
                  _lhsIpragmas
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIgathFixityGam,_hdIidGam,_hdIidUseOccGam,_hdInmLev,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdIundefOccGam) =
                  hd_ _hdOcaseId _hdOfixityGam _hdOgUniq _hdOgenerDerivMp _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOpragmas _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOcaseId _tlOfixityGam _tlOgUniq _tlOgenerDerivMp _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOpragmas _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Statements_Nil :: T_Statements
sem_Statements_Nil =
    (\ _lhsIcaseId
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIgenerDerivMp
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsIpragmas
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([(EH.Expr,EH.Expr -> EH.Expr)])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 502, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 583, column 26)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Strings -----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [String]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : {String}
         child tl             : Strings 
      alternative Nil:
-}
-- cata
sem_Strings :: Strings ->
               T_Strings
sem_Strings list =
    (Prelude.foldr sem_Strings_Cons sem_Strings_Nil list)
-- semantic domain
type T_Strings = UID ->
                 IdDefOccGam ->
                 NmLev ->
                 EHCOpts ->
                 PatchEhNmInInstance ->
                 ([HsName]) ->
                 ( ([String]),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Strings_Cons :: String ->
                    T_Strings ->
                    T_Strings
sem_Strings_Cons hd_ tl_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([String])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _tlIeh :: ([String])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 918, column 23)
              _lhsOeh =
                  _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _tlOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _tlOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOgUniq _tlOidGam _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Strings_Nil :: T_Strings
sem_Strings_Nil =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([String])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 918, column 23)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- Type --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         doGenVarWild         : Bool
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isAsPred             : Bool
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         conNm                : Name
         eh                   : EH.TyExpr
         ehMbAsPr             : Maybe EH.PrExpr
         ehMbAsPrL            : [Maybe EH.PrExpr]
         ehMbAsTyPr           : Maybe EH.TyExpr
         ehMbAsTyPrL          : [Maybe EH.TyExpr]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         mbRefConNm           : Maybe Name
         opChain              : OpChain EH.TyExpr
         operatorName         : MaybeName
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         tyConIs              : TypeConFixedMeaning
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative NormalApplication:
         child range          : {Range}
         child function       : Type 
         child arguments      : Types 
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
      alternative InfixApplication:
         child range          : {Range}
         child leftType       : Type 
         child operator       : Type 
         child rightType      : Type 
         visit 0:
            local errSq       : _
            local pp          : _
            local fgi         : _
            local eh          : _
            local ctxtFormErrs : _
            local isPredOp    : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
      alternative InfixApplicationChainTop:
         child range          : {Range}
         child type           : Type 
         visit 0:
            local errSq       : _
            local ehRearrOpChain : _
            local errRearr    : _
            local ehFromOpChain : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
      alternative Constructor:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local idOccKind   : _
            local idAsp       : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local tyConIs     : _
            local isAsPred    : _
      alternative Parenthesized:
         child range          : {Range}
         child type           : Type 
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
      alternative SectionApplication:
         child range          : {Range}
         child leftType       : MaybeType 
         child operator       : Type 
         child rightType      : MaybeType 
         visit 0:
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
            local lUniq_1_nm  : {UID}
      alternative Annotate:
         child range          : {Range}
         child annotation     : TypeAnnotation 
         child type           : Type 
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
      alternative Wildcard:
         child range          : {Range}
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative MonoWildcard:
         child range          : {Range}
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative Variable:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local idAsp       : _
            local idOccKind   : _
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative NamedWildcard:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local idAsp       : _
            local idOccKind   : _
            local refname     : _
            local idUseOccGam : _
            local errIdUse    : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative Forall:
         child range          : {Range}
         child typevariables  : {Names}
         child type           : Type 
         visit 0:
            local idDefOccGamInside : _
            local idGam       : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative Exists:
         child range          : {Range}
         child typevariables  : {Names}
         child type           : Type 
         visit 0:
            local idDefOccGamInside : _
            local idGam       : _
            local nmLev       : _
            local errDupIntro : _
            local errSq       : _
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative RowUpdate:
         child range          : {Range}
         child type           : Type 
         child rowTypeUpdates : RowTypeUpdates 
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative RowEmpty:
         child range          : {Range}
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative RowRecUpdate:
         child range          : {Range}
         child type           : Type 
         child rowTypeUpdates : RowTypeUpdates 
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
      alternative RowRecEmpty:
         child range          : {Range}
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative RowSumUpdate:
         child range          : {Range}
         child type           : Type 
         child rowTypeUpdates : RowTypeUpdates 
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative RowSumEmpty:
         child range          : {Range}
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative Qualified:
         child range          : {Range}
         child context        : ContextItems 
         child type           : Type 
         visit 0:
            local pp          : _
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
            local isAsPred    : _
      alternative TupleConstructor:
         child range          : {Range}
         child arity          : {Int}
         visit 0:
            local eh          : _
            local ehMbAsPr    : _
            local ehMbAsPrL   : _
            local ehMbAsTyPr  : _
            local ehMbAsTyPrL : _
-}
-- cata
sem_Type :: Type ->
            T_Type
sem_Type (Type_NormalApplication _range _function _arguments) =
    (sem_Type_NormalApplication _range (sem_Type _function) (sem_Types _arguments))
sem_Type (Type_InfixApplication _range _leftType _operator _rightType) =
    (sem_Type_InfixApplication _range (sem_Type _leftType) (sem_Type _operator) (sem_Type _rightType))
sem_Type (Type_InfixApplicationChainTop _range _type) =
    (sem_Type_InfixApplicationChainTop _range (sem_Type _type))
sem_Type (Type_Constructor _range _name) =
    (sem_Type_Constructor _range _name)
sem_Type (Type_Parenthesized _range _type) =
    (sem_Type_Parenthesized _range (sem_Type _type))
sem_Type (Type_SectionApplication _range _leftType _operator _rightType) =
    (sem_Type_SectionApplication _range (sem_MaybeType _leftType) (sem_Type _operator) (sem_MaybeType _rightType))
sem_Type (Type_Annotate _range _annotation _type) =
    (sem_Type_Annotate _range (sem_TypeAnnotation _annotation) (sem_Type _type))
sem_Type (Type_Wildcard _range) =
    (sem_Type_Wildcard _range)
sem_Type (Type_MonoWildcard _range) =
    (sem_Type_MonoWildcard _range)
sem_Type (Type_Variable _range _name) =
    (sem_Type_Variable _range _name)
sem_Type (Type_NamedWildcard _range _name) =
    (sem_Type_NamedWildcard _range _name)
sem_Type (Type_Forall _range _typevariables _type) =
    (sem_Type_Forall _range _typevariables (sem_Type _type))
sem_Type (Type_Exists _range _typevariables _type) =
    (sem_Type_Exists _range _typevariables (sem_Type _type))
sem_Type (Type_RowUpdate _range _type _rowTypeUpdates) =
    (sem_Type_RowUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
sem_Type (Type_RowEmpty _range) =
    (sem_Type_RowEmpty _range)
sem_Type (Type_RowRecUpdate _range _type _rowTypeUpdates) =
    (sem_Type_RowRecUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
sem_Type (Type_RowRecEmpty _range) =
    (sem_Type_RowRecEmpty _range)
sem_Type (Type_RowSumUpdate _range _type _rowTypeUpdates) =
    (sem_Type_RowSumUpdate _range (sem_Type _type) (sem_RowTypeUpdates _rowTypeUpdates))
sem_Type (Type_RowSumEmpty _range) =
    (sem_Type_RowSumEmpty _range)
sem_Type (Type_Qualified _range _context _type) =
    (sem_Type_Qualified _range (sem_ContextItems _context) (sem_Type _type))
sem_Type (Type_TupleConstructor _range _arity) =
    (sem_Type_TupleConstructor _range _arity)
-- semantic domain
type T_Type = Bool ->
              FixityGam ->
              UID ->
              IdDefOccGam ->
              Bool ->
              NmLev ->
              EHCOpts ->
              PatchEhNmInInstance ->
              ([HsName]) ->
              ( Name,(EH.TyExpr),(Maybe EH.PrExpr),([Maybe EH.PrExpr]),(Maybe EH.TyExpr),([Maybe EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,(Maybe Name),(OpChain EH.TyExpr),MaybeName,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),TypeConFixedMeaning,IdUseOccGam)
sem_Type_NormalApplication :: Range ->
                              T_Type ->
                              T_Types ->
                              T_Type
sem_Type_NormalApplication range_ function_ arguments_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _argumentsOisAsPred :: Bool
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOconNm :: Name
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _functionOdoGenVarWild :: Bool
              _functionOfixityGam :: FixityGam
              _functionOgUniq :: UID
              _functionOidGam :: IdDefOccGam
              _functionOisAsPred :: Bool
              _functionOnmLev :: NmLev
              _functionOopts :: EHCOpts
              _functionOpatchEhNmInInstance :: PatchEhNmInInstance
              _functionOtopInstanceNmL :: ([HsName])
              _argumentsOfixityGam :: FixityGam
              _argumentsOgUniq :: UID
              _argumentsOidGam :: IdDefOccGam
              _argumentsOnmLev :: NmLev
              _argumentsOopts :: EHCOpts
              _argumentsOpatchEhNmInInstance :: PatchEhNmInInstance
              _argumentsOtopInstanceNmL :: ([HsName])
              _functionIconNm :: Name
              _functionIeh :: (EH.TyExpr)
              _functionIehMbAsPr :: (Maybe EH.PrExpr)
              _functionIehMbAsPrL :: ([Maybe EH.PrExpr])
              _functionIehMbAsTyPr :: (Maybe EH.TyExpr)
              _functionIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _functionIerrSq :: ErrSq
              _functionIfreeTvarS :: HsNameS
              _functionIgUniq :: UID
              _functionIidUseOccGam :: IdUseOccGam
              _functionImbRefConNm :: (Maybe Name)
              _functionIopChain :: (OpChain EH.TyExpr)
              _functionIoperatorName :: MaybeName
              _functionIpp :: PP_Doc
              _functionIppWrap :: (PP_Doc -> PP_Doc)
              _functionItopInstanceNmL :: ([HsName])
              _functionItyConIs :: TypeConFixedMeaning
              _functionIundefOccGam :: IdUseOccGam
              _argumentsIeh :: ([EH.TyExpr])
              _argumentsIerrSq :: ErrSq
              _argumentsIfreeTvarS :: HsNameS
              _argumentsIgUniq :: UID
              _argumentsIidUseOccGam :: IdUseOccGam
              _argumentsIpp :: PP_Doc
              _argumentsIppL :: ([PP_Doc])
              _argumentsIppWrap :: (PP_Doc -> PP_Doc)
              _argumentsItopInstanceNmL :: ([HsName])
              _argumentsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 116, column 9)
              _pp =
                  let f = _functionIpp
                  in  ppAppTop  (_functionIconNm, f)
                            _argumentsIppL (f >#< ppSpaces _argumentsIppL)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 209, column 9)
              _eh =
                  appTopApp (_functionIeh : _argumentsIeh)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 346, column 9)
              _ehMbAsPr =
                  case _functionImbRefConNm of
                    Just conNm | _lhsIisAsPred
                      -> Just $ rngLift range_ EH.PrExpr_Class conNm _argumentsIeh
                    _ -> Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 156, column 9)
              _lhsOtyConIs =
                  _functionItyConIs
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 166, column 9)
              _argumentsOisAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _functionIerrSq `Seq.union` _argumentsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _functionIfreeTvarS `Set.union` _argumentsIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _functionIidUseOccGam `gamAddGam` _argumentsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _functionIppWrap . _argumentsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _functionIundefOccGam `gamUnion` _argumentsIundefOccGam
              -- copy rule (up)
              _lhsOconNm =
                  _functionIconNm
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _argumentsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _argumentsItopInstanceNmL
              -- copy rule (down)
              _functionOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _functionOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _functionOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _functionOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _functionOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _functionOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _functionOopts =
                  _lhsIopts
              -- copy rule (down)
              _functionOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _functionOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _argumentsOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _argumentsOgUniq =
                  _functionIgUniq
              -- copy rule (down)
              _argumentsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _argumentsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _argumentsOopts =
                  _lhsIopts
              -- copy rule (down)
              _argumentsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _argumentsOtopInstanceNmL =
                  _functionItopInstanceNmL
              ( _functionIconNm,_functionIeh,_functionIehMbAsPr,_functionIehMbAsPrL,_functionIehMbAsTyPr,_functionIehMbAsTyPrL,_functionIerrSq,_functionIfreeTvarS,_functionIgUniq,_functionIidUseOccGam,_functionImbRefConNm,_functionIopChain,_functionIoperatorName,_functionIpp,_functionIppWrap,_functionItopInstanceNmL,_functionItyConIs,_functionIundefOccGam) =
                  function_ _functionOdoGenVarWild _functionOfixityGam _functionOgUniq _functionOidGam _functionOisAsPred _functionOnmLev _functionOopts _functionOpatchEhNmInInstance _functionOtopInstanceNmL
              ( _argumentsIeh,_argumentsIerrSq,_argumentsIfreeTvarS,_argumentsIgUniq,_argumentsIidUseOccGam,_argumentsIpp,_argumentsIppL,_argumentsIppWrap,_argumentsItopInstanceNmL,_argumentsIundefOccGam) =
                  arguments_ _argumentsOfixityGam _argumentsOgUniq _argumentsOidGam _argumentsOisAsPred _argumentsOnmLev _argumentsOopts _argumentsOpatchEhNmInInstance _argumentsOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_InfixApplication :: Range ->
                             T_Type ->
                             T_Type ->
                             T_Type ->
                             T_Type
sem_Type_InfixApplication range_ leftType_ operator_ rightType_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _leftTypeOisAsPred :: Bool
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _leftTypeOdoGenVarWild :: Bool
              _leftTypeOfixityGam :: FixityGam
              _leftTypeOgUniq :: UID
              _leftTypeOidGam :: IdDefOccGam
              _leftTypeOnmLev :: NmLev
              _leftTypeOopts :: EHCOpts
              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftTypeOtopInstanceNmL :: ([HsName])
              _operatorOdoGenVarWild :: Bool
              _operatorOfixityGam :: FixityGam
              _operatorOgUniq :: UID
              _operatorOidGam :: IdDefOccGam
              _operatorOisAsPred :: Bool
              _operatorOnmLev :: NmLev
              _operatorOopts :: EHCOpts
              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
              _operatorOtopInstanceNmL :: ([HsName])
              _rightTypeOdoGenVarWild :: Bool
              _rightTypeOfixityGam :: FixityGam
              _rightTypeOgUniq :: UID
              _rightTypeOidGam :: IdDefOccGam
              _rightTypeOisAsPred :: Bool
              _rightTypeOnmLev :: NmLev
              _rightTypeOopts :: EHCOpts
              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightTypeOtopInstanceNmL :: ([HsName])
              _leftTypeIconNm :: Name
              _leftTypeIeh :: (EH.TyExpr)
              _leftTypeIehMbAsPr :: (Maybe EH.PrExpr)
              _leftTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _leftTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _leftTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _leftTypeIerrSq :: ErrSq
              _leftTypeIfreeTvarS :: HsNameS
              _leftTypeIgUniq :: UID
              _leftTypeIidUseOccGam :: IdUseOccGam
              _leftTypeImbRefConNm :: (Maybe Name)
              _leftTypeIopChain :: (OpChain EH.TyExpr)
              _leftTypeIoperatorName :: MaybeName
              _leftTypeIpp :: PP_Doc
              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
              _leftTypeItopInstanceNmL :: ([HsName])
              _leftTypeItyConIs :: TypeConFixedMeaning
              _leftTypeIundefOccGam :: IdUseOccGam
              _operatorIconNm :: Name
              _operatorIeh :: (EH.TyExpr)
              _operatorIehMbAsPr :: (Maybe EH.PrExpr)
              _operatorIehMbAsPrL :: ([Maybe EH.PrExpr])
              _operatorIehMbAsTyPr :: (Maybe EH.TyExpr)
              _operatorIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _operatorIerrSq :: ErrSq
              _operatorIfreeTvarS :: HsNameS
              _operatorIgUniq :: UID
              _operatorIidUseOccGam :: IdUseOccGam
              _operatorImbRefConNm :: (Maybe Name)
              _operatorIopChain :: (OpChain EH.TyExpr)
              _operatorIoperatorName :: MaybeName
              _operatorIpp :: PP_Doc
              _operatorIppWrap :: (PP_Doc -> PP_Doc)
              _operatorItopInstanceNmL :: ([HsName])
              _operatorItyConIs :: TypeConFixedMeaning
              _operatorIundefOccGam :: IdUseOccGam
              _rightTypeIconNm :: Name
              _rightTypeIeh :: (EH.TyExpr)
              _rightTypeIehMbAsPr :: (Maybe EH.PrExpr)
              _rightTypeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _rightTypeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _rightTypeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _rightTypeIerrSq :: ErrSq
              _rightTypeIfreeTvarS :: HsNameS
              _rightTypeIgUniq :: UID
              _rightTypeIidUseOccGam :: IdUseOccGam
              _rightTypeImbRefConNm :: (Maybe Name)
              _rightTypeIopChain :: (OpChain EH.TyExpr)
              _rightTypeIoperatorName :: MaybeName
              _rightTypeIpp :: PP_Doc
              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
              _rightTypeItopInstanceNmL :: ([HsName])
              _rightTypeItyConIs :: TypeConFixedMeaning
              _rightTypeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 256, column 9)
              _lhsOconNm =
                  _operatorIconNm
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 65, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _ctxtFormErrs, _leftTypeIerrSq, _operatorIerrSq, _rightTypeIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 120, column 9)
              _pp =
                  let args = [_leftTypeIpp,_rightTypeIpp]
                      o = _operatorIpp
                  in  ppAppTop  (_operatorIconNm, o)
                                args (o >#< ppSpaces args)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 58, column 9)
              _fgi =
                  case _operatorIoperatorName of
                    Just n
                      -> fixityGamLookup n _lhsIfixityGam
                    _ -> defaultFixityGamInfo
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 112, column 9)
              _lhsOopChain =
                  if _isPredOp
                  then OpChain_Leaf _eh
                  else
                       OpChain_Op _operatorIeh _operatorIpp (fgiFixity _fgi) (fgiPrio _fgi) range_ _leftTypeIopChain _rightTypeIopChain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 211, column 25)
              (_eh,_ctxtFormErrs,_isPredOp) =
                  if not _lhsIisAsPred && _operatorItyConIs == TyConIsPrArrow
                  then let t = foldr app1Arr _rightTypeIeh [ pr | (Just pr) <- _leftTypeIehMbAsTyPrL ]
                       in  if all isJust _leftTypeIehMbAsTyPrL
                           then (t, []                                                  , True )
                           else (t, [rngLift range_ Err_MalformedPred _leftTypeIpp]     , False)
                  else (appRngParApp range_ [_operatorIeh,_leftTypeIeh,_rightTypeIeh], [], False)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 353, column 9)
              _ehMbAsPr =
                  case (_leftTypeIehMbAsPr,_rightTypeIehMbAsPr) of
                    (Just l,Just r) | _operatorItyConIs == TyConIsPrArrow && _lhsIisAsPred
                      -> Just $ rngLift range_ EH.PrExpr_Arrow l r
                    (Nothing,Nothing) | _lhsIisAsPred
                      -> case _operatorItyConIs of
                           TyConIsPrArrow -> Just $ rngLift range_ EH.PrExpr_Class (fromJust _operatorImbRefConNm) [_leftTypeIeh,_rightTypeIeh]
                           TyConIsEqTilde -> Just $ rngLift range_ EH.PrExpr_Eq _leftTypeIeh _rightTypeIeh
                           TyConIsOther   -> Just $ rngLift range_ EH.PrExpr_Class (fromJust _operatorImbRefConNm) [_leftTypeIeh,_rightTypeIeh]
                    _ -> Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 164, column 9)
              _leftTypeOisAsPred =
                  _lhsIisAsPred || _operatorItyConIs == TyConIsPrArrow
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _leftTypeIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightTypeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _leftTypeIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftTypeIppWrap . _operatorIppWrap . _rightTypeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftTypeIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightTypeIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _rightTypeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightTypeItopInstanceNmL
              -- copy rule (down)
              _leftTypeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _leftTypeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _leftTypeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _leftTypeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _leftTypeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _leftTypeOopts =
                  _lhsIopts
              -- copy rule (down)
              _leftTypeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _leftTypeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _operatorOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _operatorOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _operatorOgUniq =
                  _leftTypeIgUniq
              -- copy rule (down)
              _operatorOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _operatorOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _operatorOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _operatorOopts =
                  _lhsIopts
              -- copy rule (down)
              _operatorOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _operatorOtopInstanceNmL =
                  _leftTypeItopInstanceNmL
              -- copy rule (down)
              _rightTypeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _rightTypeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rightTypeOgUniq =
                  _operatorIgUniq
              -- copy rule (down)
              _rightTypeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rightTypeOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _rightTypeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rightTypeOopts =
                  _lhsIopts
              -- copy rule (down)
              _rightTypeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rightTypeOtopInstanceNmL =
                  _operatorItopInstanceNmL
              ( _leftTypeIconNm,_leftTypeIeh,_leftTypeIehMbAsPr,_leftTypeIehMbAsPrL,_leftTypeIehMbAsTyPr,_leftTypeIehMbAsTyPrL,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeImbRefConNm,_leftTypeIopChain,_leftTypeIoperatorName,_leftTypeIpp,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeItyConIs,_leftTypeIundefOccGam) =
                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOisAsPred _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL
              ( _operatorIconNm,_operatorIeh,_operatorIehMbAsPr,_operatorIehMbAsPrL,_operatorIehMbAsTyPr,_operatorIehMbAsTyPrL,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorImbRefConNm,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItyConIs,_operatorIundefOccGam) =
                  operator_ _operatorOdoGenVarWild _operatorOfixityGam _operatorOgUniq _operatorOidGam _operatorOisAsPred _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL
              ( _rightTypeIconNm,_rightTypeIeh,_rightTypeIehMbAsPr,_rightTypeIehMbAsPrL,_rightTypeIehMbAsTyPr,_rightTypeIehMbAsTyPrL,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeImbRefConNm,_rightTypeIopChain,_rightTypeIoperatorName,_rightTypeIpp,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeItyConIs,_rightTypeIundefOccGam) =
                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOisAsPred _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_InfixApplicationChainTop :: Range ->
                                     T_Type ->
                                     T_Type
sem_Type_InfixApplicationChainTop range_ type_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOconNm :: Name
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 67, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errRearr, _typeIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 122, column 25)
              (_ehRearrOpChain,_errRearr) =
                  opChainReArrange _typeIopChain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 122, column 9)
              _ehFromOpChain =
                  unOpChain _ehRearrOpChain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 219, column 9)
              _eh =
                  _ehFromOpChain
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 363, column 9)
              _ehMbAsPr =
                  _typeIehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _typeIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam
              -- copy rule (up)
              _lhsOconNm =
                  _typeIconNm
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _typeOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_Constructor :: Range ->
                        Name ->
                        T_Type
sem_Type_Constructor range_ name_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _lhsOtyConIs :: TypeConFixedMeaning
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 581, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 597, column 29)
              (_idOccKind,_idAsp) =
                  if _lhsIisAsPred && _tyConIs == TyConIsOther
                  then (IdOcc_Class,IdAsp_Class_Class)
                  else (IdOcc_Type,IdAsp_Type_Con)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 254, column 9)
              _lhsOconNm =
                  name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 125, column 9)
              _pp =
                  ppCon name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
              _lhsOoperatorName =
                  Just _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 229, column 9)
              _eh =
                  rngLift range_ EH.TyExpr_Con _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 136, column 9)
              _lhsOmbRefConNm =
                  Just _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 152, column 9)
              _tyConIs =
                  if      hsnIsPrArrow name_ then TyConIsPrArrow
                  else if hsnIsEqTilde name_ then TyConIsEqTilde
                  else                            TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (from local)
              _lhsOtyConIs =
                  _tyConIs
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_Parenthesized :: Range ->
                          T_Type ->
                          T_Type
sem_Type_Parenthesized range_ type_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 127, column 9)
              _pp =
                  ppParens _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 231, column 9)
              _eh =
                  rngLift range_ EH.TyExpr_Parens _typeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 363, column 9)
              _ehMbAsPr =
                  _typeIehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 373, column 9)
              _ehMbAsPrL =
                  _typeIehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _typeIehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _typeOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_SectionApplication :: Range ->
                               T_MaybeType ->
                               T_Type ->
                               T_MaybeType ->
                               T_Type
sem_Type_SectionApplication range_ leftType_ operator_ rightType_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _leftTypeOgUniq :: UID
              _lUniq_1_nm :: UID
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _leftTypeOdoGenVarWild :: Bool
              _leftTypeOfixityGam :: FixityGam
              _leftTypeOidGam :: IdDefOccGam
              _leftTypeOnmLev :: NmLev
              _leftTypeOopts :: EHCOpts
              _leftTypeOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftTypeOtopInstanceNmL :: ([HsName])
              _operatorOdoGenVarWild :: Bool
              _operatorOfixityGam :: FixityGam
              _operatorOgUniq :: UID
              _operatorOidGam :: IdDefOccGam
              _operatorOisAsPred :: Bool
              _operatorOnmLev :: NmLev
              _operatorOopts :: EHCOpts
              _operatorOpatchEhNmInInstance :: PatchEhNmInInstance
              _operatorOtopInstanceNmL :: ([HsName])
              _rightTypeOdoGenVarWild :: Bool
              _rightTypeOfixityGam :: FixityGam
              _rightTypeOgUniq :: UID
              _rightTypeOidGam :: IdDefOccGam
              _rightTypeOnmLev :: NmLev
              _rightTypeOopts :: EHCOpts
              _rightTypeOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightTypeOtopInstanceNmL :: ([HsName])
              _leftTypeIeh :: (Maybe EH.TyExpr)
              _leftTypeIerrSq :: ErrSq
              _leftTypeIfreeTvarS :: HsNameS
              _leftTypeIgUniq :: UID
              _leftTypeIidUseOccGam :: IdUseOccGam
              _leftTypeIpp :: PP_Doc
              _leftTypeIppMb :: (Maybe PP_Doc)
              _leftTypeIppWrap :: (PP_Doc -> PP_Doc)
              _leftTypeItopInstanceNmL :: ([HsName])
              _leftTypeIundefOccGam :: IdUseOccGam
              _operatorIconNm :: Name
              _operatorIeh :: (EH.TyExpr)
              _operatorIehMbAsPr :: (Maybe EH.PrExpr)
              _operatorIehMbAsPrL :: ([Maybe EH.PrExpr])
              _operatorIehMbAsTyPr :: (Maybe EH.TyExpr)
              _operatorIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _operatorIerrSq :: ErrSq
              _operatorIfreeTvarS :: HsNameS
              _operatorIgUniq :: UID
              _operatorIidUseOccGam :: IdUseOccGam
              _operatorImbRefConNm :: (Maybe Name)
              _operatorIopChain :: (OpChain EH.TyExpr)
              _operatorIoperatorName :: MaybeName
              _operatorIpp :: PP_Doc
              _operatorIppWrap :: (PP_Doc -> PP_Doc)
              _operatorItopInstanceNmL :: ([HsName])
              _operatorItyConIs :: TypeConFixedMeaning
              _operatorIundefOccGam :: IdUseOccGam
              _rightTypeIeh :: (Maybe EH.TyExpr)
              _rightTypeIerrSq :: ErrSq
              _rightTypeIfreeTvarS :: HsNameS
              _rightTypeIgUniq :: UID
              _rightTypeIidUseOccGam :: IdUseOccGam
              _rightTypeIpp :: PP_Doc
              _rightTypeIppMb :: (Maybe PP_Doc)
              _rightTypeIppWrap :: (PP_Doc -> PP_Doc)
              _rightTypeItopInstanceNmL :: ([HsName])
              _rightTypeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 221, column 9)
              _eh =
                  ehSection
                      _lUniq_1_nm range_
                      EH.TyExpr_Var
                      (rngAntilift id)
                      EH.TyExpr_Lam
                      _leftTypeIeh _operatorIeh _rightTypeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- -- generated by the unique rule mechanism.
              (_leftTypeOgUniq,_lUniq_1_nm) =
                  let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq_1_nm) -> (__cont,lUniq_1_nm)} )
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _leftTypeIerrSq `Seq.union` _operatorIerrSq `Seq.union` _rightTypeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _leftTypeIfreeTvarS `Set.union` _operatorIfreeTvarS `Set.union` _rightTypeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _leftTypeIidUseOccGam `gamAddGam` _operatorIidUseOccGam `gamAddGam` _rightTypeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _leftTypeIpp >-< _operatorIpp >-< _rightTypeIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftTypeIppWrap . _operatorIppWrap . _rightTypeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftTypeIundefOccGam `gamUnion` _operatorIundefOccGam `gamUnion` _rightTypeIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _rightTypeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightTypeItopInstanceNmL
              -- copy rule (down)
              _leftTypeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _leftTypeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _leftTypeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _leftTypeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _leftTypeOopts =
                  _lhsIopts
              -- copy rule (down)
              _leftTypeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _leftTypeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _operatorOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _operatorOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _operatorOgUniq =
                  _leftTypeIgUniq
              -- copy rule (down)
              _operatorOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _operatorOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _operatorOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _operatorOopts =
                  _lhsIopts
              -- copy rule (down)
              _operatorOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _operatorOtopInstanceNmL =
                  _leftTypeItopInstanceNmL
              -- copy rule (down)
              _rightTypeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _rightTypeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rightTypeOgUniq =
                  _operatorIgUniq
              -- copy rule (down)
              _rightTypeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rightTypeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rightTypeOopts =
                  _lhsIopts
              -- copy rule (down)
              _rightTypeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rightTypeOtopInstanceNmL =
                  _operatorItopInstanceNmL
              ( _leftTypeIeh,_leftTypeIerrSq,_leftTypeIfreeTvarS,_leftTypeIgUniq,_leftTypeIidUseOccGam,_leftTypeIpp,_leftTypeIppMb,_leftTypeIppWrap,_leftTypeItopInstanceNmL,_leftTypeIundefOccGam) =
                  leftType_ _leftTypeOdoGenVarWild _leftTypeOfixityGam _leftTypeOgUniq _leftTypeOidGam _leftTypeOnmLev _leftTypeOopts _leftTypeOpatchEhNmInInstance _leftTypeOtopInstanceNmL
              ( _operatorIconNm,_operatorIeh,_operatorIehMbAsPr,_operatorIehMbAsPrL,_operatorIehMbAsTyPr,_operatorIehMbAsTyPrL,_operatorIerrSq,_operatorIfreeTvarS,_operatorIgUniq,_operatorIidUseOccGam,_operatorImbRefConNm,_operatorIopChain,_operatorIoperatorName,_operatorIpp,_operatorIppWrap,_operatorItopInstanceNmL,_operatorItyConIs,_operatorIundefOccGam) =
                  operator_ _operatorOdoGenVarWild _operatorOfixityGam _operatorOgUniq _operatorOidGam _operatorOisAsPred _operatorOnmLev _operatorOopts _operatorOpatchEhNmInInstance _operatorOtopInstanceNmL
              ( _rightTypeIeh,_rightTypeIerrSq,_rightTypeIfreeTvarS,_rightTypeIgUniq,_rightTypeIidUseOccGam,_rightTypeIpp,_rightTypeIppMb,_rightTypeIppWrap,_rightTypeItopInstanceNmL,_rightTypeIundefOccGam) =
                  rightType_ _rightTypeOdoGenVarWild _rightTypeOfixityGam _rightTypeOgUniq _rightTypeOidGam _rightTypeOnmLev _rightTypeOopts _rightTypeOpatchEhNmInInstance _rightTypeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_Annotate :: Range ->
                     T_TypeAnnotation ->
                     T_Type ->
                     T_Type
sem_Type_Annotate range_ annotation_ type_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _lhsOtyConIs :: TypeConFixedMeaning
              _annotationOfixityGam :: FixityGam
              _annotationOgUniq :: UID
              _annotationOidGam :: IdDefOccGam
              _annotationOnmLev :: NmLev
              _annotationOopts :: EHCOpts
              _annotationOpatchEhNmInInstance :: PatchEhNmInInstance
              _annotationOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _annotationIeh :: (EH.TyExprAnn)
              _annotationIerrSq :: ErrSq
              _annotationIfreeTvarS :: HsNameS
              _annotationIgUniq :: UID
              _annotationIidUseOccGam :: IdUseOccGam
              _annotationIpp :: PP_Doc
              _annotationIppWrap :: (PP_Doc -> PP_Doc)
              _annotationItopInstanceNmL :: ([HsName])
              _annotationIundefOccGam :: IdUseOccGam
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 129, column 9)
              _pp =
                  _annotationIppWrap _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 233, column 17)
              _eh =
                  rngLift range_ EH.TyExpr_Ann _annotationIeh _typeIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 363, column 9)
              _ehMbAsPr =
                  _typeIehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 373, column 9)
              _ehMbAsPrL =
                  _typeIehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _annotationIerrSq `Seq.union` _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _annotationIfreeTvarS `Set.union` _typeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _annotationIidUseOccGam `gamAddGam` _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _annotationIppWrap . _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _annotationIundefOccGam `gamUnion` _typeIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (up)
              _lhsOtyConIs =
                  _typeItyConIs
              -- copy rule (down)
              _annotationOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _annotationOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _annotationOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _annotationOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _annotationOopts =
                  _lhsIopts
              -- copy rule (down)
              _annotationOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _annotationOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typeOgUniq =
                  _annotationIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _typeOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _typeOtopInstanceNmL =
                  _annotationItopInstanceNmL
              ( _annotationIeh,_annotationIerrSq,_annotationIfreeTvarS,_annotationIgUniq,_annotationIidUseOccGam,_annotationIpp,_annotationIppWrap,_annotationItopInstanceNmL,_annotationIundefOccGam) =
                  annotation_ _annotationOfixityGam _annotationOgUniq _annotationOidGam _annotationOnmLev _annotationOopts _annotationOpatchEhNmInInstance _annotationOtopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_Wildcard :: Range ->
                     T_Type
sem_Type_Wildcard range_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 131, column 9)
              _pp =
                  pp "..."
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 235, column 9)
              _eh =
                  rngLift range_ EH.TyExpr_Wild
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 385, column 17)
              _ehMbAsTyPr =
                  Just $ rngLift range_ EH.TyExpr_Impls
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 395, column 17)
              _ehMbAsTyPrL =
                  [_ehMbAsTyPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_MonoWildcard :: Range ->
                         T_Type
sem_Type_MonoWildcard range_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 133, column 9)
              _pp =
                  pp "...."
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 237, column 9)
              _eh =
                  rngLift range_ EH.TyExpr_Mono
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 385, column 17)
              _ehMbAsTyPr =
                  Just $ rngLift range_ EH.TyExpr_Impls
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 395, column 17)
              _ehMbAsTyPrL =
                  [_ehMbAsTyPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_Variable :: Range ->
                     Name ->
                     T_Type
sem_Type_Variable range_ name_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOfreeTvarS :: HsNameS
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
              _idAsp =
                  IdAsp_Type_Var
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
              _idOccKind =
                  IdOcc_Type
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 581, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 135, column 9)
              _pp =
                  pp name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 50, column 9)
              _lhsOoperatorName =
                  Just _refname
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 239, column 9)
              _eh =
                  rngLift range_ (if _lhsIdoGenVarWild then EH.TyExpr_VarWild else EH.TyExpr_Var) name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 122, column 9)
              _lhsOfreeTvarS =
                  Set.singleton name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_NamedWildcard :: Range ->
                          Name ->
                          T_Type
sem_Type_NamedWildcard range_ name_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOfreeTvarS :: HsNameS
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
              _idAsp =
                  IdAsp_Type_Var
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 577, column 9)
              _idOccKind =
                  IdOcc_Type
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 581, column 29)
              (_refname,_,_idUseOccGam,_errIdUse) =
                  mkUseOccGam _lhsIopts _lhsIidGam [name_] _idOccKind _idAsp range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 61, column 9)
              _errSq =
                  Seq.fromList _errIdUse
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 137, column 9)
              _pp =
                  "%" >|< name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 241, column 9)
              _eh =
                  rngLift range_ EH.TyExpr_VarWild name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 122, column 9)
              _lhsOfreeTvarS =
                  Set.singleton name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _idUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_Forall :: Range ->
                   Names ->
                   T_Type ->
                   T_Type
sem_Type_Forall range_ typevariables_ type_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOfreeTvarS :: HsNameS
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 242, column 9)
              _idDefOccGamInside =
                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 408, column 9)
              _idGam =
                  gamUnion _idDefOccGamInside _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 33, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 112, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _idDefOccGamInside
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 63, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, _typeIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 139, column 9)
              _pp =
                  "forall" >#< ppSpaces typevariables_ >#< "." >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 243, column 9)
              _eh =
                  foldr (rngLift range_ EH.TyExpr_Quant tyQu_Forall) _typeIeh typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 351, column 9)
              _ehMbAsPr =
                  foldr (\tv pr -> fmap (rngLift range_ EH.PrExpr_Forall tv) pr) _typeIehMbAsPr typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 124, column 9)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS `Set.difference` Set.fromList typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _typeOidGam =
                  _idGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typeOnmLev =
                  _nmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_Exists :: Range ->
                   Names ->
                   T_Type ->
                   T_Type
sem_Type_Exists range_ typevariables_ type_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOfreeTvarS :: HsNameS
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 242, column 9)
              _idDefOccGamInside =
                  tvarL2IdDefOccGam _lhsInmLev range_ typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 408, column 9)
              _idGam =
                  gamUnion _idDefOccGamInside _lhsIidGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameLevel.ag"(line 33, column 9)
              _nmLev =
                  _lhsInmLev + 1
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ExtraChecks.ag"(line 112, column 9)
              _errDupIntro =
                  idDefOccGamCheckDupNames _idDefOccGamInside
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 63, column 9)
              _errSq =
                  Seq.unions [Seq.fromList _errDupIntro, _typeIerrSq]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 141, column 9)
              _pp =
                  "exists" >#< ppSpaces typevariables_ >#< "." >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 245, column 9)
              _eh =
                  foldr (rngLift range_ EH.TyExpr_Quant tyQu_Exists) _typeIeh typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 124, column 9)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS `Set.difference` Set.fromList typevariables_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _errSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (from local)
              _typeOidGam =
                  _idGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (from local)
              _typeOnmLev =
                  _nmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_RowUpdate :: Range ->
                      T_Type ->
                      T_RowTypeUpdates ->
                      T_Type
sem_Type_RowUpdate range_ type_ rowTypeUpdates_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _rowTypeUpdatesOdoGenVarWild :: Bool
              _rowTypeUpdatesOfixityGam :: FixityGam
              _rowTypeUpdatesOgUniq :: UID
              _rowTypeUpdatesOidGam :: IdDefOccGam
              _rowTypeUpdatesOisAsPred :: Bool
              _rowTypeUpdatesOnmLev :: NmLev
              _rowTypeUpdatesOopts :: EHCOpts
              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _rowTypeUpdatesIerrSq :: ErrSq
              _rowTypeUpdatesIfreeTvarS :: HsNameS
              _rowTypeUpdatesIgUniq :: UID
              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
              _rowTypeUpdatesIpp :: PP_Doc
              _rowTypeUpdatesIppL :: ([PP_Doc])
              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 143, column 9)
              _pp =
                  ppAppTop  (hsnRow,mkPPAppFun hsnRowEmpty _typeIpp)
                            _rowTypeUpdatesIppL _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 247, column 9)
              _eh =
                  foldl (flip ($)) _typeIeh _rowTypeUpdatesIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap . _rowTypeUpdatesIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _rowTypeUpdatesIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rowTypeUpdatesItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _rowTypeUpdatesOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _rowTypeUpdatesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rowTypeUpdatesOgUniq =
                  _typeIgUniq
              -- copy rule (down)
              _rowTypeUpdatesOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _rowTypeUpdatesOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _rowTypeUpdatesOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rowTypeUpdatesOopts =
                  _lhsIopts
              -- copy rule (down)
              _rowTypeUpdatesOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rowTypeUpdatesOtopInstanceNmL =
                  _typeItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesIundefOccGam) =
                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_RowEmpty :: Range ->
                     T_Type
sem_Type_RowEmpty range_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 146, column 9)
              _pp =
                  hsnORow >|< hsnCRow
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 249, column 9)
              _eh =
                  rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_RowRecUpdate :: Range ->
                         T_Type ->
                         T_RowTypeUpdates ->
                         T_Type
sem_Type_RowRecUpdate range_ type_ rowTypeUpdates_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _rowTypeUpdatesOdoGenVarWild :: Bool
              _rowTypeUpdatesOfixityGam :: FixityGam
              _rowTypeUpdatesOgUniq :: UID
              _rowTypeUpdatesOidGam :: IdDefOccGam
              _rowTypeUpdatesOisAsPred :: Bool
              _rowTypeUpdatesOnmLev :: NmLev
              _rowTypeUpdatesOopts :: EHCOpts
              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _rowTypeUpdatesIerrSq :: ErrSq
              _rowTypeUpdatesIfreeTvarS :: HsNameS
              _rowTypeUpdatesIgUniq :: UID
              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
              _rowTypeUpdatesIpp :: PP_Doc
              _rowTypeUpdatesIppL :: ([PP_Doc])
              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 148, column 9)
              _pp =
                  ppAppTop  (hsnRec,mkPPAppFun hsnRowEmpty _typeIpp)
                            _rowTypeUpdatesIppL _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 251, column 9)
              _eh =
                  foldl (\e u -> appCon1App hsnRec $ u $ ehTyExprArg $ e) _typeIeh _rowTypeUpdatesIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 371, column 9)
              _ehMbAsPrL =
                  _rowTypeUpdatesIehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 393, column 9)
              _ehMbAsTyPrL =
                  _rowTypeUpdatesIehMbAsTyPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap . _rowTypeUpdatesIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _rowTypeUpdatesIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rowTypeUpdatesItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _typeOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _rowTypeUpdatesOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _rowTypeUpdatesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rowTypeUpdatesOgUniq =
                  _typeIgUniq
              -- copy rule (down)
              _rowTypeUpdatesOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rowTypeUpdatesOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _rowTypeUpdatesOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rowTypeUpdatesOopts =
                  _lhsIopts
              -- copy rule (down)
              _rowTypeUpdatesOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rowTypeUpdatesOtopInstanceNmL =
                  _typeItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesIundefOccGam) =
                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_RowRecEmpty :: Range ->
                        T_Type
sem_Type_RowRecEmpty range_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 151, column 9)
              _pp =
                  pp hsnRec
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 253, column 9)
              _eh =
                  appCon1App hsnRec $ rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_RowSumUpdate :: Range ->
                         T_Type ->
                         T_RowTypeUpdates ->
                         T_Type
sem_Type_RowSumUpdate range_ type_ rowTypeUpdates_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _rowTypeUpdatesOdoGenVarWild :: Bool
              _rowTypeUpdatesOfixityGam :: FixityGam
              _rowTypeUpdatesOgUniq :: UID
              _rowTypeUpdatesOidGam :: IdDefOccGam
              _rowTypeUpdatesOisAsPred :: Bool
              _rowTypeUpdatesOnmLev :: NmLev
              _rowTypeUpdatesOopts :: EHCOpts
              _rowTypeUpdatesOpatchEhNmInInstance :: PatchEhNmInInstance
              _rowTypeUpdatesOtopInstanceNmL :: ([HsName])
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              _rowTypeUpdatesIeh :: ([EH.TyExpr -> EH.TyExpr])
              _rowTypeUpdatesIehMbAsPrL :: ([Maybe EH.PrExpr])
              _rowTypeUpdatesIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _rowTypeUpdatesIerrSq :: ErrSq
              _rowTypeUpdatesIfreeTvarS :: HsNameS
              _rowTypeUpdatesIgUniq :: UID
              _rowTypeUpdatesIidUseOccGam :: IdUseOccGam
              _rowTypeUpdatesIpp :: PP_Doc
              _rowTypeUpdatesIppL :: ([PP_Doc])
              _rowTypeUpdatesIppWrap :: (PP_Doc -> PP_Doc)
              _rowTypeUpdatesItopInstanceNmL :: ([HsName])
              _rowTypeUpdatesIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 153, column 9)
              _pp =
                  ppAppTop  (hsnSum,mkPPAppFun hsnRowEmpty _typeIpp)
                            _rowTypeUpdatesIppL _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 255, column 9)
              _eh =
                  foldl (\e u -> appCon1App hsnSum $ u $ ehTyExprArg $ e) _typeIeh _rowTypeUpdatesIeh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _typeIerrSq `Seq.union` _rowTypeUpdatesIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _typeIfreeTvarS `Set.union` _rowTypeUpdatesIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _typeIidUseOccGam `gamAddGam` _rowTypeUpdatesIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _typeIppWrap . _rowTypeUpdatesIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _typeIundefOccGam `gamUnion` _rowTypeUpdatesIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _rowTypeUpdatesIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rowTypeUpdatesItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _typeOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _typeOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _rowTypeUpdatesOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _rowTypeUpdatesOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _rowTypeUpdatesOgUniq =
                  _typeIgUniq
              -- copy rule (down)
              _rowTypeUpdatesOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _rowTypeUpdatesOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _rowTypeUpdatesOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rowTypeUpdatesOopts =
                  _lhsIopts
              -- copy rule (down)
              _rowTypeUpdatesOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rowTypeUpdatesOtopInstanceNmL =
                  _typeItopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
              ( _rowTypeUpdatesIeh,_rowTypeUpdatesIehMbAsPrL,_rowTypeUpdatesIehMbAsTyPrL,_rowTypeUpdatesIerrSq,_rowTypeUpdatesIfreeTvarS,_rowTypeUpdatesIgUniq,_rowTypeUpdatesIidUseOccGam,_rowTypeUpdatesIpp,_rowTypeUpdatesIppL,_rowTypeUpdatesIppWrap,_rowTypeUpdatesItopInstanceNmL,_rowTypeUpdatesIundefOccGam) =
                  rowTypeUpdates_ _rowTypeUpdatesOdoGenVarWild _rowTypeUpdatesOfixityGam _rowTypeUpdatesOgUniq _rowTypeUpdatesOidGam _rowTypeUpdatesOisAsPred _rowTypeUpdatesOnmLev _rowTypeUpdatesOopts _rowTypeUpdatesOpatchEhNmInInstance _rowTypeUpdatesOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_RowSumEmpty :: Range ->
                        T_Type
sem_Type_RowSumEmpty range_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 156, column 9)
              _pp =
                  pp hsnSum
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 257, column 9)
              _eh =
                  appCon1App hsnSum $ rngLift range_ EH.TyExpr_Row (rngLift range_ EH.RowTyExpr_Empty)
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_Qualified :: Range ->
                      T_ContextItems ->
                      T_Type ->
                      T_Type
sem_Type_Qualified range_ context_ type_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _contextOfixityGam :: FixityGam
              _contextOgUniq :: UID
              _contextOidGam :: IdDefOccGam
              _contextOnmLev :: NmLev
              _contextOopts :: EHCOpts
              _contextOpatchEhNmInInstance :: PatchEhNmInInstance
              _contextOtopInstanceNmL :: ([HsName])
              _typeOdoGenVarWild :: Bool
              _typeOfixityGam :: FixityGam
              _typeOgUniq :: UID
              _typeOidGam :: IdDefOccGam
              _typeOisAsPred :: Bool
              _typeOnmLev :: NmLev
              _typeOopts :: EHCOpts
              _typeOpatchEhNmInInstance :: PatchEhNmInInstance
              _typeOtopInstanceNmL :: ([HsName])
              _contextIeh :: ([EH.PrExpr])
              _contextIehTy :: ([EH.TyExpr])
              _contextIerrSq :: ErrSq
              _contextIfreeTvarS :: HsNameS
              _contextIgUniq :: UID
              _contextIidUseOccGam :: IdUseOccGam
              _contextIpp :: PP_Doc
              _contextIppWrap :: (PP_Doc -> PP_Doc)
              _contextItopInstanceNmL :: ([HsName])
              _contextIundefOccGam :: IdUseOccGam
              _typeIconNm :: Name
              _typeIeh :: (EH.TyExpr)
              _typeIehMbAsPr :: (Maybe EH.PrExpr)
              _typeIehMbAsPrL :: ([Maybe EH.PrExpr])
              _typeIehMbAsTyPr :: (Maybe EH.TyExpr)
              _typeIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _typeIerrSq :: ErrSq
              _typeIfreeTvarS :: HsNameS
              _typeIgUniq :: UID
              _typeIidUseOccGam :: IdUseOccGam
              _typeImbRefConNm :: (Maybe Name)
              _typeIopChain :: (OpChain EH.TyExpr)
              _typeIoperatorName :: MaybeName
              _typeIpp :: PP_Doc
              _typeIppWrap :: (PP_Doc -> PP_Doc)
              _typeItopInstanceNmL :: ([HsName])
              _typeItyConIs :: TypeConFixedMeaning
              _typeIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 158, column 9)
              _pp =
                  _contextIpp >#< "=>" >#< _typeIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 259, column 9)
              _eh =
                  foldr app1Arr _typeIeh _contextIehTy
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 169, column 17)
              _isAsPred =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _contextIerrSq `Seq.union` _typeIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _contextIfreeTvarS `Set.union` _typeIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _contextIidUseOccGam `gamAddGam` _typeIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _contextIppWrap . _typeIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _contextIundefOccGam `gamUnion` _typeIundefOccGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (up)
              _lhsOgUniq =
                  _typeIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _typeItopInstanceNmL
              -- copy rule (down)
              _contextOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _contextOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _contextOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _contextOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _contextOopts =
                  _lhsIopts
              -- copy rule (down)
              _contextOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _contextOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _typeOdoGenVarWild =
                  _lhsIdoGenVarWild
              -- copy rule (down)
              _typeOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _typeOgUniq =
                  _contextIgUniq
              -- copy rule (down)
              _typeOidGam =
                  _lhsIidGam
              -- copy rule (from local)
              _typeOisAsPred =
                  _isAsPred
              -- copy rule (down)
              _typeOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _typeOopts =
                  _lhsIopts
              -- copy rule (down)
              _typeOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _typeOtopInstanceNmL =
                  _contextItopInstanceNmL
              ( _contextIeh,_contextIehTy,_contextIerrSq,_contextIfreeTvarS,_contextIgUniq,_contextIidUseOccGam,_contextIpp,_contextIppWrap,_contextItopInstanceNmL,_contextIundefOccGam) =
                  context_ _contextOfixityGam _contextOgUniq _contextOidGam _contextOnmLev _contextOopts _contextOpatchEhNmInInstance _contextOtopInstanceNmL
              ( _typeIconNm,_typeIeh,_typeIehMbAsPr,_typeIehMbAsPrL,_typeIehMbAsTyPr,_typeIehMbAsTyPrL,_typeIerrSq,_typeIfreeTvarS,_typeIgUniq,_typeIidUseOccGam,_typeImbRefConNm,_typeIopChain,_typeIoperatorName,_typeIpp,_typeIppWrap,_typeItopInstanceNmL,_typeItyConIs,_typeIundefOccGam) =
                  type_ _typeOdoGenVarWild _typeOfixityGam _typeOgUniq _typeOidGam _typeOisAsPred _typeOnmLev _typeOopts _typeOpatchEhNmInInstance _typeOtopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
sem_Type_TupleConstructor :: Range ->
                             Int ->
                             T_Type
sem_Type_TupleConstructor range_ arity_ =
    (\ _lhsIdoGenVarWild
       _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOconNm :: Name
              _lhsOoperatorName :: MaybeName
              _lhsOopChain :: (OpChain EH.TyExpr)
              _lhsOmbRefConNm :: (Maybe Name)
              _lhsOtyConIs :: TypeConFixedMeaning
              _lhsOehMbAsPrL :: ([Maybe EH.PrExpr])
              _lhsOehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExpr)
              _lhsOehMbAsPr :: (Maybe EH.PrExpr)
              _lhsOehMbAsTyPr :: (Maybe EH.TyExpr)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 259, column 9)
              _lhsOconNm =
                  hsnUnknown
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 52, column 9)
              _lhsOoperatorName =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Fixity.ag"(line 118, column 9)
              _lhsOopChain =
                  OpChain_Leaf _eh
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 261, column 9)
              _eh =
                  ehTupleConstructor range_ arity_ EH.TyExpr_Var (rngAntilift id)
                      EH.TyExpr_Lam
                      (\ps r ->                                                      r)
                      (rngAntilift $ \row -> appCon1App hsnRec (rngLift range_ EH.TyExpr_Row row))
                      EH.RowTyExpr_Ext EH.RowTyExpr_Empty
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 365, column 9)
              _ehMbAsPr =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 375, column 9)
              _ehMbAsPrL =
                  [_ehMbAsPr]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 387, column 17)
              _ehMbAsTyPr =
                  fmap (rngLift range_ EH.TyExpr_Pred) _ehMbAsPr
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 397, column 17)
              _ehMbAsTyPrL =
                  map (fmap (rngLift range_ EH.TyExpr_Pred)) _ehMbAsPrL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 138, column 9)
              _lhsOmbRefConNm =
                  Nothing
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 158, column 9)
              _lhsOtyConIs =
                  TyConIsOther
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 367, column 44)
              _lhsOehMbAsPrL =
                  _ehMbAsPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 389, column 46)
              _lhsOehMbAsTyPrL =
                  _ehMbAsTyPrL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (from local)
              _lhsOehMbAsPr =
                  _ehMbAsPr
              -- copy rule (from local)
              _lhsOehMbAsTyPr =
                  _ehMbAsTyPr
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOconNm,_lhsOeh,_lhsOehMbAsPr,_lhsOehMbAsPrL,_lhsOehMbAsTyPr,_lhsOehMbAsTyPrL,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOmbRefConNm,_lhsOopChain,_lhsOoperatorName,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtyConIs,_lhsOundefOccGam)))
-- TypeAnnotation ----------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.TyExprAnn
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Strict:
         visit 0:
            local ppWrap      : _
            local eh          : _
      alternative AnnotationName:
         child name           : {Name}
         visit 0:
            local eh          : _
      alternative AnnotationVar:
         child name           : {Name}
         child var            : {Name}
         visit 0:
            local eh          : _
-}
-- cata
sem_TypeAnnotation :: TypeAnnotation ->
                      T_TypeAnnotation
sem_TypeAnnotation (TypeAnnotation_Strict) =
    (sem_TypeAnnotation_Strict)
sem_TypeAnnotation (TypeAnnotation_AnnotationName _name) =
    (sem_TypeAnnotation_AnnotationName _name)
sem_TypeAnnotation (TypeAnnotation_AnnotationVar _name _var) =
    (sem_TypeAnnotation_AnnotationVar _name _var)
-- semantic domain
type T_TypeAnnotation = FixityGam ->
                        UID ->
                        IdDefOccGam ->
                        NmLev ->
                        EHCOpts ->
                        PatchEhNmInInstance ->
                        ([HsName]) ->
                        ( (EH.TyExprAnn),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_TypeAnnotation_Strict :: T_TypeAnnotation
sem_TypeAnnotation_Strict =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExprAnn)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 376, column 9)
              _ppWrap =
                  \t -> "!" >|< t
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 887, column 9)
              _eh =
                  EH.TyExprAnn_Strictness (Strictness_Strict)
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _ppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_TypeAnnotation_AnnotationName :: Name ->
                                     T_TypeAnnotation
sem_TypeAnnotation_AnnotationName name_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExprAnn)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 889, column 9)
              _eh =
                  case show name_ of
                    "strict"    ->  EH.TyExprAnn_Strictness (Strictness_Strict)
                    "nonStrict" ->  EH.TyExprAnn_Strictness (Strictness_NonStrict)
                    _           -> EH.TyExprAnn_Empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_TypeAnnotation_AnnotationVar :: Name ->
                                    Name ->
                                    T_TypeAnnotation
sem_TypeAnnotation_AnnotationVar name_ var_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOeh :: (EH.TyExprAnn)
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 894, column 9)
              _eh =
                  case show name_ of
                    "strictness" -> EH.TyExprAnn_Strictness (Strictness_Var var_)
                    _            -> EH.TyExprAnn_Empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (from local)
              _lhsOeh =
                  _eh
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
-- TypeLeftHandSide --------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.TyVar]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idDefOccGam          : IdDefOccGam
         idOccDefs            : [IdOcc]
         idUseOccGam          : IdUseOccGam
         name                 : Name
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         range                : Range
         typevariables        : Names
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Function:
         child range          : {Range}
         child name           : {Name}
         child patterns       : TypePatterns 
         visit 0:
            local pp          : _
      alternative Infix:
         child range          : {Range}
         child leftPattern    : TypePattern 
         child operator       : {Name}
         child rightPattern   : TypePattern 
         visit 0:
            local pp          : _
      alternative Parenthesized:
         child range          : {Range}
         child lefthandside   : TypeLeftHandSide 
         child patterns       : TypePatterns 
         visit 0:
            local pp          : _
-}
-- cata
sem_TypeLeftHandSide :: TypeLeftHandSide ->
                        T_TypeLeftHandSide
sem_TypeLeftHandSide (TypeLeftHandSide_Function _range _name _patterns) =
    (sem_TypeLeftHandSide_Function _range _name (sem_TypePatterns _patterns))
sem_TypeLeftHandSide (TypeLeftHandSide_Infix _range _leftPattern _operator _rightPattern) =
    (sem_TypeLeftHandSide_Infix _range (sem_TypePattern _leftPattern) _operator (sem_TypePattern _rightPattern))
sem_TypeLeftHandSide (TypeLeftHandSide_Parenthesized _range _lefthandside _patterns) =
    (sem_TypeLeftHandSide_Parenthesized _range (sem_TypeLeftHandSide _lefthandside) (sem_TypePatterns _patterns))
-- semantic domain
type T_TypeLeftHandSide = FixityGam ->
                          UID ->
                          IdDefOccGam ->
                          HsName ->
                          NmLev ->
                          EHCOpts ->
                          PatchEhNmInInstance ->
                          ([HsName]) ->
                          ( ([EH.TyVar]),ErrSq,HsNameS,UID,IdDefOccGam,([IdOcc]),IdUseOccGam,Name,PP_Doc,(PP_Doc -> PP_Doc),Range,([HsName]),Names,IdUseOccGam)
sem_TypeLeftHandSide_Function :: Range ->
                                 Name ->
                                 T_TypePatterns ->
                                 T_TypeLeftHandSide
sem_TypeLeftHandSide_Function range_ name_ patterns_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOrange :: Range
              _lhsOname :: Name
              _lhsOeh :: ([EH.TyVar])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOtypevariables :: Names
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternsOtopInstanceNmL :: ([HsName])
              _patternsIeh :: ([EH.TyVar])
              _patternsIerrSq :: ErrSq
              _patternsIgUniq :: UID
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsItypevariables :: Names
              _patternsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 205, column 9)
              _lhsOrange =
                  range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 205, column 9)
              _lhsOname =
                  name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 333, column 9)
              _pp =
                  name_ >#< ppSpaces _patternsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 773, column 9)
              _lhsOeh =
                  rngLift range_ EH.TyVar_Var name_ : _patternsIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _patternsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _patternsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _patternsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
              _lhsOtypevariables =
                  _patternsItypevariables
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _patternsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternsIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternsItopInstanceNmL
              -- copy rule (down)
              _patternsOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _patternsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _patternsOtopInstanceNmL =
                  _lhsItopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItypevariables,_patternsIundefOccGam) =
                  patterns_ _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
sem_TypeLeftHandSide_Infix :: Range ->
                              T_TypePattern ->
                              Name ->
                              T_TypePattern ->
                              T_TypeLeftHandSide
sem_TypeLeftHandSide_Infix range_ leftPattern_ operator_ rightPattern_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOrange :: Range
              _lhsOname :: Name
              _lhsOeh :: ([EH.TyVar])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOtypevariables :: Names
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _leftPatternOgUniq :: UID
              _leftPatternOidGam :: IdDefOccGam
              _leftPatternOmoduleNm :: HsName
              _leftPatternOnmLev :: NmLev
              _leftPatternOopts :: EHCOpts
              _leftPatternOpatchEhNmInInstance :: PatchEhNmInInstance
              _leftPatternOtopInstanceNmL :: ([HsName])
              _rightPatternOgUniq :: UID
              _rightPatternOidGam :: IdDefOccGam
              _rightPatternOmoduleNm :: HsName
              _rightPatternOnmLev :: NmLev
              _rightPatternOopts :: EHCOpts
              _rightPatternOpatchEhNmInInstance :: PatchEhNmInInstance
              _rightPatternOtopInstanceNmL :: ([HsName])
              _leftPatternIeh :: (EH.TyVar)
              _leftPatternIerrSq :: ErrSq
              _leftPatternIgUniq :: UID
              _leftPatternIidUseOccGam :: IdUseOccGam
              _leftPatternIpp :: PP_Doc
              _leftPatternIppWrap :: (PP_Doc -> PP_Doc)
              _leftPatternItopInstanceNmL :: ([HsName])
              _leftPatternItypevariables :: Names
              _leftPatternIundefOccGam :: IdUseOccGam
              _rightPatternIeh :: (EH.TyVar)
              _rightPatternIerrSq :: ErrSq
              _rightPatternIgUniq :: UID
              _rightPatternIidUseOccGam :: IdUseOccGam
              _rightPatternIpp :: PP_Doc
              _rightPatternIppWrap :: (PP_Doc -> PP_Doc)
              _rightPatternItopInstanceNmL :: ([HsName])
              _rightPatternItypevariables :: Names
              _rightPatternIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 9)
              _lhsOrange =
                  range_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 208, column 9)
              _lhsOname =
                  operator_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 335, column 9)
              _pp =
                  _leftPatternIpp >#< operator_ >#< _rightPatternIpp
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 775, column 9)
              _lhsOeh =
                  [ rngLift range_ EH.TyVar_Var operator_
                  , _leftPatternIeh
                  , _rightPatternIeh
                  ]
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _leftPatternIerrSq `Seq.union` _rightPatternIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _leftPatternIidUseOccGam `gamAddGam` _rightPatternIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _leftPatternIppWrap . _rightPatternIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
              _lhsOtypevariables =
                  _leftPatternItypevariables ++ _rightPatternItypevariables
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _leftPatternIundefOccGam `gamUnion` _rightPatternIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _rightPatternIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _rightPatternItopInstanceNmL
              -- copy rule (down)
              _leftPatternOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _leftPatternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _leftPatternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _leftPatternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _leftPatternOopts =
                  _lhsIopts
              -- copy rule (down)
              _leftPatternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _leftPatternOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (chain)
              _rightPatternOgUniq =
                  _leftPatternIgUniq
              -- copy rule (down)
              _rightPatternOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _rightPatternOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _rightPatternOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _rightPatternOopts =
                  _lhsIopts
              -- copy rule (down)
              _rightPatternOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _rightPatternOtopInstanceNmL =
                  _leftPatternItopInstanceNmL
              ( _leftPatternIeh,_leftPatternIerrSq,_leftPatternIgUniq,_leftPatternIidUseOccGam,_leftPatternIpp,_leftPatternIppWrap,_leftPatternItopInstanceNmL,_leftPatternItypevariables,_leftPatternIundefOccGam) =
                  leftPattern_ _leftPatternOgUniq _leftPatternOidGam _leftPatternOmoduleNm _leftPatternOnmLev _leftPatternOopts _leftPatternOpatchEhNmInInstance _leftPatternOtopInstanceNmL
              ( _rightPatternIeh,_rightPatternIerrSq,_rightPatternIgUniq,_rightPatternIidUseOccGam,_rightPatternIpp,_rightPatternIppWrap,_rightPatternItopInstanceNmL,_rightPatternItypevariables,_rightPatternIundefOccGam) =
                  rightPattern_ _rightPatternOgUniq _rightPatternOidGam _rightPatternOmoduleNm _rightPatternOnmLev _rightPatternOopts _rightPatternOpatchEhNmInInstance _rightPatternOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
sem_TypeLeftHandSide_Parenthesized :: Range ->
                                      T_TypeLeftHandSide ->
                                      T_TypePatterns ->
                                      T_TypeLeftHandSide
sem_TypeLeftHandSide_Parenthesized range_ lefthandside_ patterns_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOeh :: ([EH.TyVar])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidDefOccGam :: IdDefOccGam
              _lhsOidOccDefs :: ([IdOcc])
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOtypevariables :: Names
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOname :: Name
              _lhsOrange :: Range
              _lhsOtopInstanceNmL :: ([HsName])
              _lefthandsideOfixityGam :: FixityGam
              _lefthandsideOgUniq :: UID
              _lefthandsideOidGam :: IdDefOccGam
              _lefthandsideOmoduleNm :: HsName
              _lefthandsideOnmLev :: NmLev
              _lefthandsideOopts :: EHCOpts
              _lefthandsideOpatchEhNmInInstance :: PatchEhNmInInstance
              _lefthandsideOtopInstanceNmL :: ([HsName])
              _patternsOgUniq :: UID
              _patternsOidGam :: IdDefOccGam
              _patternsOmoduleNm :: HsName
              _patternsOnmLev :: NmLev
              _patternsOopts :: EHCOpts
              _patternsOpatchEhNmInInstance :: PatchEhNmInInstance
              _patternsOtopInstanceNmL :: ([HsName])
              _lefthandsideIeh :: ([EH.TyVar])
              _lefthandsideIerrSq :: ErrSq
              _lefthandsideIfreeTvarS :: HsNameS
              _lefthandsideIgUniq :: UID
              _lefthandsideIidDefOccGam :: IdDefOccGam
              _lefthandsideIidOccDefs :: ([IdOcc])
              _lefthandsideIidUseOccGam :: IdUseOccGam
              _lefthandsideIname :: Name
              _lefthandsideIpp :: PP_Doc
              _lefthandsideIppWrap :: (PP_Doc -> PP_Doc)
              _lefthandsideIrange :: Range
              _lefthandsideItopInstanceNmL :: ([HsName])
              _lefthandsideItypevariables :: Names
              _lefthandsideIundefOccGam :: IdUseOccGam
              _patternsIeh :: ([EH.TyVar])
              _patternsIerrSq :: ErrSq
              _patternsIgUniq :: UID
              _patternsIidUseOccGam :: IdUseOccGam
              _patternsIpp :: PP_Doc
              _patternsIppL :: ([PP_Doc])
              _patternsIppWrap :: (PP_Doc -> PP_Doc)
              _patternsItopInstanceNmL :: ([HsName])
              _patternsItypevariables :: Names
              _patternsIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 337, column 9)
              _pp =
                  ppParens _lefthandsideIpp >#< ppSpaces _patternsIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 780, column 9)
              _lhsOeh =
                  _lefthandsideIeh ++ _patternsIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _lefthandsideIerrSq `Seq.union` _patternsIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _lefthandsideIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 129, column 23)
              _lhsOidDefOccGam =
                  _lefthandsideIidDefOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 109, column 21)
              _lhsOidOccDefs =
                  _lefthandsideIidOccDefs
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _lefthandsideIidUseOccGam `gamAddGam` _patternsIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _lefthandsideIppWrap . _patternsIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
              _lhsOtypevariables =
                  _lefthandsideItypevariables ++ _patternsItypevariables
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _lefthandsideIundefOccGam `gamUnion` _patternsIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _patternsIgUniq
              -- copy rule (up)
              _lhsOname =
                  _lefthandsideIname
              -- copy rule (up)
              _lhsOrange =
                  _lefthandsideIrange
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _patternsItopInstanceNmL
              -- copy rule (down)
              _lefthandsideOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _lefthandsideOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _lefthandsideOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _lefthandsideOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _lefthandsideOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _lefthandsideOopts =
                  _lhsIopts
              -- copy rule (down)
              _lefthandsideOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _lefthandsideOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (chain)
              _patternsOgUniq =
                  _lefthandsideIgUniq
              -- copy rule (down)
              _patternsOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _patternsOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _patternsOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _patternsOopts =
                  _lhsIopts
              -- copy rule (down)
              _patternsOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _patternsOtopInstanceNmL =
                  _lefthandsideItopInstanceNmL
              ( _lefthandsideIeh,_lefthandsideIerrSq,_lefthandsideIfreeTvarS,_lefthandsideIgUniq,_lefthandsideIidDefOccGam,_lefthandsideIidOccDefs,_lefthandsideIidUseOccGam,_lefthandsideIname,_lefthandsideIpp,_lefthandsideIppWrap,_lefthandsideIrange,_lefthandsideItopInstanceNmL,_lefthandsideItypevariables,_lefthandsideIundefOccGam) =
                  lefthandside_ _lefthandsideOfixityGam _lefthandsideOgUniq _lefthandsideOidGam _lefthandsideOmoduleNm _lefthandsideOnmLev _lefthandsideOopts _lefthandsideOpatchEhNmInInstance _lefthandsideOtopInstanceNmL
              ( _patternsIeh,_patternsIerrSq,_patternsIgUniq,_patternsIidUseOccGam,_patternsIpp,_patternsIppL,_patternsIppWrap,_patternsItopInstanceNmL,_patternsItypevariables,_patternsIundefOccGam) =
                  patterns_ _patternsOgUniq _patternsOidGam _patternsOmoduleNm _patternsOnmLev _patternsOopts _patternsOpatchEhNmInInstance _patternsOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidDefOccGam,_lhsOidOccDefs,_lhsOidUseOccGam,_lhsOname,_lhsOpp,_lhsOppWrap,_lhsOrange,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
-- TypePattern -------------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : EH.TyVar
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppWrap               : PP_Doc -> PP_Doc
         typevariables        : Names
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Variable:
         child range          : {Range}
         child name           : {Name}
         visit 0:
            local refname     : _
            local pp          : _
-}
-- cata
sem_TypePattern :: TypePattern ->
                   T_TypePattern
sem_TypePattern (TypePattern_Variable _range _name) =
    (sem_TypePattern_Variable _range _name)
-- semantic domain
type T_TypePattern = UID ->
                     IdDefOccGam ->
                     HsName ->
                     NmLev ->
                     EHCOpts ->
                     PatchEhNmInInstance ->
                     ([HsName]) ->
                     ( (EH.TyVar),ErrSq,UID,IdUseOccGam,PP_Doc,(PP_Doc -> PP_Doc),([HsName]),Names,IdUseOccGam)
sem_TypePattern_Variable :: Range ->
                            Name ->
                            T_TypePattern
sem_TypePattern_Variable range_ name_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOtypevariables :: Names
              _lhsOeh :: (EH.TyVar)
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 58, column 9)
              _refname =
                  hsnSetLevQual _lhsInmLev _lhsImoduleNm name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 213, column 9)
              _lhsOtypevariables =
                  [name_]
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 380, column 9)
              _pp =
                  pp name_
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 860, column 9)
              _lhsOeh =
                  rngLift range_ EH.TyVar_Var _refname
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _pp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
-- TypePatterns ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         idGam                : IdDefOccGam
         moduleNm             : HsName
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.TyVar]
         errSq                : ErrSq
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         typevariables        : Names
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : TypePattern 
         child tl             : TypePatterns 
      alternative Nil:
-}
-- cata
sem_TypePatterns :: TypePatterns ->
                    T_TypePatterns
sem_TypePatterns list =
    (Prelude.foldr sem_TypePatterns_Cons sem_TypePatterns_Nil (Prelude.map sem_TypePattern list))
-- semantic domain
type T_TypePatterns = UID ->
                      IdDefOccGam ->
                      HsName ->
                      NmLev ->
                      EHCOpts ->
                      PatchEhNmInInstance ->
                      ([HsName]) ->
                      ( ([EH.TyVar]),ErrSq,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),Names,IdUseOccGam)
sem_TypePatterns_Cons :: T_TypePattern ->
                         T_TypePatterns ->
                         T_TypePatterns
sem_TypePatterns_Cons hd_ tl_ =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.TyVar])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOtypevariables :: Names
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOmoduleNm :: HsName
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOmoduleNm :: HsName
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIeh :: (EH.TyVar)
              _hdIerrSq :: ErrSq
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdItypevariables :: Names
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.TyVar])
              _tlIerrSq :: ErrSq
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlItypevariables :: Names
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 440, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 854, column 28)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
              _lhsOtypevariables =
                  _hdItypevariables ++ _tlItypevariables
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOmoduleNm =
                  _lhsImoduleNm
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIeh,_hdIerrSq,_hdIgUniq,_hdIidUseOccGam,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItypevariables,_hdIundefOccGam) =
                  hd_ _hdOgUniq _hdOidGam _hdOmoduleNm _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlItypevariables,_tlIundefOccGam) =
                  tl_ _tlOgUniq _tlOidGam _tlOmoduleNm _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
sem_TypePatterns_Nil :: T_TypePatterns
sem_TypePatterns_Nil =
    (\ _lhsIgUniq
       _lhsIidGam
       _lhsImoduleNm
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.TyVar])
              _lhsOerrSq :: ErrSq
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOtypevariables :: Names
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 442, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 854, column 28)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameDef.ag"(line 201, column 25)
              _lhsOtypevariables =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOtypevariables,_lhsOundefOccGam)))
-- Types -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         fixityGam            : FixityGam
         idGam                : IdDefOccGam
         isAsPred             : Bool
         nmLev                : NmLev
         opts                 : EHCOpts
         patchEhNmInInstance  : PatchEhNmInInstance
      chained attributes:
         gUniq                : UID
         topInstanceNmL       : [HsName]
      synthesized attributes:
         eh                   : [EH.TyExpr]
         errSq                : ErrSq
         freeTvarS            : HsNameS
         idUseOccGam          : IdUseOccGam
         pp                   : PP_Doc
         ppL                  : [PP_Doc]
         ppWrap               : PP_Doc -> PP_Doc
         undefOccGam          : IdUseOccGam
   alternatives:
      alternative Cons:
         child hd             : Type 
         child tl             : Types 
         visit 0:
            local doGenVarWild : _
      alternative Nil:
-}
-- cata
sem_Types :: Types ->
             T_Types
sem_Types list =
    (Prelude.foldr sem_Types_Cons sem_Types_Nil (Prelude.map sem_Type list))
-- semantic domain
type T_Types = FixityGam ->
               UID ->
               IdDefOccGam ->
               Bool ->
               NmLev ->
               EHCOpts ->
               PatchEhNmInInstance ->
               ([HsName]) ->
               ( ([EH.TyExpr]),ErrSq,HsNameS,UID,IdUseOccGam,PP_Doc,([PP_Doc]),(PP_Doc -> PP_Doc),([HsName]),IdUseOccGam)
sem_Types_Cons :: T_Type ->
                  T_Types ->
                  T_Types
sem_Types_Cons hd_ tl_ =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              _hdOdoGenVarWild :: Bool
              _hdOfixityGam :: FixityGam
              _hdOgUniq :: UID
              _hdOidGam :: IdDefOccGam
              _hdOisAsPred :: Bool
              _hdOnmLev :: NmLev
              _hdOopts :: EHCOpts
              _hdOpatchEhNmInInstance :: PatchEhNmInInstance
              _hdOtopInstanceNmL :: ([HsName])
              _tlOfixityGam :: FixityGam
              _tlOgUniq :: UID
              _tlOidGam :: IdDefOccGam
              _tlOisAsPred :: Bool
              _tlOnmLev :: NmLev
              _tlOopts :: EHCOpts
              _tlOpatchEhNmInInstance :: PatchEhNmInInstance
              _tlOtopInstanceNmL :: ([HsName])
              _hdIconNm :: Name
              _hdIeh :: (EH.TyExpr)
              _hdIehMbAsPr :: (Maybe EH.PrExpr)
              _hdIehMbAsPrL :: ([Maybe EH.PrExpr])
              _hdIehMbAsTyPr :: (Maybe EH.TyExpr)
              _hdIehMbAsTyPrL :: ([Maybe EH.TyExpr])
              _hdIerrSq :: ErrSq
              _hdIfreeTvarS :: HsNameS
              _hdIgUniq :: UID
              _hdIidUseOccGam :: IdUseOccGam
              _hdImbRefConNm :: (Maybe Name)
              _hdIopChain :: (OpChain EH.TyExpr)
              _hdIoperatorName :: MaybeName
              _hdIpp :: PP_Doc
              _hdIppWrap :: (PP_Doc -> PP_Doc)
              _hdItopInstanceNmL :: ([HsName])
              _hdItyConIs :: TypeConFixedMeaning
              _hdIundefOccGam :: IdUseOccGam
              _tlIeh :: ([EH.TyExpr])
              _tlIerrSq :: ErrSq
              _tlIfreeTvarS :: HsNameS
              _tlIgUniq :: UID
              _tlIidUseOccGam :: IdUseOccGam
              _tlIpp :: PP_Doc
              _tlIppL :: ([PP_Doc])
              _tlIppWrap :: (PP_Doc -> PP_Doc)
              _tlItopInstanceNmL :: ([HsName])
              _tlIundefOccGam :: IdUseOccGam
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 414, column 9)
              _lhsOppL =
                  _hdIpp : _tlIppL
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 210, column 9)
              _doGenVarWild =
                  False
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 197, column 21)
              _lhsOeh =
                  _hdIeh : _tlIeh
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  _hdIerrSq `Seq.union` _tlIerrSq
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  _hdIfreeTvarS `Set.union` _tlIfreeTvarS
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  _hdIidUseOccGam `gamAddGam` _tlIidUseOccGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  _hdIpp >-< _tlIpp
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  _hdIppWrap . _tlIppWrap
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  _hdIundefOccGam `gamUnion` _tlIundefOccGam
              -- copy rule (up)
              _lhsOgUniq =
                  _tlIgUniq
              -- copy rule (up)
              _lhsOtopInstanceNmL =
                  _tlItopInstanceNmL
              -- copy rule (from local)
              _hdOdoGenVarWild =
                  _doGenVarWild
              -- copy rule (down)
              _hdOfixityGam =
                  _lhsIfixityGam
              -- copy rule (down)
              _hdOgUniq =
                  _lhsIgUniq
              -- copy rule (down)
              _hdOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _hdOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _hdOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _hdOopts =
                  _lhsIopts
              -- copy rule (down)
              _hdOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (down)
              _hdOtopInstanceNmL =
                  _lhsItopInstanceNmL
              -- copy rule (down)
              _tlOfixityGam =
                  _lhsIfixityGam
              -- copy rule (chain)
              _tlOgUniq =
                  _hdIgUniq
              -- copy rule (down)
              _tlOidGam =
                  _lhsIidGam
              -- copy rule (down)
              _tlOisAsPred =
                  _lhsIisAsPred
              -- copy rule (down)
              _tlOnmLev =
                  _lhsInmLev
              -- copy rule (down)
              _tlOopts =
                  _lhsIopts
              -- copy rule (down)
              _tlOpatchEhNmInInstance =
                  _lhsIpatchEhNmInInstance
              -- copy rule (chain)
              _tlOtopInstanceNmL =
                  _hdItopInstanceNmL
              ( _hdIconNm,_hdIeh,_hdIehMbAsPr,_hdIehMbAsPrL,_hdIehMbAsTyPr,_hdIehMbAsTyPrL,_hdIerrSq,_hdIfreeTvarS,_hdIgUniq,_hdIidUseOccGam,_hdImbRefConNm,_hdIopChain,_hdIoperatorName,_hdIpp,_hdIppWrap,_hdItopInstanceNmL,_hdItyConIs,_hdIundefOccGam) =
                  hd_ _hdOdoGenVarWild _hdOfixityGam _hdOgUniq _hdOidGam _hdOisAsPred _hdOnmLev _hdOopts _hdOpatchEhNmInInstance _hdOtopInstanceNmL
              ( _tlIeh,_tlIerrSq,_tlIfreeTvarS,_tlIgUniq,_tlIidUseOccGam,_tlIpp,_tlIppL,_tlIppWrap,_tlItopInstanceNmL,_tlIundefOccGam) =
                  tl_ _tlOfixityGam _tlOgUniq _tlOidGam _tlOisAsPred _tlOnmLev _tlOopts _tlOpatchEhNmInInstance _tlOtopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))
sem_Types_Nil :: T_Types
sem_Types_Nil =
    (\ _lhsIfixityGam
       _lhsIgUniq
       _lhsIidGam
       _lhsIisAsPred
       _lhsInmLev
       _lhsIopts
       _lhsIpatchEhNmInInstance
       _lhsItopInstanceNmL ->
         (let _lhsOppL :: ([PP_Doc])
              _lhsOeh :: ([EH.TyExpr])
              _lhsOerrSq :: ErrSq
              _lhsOfreeTvarS :: HsNameS
              _lhsOidUseOccGam :: IdUseOccGam
              _lhsOpp :: PP_Doc
              _lhsOppWrap :: (PP_Doc -> PP_Doc)
              _lhsOundefOccGam :: IdUseOccGam
              _lhsOgUniq :: UID
              _lhsOtopInstanceNmL :: ([HsName])
              -- "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 416, column 9)
              _lhsOppL =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/ToEH.ag"(line 197, column 21)
              _lhsOeh =
                  []
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/GatherError.ag"(line 1, column 30)
              _lhsOerrSq =
                  Seq.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/MainAG.ag"(line 118, column 21)
              _lhsOfreeTvarS =
                  Set.empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 471, column 30)
              _lhsOidUseOccGam =
                  emptyGam
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 1, column 27)
              _lhsOpp =
                  empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/Pretty.ag"(line 3, column 31)
              _lhsOppWrap =
                  const empty
              -- use rule "build/103/lib-ehc/UHC/Light/Compiler/HS/NameAnalysis.ag"(line 729, column 30)
              _lhsOundefOccGam =
                  emptyGam
              -- copy rule (chain)
              _lhsOgUniq =
                  _lhsIgUniq
              -- copy rule (chain)
              _lhsOtopInstanceNmL =
                  _lhsItopInstanceNmL
          in  ( _lhsOeh,_lhsOerrSq,_lhsOfreeTvarS,_lhsOgUniq,_lhsOidUseOccGam,_lhsOpp,_lhsOppL,_lhsOppWrap,_lhsOtopInstanceNmL,_lhsOundefOccGam)))